#include "components/content_settings/core/common/cookie_settings_base.h"
#include <functional>
#include <optional>
#include <string>
#include "base/check.h"
#include "base/feature_list.h"
#include "base/metrics/histogram_macros.h"
#include "base/not_fatal_until.h"
#include "base/notreached.h"
#include "base/types/optional_util.h"
#include "build/build_config.h"
#include "components/content_settings/core/common/content_settings.h"
#include "components/content_settings/core/common/content_settings_enums.mojom-shared.h"
#include "components/content_settings/core/common/content_settings_enums.mojom.h"
#include "components/content_settings/core/common/content_settings_metadata.h"
#include "components/content_settings/core/common/content_settings_types.h"
#include "components/content_settings/core/common/features.h"
#include "components/privacy_sandbox/privacy_sandbox_features.h"
#include "net/base/features.h"
#include "net/base/net_errors.h"
#include "net/base/url_util.h"
#include "net/cookies/cookie_constants.h"
#include "net/cookies/cookie_setting_override.h"
#include "net/cookies/cookie_util.h"
#include "net/cookies/site_for_cookies.h"
#include "net/cookies/static_cookie_policy.h"
#include "third_party/abseil-cpp/absl/types/variant.h"
#include "url/gurl.h"
namespace content_settings {
namespace {
StorageAccessResult;
ThirdPartyCookieAllowMechanism;
bool IsAllowedByCORS(const net::CookieSettingOverrides& overrides,
const GURL& request_url,
const GURL& first_party_url) { … }
constexpr StorageAccessResult GetStorageAccessResult(
ThirdPartyCookieAllowMechanism mechanism) { … }
constexpr std::optional<SettingSource> GetSettingSource(
ThirdPartyCookieAllowMechanism mechanism) { … }
bool IsThirdPartyRequest(const GURL& url,
const net::SiteForCookies& site_for_cookies) { … }
}
bool CookieSettingsBase::storage_access_api_grants_unpartitioned_storage_ = …;
void CookieSettingsBase::
SetStorageAccessAPIGrantsUnpartitionedStorageForTesting(bool grants) { … }
CookieSettingsBase::CookieSettingsBase()
: … { … }
CookieSettingsBase::CookieSettingWithMetadata::CookieSettingWithMetadata(
ContentSetting cookie_setting,
bool allow_partitioned_cookies,
bool is_explicit_setting,
ThirdPartyCookieAllowMechanism third_party_cookie_allow_mechanism,
bool is_third_party_request)
: … { … }
bool CookieSettingsBase::CookieSettingWithMetadata::
BlockedByThirdPartyCookieBlocking() const { … }
const CookieSettingsBase::CookieSettingsTypeSet&
CookieSettingsBase::GetContentSettingsTypes() { … }
GURL CookieSettingsBase::GetFirstPartyURL(
const net::SiteForCookies& site_for_cookies,
const url::Origin* top_frame_origin) { … }
bool CookieSettingsBase::IsAnyTpcdMetadataAllowMechanism(
const ThirdPartyCookieAllowMechanism& mechanism) { … }
bool CookieSettingsBase::Is1PDtRelatedAllowMechanism(
const ThirdPartyCookieAllowMechanism& mechanism) { … }
ThirdPartyCookieAllowMechanism
CookieSettingsBase::TpcdMetadataSourceToAllowMechanism(
const mojom::TpcdMetadataRuleSource& source) { … }
bool CookieSettingsBase::ShouldDeleteCookieOnExit(
const ContentSettingsForOneType& cookie_settings,
const std::string& domain,
net::CookieSourceScheme scheme) const { … }
ContentSetting CookieSettingsBase::GetCookieSetting(
const GURL& url,
const net::SiteForCookies& site_for_cookies,
const GURL& first_party_url,
net::CookieSettingOverrides overrides,
content_settings::SettingInfo* info) const { … }
CookieSettingsBase::ThirdPartyCookieAllowMechanism
CookieSettingsBase::GetThirdPartyCookieAllowMechanism(
const GURL& url,
const net::SiteForCookies& site_for_cookies,
const GURL& first_party_url,
net::CookieSettingOverrides overrides,
content_settings::SettingInfo* info) const { … }
bool CookieSettingsBase::IsFullCookieAccessAllowed(
const GURL& url,
const net::SiteForCookies& site_for_cookies,
const std::optional<url::Origin>& top_frame_origin,
net::CookieSettingOverrides overrides,
CookieSettingWithMetadata* cookie_settings) const { … }
bool CookieSettingsBase::IsCookieSessionOnly(const GURL& origin) const { … }
net::CookieAccessSemantics
CookieSettingsBase::GetCookieAccessSemanticsForDomain(
const std::string& cookie_domain) const { … }
bool CookieSettingsBase::ShouldConsiderMitigationsFor3pcd(
const GURL& first_party_url) const { … }
bool CookieSettingsBase::IsBlockedByTopLevel3pcdOriginTrial(
const GURL& first_party_url) const { … }
bool CookieSettingsBase::IsAllowedBy3pcdTrialSettings(
const GURL& url,
const GURL& first_party_url,
net::CookieSettingOverrides overrides) const { … }
bool CookieSettingsBase::IsAllowedByTopLevel3pcdTrialSettings(
const GURL& first_party_url,
net::CookieSettingOverrides overrides) const { … }
bool CookieSettingsBase::Are3pcsForceDisabledByOverride(
net::CookieSettingOverrides overrides) const { … }
bool CookieSettingsBase::ShouldConsider3pcdMetadataGrantsSettings(
const GURL& first_party_url,
net::CookieSettingOverrides overrides) const { … }
bool CookieSettingsBase::IsAllowedBy3pcdMetadataGrantsSettings(
const GURL& url,
const GURL& first_party_url,
net::CookieSettingOverrides overrides,
SettingInfo* out_info) const { … }
bool CookieSettingsBase::IsAllowedByTrackingProtectionSetting(
const GURL& url,
const GURL& first_party_url,
SettingInfo& out_info) const { … }
bool CookieSettingsBase::IsAllowedBy3pcdHeuristicsGrantsSettings(
const GURL& url,
const GURL& first_party_url,
net::CookieSettingOverrides overrides) const { … }
net::CookieSettingOverrides CookieSettingsBase::SettingOverridesForStorage()
const { … }
bool CookieSettingsBase::IsAllowedByTopLevelStorageAccessGrant(
const GURL& url,
const GURL& first_party_url,
net::CookieSettingOverrides overrides) const { … }
absl::variant<CookieSettingsBase::AllowAllCookies,
CookieSettingsBase::AllowPartitionedCookies,
CookieSettingsBase::BlockAllCookies>
CookieSettingsBase::DecideAccess(
const GURL& url,
const GURL& first_party_url,
bool is_third_party_request,
net::CookieSettingOverrides overrides,
const ContentSetting& setting,
bool is_explicit_setting,
bool global_setting_or_embedder_blocks_third_party_cookies,
SettingInfo& setting_info) const { … }
CookieSettingsBase::CookieSettingWithMetadata
CookieSettingsBase::GetCookieSettingInternal(
const GURL& request_url,
const net::SiteForCookies& site_for_cookies,
const GURL& first_party_url,
net::CookieSettingOverrides overrides,
SettingInfo* info) const { … }
std::optional<net::cookie_util::StorageAccessStatus>
CookieSettingsBase::GetStorageAccessStatus(
const GURL& url,
const net::SiteForCookies& site_for_for_cookies,
const std::optional<url::Origin>& top_frame_origin,
net::CookieSettingOverrides overrides) const { … }
bool CookieSettingsBase::IsAllowedByStorageAccessGrant(
const GURL& url,
const GURL& first_party_url,
net::CookieSettingOverrides overrides) const { … }
ContentSetting CookieSettingsBase::GetSettingForLegacyCookieAccess(
const std::string& cookie_domain) const { … }
bool CookieSettingsBase::IsValidSetting(ContentSetting setting) { … }
bool CookieSettingsBase::IsAllowed(ContentSetting setting) { … }
bool CookieSettingsBase::IsValidSettingForLegacyAccess(ContentSetting setting) { … }
}