/** @file client_app.h * @brief 定义Browser进程的CefApp类,管理Cef模块的生命周期 * @copyright (c) 2016, NetEase Inc. All rights reserved * @author Redrain * @date 2016/7/19 */ #pragma once #include #include #include #include #include #include "include/cef_app.h" #include "cef_control/app/cef_js_bridge.h" namespace nim_comp { class ClientApp : public CefApp, public CefBrowserProcessHandler, public CefRenderProcessHandler { public: ClientApp(); private: // CefApp methods. virtual void OnBeforeCommandLineProcessing(const CefString& process_type, CefRefPtr command_line) OVERRIDE; virtual void OnRegisterCustomSchemes( CefRefPtr registrar) OVERRIDE; virtual CefRefPtr GetBrowserProcessHandler() OVERRIDE{ return this; } virtual CefRefPtr GetRenderProcessHandler() OVERRIDE{ return this; } // CefBrowserProcessHandler methods. virtual void OnContextInitialized() OVERRIDE; virtual void OnBeforeChildProcessLaunch( CefRefPtr command_line) OVERRIDE; virtual void OnRenderProcessThreadCreated(CefRefPtr extra_info) OVERRIDE; // CefRenderProcessHandler methods. virtual void OnRenderThreadCreated(CefRefPtr extra_info) OVERRIDE; virtual void OnWebKitInitialized() OVERRIDE; virtual void OnBrowserCreated(CefRefPtr browser) OVERRIDE; virtual void OnBrowserDestroyed(CefRefPtr browser) OVERRIDE; virtual CefRefPtr GetLoadHandler() OVERRIDE; virtual bool OnBeforeNavigation( CefRefPtr browser, CefRefPtr frame, CefRefPtr request, NavigationType navigation_type, bool is_redirect) OVERRIDE; virtual void OnContextCreated(CefRefPtr browser, CefRefPtr frame, CefRefPtr context) OVERRIDE; virtual void OnContextReleased(CefRefPtr browser, CefRefPtr frame, CefRefPtr context) OVERRIDE; virtual void OnUncaughtException( CefRefPtr browser, CefRefPtr frame, CefRefPtr context, CefRefPtr exception, CefRefPtr stackTrace) OVERRIDE; virtual void OnFocusedNodeChanged( CefRefPtr browser, CefRefPtr frame, CefRefPtr node) OVERRIDE; virtual bool OnProcessMessageReceived( CefRefPtr browser, CefProcessId source_process, CefRefPtr message) OVERRIDE; private: std::shared_ptr render_js_bridge_; std::vector cookieable_schemes_; // Schemes that will be registered with the global cookie manager. Used in bool last_node_is_editable_; // both the browser and renderer process. IMPLEMENT_REFCOUNTING(ClientApp); }; }