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

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

Issue 9572001: Do cookie checks in NetworkDelegate instead of the URLRequest::Delegate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: clang fix Created 8 years, 9 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_network_delegate.h" 5 #include "chrome/browser/net/chrome_network_delegate.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/content_settings/cookie_settings.h"
9 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
8 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" 10 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
9 #include "chrome/browser/extensions/api/webrequest/webrequest_api.h" 11 #include "chrome/browser/extensions/api/webrequest/webrequest_api.h"
10 #include "chrome/browser/extensions/extension_event_router_forwarder.h" 12 #include "chrome/browser/extensions/extension_event_router_forwarder.h"
11 #include "chrome/browser/extensions/extension_info_map.h" 13 #include "chrome/browser/extensions/extension_info_map.h"
12 #include "chrome/browser/extensions/extension_proxy_api.h" 14 #include "chrome/browser/extensions/extension_proxy_api.h"
13 #include "chrome/browser/prefs/pref_member.h" 15 #include "chrome/browser/prefs/pref_member.h"
14 #include "chrome/browser/task_manager/task_manager.h" 16 #include "chrome/browser/task_manager/task_manager.h"
15 #include "chrome/common/pref_names.h" 17 #include "chrome/common/pref_names.h"
16 #include "content/public/browser/browser_thread.h" 18 #include "content/public/browser/browser_thread.h"
19 #include "content/public/common/content_url_request_user_data.h"
20 #include "net/base/cookie_monster.h"
willchan no longer on Chromium 2012/03/01 20:30:10 What's this for?
17 #include "net/base/host_port_pair.h" 21 #include "net/base/host_port_pair.h"
18 #include "net/base/net_errors.h" 22 #include "net/base/net_errors.h"
19 #include "net/base/net_log.h" 23 #include "net/base/net_log.h"
20 #include "net/http/http_request_headers.h" 24 #include "net/http/http_request_headers.h"
21 #include "net/http/http_response_headers.h" 25 #include "net/http/http_response_headers.h"
22 #include "net/url_request/url_request.h" 26 #include "net/url_request/url_request.h"
23 27
24 #if defined(ENABLE_CONFIGURATION_POLICY) 28 #if defined(ENABLE_CONFIGURATION_POLICY)
25 #include "chrome/browser/policy/url_blacklist_manager.h" 29 #include "chrome/browser/policy/url_blacklist_manager.h"
26 #endif 30 #endif
(...skipping 18 matching lines...) Expand all
45 } 49 }
46 } 50 }
47 51
48 } // namespace 52 } // namespace
49 53
50 ChromeNetworkDelegate::ChromeNetworkDelegate( 54 ChromeNetworkDelegate::ChromeNetworkDelegate(
51 ExtensionEventRouterForwarder* event_router, 55 ExtensionEventRouterForwarder* event_router,
52 ExtensionInfoMap* extension_info_map, 56 ExtensionInfoMap* extension_info_map,
53 const policy::URLBlacklistManager* url_blacklist_manager, 57 const policy::URLBlacklistManager* url_blacklist_manager,
54 void* profile, 58 void* profile,
59 CookieSettings* cookie_settings,
55 BooleanPrefMember* enable_referrers) 60 BooleanPrefMember* enable_referrers)
56 : event_router_(event_router), 61 : event_router_(event_router),
57 profile_(profile), 62 profile_(profile),
63 cookie_settings_(cookie_settings),
58 extension_info_map_(extension_info_map), 64 extension_info_map_(extension_info_map),
59 enable_referrers_(enable_referrers), 65 enable_referrers_(enable_referrers),
60 url_blacklist_manager_(url_blacklist_manager) { 66 url_blacklist_manager_(url_blacklist_manager) {
61 DCHECK(event_router); 67 DCHECK(event_router);
62 DCHECK(enable_referrers); 68 DCHECK(enable_referrers);
69 DCHECK(!profile || cookie_settings);
63 } 70 }
64 71
65 ChromeNetworkDelegate::~ChromeNetworkDelegate() {} 72 ChromeNetworkDelegate::~ChromeNetworkDelegate() {}
66 73
67 // static 74 // static
68 void ChromeNetworkDelegate::InitializeReferrersEnabled( 75 void ChromeNetworkDelegate::InitializeReferrersEnabled(
69 BooleanPrefMember* enable_referrers, 76 BooleanPrefMember* enable_referrers,
70 PrefService* pref_service) { 77 PrefService* pref_service) {
71 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 78 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
72 enable_referrers->Init(prefs::kEnableReferrers, pref_service, NULL); 79 enable_referrers->Init(prefs::kEnableReferrers, pref_service, NULL);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 net::NetworkDelegate::AuthRequiredResponse 183 net::NetworkDelegate::AuthRequiredResponse
177 ChromeNetworkDelegate::OnAuthRequired( 184 ChromeNetworkDelegate::OnAuthRequired(
178 net::URLRequest* request, 185 net::URLRequest* request,
179 const net::AuthChallengeInfo& auth_info, 186 const net::AuthChallengeInfo& auth_info,
180 const AuthCallback& callback, 187 const AuthCallback& callback,
181 net::AuthCredentials* credentials) { 188 net::AuthCredentials* credentials) {
182 return ExtensionWebRequestEventRouter::GetInstance()->OnAuthRequired( 189 return ExtensionWebRequestEventRouter::GetInstance()->OnAuthRequired(
183 profile_, extension_info_map_.get(), request, auth_info, 190 profile_, extension_info_map_.get(), request, auth_info,
184 callback, credentials); 191 callback, credentials);
185 } 192 }
193
194 bool ChromeNetworkDelegate::OnReadingCookies(
195 const net::URLRequest* request,
196 const net::CookieList& cookie_list) {
197 // NULL during tests, or when we're running in the system context.
willchan no longer on Chromium 2012/03/01 20:30:10 I am not too fond of this. Does anyone else have a
198 if (!cookie_settings_)
199 return true;
200
201 // If the request isn't annotated with information about the render view, it
202 // must not use cookies.
203 const content::ContentURLRequestUserData* user_data =
204 static_cast<const content::ContentURLRequestUserData*>(
205 request->GetUserData(
206 content::ContentURLRequestUserData::kUserDataKey));
207 if (!user_data)
208 return false;
209
210 // TODO(jochen): Once all URLFetcher consumers are updated, change this to
211 // return false, if no render view is given.
212 if (user_data->process_id() == -1 || user_data->routing_id() == -1)
213 return true;
214
215 bool allow = cookie_settings_->IsReadingCookieAllowed(
216 request->url(), request->first_party_for_cookies());
217
218 BrowserThread::PostTask(
219 BrowserThread::UI, FROM_HERE,
220 base::Bind(&TabSpecificContentSettings::CookiesRead,
221 user_data->process_id(), user_data->routing_id(),
222 request->url(), cookie_list, !allow));
223
224 return allow;
225 }
226
227 bool ChromeNetworkDelegate::OnSettingCookie(
228 const net::URLRequest* request,
229 const std::string& cookie_line,
230 net::CookieOptions* options) {
231 // NULL during tests, or when we're running in the system context.
232 if (!cookie_settings_)
233 return true;
234
235 // If the request isn't annotated with content settings, it must not use
236 // cookies.
237 const content::ContentURLRequestUserData* user_data =
238 static_cast<const content::ContentURLRequestUserData*>(
239 request->GetUserData(
240 content::ContentURLRequestUserData::kUserDataKey));
241 if (!user_data)
242 return false;
243
244 // TODO(jochen): Once all URLFetcher consumers are updated, change this to
245 // return false, if no render view is given.
246 if (user_data->process_id() == -1 || user_data->routing_id() == -1)
247 return true;
248
249 bool allow = cookie_settings_->IsSettingCookieAllowed(
250 request->url(), request->first_party_for_cookies());
251
252 if (cookie_settings_->IsCookieSessionOnly(request->url()))
253 options->set_force_session();
254
255 BrowserThread::PostTask(
256 BrowserThread::UI, FROM_HERE,
257 base::Bind(&TabSpecificContentSettings::CookieChanged,
258 user_data->process_id(), user_data->routing_id(),
259 request->url(), cookie_line, *options, !allow));
260
261 return allow;
262 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698