// // CefViewBrowserApp.h // CefViewCore // // Created by Sheen Tian on 2020/6/11. // #ifndef CefViewBrowserApp_h #define CefViewBrowserApp_h #pragma once #pragma region stl_headers #include #include #pragma endregion #include #include #include struct FolderResourceMapping { CefString path; CefString url; int priority; }; struct ArchiveResourceMapping { CefString path; CefString url; CefString password; int priority; }; class CefViewBrowserApp : public CefApp , public CefBrowserProcessHandler { IMPLEMENT_REFCOUNTING(CefViewBrowserApp); private: // The name of the bridge object CefString builtin_scheme_name_; CefString bridge_object_name_; std::unordered_map client_handler_map_; // The app delegate CefViewBrowserAppDelegateInterface::WeakPtr app_delegate_; std::list folderResourceMappingList_; std::list archiveResourceMappingList_; public: CefViewBrowserApp(const CefString& scheme_name, const CefString& bridge_name, CefViewBrowserAppDelegateInterface::RefPtr delegate); ~CefViewBrowserApp(); void CheckInClient(void* ctx, const CefViewBrowserClientDelegateInterface::RefPtr& handler); void CheckOutClient(void* ctx); CefViewBrowserClientDelegateInterface::RefPtr GetClientHandler(void* ctx); void AddLocalFolderResource(const CefString& path, const CefString& url, int priority = 0); const std::list& FolderResourceMappingList(); void AddArchiveResource(const CefString& path, const CefString& url, const CefString& password = "", int priority = 0); const std::list& ArchiveResourceMappingList(); bool AddGlobalCookie(const CefString& name, const CefString& value, const CefString& domain, const CefString& url); bool DeleteAllCookies(); bool AddCrossOriginWhitelistEntry(const CefString& sourceOrigin, const CefString& targetSchema, const CefString& targetDomain, bool allowTargetSubdomains); bool RemoveCrossOriginWhitelistEntry(const CefString& sourceOrigin, const CefString& targetSchema, const CefString& targetDomain, bool allowTargetSubdomains); bool ClearCrossOriginWhitelistEntry(); bool IsSafeToExit(); private: #pragma region CefApp ////////////////////////////////////////////////////////////////////////// // CefApp methods: virtual void OnBeforeCommandLineProcessing(const CefString& process_type, CefRefPtr command_line) override; virtual void OnRegisterCustomSchemes(CefRawPtr registrar) override; virtual CefRefPtr GetResourceBundleHandler() override; virtual CefRefPtr GetBrowserProcessHandler() override; virtual CefRefPtr GetRenderProcessHandler() override; #pragma endregion #pragma region CefBrowserProcessHandler ////////////////////////////////////////////////////////////////////////// // CefBrowserProcessHandler methods: virtual void OnContextInitialized() override; virtual void OnBeforeChildProcessLaunch(CefRefPtr command_line) override; virtual void OnScheduleMessagePumpWork(int64_t delay_ms) override; CefRefPtr GetDefaultClient() override; #pragma endregion }; #endif