#include "chrome/browser/extensions/extension_special_storage_policy.h"
#include <stddef.h>
#include <stdint.h>
#include <utility>
#include "base/check.h"
#include "base/check_op.h"
#include "base/command_line.h"
#include "base/containers/contains.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/ref_counted.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/utf_string_conversions.h"
#include "base/synchronization/lock.h"
#include "base/task/task_traits.h"
#include "base/thread_annotations.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/content_settings/cookie_settings_factory.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/url_constants.h"
#include "components/content_settings/core/browser/cookie_settings.h"
#include "components/content_settings/core/common/content_settings.h"
#include "components/content_settings/core/common/content_settings_types.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/common/url_constants.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_set.h"
#include "extensions/common/manifest_handlers/content_capabilities_handler.h"
#include "extensions/common/permissions/permissions_data.h"
#include "url/gurl.h"
#include "url/origin.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chrome/common/webui_url_constants.h"
#endif
BrowserThread;
APIPermission;
Extension;
APIPermissionID;
SpecialStoragePolicy;
class ExtensionSpecialStoragePolicy::CookieSettingsObserver
: public content_settings::CookieSettings::Observer { … };
ExtensionSpecialStoragePolicy::ExtensionSpecialStoragePolicy(
content_settings::CookieSettings* cookie_settings)
: … { … }
ExtensionSpecialStoragePolicy::~ExtensionSpecialStoragePolicy() { … }
bool ExtensionSpecialStoragePolicy::IsStorageProtected(const GURL& origin) { … }
bool ExtensionSpecialStoragePolicy::IsStorageUnlimited(const GURL& origin) { … }
bool ExtensionSpecialStoragePolicy::IsStorageSessionOnly(const GURL& origin) { … }
bool ExtensionSpecialStoragePolicy::HasSessionOnlyOrigins() { … }
bool ExtensionSpecialStoragePolicy::HasIsolatedStorage(const GURL& origin) { … }
bool ExtensionSpecialStoragePolicy::IsStorageDurable(const GURL& origin) { … }
bool ExtensionSpecialStoragePolicy::NeedsProtection(
const extensions::Extension* extension) { … }
const extensions::ExtensionSet*
ExtensionSpecialStoragePolicy::ExtensionsProtectingOrigin(const GURL& origin) { … }
void ExtensionSpecialStoragePolicy::GrantRightsForExtension(
const extensions::Extension* extension,
content::BrowserContext* context) { … }
void ExtensionSpecialStoragePolicy::RevokeRightsForExtension(
const extensions::Extension* extension,
content::BrowserContext* context) { … }
void ExtensionSpecialStoragePolicy::RevokeRightsForAllExtensions() { … }
void ExtensionSpecialStoragePolicy::NotifyGranted(const GURL& origin,
int change_flags) { … }
void ExtensionSpecialStoragePolicy::NotifyRevoked(const GURL& origin,
int change_flags) { … }
void ExtensionSpecialStoragePolicy::NotifyCleared() { … }
void ExtensionSpecialStoragePolicy::AddOriginWithUnlimitedStorage(
const url::Origin& origin) { … }
ExtensionSpecialStoragePolicy::SpecialCollection::SpecialCollection() { … }
ExtensionSpecialStoragePolicy::SpecialCollection::~SpecialCollection() { … }
bool ExtensionSpecialStoragePolicy::SpecialCollection::Contains(
const GURL& origin) { … }
bool ExtensionSpecialStoragePolicy::SpecialCollection::GrantsCapabilitiesTo(
const GURL& origin) { … }
const extensions::ExtensionSet*
ExtensionSpecialStoragePolicy::SpecialCollection::ExtensionsContaining(
const GURL& origin) { … }
bool ExtensionSpecialStoragePolicy::SpecialCollection::ContainsExtension(
const std::string& extension_id) { … }
bool ExtensionSpecialStoragePolicy::SpecialCollection::Add(
const extensions::Extension* extension) { … }
bool ExtensionSpecialStoragePolicy::SpecialCollection::Remove(
const extensions::Extension* extension) { … }
void ExtensionSpecialStoragePolicy::SpecialCollection::Clear() { … }
void ExtensionSpecialStoragePolicy::SpecialCollection::ClearCache() { … }