diff options
author | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-01 21:38:16 +0000 |
---|---|---|
committer | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-01 21:38:16 +0000 |
commit | d05ef99c71c3d4db779be737102807cbab88ca45 (patch) | |
tree | b64aa3b5117ecce666372bbc77b6558984194bfa /chrome/browser/net | |
parent | 1e1a3ce6a6e266ce93b78fa3c0534aec3db3e2c3 (diff) | |
download | chromium_src-d05ef99c71c3d4db779be737102807cbab88ca45.zip chromium_src-d05ef99c71c3d4db779be737102807cbab88ca45.tar.gz chromium_src-d05ef99c71c3d4db779be737102807cbab88ca45.tar.bz2 |
Unreverting: First steps towards webRequest extension API.
Only an asynchronous version of onBeforeRequest is implement, with
limited data being passed.
Original CL: http://src.chromium.org/viewvc/chrome?view=rev&revision=73196
BUG=60101
TEST=no
Review URL: http://codereview.chromium.org/6246032
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73344 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/net')
-rw-r--r-- | chrome/browser/net/chrome_network_delegate.cc | 21 | ||||
-rw-r--r-- | chrome/browser/net/chrome_network_delegate.h | 5 | ||||
-rw-r--r-- | chrome/browser/net/chrome_url_request_context.cc | 6 | ||||
-rw-r--r-- | chrome/browser/net/chrome_url_request_context.h | 13 |
4 files changed, 39 insertions, 6 deletions
diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc index a657b26..0c92721 100644 --- a/chrome/browser/net/chrome_network_delegate.cc +++ b/chrome/browser/net/chrome_network_delegate.cc @@ -5,11 +5,32 @@ #include "chrome/browser/net/chrome_network_delegate.h" #include "base/logging.h" +#include "chrome/browser/extensions/extension_webrequest_api.h" +#include "chrome/browser/net/chrome_url_request_context.h" #include "net/http/http_request_headers.h" +#include "net/url_request/url_request.h" + +namespace { + +// Get the event router from the request context. Currently only +// ChromeURLRequestContexts use a network delegate, so the cast is guaranteed to +// work. +const ExtensionIOEventRouter* GetIOEventRouter( + net::URLRequestContext* context) { + return static_cast<ChromeURLRequestContext*>(context)-> + extension_io_event_router(); +} + +} // namespace ChromeNetworkDelegate::ChromeNetworkDelegate() {} ChromeNetworkDelegate::~ChromeNetworkDelegate() {} +void ChromeNetworkDelegate::OnBeforeURLRequest(net::URLRequest* request) { + ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRequest( + GetIOEventRouter(request->context()), request->url(), request->method()); +} + void ChromeNetworkDelegate::OnSendHttpRequest( net::HttpRequestHeaders* headers) { DCHECK(headers); diff --git a/chrome/browser/net/chrome_network_delegate.h b/chrome/browser/net/chrome_network_delegate.h index 55336d6..8bff160 100644 --- a/chrome/browser/net/chrome_network_delegate.h +++ b/chrome/browser/net/chrome_network_delegate.h @@ -10,15 +10,14 @@ #include "net/http/http_network_delegate.h" // ChromeNetworkDelegate is the central point from within the chrome code to -// add hooks into the network stack. In the future, we can use this for -// extensions to register hooks for the network stack. +// add hooks into the network stack. class ChromeNetworkDelegate : public net::HttpNetworkDelegate { public: ChromeNetworkDelegate(); ~ChromeNetworkDelegate(); // net::HttpNetworkDelegate methods: - + virtual void OnBeforeURLRequest(net::URLRequest* request); virtual void OnSendHttpRequest(net::HttpRequestHeaders* headers); // TODO(willchan): Add functions for consumers to register ways to diff --git a/chrome/browser/net/chrome_url_request_context.cc b/chrome/browser/net/chrome_url_request_context.cc index dc6853a..81e0474 100644 --- a/chrome/browser/net/chrome_url_request_context.cc +++ b/chrome/browser/net/chrome_url_request_context.cc @@ -263,6 +263,7 @@ ChromeURLRequestContext* FactoryForOriginal::Create() { context->set_host_resolver(io_thread_globals->host_resolver.get()); context->set_cert_verifier(io_thread_globals->cert_verifier.get()); context->set_dnsrr_resolver(io_thread_globals->dnsrr_resolver.get()); + context->set_network_delegate(&io_thread_globals->network_delegate); context->set_http_auth_handler_factory( io_thread_globals->http_auth_handler_factory.get()); @@ -368,6 +369,7 @@ ChromeURLRequestContext* FactoryForExtensions::Create() { chrome::kExtensionScheme}; cookie_monster->SetCookieableSchemes(schemes, 2); context->set_cookie_store(cookie_monster); + context->set_network_delegate(&io_thread_globals->network_delegate); // TODO(cbentzel): How should extensions handle HTTP Authentication? context->set_http_auth_handler_factory( io_thread_globals->http_auth_handler_factory.get()); @@ -402,6 +404,7 @@ ChromeURLRequestContext* FactoryForOffTheRecord::Create() { context->set_cert_verifier(io_thread_globals->cert_verifier.get()); context->set_http_auth_handler_factory( io_thread_globals->http_auth_handler_factory.get()); + context->set_network_delegate(&io_thread_globals->network_delegate); const CommandLine& command_line = *CommandLine::ForCurrentProcess(); context->set_proxy_service( @@ -477,6 +480,7 @@ ChromeURLRequestContext* FactoryForMedia::Create() { // TODO(willchan): Make a global ProxyService available in IOThread::Globals. context->set_proxy_service(main_context->proxy_service()); + context->set_network_delegate(main_context->network_delegate()); // Also share the cookie store of the common profile. context->set_cookie_store(main_context->cookie_store()); @@ -855,6 +859,7 @@ ChromeURLRequestContextFactory::ChromeURLRequestContextFactory(Profile* profile) blob_storage_context_ = profile->GetBlobStorageContext(); file_system_context_ = profile->GetFileSystemContext(); extension_info_map_ = profile->GetExtensionInfoMap(); + extension_io_event_router_ = profile->GetExtensionIOEventRouter(); prerender_manager_ = profile->GetPrerenderManager(); } @@ -881,5 +886,6 @@ void ChromeURLRequestContextFactory::ApplyProfileParametersToContext( context->set_blob_storage_context(blob_storage_context_); context->set_file_system_context(file_system_context_); context->set_extension_info_map(extension_info_map_); + context->set_extension_io_event_router(extension_io_event_router_); context->set_prerender_manager(prerender_manager_); } diff --git a/chrome/browser/net/chrome_url_request_context.h b/chrome/browser/net/chrome_url_request_context.h index f65f63c..50f2d66 100644 --- a/chrome/browser/net/chrome_url_request_context.h +++ b/chrome/browser/net/chrome_url_request_context.h @@ -14,6 +14,8 @@ #include "chrome/browser/chrome_blob_storage_context.h" #include "chrome/browser/content_settings/host_content_settings_map.h" #include "chrome/browser/extensions/extension_info_map.h" +#include "chrome/browser/extensions/extension_io_event_router.h" +#include "chrome/browser/extensions/extension_webrequest_api.h" #include "chrome/browser/host_zoom_map.h" #include "chrome/browser/io_thread.h" #include "chrome/browser/net/chrome_cookie_policy.h" @@ -91,6 +93,10 @@ class ChromeURLRequestContext : public net::URLRequestContext { return extension_info_map_; } + const ExtensionIOEventRouter* extension_io_event_router() const { + return extension_io_event_router_; + } + PrerenderManager* prerender_manager() { return prerender_manager_.get(); } @@ -155,9 +161,8 @@ class ChromeURLRequestContext : public net::URLRequestContext { void set_extension_info_map(ExtensionInfoMap* map) { extension_info_map_ = map; } - void set_network_delegate( - net::HttpNetworkDelegate* network_delegate) { - network_delegate_ = network_delegate; + void set_extension_io_event_router(ExtensionIOEventRouter* router) { + extension_io_event_router_ = router; } void set_prerender_manager(PrerenderManager* prerender_manager) { prerender_manager_ = prerender_manager; @@ -183,6 +188,7 @@ class ChromeURLRequestContext : public net::URLRequestContext { scoped_refptr<fileapi::SandboxedFileSystemContext> file_system_context_; // TODO(aa): This should use chrome/common/extensions/extension_set.h. scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<ExtensionIOEventRouter> extension_io_event_router_; scoped_refptr<PrerenderManager> prerender_manager_; bool is_off_the_record_; @@ -353,6 +359,7 @@ class ChromeURLRequestContextFactory { scoped_refptr<ChromeBlobStorageContext> blob_storage_context_; scoped_refptr<fileapi::SandboxedFileSystemContext> file_system_context_; scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<ExtensionIOEventRouter> extension_io_event_router_; scoped_refptr<PrerenderManager> prerender_manager_; FilePath profile_dir_path_; |