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