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

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: patch for landing 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/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/content_settings/cookie_settings.h"
10 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
9 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" 11 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
10 #include "chrome/browser/extensions/api/webrequest/webrequest_api.h" 12 #include "chrome/browser/extensions/api/webrequest/webrequest_api.h"
11 #include "chrome/browser/extensions/extension_event_router_forwarder.h" 13 #include "chrome/browser/extensions/extension_event_router_forwarder.h"
12 #include "chrome/browser/extensions/extension_info_map.h" 14 #include "chrome/browser/extensions/extension_info_map.h"
13 #include "chrome/browser/extensions/extension_process_manager.h" 15 #include "chrome/browser/extensions/extension_process_manager.h"
14 #include "chrome/browser/extensions/extension_proxy_api.h" 16 #include "chrome/browser/extensions/extension_proxy_api.h"
15 #include "chrome/browser/prefs/pref_member.h" 17 #include "chrome/browser/prefs/pref_member.h"
16 #include "chrome/browser/profiles/profile_manager.h" 18 #include "chrome/browser/profiles/profile_manager.h"
17 #include "chrome/browser/task_manager/task_manager.h" 19 #include "chrome/browser/task_manager/task_manager.h"
18 #include "chrome/common/pref_names.h" 20 #include "chrome/common/pref_names.h"
19 #include "content/browser/renderer_host/resource_dispatcher_host.h" 21 #include "content/browser/renderer_host/resource_dispatcher_host.h"
20 #include "content/public/browser/browser_thread.h" 22 #include "content/public/browser/browser_thread.h"
21 #include "content/public/browser/render_view_host.h" 23 #include "content/public/browser/render_view_host.h"
24 #include "content/public/browser/resource_request_info.h"
25 #include "net/base/cookie_monster.h"
22 #include "net/base/host_port_pair.h" 26 #include "net/base/host_port_pair.h"
23 #include "net/base/net_errors.h" 27 #include "net/base/net_errors.h"
24 #include "net/base/net_log.h" 28 #include "net/base/net_log.h"
25 #include "net/http/http_request_headers.h" 29 #include "net/http/http_request_headers.h"
26 #include "net/http/http_response_headers.h" 30 #include "net/http/http_response_headers.h"
27 #include "net/url_request/url_request.h" 31 #include "net/url_request/url_request.h"
28 32
29 #if defined(ENABLE_CONFIGURATION_POLICY) 33 #if defined(ENABLE_CONFIGURATION_POLICY)
30 #include "chrome/browser/policy/url_blacklist_manager.h" 34 #include "chrome/browser/policy/url_blacklist_manager.h"
31 #endif 35 #endif
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 } 96 }
93 } 97 }
94 98
95 } // namespace 99 } // namespace
96 100
97 ChromeNetworkDelegate::ChromeNetworkDelegate( 101 ChromeNetworkDelegate::ChromeNetworkDelegate(
98 ExtensionEventRouterForwarder* event_router, 102 ExtensionEventRouterForwarder* event_router,
99 ExtensionInfoMap* extension_info_map, 103 ExtensionInfoMap* extension_info_map,
100 const policy::URLBlacklistManager* url_blacklist_manager, 104 const policy::URLBlacklistManager* url_blacklist_manager,
101 void* profile, 105 void* profile,
106 CookieSettings* cookie_settings,
102 BooleanPrefMember* enable_referrers) 107 BooleanPrefMember* enable_referrers)
103 : event_router_(event_router), 108 : event_router_(event_router),
104 profile_(profile), 109 profile_(profile),
110 cookie_settings_(cookie_settings),
105 extension_info_map_(extension_info_map), 111 extension_info_map_(extension_info_map),
106 enable_referrers_(enable_referrers), 112 enable_referrers_(enable_referrers),
107 url_blacklist_manager_(url_blacklist_manager) { 113 url_blacklist_manager_(url_blacklist_manager) {
108 DCHECK(event_router); 114 DCHECK(event_router);
109 DCHECK(enable_referrers); 115 DCHECK(enable_referrers);
116 DCHECK(!profile || cookie_settings);
110 } 117 }
111 118
112 ChromeNetworkDelegate::~ChromeNetworkDelegate() {} 119 ChromeNetworkDelegate::~ChromeNetworkDelegate() {}
113 120
114 // static 121 // static
115 void ChromeNetworkDelegate::InitializeReferrersEnabled( 122 void ChromeNetworkDelegate::InitializeReferrersEnabled(
116 BooleanPrefMember* enable_referrers, 123 BooleanPrefMember* enable_referrers,
117 PrefService* pref_service) { 124 PrefService* pref_service) {
118 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 125 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
119 enable_referrers->Init(prefs::kEnableReferrers, pref_service, NULL); 126 enable_referrers->Init(prefs::kEnableReferrers, pref_service, NULL);
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 net::NetworkDelegate::AuthRequiredResponse 234 net::NetworkDelegate::AuthRequiredResponse
228 ChromeNetworkDelegate::OnAuthRequired( 235 ChromeNetworkDelegate::OnAuthRequired(
229 net::URLRequest* request, 236 net::URLRequest* request,
230 const net::AuthChallengeInfo& auth_info, 237 const net::AuthChallengeInfo& auth_info,
231 const AuthCallback& callback, 238 const AuthCallback& callback,
232 net::AuthCredentials* credentials) { 239 net::AuthCredentials* credentials) {
233 return ExtensionWebRequestEventRouter::GetInstance()->OnAuthRequired( 240 return ExtensionWebRequestEventRouter::GetInstance()->OnAuthRequired(
234 profile_, extension_info_map_.get(), request, auth_info, 241 profile_, extension_info_map_.get(), request, auth_info,
235 callback, credentials); 242 callback, credentials);
236 } 243 }
244
245 bool ChromeNetworkDelegate::CanGetCookies(
246 const net::URLRequest* request,
247 const net::CookieList& cookie_list) {
248 // NULL during tests, or when we're running in the system context.
249 if (!cookie_settings_)
250 return true;
251
252 bool allow = cookie_settings_->IsReadingCookieAllowed(
253 request->url(), request->first_party_for_cookies());
254
255 int render_process_id = -1;
256 int render_view_id = -1;
257 if (content::ResourceRequestInfo::GetRenderViewForRequest(
258 request, &render_process_id, &render_view_id)) {
259 BrowserThread::PostTask(
260 BrowserThread::UI, FROM_HERE,
261 base::Bind(&TabSpecificContentSettings::CookiesRead,
262 render_process_id, render_view_id,
263 request->url(), cookie_list, !allow));
264 }
265
266 return allow;
267 }
268
269 bool ChromeNetworkDelegate::CanSetCookie(
270 const net::URLRequest* request,
271 const std::string& cookie_line,
272 net::CookieOptions* options) {
273 // NULL during tests, or when we're running in the system context.
274 if (!cookie_settings_)
275 return true;
276
277 bool allow = cookie_settings_->IsSettingCookieAllowed(
278 request->url(), request->first_party_for_cookies());
279
280 if (cookie_settings_->IsCookieSessionOnly(request->url()))
281 options->set_force_session();
282
283 int render_process_id = -1;
284 int render_view_id = -1;
285 if (content::ResourceRequestInfo::GetRenderViewForRequest(
286 request, &render_process_id, &render_view_id)) {
287 BrowserThread::PostTask(
288 BrowserThread::UI, FROM_HERE,
289 base::Bind(&TabSpecificContentSettings::CookieChanged,
290 render_process_id, render_view_id,
291 request->url(), cookie_line, *options, !allow));
292 }
293
294 return allow;
295 }
OLDNEW
« no previous file with comments | « chrome/browser/net/chrome_network_delegate.h ('k') | chrome/browser/profiles/profile_io_data.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698