| 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 |