#include "chromecast/browser/cast_browser_context.h"
#include <memory>
#include <utility>
#if BUILDFLAG(ARKWEB_WEBSTORAGE)
#include "base/logging.h"
#endif
#include "base/command_line.h"
#include "base/files/file_util.h"
#include "base/path_service.h"
#include "build/build_config.h"
#include "chromecast/base/cast_paths.h"
#include "chromecast/browser/cast_download_manager_delegate.h"
#include "chromecast/browser/cast_permission_manager.h"
#include "components/keyed_service/core/simple_key_map.h"
#include "components/profile_metrics/browser_profile_type.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/common/content_switches.h"
namespace chromecast {
namespace shell {
namespace {
const void* const kDownloadManagerDelegateKey = &kDownloadManagerDelegateKey;
}
CastBrowserContext::CastBrowserContext() {
#if BUILDFLAG(ARKWEB_WEBSTORAGE)
LOG(INFO) << "CastBrowserContext SetBrowserProfileType, context : " << this;
#endif
profile_metrics::SetBrowserProfileType(
this, profile_metrics::BrowserProfileType::kRegular);
InitWhileIOAllowed();
simple_factory_key_ =
std::make_unique<SimpleFactoryKey>(GetPath(), IsOffTheRecord());
SimpleKeyMap::GetInstance()->Associate(this, simple_factory_key_.get());
}
CastBrowserContext::~CastBrowserContext() {
SimpleKeyMap::GetInstance()->Dissociate(this);
NotifyWillBeDestroyed();
ShutdownStoragePartitions();
}
void CastBrowserContext::InitWhileIOAllowed() {
#if BUILDFLAG(IS_ANDROID)
CHECK(base::PathService::Get(base::DIR_ANDROID_APP_DATA, &path_));
path_ = path_.Append(FILE_PATH_LITERAL("cast_shell"));
if (!base::PathExists(path_))
base::CreateDirectory(path_);
#else
CHECK(base::PathService::Get(DIR_CAST_HOME, &path_));
#endif
}
std::unique_ptr<content::ZoomLevelDelegate>
CastBrowserContext::CreateZoomLevelDelegate(
const base::FilePath& partition_path) {
return nullptr;
}
base::FilePath CastBrowserContext::GetPath() const {
return path_;
}
bool CastBrowserContext::IsOffTheRecord() {
return false;
}
content::DownloadManagerDelegate*
CastBrowserContext::GetDownloadManagerDelegate() {
if (!GetUserData(kDownloadManagerDelegateKey)) {
SetUserData(kDownloadManagerDelegateKey,
std::make_unique<CastDownloadManagerDelegate>());
}
return static_cast<CastDownloadManagerDelegate*>(
GetUserData(kDownloadManagerDelegateKey));
}
content::BrowserPluginGuestManager* CastBrowserContext::GetGuestManager() {
return nullptr;
}
storage::SpecialStoragePolicy* CastBrowserContext::GetSpecialStoragePolicy() {
return nullptr;
}
content::PlatformNotificationService*
CastBrowserContext::GetPlatformNotificationService() {
return nullptr;
}
content::PushMessagingService* CastBrowserContext::GetPushMessagingService() {
return nullptr;
}
content::StorageNotificationService*
CastBrowserContext::GetStorageNotificationService() {
return nullptr;
}
content::SSLHostStateDelegate* CastBrowserContext::GetSSLHostStateDelegate() {
return nullptr;
}
content::PermissionControllerDelegate*
CastBrowserContext::GetPermissionControllerDelegate() {
if (!permission_manager_.get())
permission_manager_.reset(new CastPermissionManager());
return permission_manager_.get();
}
content::ClientHintsControllerDelegate*
CastBrowserContext::GetClientHintsControllerDelegate() {
return nullptr;
}
content::BackgroundFetchDelegate*
CastBrowserContext::GetBackgroundFetchDelegate() {
return nullptr;
}
content::BackgroundSyncController*
CastBrowserContext::GetBackgroundSyncController() {
return nullptr;
}
content::BrowsingDataRemoverDelegate*
CastBrowserContext::GetBrowsingDataRemoverDelegate() {
return nullptr;
}
content::ReduceAcceptLanguageControllerDelegate*
CastBrowserContext::GetReduceAcceptLanguageControllerDelegate() {
return nullptr;
}
}
}