そのため、作業上の理由から、Webページを実装するだけでなく、キャッシュ操作をクリアCEF3を使用する必要性、CEFの既存のバージョンが該当するインタフェースではありませんので、自分で既存のバージョンの上にアップグレードを行うには、自分のニーズに合わせてインターフェイスの数を増加させました。ここでは、ソースコードを変更する方法をステップバイステップについて話をします。まず、CEFの完全な独自のネイティブバージョンはように滑らか修正するために、コンパイルすることができますがあります。
機能として保存ページを増やして1。
、それは保存操作を行うには、Webページであることから、それはCefBrowserHostに関連したソースまたはCefFrameにする必要があり、まず、私たちは、この機能はクロムで実装されていることを知っているが、外部CEF3は、このインターフェイスにそれを提供しない、我々はコールのソースコード内の特定の場所を探すことができますまず、我々はインターフェイスの空隙CefBrowserHostImpl :: DownloadImage()の実装を見つけ、呼び出しは(web_contentsを見つけるためになって) - > DownloadImage()、WebContents * web_contentsを見つける()、この関数はCefBrowserHostImplではなく、親コンテンツによって実装されていません。 :達成WebContentsObserver、
SRC \コンテンツ\パブリック\ブラウザ\ web_contents_observer.hにおけるソース・パス、
最後の呼び出しは、SRC \コンテンツ\ブラウザ\ web_contents \ web_contents_impl.h、あります
从中找到BOOL SavePage(CONSTベース::ファイルパス&main_file、CONSTベース::ファイルパス&dir_path、SavePageType save_type)オーバーライド。
まあ、我々は変更CefBrowserHostImplはそれができないのですか?いいえ、これは転送の唯一の内部実装ですが、また、CEF API関数を開くことができ、あなたが考える最初の事は練習の変化に関連したファイルを変更しようとしている必要はありません、CEF3は私たちを自動化するPythonスクリプトを書かれていますすべての関連のインターフェイスは、このファイルは、SRC \ CEF \ツール\ translator.batにあるファイルを自動的に生成します
このスクリプトファイルに自動的にトラバースSRC \ CEF \コメントに従って、以下のドキュメントを生成するために、次に\ cef_xxx.hすべてのファイルなどが含まれます:
SRC \ CEF \ \ CAPI \ cef_xxx_capi.h含ま
SRC \ CEF \ libcef_dll \ cpptoc \ xxx_cpptoc.h与SRC \ CEF \ libcef_dll \ cpptoc \ xxx_cpptoc.cc
SRC \ CEF \ libcef_dll \ ctocpp \ xxx_ctocpp.h与SRC \ CEF \ libcef_dll \ ctocpp \ xxx_ctocpp.cc
SRC \ CEF \、cef_xxx.hファイルの下に\ includeファイルは実際には、外部インターフェイスSDKでのインタフェースは、コメントによってここで説明が明確に自動的にスクリプトを実行し、すべての関連文書を更新することができます提供し、内部文書が自動的に生成され、Aファイルが更新されていない場合は、ハッシュ値が変化しない、それは再コンパイルにはつながらないだろう
インタフェースの以下の説明を注意してください
///
// Class used to represent the browser process aspects of a browser window. The
// methods of this class can only be called in the browser process. They may be
// called on any thread in that process unless otherwise indicated in the
// comments.
///
/*--cef(source=library)--*/
class CefBrowserHost : public virtual CefBaseRefCounted {
///
//save page
///
/*--cef()--*/
virtual void SavePage(const CefString& main_file,
const CefString& dir_path,
cef_save_page_type_t save_type)=0;
///
// 函数或者类说明
///
/*--cef()--*/此处不能有空格,
source=library 表示此类是CEF已实现的代码,并对外公开的接口
source=client 表示此类是一个回调接口类
更多参数说明可参考脚本同目录下的translator.README.txt文件
各関数やクラスは、厳密にはそうでない場合は、スクリプトエラーを書き込みの形式に従わなければなりません。
新しいカスタム列挙型や構造のニーズが置かれるべきSRC \ CEF \ \内部\ cef_types.h内部を含めます
インターフェイス定義は、忍者\ Debug_GN_x86 cefclient再コンパイル-Cを使用し、その後、translator.batの完了後に行うことができます
2.キャッシュクリーナーインタフェース
このインターフェイスは、インターフェイスがクリーンキャッシュはCEFインターフェース標準パッケージとして呼び出し元と場所を分析することによって、発見された新しいファイル、すでに上記のインタフェース定義であり、
SRC \ CEF \含ま\ cef_cache.h
SRC \ CEF \ libcef \ブラウザ\ net_service \ cache_manager_impl.h
SRC \ CEF \ libcef \ブラウザ\ net_service \ cache_manager_impl.cc
2つの新しいファイルでSRC \ CEF \ libcef_staticソースリストBUILD.gn
static_library( "libcef_static"){
"libcef /ブラウザ/ net_service / cache_manager_impl.cc"、
"libcef /ブラウザ/ net_service / cache_manager_impl.h"、
}
上記の知識を習得、基本的なアップグレードの変更がCEF3独自のキーを持っています。