#ifndef IOS_WEB_CONTENT_CONTENT_BROWSER_CONTEXT_H_
#define IOS_WEB_CONTENT_CONTENT_BROWSER_CONTEXT_H_
#import "base/memory/raw_ptr.h"
#import "build/blink_buildflags.h"
#import "content/public/browser/browser_context.h"
#import "ios/web/public/browser_state.h"
#if !BUILDFLAG(USE_BLINK)
#error File can only be included when USE_BLINK is true
#endif
namespace content {
class BrowserContext;
}
namespace web {
class BrowserContextHolder;
class ContentBrowserContext : public content::BrowserContext {
public:
static content::BrowserContext* FromBrowserState(
web::BrowserState* browser_state);
explicit ContentBrowserContext(web::BrowserState* browser_state);
~ContentBrowserContext() override;
base::FilePath GetPath() const override;
std::unique_ptr<content::ZoomLevelDelegate> CreateZoomLevelDelegate(
const base::FilePath& partition_path) override;
bool IsOffTheRecord() override;
content::DownloadManagerDelegate* GetDownloadManagerDelegate() override;
content::BrowserPluginGuestManager* GetGuestManager() override;
storage::SpecialStoragePolicy* GetSpecialStoragePolicy() override;
content::PlatformNotificationService* GetPlatformNotificationService()
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;
content::ContentIndexProvider* GetContentIndexProvider() override;
content::ClientHintsControllerDelegate* GetClientHintsControllerDelegate()
override;
content::FederatedIdentityApiPermissionContextDelegate*
GetFederatedIdentityApiPermissionContext() override;
content::FederatedIdentityPermissionContextDelegate*
GetFederatedIdentityPermissionContext() override;
content::ReduceAcceptLanguageControllerDelegate*
GetReduceAcceptLanguageControllerDelegate() override;
content::OriginTrialsControllerDelegate* GetOriginTrialsControllerDelegate()
override;
private:
friend class BrowserContextHolder;
bool ignore_certificate_errors() const { return false; }
base::FilePath browser_path_;
void InitWhileIOAllowed();
void FinishInitWhileIOAllowed();
raw_ptr<web::BrowserState> browser_state_ = nullptr;
};
}
#endif