// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_CONTEXT_H_ #define CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_CONTEXT_H_ #pragma once #include "include/cef_request_context_handler.h" #include "libcef/browser/alloy/chrome_profile_alloy.h" #include "libcef/browser/browser_context.h" #include "libcef/browser/request_context_handler_map.h" #include "chrome/browser/download/download_prefs.h" #include "components/proxy_config/pref_proxy_config_tracker.h" #include "components/visitedlink/browser/visitedlink_delegate.h" class CefDownloadManagerDelegate; class CefSSLHostStateDelegate; class CefVisitedLinkListener; class MediaDeviceIDSalt; class PrefService; namespace extensions { class CefExtensionSystem; } namespace visitedlink { class VisitedLinkWriter; } // See CefBrowserContext documentation for usage. Only accessed on the UI thread // unless otherwise indicated. ChromeProfileAlloy must be the first listed base // class to avoid issues when casting between void* and content::BrowserContext* // in Chromium code. class AlloyBrowserContext : public ChromeProfileAlloy, public CefBrowserContext, public visitedlink::VisitedLinkDelegate { public: explicit AlloyBrowserContext(const CefRequestContextSettings& settings); // CefBrowserContext overrides. content::BrowserContext* AsBrowserContext() override { return this; } Profile* AsProfile() override { return this; } void Initialize() override; void Shutdown() override; void RemoveCefRequestContext(CefRequestContextImpl* context) override; void LoadExtension(const CefString& root_directory, CefRefPtr manifest, CefRefPtr handler, CefRefPtr loader_context) override; bool GetExtensions(std::vector& extension_ids) override; CefRefPtr GetExtension(const CefString& extension_id) override; bool UnloadExtension(const CefString& extension_id) override; bool IsPrintPreviewSupported() const override; // content::BrowserContext overrides. content::ResourceContext* GetResourceContext() override; content::ClientHintsControllerDelegate* GetClientHintsControllerDelegate() override; void SetCorsOriginAccessListForOrigin( const url::Origin& source_origin, std::vector allow_patterns, std::vector block_patterns, base::OnceClosure closure) override; base::FilePath GetPath() override; base::FilePath GetPath() const override; std::unique_ptr CreateZoomLevelDelegate( const base::FilePath& partition_path) override; bool IsOffTheRecord() const override; content::DownloadManagerDelegate* GetDownloadManagerDelegate() override; content::BrowserPluginGuestManager* GetGuestManager() override; storage::SpecialStoragePolicy* GetSpecialStoragePolicy() override; content::PushMessagingService* GetPushMessagingService() override; content::StorageNotificationService* GetStorageNotificationService() override; content::SSLHostStateDelegate* GetSSLHostStateDelegate() override; content::PermissionControllerDelegate* GetPermissionControllerDelegate() override; content::BackgroundFetchDelegate* GetBackgroundFetchDelegate() override; content::BackgroundSyncController* GetBackgroundSyncController() override; content::BrowsingDataRemoverDelegate* GetBrowsingDataRemoverDelegate() override; std::string GetMediaDeviceIDSalt() override; // Profile overrides. ChromeZoomLevelPrefs* GetZoomLevelPrefs() override; scoped_refptr GetURLLoaderFactory() override; PrefService* GetPrefs() override; bool AllowsBrowserWindows() const override { return false; } const PrefService* GetPrefs() const override; ProfileKey* GetProfileKey() const override; policy::SchemaRegistryService* GetPolicySchemaRegistryService() override; policy::UserCloudPolicyManager* GetUserCloudPolicyManager() override; policy::ProfilePolicyConnector* GetProfilePolicyConnector() override; const policy::ProfilePolicyConnector* GetProfilePolicyConnector() const override; // Values checked in ProfileNetworkContextService::CreateNetworkContextParams // when creating the NetworkContext. bool ShouldRestoreOldSessionCookies() const override { return ShouldPersistSessionCookies(); } bool ShouldPersistSessionCookies() const override { return !!settings_.persist_session_cookies; } base::Optional> GetCookieableSchemes() override { return cookieable_schemes(); } // visitedlink::VisitedLinkDelegate methods. void RebuildTable(const scoped_refptr& enumerator) override; // Manages extensions. extensions::CefExtensionSystem* extension_system() const { return extension_system_; } // Called from CefBrowserHostImpl::DidFinishNavigation to update the table of // visited links. void AddVisitedURLs(const std::vector& urls); // Called from DownloadPrefs::FromBrowserContext. DownloadPrefs* GetDownloadPrefs(); private: ~AlloyBrowserContext() override; std::unique_ptr pref_service_; std::unique_ptr pref_proxy_config_tracker_; std::unique_ptr download_manager_delegate_; std::unique_ptr ssl_host_state_delegate_; std::unique_ptr visitedlink_master_; // |visitedlink_listener_| is owned by visitedlink_master_. CefVisitedLinkListener* visitedlink_listener_ = nullptr; // Owned by the KeyedService system. extensions::CefExtensionSystem* extension_system_ = nullptr; // The key to index KeyedService instances created by // SimpleKeyedServiceFactory. std::unique_ptr key_; std::unique_ptr download_prefs_; std::unique_ptr resource_context_; scoped_refptr media_device_id_salt_; DISALLOW_COPY_AND_ASSIGN(AlloyBrowserContext); }; #endif // CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_CONTEXT_H_