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

Unified Diff: chrome/browser/io_thread.cc

Issue 10440119: Introduce a delegate to avoid hardcoding "chrome-extension" in net/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Pure merge to LKGR Created 8 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/io_thread.cc
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
index 4bdc0aa784d88970b713ab4a64e544c4f695963d..3754e2b3d1bad60d6964ab4bee3e84f537e5fa08 100644
--- a/chrome/browser/io_thread.cc
+++ b/chrome/browser/io_thread.cc
@@ -32,6 +32,7 @@
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
+#include "chrome/common/url_constants.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/common/content_client.h"
#include "content/public/common/url_fetcher.h"
@@ -53,6 +54,7 @@
#include "net/proxy/proxy_config_service.h"
#include "net/proxy/proxy_script_fetcher_impl.h"
#include "net/proxy/proxy_service.h"
+#include "net/url_request/url_request.h"
#include "net/url_request/url_request_throttler_manager.h"
#if defined(USE_NSS)
@@ -72,6 +74,28 @@ class SafeBrowsingURLRequestContext;
namespace {
+// Makes it so that the URLRequestThrottlerManager may only reject
+// requests that originate from extensions.
+class ChromeURLRequestThrottlerManagerDelegate
+ : public net::URLRequestThrottlerManagerDelegate {
+ public:
+ explicit ChromeURLRequestThrottlerManagerDelegate(bool enforce)
+ : enforce_(enforce) {
+ }
+
+ virtual bool MayRejectRequest(net::URLRequest* request) OVERRIDE {
+ if (enforce_) {
+ return request->first_party_for_cookies().scheme() !=
+ chrome::kExtensionScheme;
+ } else {
+ return false;
+ }
+ }
+
+ private:
+ bool enforce_;
+};
+
// Custom URLRequestContext used by requests which aren't associated with a
// particular profile. We need to use a subclass of URLRequestContext in order
// to provide the correct User-Agent.
@@ -446,13 +470,15 @@ void IOThread::Init() {
globals_->proxy_script_fetcher_ftp_transaction_factory.reset(
new net::FtpNetworkLayer(globals_->host_resolver.get()));
- globals_->throttler_manager.reset(new net::URLRequestThrottlerManager());
+ bool enforce_throttling = CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kDisableExtensionsHttpThrottling);
+ globals_->throttler_manager_delegate.reset(
+ new ChromeURLRequestThrottlerManagerDelegate(enforce_throttling));
+
+ globals_->throttler_manager.reset(new net::URLRequestThrottlerManager(
+ globals_->throttler_manager_delegate.get()));
// Always done in production, disabled only for unit tests.
globals_->throttler_manager->set_enable_thread_checks(true);
- if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kDisableExtensionsHttpThrottling)) {
- globals_->throttler_manager->set_enforce_throttling(false);
- }
globals_->throttler_manager->set_net_log(net_log_);
globals_->proxy_script_fetcher_context.reset(

Powered by Google App Engine
This is Rietveld 408576698