1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef NET_BASE_STATIC_COOKIE_POLICY_H_ 6 #define NET_BASE_STATIC_COOKIE_POLICY_H_ 7 8 #include "base/basictypes.h" 9 #include "net/base/net_export.h" 10 11 class GURL; 12 13 namespace net { 14 15 // The StaticCookiePolicy class implements a static cookie policy that supports 16 // three modes: allow all, deny all, or block third-party cookies. 17 class NET_EXPORT StaticCookiePolicy { 18 public: 19 // Do not change the order of these types as they are persisted in 20 // preferences. 21 enum Type { 22 // Do not perform any cookie blocking. 23 ALLOW_ALL_COOKIES = 0, 24 // Prevent only third-party cookies from being set. 25 BLOCK_SETTING_THIRD_PARTY_COOKIES, 26 // Block all cookies (third-party or not) from begin set or read. 27 BLOCK_ALL_COOKIES, 28 // Prevent only third-party cookies from being set or read. 29 BLOCK_ALL_THIRD_PARTY_COOKIES 30 }; 31 32 StaticCookiePolicy() 33 : type_(StaticCookiePolicy::ALLOW_ALL_COOKIES) { 34 } 35 36 explicit StaticCookiePolicy(Type type) 37 : type_(type) { 38 } 39 40 // Sets the current policy to enforce. This should be called when the user's 41 // preferences change. 42 void set_type(Type type) { type_ = type; } 43 Type type() const { return type_; } 44 45 // Consults the user's third-party cookie blocking preferences to determine 46 // whether the URL's cookies can be read. 47 int CanGetCookies(const GURL& url, const GURL& first_party_for_cookies) const; 48 49 // Consults the user's third-party cookie blocking preferences to determine 50 // whether the URL's cookies can be set. 51 int CanSetCookie(const GURL& url, 52 const GURL& first_party_for_cookies) const; 53 54 private: 55 Type type_; 56 57 DISALLOW_COPY_AND_ASSIGN(StaticCookiePolicy); 58 }; 59 60 } // namespace net 61 62 #endif // NET_BASE_STATIC_COOKIE_POLICY_H_ 63