¿Cómo extender la interfaz de cada capa de cromo y extender la interfaz del cromo?
En primer lugar, el diseño del módulo de Chromium sigue el principio de inversión de dependencia. El módulo superior depende del módulo inferior y el módulo inferior no depende de la implementación del módulo superior.
Además, es necesario distinguir dos propósitos al agregar interfaces: 1. Proporcionar funciones para uso externo (algunas interfaces definidas por funciones pertenecen a esta categoría, como WebView, NavigationState, etc. 2. Permitir que alguna lógica empresarial se implemente externamente (nombradas con el cliente, los observadores o los delegados pertenecen a esta categoría). . Además de los diferentes nombres, los métodos de implementación a los que se puede hacer referencia también son diferentes.
1. Utilice el filtro de mensajes IPC Para evitar "expandir" la clase de interfaz al agregar nuevas funciones, Chromium proporciona una serie de ayudantes (observadores). Cuando necesite implementar nuevas funciones, puede filtrar mensajes IPC a través de estos observadores para implementar sus propias funciones.
Si la nueva función puede enviar o recibir mensajes IPC para completar la función de notificación o devolución de llamada, se prefiere el modo Filtro IPC.
La interfaz RenderViewObserver implementada en el proceso Renderer puede recibir y procesar mensajes IPC en RenderView. ChromeExtensionHelper es un ejemplo de monitoreo de carga y cierre del marco.
Si hay algún código en WebKit, no es necesario extender WebViewClient directamente. Puede definir una nueva interfaz para llamar a WebKit y luego implementarla en el lado de representación. Puede consultar la implementación de WebAutoFillClient.