xref: /aosp_15_r20/external/cronet/net/cookies/static_cookie_policy.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2011 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_STATIC_COOKIE_POLICY_H_
6*6777b538SAndroid Build Coastguard Worker #define NET_COOKIES_STATIC_COOKIE_POLICY_H_
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker #include "net/base/net_export.h"
9*6777b538SAndroid Build Coastguard Worker 
10*6777b538SAndroid Build Coastguard Worker class GURL;
11*6777b538SAndroid Build Coastguard Worker 
12*6777b538SAndroid Build Coastguard Worker namespace net {
13*6777b538SAndroid Build Coastguard Worker 
14*6777b538SAndroid Build Coastguard Worker class SiteForCookies;
15*6777b538SAndroid Build Coastguard Worker 
16*6777b538SAndroid Build Coastguard Worker // The StaticCookiePolicy class implements a static cookie policy that supports
17*6777b538SAndroid Build Coastguard Worker // three modes: allow all, deny all, or block third-party cookies.
18*6777b538SAndroid Build Coastguard Worker class NET_EXPORT StaticCookiePolicy {
19*6777b538SAndroid Build Coastguard Worker  public:
20*6777b538SAndroid Build Coastguard Worker   // Do not change the order of these types as they are persisted in
21*6777b538SAndroid Build Coastguard Worker   // preferences.
22*6777b538SAndroid Build Coastguard Worker   enum Type {
23*6777b538SAndroid Build Coastguard Worker     // Do not perform any cookie blocking.
24*6777b538SAndroid Build Coastguard Worker     ALLOW_ALL_COOKIES = 0,
25*6777b538SAndroid Build Coastguard Worker     // Block all cookies (third-party or not) from begin set or read.
26*6777b538SAndroid Build Coastguard Worker     BLOCK_ALL_COOKIES,
27*6777b538SAndroid Build Coastguard Worker     // Prevent only third-party cookies from being set or read.
28*6777b538SAndroid Build Coastguard Worker     BLOCK_ALL_THIRD_PARTY_COOKIES
29*6777b538SAndroid Build Coastguard Worker   };
30*6777b538SAndroid Build Coastguard Worker 
StaticCookiePolicy()31*6777b538SAndroid Build Coastguard Worker   StaticCookiePolicy() : type_(StaticCookiePolicy::ALLOW_ALL_COOKIES) {}
32*6777b538SAndroid Build Coastguard Worker 
StaticCookiePolicy(Type type)33*6777b538SAndroid Build Coastguard Worker   explicit StaticCookiePolicy(Type type) : type_(type) {}
34*6777b538SAndroid Build Coastguard Worker 
35*6777b538SAndroid Build Coastguard Worker   StaticCookiePolicy(const StaticCookiePolicy&) = delete;
36*6777b538SAndroid Build Coastguard Worker   StaticCookiePolicy& operator=(const StaticCookiePolicy&) = delete;
37*6777b538SAndroid Build Coastguard Worker 
38*6777b538SAndroid Build Coastguard Worker   // Sets the current policy to enforce. This should be called when the user's
39*6777b538SAndroid Build Coastguard Worker   // preferences change.
set_type(Type type)40*6777b538SAndroid Build Coastguard Worker   void set_type(Type type) { type_ = type; }
type()41*6777b538SAndroid Build Coastguard Worker   Type type() const { return type_; }
42*6777b538SAndroid Build Coastguard Worker 
43*6777b538SAndroid Build Coastguard Worker   // Consults the user's third-party cookie blocking preferences to determine
44*6777b538SAndroid Build Coastguard Worker   // whether the URL's cookies can be accessed (i.e., can be get or set).
45*6777b538SAndroid Build Coastguard Worker   int CanAccessCookies(const GURL& url,
46*6777b538SAndroid Build Coastguard Worker                        const net::SiteForCookies& site_for_cookies) const;
47*6777b538SAndroid Build Coastguard Worker 
48*6777b538SAndroid Build Coastguard Worker  private:
49*6777b538SAndroid Build Coastguard Worker   Type type_;
50*6777b538SAndroid Build Coastguard Worker };
51*6777b538SAndroid Build Coastguard Worker 
52*6777b538SAndroid Build Coastguard Worker }  // namespace net
53*6777b538SAndroid Build Coastguard Worker 
54*6777b538SAndroid Build Coastguard Worker #endif  // NET_COOKIES_STATIC_COOKIE_POLICY_H_
55