#include "content/public/browser/browser_context.h"
#include <stddef.h>
#include <stdint.h>
#include <algorithm>
#include <limits>
#include <memory>
#include <unordered_set>
#include <utility>
#include <vector>
#include "base/base64.h"
#include "base/check_op.h"
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/functional/bind.h"
#include "base/lazy_instance.h"
#include "base/memory/ptr_util.h"
#include "base/memory/weak_ptr.h"
#include "base/metrics/field_trial_params.h"
#include "base/notreached.h"
#include "base/trace_event/typed_macros.h"
#include "base/unguessable_token.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "components/download/public/common/in_progress_download_manager.h"
#include "components/services/storage/privileged/mojom/indexed_db_control.mojom.h"
#include "content/browser/blob_storage/chrome_blob_storage_context.h"
#include "content/browser/browser_context_impl.h"
#include "content/browser/browsing_data/browsing_data_remover_impl.h"
#include "content/browser/child_process_host_impl.h"
#include "content/browser/child_process_security_policy_impl.h"
#include "content/browser/in_memory_federated_permission_context.h"
#include "content/browser/media/browser_feature_provider.h"
#include "content/browser/push_messaging/push_messaging_router.h"
#include "content/browser/site_info.h"
#include "content/browser/storage_partition_impl_map.h"
#include "content/public/browser/blob_handle.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/download_manager.h"
#include "content/public/browser/permission_controller.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/site_instance.h"
#include "content/public/browser/storage_partition_config.h"
#include "content/public/common/content_client.h"
#include "content/public/common/content_switches.h"
#include "media/base/media_switches.h"
#include "media/capabilities/in_memory_video_decode_stats_db_impl.h"
#include "media/capabilities/video_decode_stats_db_impl.h"
#include "media/mojo/services/video_decode_perf_history.h"
#include "media/mojo/services/webrtc_video_perf_history.h"
#include "storage/browser/blob/blob_storage_context.h"
#include "storage/browser/file_system/external_mount_points.h"
#include "third_party/blink/public/mojom/push_messaging/push_messaging.mojom.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_proto.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_value.h"
namespace content {
namespace {
ChromeBrowserContext;
ChromeTrackEvent;
base::WeakPtr<storage::BlobStorageContext> BlobStorageContextGetterForBrowser(
scoped_refptr<ChromeBlobStorageContext> blob_context) { … }
}
BrowserContext::BrowserContext() { … }
BrowserContext::~BrowserContext() { … }
DownloadManager* BrowserContext::GetDownloadManager() { … }
storage::ExternalMountPoints* BrowserContext::GetMountPoints() { … }
BrowsingDataRemover* BrowserContext::GetBrowsingDataRemover() { … }
PermissionController* BrowserContext::GetPermissionController() { … }
StoragePartition* BrowserContext::GetStoragePartition(
SiteInstance* site_instance,
bool can_create) { … }
StoragePartition* BrowserContext::GetStoragePartition(
const StoragePartitionConfig& storage_partition_config,
bool can_create) { … }
StoragePartition* BrowserContext::GetStoragePartitionForUrl(
const GURL& url,
bool can_create) { … }
void BrowserContext::ForEachLoadedStoragePartition(
base::FunctionRef<void(StoragePartition*)> fn) { … }
size_t BrowserContext::GetLoadedStoragePartitionCount() { … }
void BrowserContext::AsyncObliterateStoragePartition(
const std::string& partition_domain,
base::OnceClosure on_gc_required,
base::OnceClosure done_callback) { … }
void BrowserContext::GarbageCollectStoragePartitions(
std::unordered_set<base::FilePath> active_paths,
base::OnceClosure done) { … }
StoragePartition* BrowserContext::GetDefaultStoragePartition() { … }
void BrowserContext::CreateMemoryBackedBlob(base::span<const uint8_t> data,
const std::string& content_type,
BlobCallback callback) { … }
BrowserContext::BlobContextGetter BrowserContext::GetBlobStorageContext() { … }
mojo::PendingRemote<blink::mojom::Blob> BrowserContext::GetBlobRemote(
const std::string& uuid) { … }
void BrowserContext::DeliverPushMessage(
const GURL& origin,
int64_t service_worker_registration_id,
const std::string& message_id,
std::optional<std::string> payload,
base::OnceCallback<void(blink::mojom::PushEventStatus)> callback) { … }
void BrowserContext::FirePushSubscriptionChangeEvent(
const GURL& origin,
int64_t service_worker_registration_id,
blink::mojom::PushSubscriptionPtr new_subscription,
blink::mojom::PushSubscriptionPtr old_subscription,
base::OnceCallback<void(blink::mojom::PushEventStatus)> callback) { … }
void BrowserContext::NotifyWillBeDestroyed() { … }
void BrowserContext::EnsureResourceContextInitialized() { … }
void BrowserContext::SaveSessionState() { … }
void BrowserContext::SetDownloadManagerForTesting(
std::unique_ptr<DownloadManager> download_manager) { … }
void BrowserContext::SetPermissionControllerForTesting(
std::unique_ptr<PermissionController> permission_controller) { … }
SharedCorsOriginAccessList* BrowserContext::GetSharedCorsOriginAccessList() { … }
void BrowserContext::ShutdownStoragePartitions() { … }
bool BrowserContext::ShutdownStarted() { … }
const std::string& BrowserContext::UniqueId() { … }
media::VideoDecodePerfHistory* BrowserContext::GetVideoDecodePerfHistory() { … }
media::WebrtcVideoPerfHistory* BrowserContext::GetWebrtcVideoPerfHistory() { … }
media::learning::LearningSession* BrowserContext::GetLearningSession() { … }
std::unique_ptr<download::InProgressDownloadManager>
BrowserContext::RetrieveInProgressDownloadManager() { … }
void BrowserContext::WriteIntoTrace(
perfetto::TracedProto<ChromeBrowserContext> proto) const { … }
ResourceContext* BrowserContext::GetResourceContext() const { … }
base::WeakPtr<BrowserContext> BrowserContext::GetWeakPtr() { … }
FileSystemAccessPermissionContext*
BrowserContext::GetFileSystemAccessPermissionContext() { … }
ContentIndexProvider* BrowserContext::GetContentIndexProvider() { … }
bool BrowserContext::CanUseDiskWhenOffTheRecord() { … }
variations::VariationsClient* BrowserContext::GetVariationsClient() { … }
std::unique_ptr<media::VideoDecodePerfHistory>
BrowserContext::CreateVideoDecodePerfHistory() { … }
FederatedIdentityApiPermissionContextDelegate*
BrowserContext::GetFederatedIdentityApiPermissionContext() { … }
FederatedIdentityAutoReauthnPermissionContextDelegate*
BrowserContext::GetFederatedIdentityAutoReauthnPermissionContext() { … }
FederatedIdentityPermissionContextDelegate*
BrowserContext::GetFederatedIdentityPermissionContext() { … }
KAnonymityServiceDelegate* BrowserContext::GetKAnonymityServiceDelegate() { … }
OriginTrialsControllerDelegate*
BrowserContext::GetOriginTrialsControllerDelegate() { … }
}