OLD | NEW |
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" | 9 #include "chrome/browser/content_settings/cookie_settings.h" |
10 #include "chrome/browser/content_settings/tab_specific_content_settings.h" | 10 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 using content::ResourceRequestInfo; | 44 using content::ResourceRequestInfo; |
45 | 45 |
46 // By default we don't allow access to all file:// urls on ChromeOS but we do on | 46 // By default we don't allow access to all file:// urls on ChromeOS but we do on |
47 // other platforms. | 47 // other platforms. |
48 #if defined(OS_CHROMEOS) | 48 #if defined(OS_CHROMEOS) |
49 bool ChromeNetworkDelegate::g_allow_file_access_ = false; | 49 bool ChromeNetworkDelegate::g_allow_file_access_ = false; |
50 #else | 50 #else |
51 bool ChromeNetworkDelegate::g_allow_file_access_ = true; | 51 bool ChromeNetworkDelegate::g_allow_file_access_ = true; |
52 #endif | 52 #endif |
53 | 53 |
| 54 // This remains false unless the --disable-extensions-http-throttling |
| 55 // flag is passed to the browser. |
| 56 bool ChromeNetworkDelegate::g_never_throttle_requests_ = false; |
| 57 |
54 namespace { | 58 namespace { |
55 | 59 |
56 // If the |request| failed due to problems with a proxy, forward the error to | 60 // If the |request| failed due to problems with a proxy, forward the error to |
57 // the proxy extension API. | 61 // the proxy extension API. |
58 void ForwardProxyErrors(net::URLRequest* request, | 62 void ForwardProxyErrors(net::URLRequest* request, |
59 ExtensionEventRouterForwarder* event_router, | 63 ExtensionEventRouterForwarder* event_router, |
60 void* profile) { | 64 void* profile) { |
61 if (request->status().status() == net::URLRequestStatus::FAILED) { | 65 if (request->status().status() == net::URLRequestStatus::FAILED) { |
62 switch (request->status().error()) { | 66 switch (request->status().error()) { |
63 case net::ERR_PROXY_AUTH_UNSUPPORTED: | 67 case net::ERR_PROXY_AUTH_UNSUPPORTED: |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 ExtensionInfoMap* extension_info_map, | 128 ExtensionInfoMap* extension_info_map, |
125 const policy::URLBlacklistManager* url_blacklist_manager, | 129 const policy::URLBlacklistManager* url_blacklist_manager, |
126 void* profile, | 130 void* profile, |
127 CookieSettings* cookie_settings, | 131 CookieSettings* cookie_settings, |
128 BooleanPrefMember* enable_referrers) | 132 BooleanPrefMember* enable_referrers) |
129 : event_router_(event_router), | 133 : event_router_(event_router), |
130 profile_(profile), | 134 profile_(profile), |
131 cookie_settings_(cookie_settings), | 135 cookie_settings_(cookie_settings), |
132 extension_info_map_(extension_info_map), | 136 extension_info_map_(extension_info_map), |
133 enable_referrers_(enable_referrers), | 137 enable_referrers_(enable_referrers), |
134 never_throttle_requests_(false), | |
135 url_blacklist_manager_(url_blacklist_manager) { | 138 url_blacklist_manager_(url_blacklist_manager) { |
136 DCHECK(event_router); | 139 DCHECK(event_router); |
137 DCHECK(enable_referrers); | 140 DCHECK(enable_referrers); |
138 DCHECK(!profile || cookie_settings); | 141 DCHECK(!profile || cookie_settings); |
139 } | 142 } |
140 | 143 |
141 ChromeNetworkDelegate::~ChromeNetworkDelegate() {} | 144 ChromeNetworkDelegate::~ChromeNetworkDelegate() {} |
142 | 145 |
| 146 // static |
143 void ChromeNetworkDelegate::NeverThrottleRequests() { | 147 void ChromeNetworkDelegate::NeverThrottleRequests() { |
144 never_throttle_requests_ = true; | 148 g_never_throttle_requests_ = true; |
145 } | 149 } |
146 | 150 |
147 // static | 151 // static |
148 void ChromeNetworkDelegate::InitializeReferrersEnabled( | 152 void ChromeNetworkDelegate::InitializeReferrersEnabled( |
149 BooleanPrefMember* enable_referrers, | 153 BooleanPrefMember* enable_referrers, |
150 PrefService* pref_service) { | 154 PrefService* pref_service) { |
151 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 155 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
152 enable_referrers->Init(prefs::kEnableReferrers, pref_service, NULL); | 156 enable_referrers->Init(prefs::kEnableReferrers, pref_service, NULL); |
153 enable_referrers->MoveToThread(BrowserThread::IO); | 157 enable_referrers->MoveToThread(BrowserThread::IO); |
154 } | 158 } |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 } | 361 } |
358 } | 362 } |
359 return false; | 363 return false; |
360 #else | 364 #else |
361 return true; | 365 return true; |
362 #endif // defined(OS_CHROMEOS) | 366 #endif // defined(OS_CHROMEOS) |
363 } | 367 } |
364 | 368 |
365 bool ChromeNetworkDelegate::OnCanThrottleRequest( | 369 bool ChromeNetworkDelegate::OnCanThrottleRequest( |
366 const net::URLRequest& request) const { | 370 const net::URLRequest& request) const { |
367 if (never_throttle_requests_) { | 371 if (g_never_throttle_requests_) { |
368 return false; | 372 return false; |
369 } | 373 } |
370 | 374 |
371 return request.first_party_for_cookies().scheme() != | 375 return request.first_party_for_cookies().scheme() == |
372 chrome::kExtensionScheme; | 376 chrome::kExtensionScheme; |
373 } | 377 } |
374 | 378 |
375 int ChromeNetworkDelegate::OnBeforeSocketStreamConnect( | 379 int ChromeNetworkDelegate::OnBeforeSocketStreamConnect( |
376 net::SocketStream* socket, | 380 net::SocketStream* socket, |
377 const net::CompletionCallback& callback) { | 381 const net::CompletionCallback& callback) { |
378 #if defined(ENABLE_CONFIGURATION_POLICY) | 382 #if defined(ENABLE_CONFIGURATION_POLICY) |
379 if (url_blacklist_manager_ && | 383 if (url_blacklist_manager_ && |
380 url_blacklist_manager_->IsURLBlocked(socket->url())) { | 384 url_blacklist_manager_->IsURLBlocked(socket->url())) { |
381 // URL access blocked by policy. | 385 // URL access blocked by policy. |
382 socket->net_log()->AddEvent( | 386 socket->net_log()->AddEvent( |
383 net::NetLog::TYPE_CHROME_POLICY_ABORTED_REQUEST, | 387 net::NetLog::TYPE_CHROME_POLICY_ABORTED_REQUEST, |
384 net::NetLog::StringCallback("url", | 388 net::NetLog::StringCallback("url", |
385 &socket->url().possibly_invalid_spec())); | 389 &socket->url().possibly_invalid_spec())); |
386 return net::ERR_NETWORK_ACCESS_DENIED; | 390 return net::ERR_NETWORK_ACCESS_DENIED; |
387 } | 391 } |
388 #endif | 392 #endif |
389 return net::OK; | 393 return net::OK; |
390 } | 394 } |
OLD | NEW |