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 #pragma once 8 9 #include <string> 10 11 #include "base/basictypes.h" 12 #include "net/base/cookie_policy.h" 13 14 class GURL; 15 16 namespace net { 17 18 // The StaticCookiePolicy class implements a static cookie policy that supports 19 // three modes: allow all, deny all, or block third-party cookies. 20 // 21 // NOTE: This CookiePolicy implementation always completes synchronously. The 22 // callback parameter will be ignored if specified. Just pass NULL. 23 // 24 class StaticCookiePolicy : public CookiePolicy { 25 public: 26 // Do not change the order of these types as they are persisted in 27 // preferences. 28 enum Type { 29 // Do not perform any cookie blocking. 30 ALLOW_ALL_COOKIES = 0, 31 // Prevent only third-party cookies from being set. 32 BLOCK_SETTING_THIRD_PARTY_COOKIES, 33 // Block all cookies (third-party or not) from begin set or read. 34 BLOCK_ALL_COOKIES, 35 // Prevent only third-party cookies from being set or read. 36 BLOCK_ALL_THIRD_PARTY_COOKIES 37 }; 38 39 StaticCookiePolicy() 40 : type_(StaticCookiePolicy::ALLOW_ALL_COOKIES) { 41 } 42 43 explicit StaticCookiePolicy(Type type) 44 : type_(type) { 45 } 46 47 // Sets the current policy to enforce. This should be called when the user's 48 // preferences change. 49 void set_type(Type type) { type_ = type; } 50 Type type() const { return type_; } 51 52 // CookiePolicy methods: 53 54 // Consults the user's third-party cookie blocking preferences to determine 55 // whether the URL's cookies can be read. 56 virtual int CanGetCookies(const GURL& url, 57 const GURL& first_party_for_cookies) const; 58 59 // Consults the user's third-party cookie blocking preferences to determine 60 // whether the URL's cookies can be set. 61 virtual int CanSetCookie(const GURL& url, 62 const GURL& first_party_for_cookies, 63 const std::string& cookie_line) const; 64 65 private: 66 Type type_; 67 68 DISALLOW_COPY_AND_ASSIGN(StaticCookiePolicy); 69 }; 70 71 } // namespace net 72 73 #endif // NET_BASE_STATIC_COOKIE_POLICY_H_ 74