Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(459)

Side by Side Diff: chrome/browser/net/chrome_cookie_policy.cc

Issue 6207005: Clarify wording around blocking 3rd party cookies and add lab to block reading of 3rd party cookies (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/net/chrome_cookie_policy.h" 5 #include "chrome/browser/net/chrome_cookie_policy.h"
6 6
7 #include "base/command_line.h"
7 #include "base/string_util.h" 8 #include "base/string_util.h"
8 #include "chrome/browser/browser_list.h" 9 #include "chrome/browser/browser_list.h"
9 #include "chrome/browser/browser_thread.h" 10 #include "chrome/browser/browser_thread.h"
10 #include "chrome/browser/content_settings/host_content_settings_map.h" 11 #include "chrome/browser/content_settings/host_content_settings_map.h"
12 #include "chrome/common/chrome_switches.h"
11 #include "net/base/net_errors.h" 13 #include "net/base/net_errors.h"
12 #include "net/base/static_cookie_policy.h" 14 #include "net/base/static_cookie_policy.h"
13 15
14 // If we queue up more than this number of completions, then switch from ASK to 16 // If we queue up more than this number of completions, then switch from ASK to
15 // BLOCK. More than this number of requests at once seems like it could be a 17 // BLOCK. More than this number of requests at once seems like it could be a
16 // sign of trouble anyways. 18 // sign of trouble anyways.
17 static const size_t kMaxCompletionsPerHost = 10000; 19 static const size_t kMaxCompletionsPerHost = 10000;
18 20
19 // ---------------------------------------------------------------------------- 21 // ----------------------------------------------------------------------------
20 22
21 ChromeCookiePolicy::ChromeCookiePolicy(HostContentSettingsMap* map) 23 ChromeCookiePolicy::ChromeCookiePolicy(HostContentSettingsMap* map)
22 : host_content_settings_map_(map) { 24 : host_content_settings_map_(map) {
25 strict_third_party_blocking_ = CommandLine::ForCurrentProcess()->HasSwitch(
26 switches::kBlockReadingThirdPartyCookies);
23 } 27 }
24 28
25 ChromeCookiePolicy::~ChromeCookiePolicy() { 29 ChromeCookiePolicy::~ChromeCookiePolicy() {
26 DCHECK(host_completions_map_.empty()); 30 DCHECK(host_completions_map_.empty());
27 } 31 }
28 32
29 int ChromeCookiePolicy::CanGetCookies(const GURL& url, 33 int ChromeCookiePolicy::CanGetCookies(const GURL& url,
30 const GURL& first_party, 34 const GURL& first_party,
31 net::CompletionCallback* callback) { 35 net::CompletionCallback* callback) {
32 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 36 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
33 37
34 if (host_content_settings_map_->BlockThirdPartyCookies()) { 38 if (host_content_settings_map_->BlockThirdPartyCookies()) {
35 net::StaticCookiePolicy policy( 39 net::StaticCookiePolicy policy(strict_third_party_blocking_ ?
36 net::StaticCookiePolicy::BLOCK_THIRD_PARTY_COOKIES); 40 net::StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES :
41 net::StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES);
37 int rv = policy.CanGetCookies(url, first_party, NULL); 42 int rv = policy.CanGetCookies(url, first_party, NULL);
38 if (rv != net::OK) 43 if (rv != net::OK)
39 return rv; 44 return rv;
40 } 45 }
41 46
42 int policy = CheckPolicy(url); 47 int policy = CheckPolicy(url);
43 if (policy == net::OK_FOR_SESSION_ONLY) 48 if (policy == net::OK_FOR_SESSION_ONLY)
44 policy = net::OK; 49 policy = net::OK;
45 if (policy != net::ERR_IO_PENDING) 50 if (policy != net::ERR_IO_PENDING)
46 return policy; 51 return policy;
(...skipping 15 matching lines...) Expand all
62 return policy; 67 return policy;
63 } 68 }
64 69
65 int ChromeCookiePolicy::CanSetCookie(const GURL& url, 70 int ChromeCookiePolicy::CanSetCookie(const GURL& url,
66 const GURL& first_party, 71 const GURL& first_party,
67 const std::string& cookie_line, 72 const std::string& cookie_line,
68 net::CompletionCallback* callback) { 73 net::CompletionCallback* callback) {
69 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 74 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
70 75
71 if (host_content_settings_map_->BlockThirdPartyCookies()) { 76 if (host_content_settings_map_->BlockThirdPartyCookies()) {
72 net::StaticCookiePolicy policy( 77 net::StaticCookiePolicy policy(strict_third_party_blocking_ ?
73 net::StaticCookiePolicy::BLOCK_THIRD_PARTY_COOKIES); 78 net::StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES :
79 net::StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES);
74 int rv = policy.CanSetCookie(url, first_party, cookie_line, NULL); 80 int rv = policy.CanSetCookie(url, first_party, cookie_line, NULL);
75 if (rv != net::OK) 81 if (rv != net::OK)
76 return rv; 82 return rv;
77 } 83 }
78 84
79 int policy = CheckPolicy(url); 85 int policy = CheckPolicy(url);
80 if (policy != net::ERR_IO_PENDING) 86 if (policy != net::ERR_IO_PENDING)
81 return policy; 87 return policy;
82 88
83 DCHECK(callback); 89 DCHECK(callback);
(...skipping 15 matching lines...) Expand all
99 url, CONTENT_SETTINGS_TYPE_COOKIES, ""); 105 url, CONTENT_SETTINGS_TYPE_COOKIES, "");
100 if (setting == CONTENT_SETTING_BLOCK) 106 if (setting == CONTENT_SETTING_BLOCK)
101 return net::ERR_ACCESS_DENIED; 107 return net::ERR_ACCESS_DENIED;
102 if (setting == CONTENT_SETTING_ALLOW) 108 if (setting == CONTENT_SETTING_ALLOW)
103 return net::OK; 109 return net::OK;
104 if (setting == CONTENT_SETTING_SESSION_ONLY) 110 if (setting == CONTENT_SETTING_SESSION_ONLY)
105 return net::OK_FOR_SESSION_ONLY; 111 return net::OK_FOR_SESSION_ONLY;
106 return net::ERR_IO_PENDING; // Need to prompt. 112 return net::ERR_IO_PENDING; // Need to prompt.
107 } 113 }
108 114
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698