xref: /aosp_15_r20/external/cronet/net/cookies/cookie_setting_override.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2022 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #ifndef NET_COOKIES_COOKIE_SETTING_OVERRIDE_H_
6*6777b538SAndroid Build Coastguard Worker #define NET_COOKIES_COOKIE_SETTING_OVERRIDE_H_
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker #include "base/containers/enum_set.h"
9*6777b538SAndroid Build Coastguard Worker 
10*6777b538SAndroid Build Coastguard Worker namespace net {
11*6777b538SAndroid Build Coastguard Worker 
12*6777b538SAndroid Build Coastguard Worker // An enum of possible overrides for cookie setting checks.
13*6777b538SAndroid Build Coastguard Worker // Use CookieSettingOverrides below for specifying any number of overrides
14*6777b538SAndroid Build Coastguard Worker // together. The notion of no overrides is conveyable via an empty set.
15*6777b538SAndroid Build Coastguard Worker enum class CookieSettingOverride {
16*6777b538SAndroid Build Coastguard Worker   kMinValue = 0,
17*6777b538SAndroid Build Coastguard Worker   // When specified, third-party cookies may be allowed based on existence of
18*6777b538SAndroid Build Coastguard Worker   // TopLevelStorageAccess grants.
19*6777b538SAndroid Build Coastguard Worker   kTopLevelStorageAccessGrantEligible = kMinValue,
20*6777b538SAndroid Build Coastguard Worker   // When present, the caller may use an existing Storage Access API grant (if
21*6777b538SAndroid Build Coastguard Worker   // a matching grant exists) to access third-party cookies. Otherwise, Storage
22*6777b538SAndroid Build Coastguard Worker   // Access API grants do not apply.
23*6777b538SAndroid Build Coastguard Worker   kStorageAccessGrantEligible = 1,
24*6777b538SAndroid Build Coastguard Worker   // Allows TPCD mitigations to be skipped when checking if third party cookies
25*6777b538SAndroid Build Coastguard Worker   // are allowed, meaning cookies will be blocked despite the presence of any of
26*6777b538SAndroid Build Coastguard Worker   // these grants/heuristics.
27*6777b538SAndroid Build Coastguard Worker   kSkipTPCDHeuristicsGrant = 2,
28*6777b538SAndroid Build Coastguard Worker   kSkipTPCDMetadataGrant = 3,
29*6777b538SAndroid Build Coastguard Worker   // Corresponds to skipping checks on the TPCD_TRIAL content setting, which
30*6777b538SAndroid Build Coastguard Worker   // backs 3PC accesses granted via 3PC deprecation trial.
31*6777b538SAndroid Build Coastguard Worker   kSkipTPCDTrial = 4,
32*6777b538SAndroid Build Coastguard Worker   // Corresponds to skipping checks on the TOP_LEVEL_TPCD_TRIAL content setting,
33*6777b538SAndroid Build Coastguard Worker   // which backs 3PC accesses granted via top-level 3PC deprecation trial.
34*6777b538SAndroid Build Coastguard Worker   kSkipTopLevelTPCDTrial = 5,
35*6777b538SAndroid Build Coastguard Worker   // Corresponds to checks that may grant 3PCs when a request opts into
36*6777b538SAndroid Build Coastguard Worker   // credentials and CORS protection.
37*6777b538SAndroid Build Coastguard Worker   // One example are subresource requests that are same-site with the top-level
38*6777b538SAndroid Build Coastguard Worker   // site but originate from a cross-site embed.
39*6777b538SAndroid Build Coastguard Worker   kCrossSiteCredentialedWithCORS = 6,
40*6777b538SAndroid Build Coastguard Worker   // When specified, third party cookies should be forced disabled.
41*6777b538SAndroid Build Coastguard Worker   // Other cookie exceptions like the storage access API could result in
42*6777b538SAndroid Build Coastguard Worker   // third party cookies still being used when this is forced disabled.
43*6777b538SAndroid Build Coastguard Worker   // Used by WebView.
44*6777b538SAndroid Build Coastguard Worker   kForceDisableThirdPartyCookies = 7,
45*6777b538SAndroid Build Coastguard Worker 
46*6777b538SAndroid Build Coastguard Worker   kMaxValue = kForceDisableThirdPartyCookies,
47*6777b538SAndroid Build Coastguard Worker };
48*6777b538SAndroid Build Coastguard Worker 
49*6777b538SAndroid Build Coastguard Worker using CookieSettingOverrides = base::EnumSet<CookieSettingOverride,
50*6777b538SAndroid Build Coastguard Worker                                              CookieSettingOverride::kMinValue,
51*6777b538SAndroid Build Coastguard Worker                                              CookieSettingOverride::kMaxValue>;
52*6777b538SAndroid Build Coastguard Worker 
53*6777b538SAndroid Build Coastguard Worker }  // namespace net
54*6777b538SAndroid Build Coastguard Worker 
55*6777b538SAndroid Build Coastguard Worker #endif  // NET_COOKIES_COOKIE_SETTING_OVERRIDE_H_
56