Pour des raisons de travail, besoin d'utiliser CeF3 mettre en œuvre des pages Web ainsi que d'autoriser l'opération de cache, la version existante du CEF est pas d'interface correspondante, donc vous faire une mise à niveau sur une version existante, pour leurs propres besoins accrus nombre d'interfaces. Ici pour parler étape par étape comment modifier le code source. Tout d'abord, il existe une version complète propre native du CEF peut être compilé, de manière à modifier lisse.
1. Augmenter la page Enregistrer en fonction.
Tout d'abord, nous savons que cette fonction doit être la source ou CefFrame a été mis en œuvre en chrome, mais pas CeF3 externe fournir cette interface, nous pouvons trouver un emplacement spécifique dans le code source de l'appel, car il est une page Web pour faire l'opération de sauvegarde, associée à CefBrowserHost, Tout d'abord, nous trouvons le CefBrowserHostImpl vide :: mise en œuvre downloadImage () de l'interface, l'appel se trouver les web_contents () -> downloadImage (), trouver WebContents * web_contents (), cette fonction ne soit pas mis en œuvre CefBrowserHostImpl, mais par le contenu parent: : WebContentsObserver réaliser,
Chemin source dans le répertoire src \ content \ public \ navigateur \ web_contents_observer.h,
Le dernier appel est src \ content \ navigateur \ web_contents \ web_contents_impl.h,
从中 找到 bool savepage (base de const :: CheminFichier & main_file, la base const :: CheminFichier & dir_path, SavePageType save_type) Commande;
Eh bien, nous modifions CefBrowserHostImpl n'est pas peut-il? Non, ce n'est que la mise en œuvre interne du transfert, mais aussi cef fonction api peut ouvrir, la première chose que vous pensez va modifier un fichier lié à un changement de la pratique n'est pas nécessaire, CeF3 ont écrit un script python pour automatiser notre générer automatiquement toutes les interfaces pertinentes fichier ce fichier est dans src \ cef \ tools \ translator.bat
Ce fichier de script automatiquement src traverse \ cef \ include \ cef_xxx.h tous les fichiers, puis de produire les documents suivants conformément au commentaire:
src \ cef \ include \ 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 \ include \ sous le fichier cef_xxx.h, le fichier est en fait le SDK d'interface externe fournit les interfaces décrites ici par les commentaires peuvent clairement exécuter des scripts automatiquement mis à jour tous les documents pertinents, les documents internes sont générés automatiquement les valeurs de hachage ne changent pas si le fichier est pas mis à jour, il ne conduira pas à recompiler
Notez la description suivante de l'interface
///
// 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文件
Chaque fonction ou classe doivent suivre strictement le format d'écriture, sinon l'erreur de script.
Les nouveaux besoins de type énumération personnalisée ou la structure à placer src \ cef \ include \ interne \ cef_types.h intérieur
Interface définition peut être effectuée après l'achèvement de translator.bat, puis utiliser ninja \ Debug_GN_x86 cefclient recompilation -C out
2. Cache Cleaner Interface
Cette interface est de nouveaux fichiers, définition d'interface déjà décrite ci-dessus, l'interface est-cache propre trouvé en analysant la source et l'emplacement d'appel comme une interface de package standard CEF
src \ cef \ include \ cef_cache.h
src \ cef \ libcef \ navigateur \ net_service \ cache_manager_impl.h
src \ cef \ libcef \ navigateur \ net_service \ cache_manager_impl.cc
Deux nouveaux fichiers dans src \ cef \ libcef_static la liste des sources BUILD.gn
static_library ( "libcef_static") {
"libcef / navigateur / net_service / cache_manager_impl.cc",
"libcef / navigateur / net_service / cache_manager_impl.h",
}
Maîtriser les connaissances ci-dessus, les modifications de mise à niveau de base ont propre clé CeF3.