LoginSignup
0
0

More than 5 years have passed since last update.

[macOS] ネイティブで殴るCEF - 備忘録

Last updated at Posted at 2018-09-07

注意

これはただの備忘録です

最終目標

ブラウザの表示部分をNSView(のサブクラス)として簡単に取り扱えるようにする

導入

これをそのまま実行
https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart#markdown-header-mac-os-x-setup

out/Debug_GN_x64 内の Chromium Embedded Framework.frameworklibcef_dll_wrapper.aをリンクする。

libcef_dll_dylibはあとで調べる。

dSYMが5GBぐらいあるので注意。

何か変な時

create.shが失敗する時

code/chromium_git/chromium/srcgclient runhooksgclient syncを実行してみる

次やること

  • なにしよう

CEFに関して今までに分かったこと

CefBrowser

CefWindowInfo window_info;
window_info.hidden = true;

これを設定してCefBrowserを生成すれば生成時にウインドウが表示されない。

CefWindow

これが弄るターゲット。
native側のNSView(CefBrowserHostViewクラス)を持ってる。 Windowなのに。

auto nsview = (NSView *)browser_->GetHost()->GetWindowHandle();

で取得可能。

上記Viewから

NSWindow *window = view.window;

でCefBrowserが持つNSWindowが取得できる。
このウインドウのクラスはUnderlayOpenGLHostingWindow。
delegateとしてCefWindowDelegateのインスタンスが設定されている。
このウインドウを破棄するとviewも破棄されてしまう。

NSWindowControllerは設定されていない。

イベントループ

native側が無視するイベントを全部CEFに流し込む感じ?

UAの設定

CefSettings settings;
const char *ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) KCD(2.0a0) is not Chrome/70.0.3538.0";

CefString(&settings.user_agent).FromASCII(ua);

Accept-Languageの設定

CefSettings settings;
CefString(&settings.accept_language_list).FromASCII("ja-JP,en-US;q=0.5,en;q=0.1");

わからん

windowless_viewとかあるがちょっと意味が違う。

view-baseとかあるがmacOSは非対応。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0