CEF3 modificar as extensões de código fonte e interface

Por razões de trabalho, necessidade de usar CEF3 implementar páginas web, bem como limpar a operação de cache, a versão existente do CEF é nenhuma interface correspondente, então faça uma atualização sobre uma versão existente, para as suas próprias necessidades aumento do número de interfaces. Aqui para falar sobre o passo a passo sobre como modificar o código-fonte. Primeiro, há uma versão nativa própria completa da CEF podem ser compilados, de modo a modificar suavizar.

1. Aumentar a página Salvar em função.

    Em primeiro lugar, sabemos que esse recurso foi implementado no Chromium, mas não CEF3 externo fornecer essa interface, podemos olhar para um local específico no código fonte da chamada, uma vez que é uma página web para fazer o salvamento operação, ela deve ser a fonte ou CefFrame associado com CefBrowserHost, em primeiro lugar, encontramos a implementação vazio CefBrowserHostImpl :: DownloadImage () da interface, a chamada virou-se para encontrar as web_contents () -> DownloadImage (), encontrar WebContents * web_contents (), esta função não é implementada em CefBrowserHostImpl, mas pelo conteúdo pai: : WebContentsObserver alcançar,

caminho de origem no src \ content \ public \ navegador \ web_contents_observer.h,

A chamada final é src \ content \ navegador \ web_contents \ web_contents_impl.h,

从中 找到 boleano SavePage (base const :: FilePath & main_file, base de const :: FilePath & dir_path, SavePageType save_type) substituição;

Bem, então vamos modificar CefBrowserHostImpl não é possível isso? Não, esta é apenas a implementação interna da transferência, mas também cef função api pode abrir, a primeira coisa que você acha que vai modificar um arquivo relacionado a uma mudança de prática não é necessária, CEF3 ter escrito um script python para automatizar o nosso gerar automaticamente o arquivo todas as interfaces relevantes neste arquivo está em src \ cef \ ferramentas \ translator.bat

Este arquivo de script atravessa automaticamente src \ cef \ include \ cef_xxx.h todos os arquivos e, em seguida para produzir os seguintes documentos, de acordo com o comentário:

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 \ sob o arquivo cef_xxx.h, o arquivo é SDK interface de verdade externa fornece as interfaces descrito aqui por comentários claramente pode executar scripts atualizar automaticamente todos os documentos relevantes, documentos internos são gerados automaticamente uma valores de hash não mudam se o arquivo não é atualizado, não vai levar a recompilação

Observe o seguinte descrição da 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文件

Cada função ou classe deve seguir rigorosamente o formato de escrita, caso contrário o erro de script.

O novo tipo de enumeração personalizada ou estrutura necessidades para ser colocado src \ CEF \ incluir \ interna \ cef_types.h dentro

Interface de definição pode ser realizado após a conclusão de translator.bat, em seguida, usar ninja \ Debug_GN_x86 cefclient recompilação -C fora

2. Cache Cleaner interface

Esta interface é arquivos novos, definição de interface já descrito acima, a interface é limpa-cache encontrada analisando a origem ea localização da chamada como um CEF interface do pacote padrão

src \ cef \ include \ cef_cache.h  

src \ cef \ libcef \ navegador \ net_service \ cache_manager_impl.h

src \ cef \ libcef \ navegador \ net_service \ cache_manager_impl.cc

Dois novos arquivos lista em src \ cef \ libcef_static a fonte BUILD.gn

static_library ( "libcef_static") { 

    "libcef / navegador / net_service / cache_manager_impl.cc",
    "libcef / navegador / net_service / cache_manager_impl.h",

}

Dominar o conhecimento acima, modificações atualização básica tem CEF3 própria chave.

Publicado 84 artigos originais · ganhou elogios 15 · Exibições 140.000 +

Acho que você gosta

Origin blog.csdn.net/TDGX2004/article/details/103588014
Recomendado
Clasificación