diff options
author | shalev@chromium.org <shalev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-24 01:06:58 +0000 |
---|---|---|
committer | shalev@chromium.org <shalev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-24 01:06:58 +0000 |
commit | 9f170464e1ab4f1f75802a391db76408bc8998f2 (patch) | |
tree | 50ecf1c9c893ab12c59ee653d57732572128b7ed | |
parent | 3dc4019ef862889073cf16e875050a512e93aa3a (diff) | |
download | chromium_src-9f170464e1ab4f1f75802a391db76408bc8998f2.zip chromium_src-9f170464e1ab4f1f75802a391db76408bc8998f2.tar.gz chromium_src-9f170464e1ab4f1f75802a391db76408bc8998f2.tar.bz2 |
Refactoring: ProtocolHandler::MaybeCreateJob and other functions take NetworkDelegate as argument
This change goes a long way to prepare for removing NetworkDelegate from URLRequestContext.
TBR=sky@chromium.org, michaeln@chromium.org, benjhayden@chromium.org, brettw@chromium.org, ben@chromium.org, davemoore@chromium.org, zelidrag@chromium.org, mnissler@chromium.org, thestig@chromium.org, asargent@chromium.org, jhawkins@chromium.org, bulach@chromium.org
BUG=crbug.com/142945
Review URL: https://chromiumcodereview.appspot.com/10855209
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@153133 0039d316-1c4b-4281-b951-d872f2087c98
123 files changed, 931 insertions, 559 deletions
diff --git a/chrome/browser/android/android_protocol_adapter.cc b/chrome/browser/android/android_protocol_adapter.cc index 3229ee4..aea7092 100644 --- a/chrome/browser/android/android_protocol_adapter.cc +++ b/chrome/browser/android/android_protocol_adapter.cc @@ -74,7 +74,9 @@ static bool InitJNIBindings(JNIEnv* env) { // static net::URLRequestJob* AndroidProtocolAdapter::Factory( - net::URLRequest* request, const std::string& scheme) { + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const std::string& scheme) { DCHECK(scheme == chrome::kFileScheme || scheme == chrome::kContentScheme); JNIEnv* env = AttachCurrentThread(); @@ -90,11 +92,12 @@ net::URLRequestJob* AndroidProtocolAdapter::Factory( if (scheme == chrome::kFileScheme && !StartsWithASCII(url, assetPrefix, /*case_sensitive=*/ true) && !StartsWithASCII(url, resourcePrefix, /*case_sensitive=*/ true)) { - return net::URLRequestFileJob::Factory(request, scheme); + return net::URLRequestFileJob::Factory(request, network_delegate, scheme); } return new AndroidStreamReaderURLRequestJob( request, + network_delegate, scoped_ptr<AndroidStreamReaderURLRequestJob::Delegate>( new AndroidStreamReaderURLRequestJobDelegateImpl())); } diff --git a/chrome/browser/android/android_stream_reader_url_request_job.cc b/chrome/browser/android/android_stream_reader_url_request_job.cc index 1c67b69..49c1d6b 100644 --- a/chrome/browser/android/android_stream_reader_url_request_job.cc +++ b/chrome/browser/android/android_stream_reader_url_request_job.cc @@ -12,7 +12,6 @@ #include "net/base/net_util.h" #include "net/http/http_util.h" #include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_error_job.h" #include "net/url_request/url_request_file_job.h" #include "net/url_request/url_request_job_manager.h" @@ -41,8 +40,9 @@ const int kBufferSize = 4096; AndroidStreamReaderURLRequestJob::AndroidStreamReaderURLRequestJob( net::URLRequest* request, + net::NetworkDelegate* network_delegate, scoped_ptr<Delegate> delegate) - : URLRequestJob(request, request->context()->network_delegate()), + : URLRequestJob(request, network_delegate), delegate_(delegate.Pass()) { DCHECK(delegate_.get()); } diff --git a/chrome/browser/android/android_stream_reader_url_request_job.h b/chrome/browser/android/android_stream_reader_url_request_job.h index 9200701..06394f8 100644 --- a/chrome/browser/android/android_stream_reader_url_request_job.h +++ b/chrome/browser/android/android_stream_reader_url_request_job.h @@ -43,8 +43,10 @@ class AndroidStreamReaderURLRequestJob : public net::URLRequestJob { virtual ~Delegate() {} }; - explicit AndroidStreamReaderURLRequestJob(net::URLRequest* request, - scoped_ptr<Delegate> delegate); + explicit AndroidStreamReaderURLRequestJob( + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + scoped_ptr<Delegate> delegate); // Register JNI methods. static bool InitJNIBindings(JNIEnv* env); diff --git a/chrome/browser/automation/url_request_automation_job.cc b/chrome/browser/automation/url_request_automation_job.cc index 8b41e57..f7cd433 100644 --- a/chrome/browser/automation/url_request_automation_job.cc +++ b/chrome/browser/automation/url_request_automation_job.cc @@ -52,11 +52,12 @@ net::URLRequest::ProtocolFactory* URLRequestAutomationJob::old_https_factory_ URLRequestAutomationJob::URLRequestAutomationJob( net::URLRequest* request, + net::NetworkDelegate* network_delegate, int tab, int request_id, AutomationResourceMessageFilter* filter, bool is_pending) - : net::URLRequestJob(request, request->context()->network_delegate()), + : net::URLRequestJob(request, network_delegate), id_(0), tab_(tab), message_filter_(filter), @@ -95,6 +96,7 @@ void URLRequestAutomationJob::EnsureProtocolFactoryRegistered() { net::URLRequestJob* URLRequestAutomationJob::Factory( net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme) { bool scheme_is_http = request->url().SchemeIs("http"); bool scheme_is_https = request->url().SchemeIs("https"); @@ -108,7 +110,8 @@ net::URLRequestJob* URLRequestAutomationJob::Factory( AutomationResourceMessageFilter::AutomationDetails details; if (AutomationResourceMessageFilter::LookupRegisteredRenderView( child_id, route_id, &details)) { - URLRequestAutomationJob* job = new URLRequestAutomationJob(request, + URLRequestAutomationJob* job = new URLRequestAutomationJob( + request, network_delegate, details.tab_handle, info->GetRequestID(), details.filter, details.is_pending_render_view); return job; @@ -116,9 +119,9 @@ net::URLRequestJob* URLRequestAutomationJob::Factory( } if (scheme_is_http && old_http_factory_) - return old_http_factory_(request, scheme); + return old_http_factory_(request, network_delegate, scheme); else if (scheme_is_https && old_https_factory_) - return old_https_factory_(request, scheme); + return old_https_factory_(request, network_delegate, scheme); } return NULL; } diff --git a/chrome/browser/automation/url_request_automation_job.h b/chrome/browser/automation/url_request_automation_job.h index 6fedd07..ec7cce7 100644 --- a/chrome/browser/automation/url_request_automation_job.h +++ b/chrome/browser/automation/url_request_automation_job.h @@ -28,7 +28,10 @@ class Message; // automation. class URLRequestAutomationJob : public net::URLRequestJob { public: - URLRequestAutomationJob(net::URLRequest* request, int tab, int request_id, + URLRequestAutomationJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, + int tab, + int request_id, AutomationResourceMessageFilter* filter, bool is_pending); diff --git a/chrome/browser/captive_portal/captive_portal_browsertest.cc b/chrome/browser/captive_portal/captive_portal_browsertest.cc index 09b3460..3077621 100644 --- a/chrome/browser/captive_portal/captive_portal_browsertest.cc +++ b/chrome/browser/captive_portal/captive_portal_browsertest.cc @@ -134,7 +134,8 @@ class URLRequestTimeoutOnDemandJob : public net::URLRequestJob, ABANDON_JOBS, }; - explicit URLRequestTimeoutOnDemandJob(net::URLRequest* request); + URLRequestTimeoutOnDemandJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate); virtual ~URLRequestTimeoutOnDemandJob(); // Attempts to removes |this| from |jobs_|. Returns true if it was removed @@ -226,8 +227,8 @@ void URLRequestTimeoutOnDemandJob::AbandonJobs(int expected_num_jobs) { } URLRequestTimeoutOnDemandJob::URLRequestTimeoutOnDemandJob( - net::URLRequest* request) - : net::URLRequestJob(request, request->context()->network_delegate()), + net::URLRequest* request, net::NetworkDelegate* network_delegate) + : net::URLRequestJob(request, network_delegate), next_job_(NULL) { } @@ -343,6 +344,7 @@ class URLRequestMockCaptivePortalJobFactory { // kMockHttpsQuickTimeoutUrl. See documentation of individual URLs for // actual behavior. static net::URLRequestJob* Factory(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme); static bool behind_captive_portal_; @@ -398,6 +400,7 @@ void URLRequestMockCaptivePortalJobFactory::SetBehindCaptivePortalOnIOThread( // static net::URLRequestJob* URLRequestMockCaptivePortalJobFactory::Factory( net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme) { EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); @@ -408,19 +411,22 @@ net::URLRequestJob* URLRequestMockCaptivePortalJobFactory::Factory( if (request->url() == GURL(kMockHttpsUrl) || request->url() == GURL(kMockHttpsUrl2)) { if (behind_captive_portal_) - return new URLRequestTimeoutOnDemandJob(request); + return new URLRequestTimeoutOnDemandJob(request, network_delegate); // Once logged in to the portal, HTTPS requests return the page that was // actually requested. return new URLRequestMockHTTPJob( request, + network_delegate, root_http.Append(FILE_PATH_LITERAL("title2.html"))); } else if (request->url() == GURL(kMockHttpsQuickTimeoutUrl)) { if (behind_captive_portal_) - return new URLRequestFailedJob(request, net::ERR_CONNECTION_TIMED_OUT); + return new URLRequestFailedJob( + request, network_delegate, net::ERR_CONNECTION_TIMED_OUT); // Once logged in to the portal, HTTPS requests return the page that was // actually requested. return new URLRequestMockHTTPJob( request, + network_delegate, root_http.Append(FILE_PATH_LITERAL("title2.html"))); } else { // The URL should be the captive portal test URL. @@ -430,12 +436,14 @@ net::URLRequestJob* URLRequestMockCaptivePortalJobFactory::Factory( // Prior to logging in to the portal, HTTP requests go to the login page. return new URLRequestMockHTTPJob( request, + network_delegate, root_http.Append(FILE_PATH_LITERAL("captive_portal/login.html"))); } // After logging in to the portal, the test URL returns a 204 response. return new URLRequestMockHTTPJob( request, + network_delegate, root_http.Append(FILE_PATH_LITERAL("captive_portal/page204.html"))); } } diff --git a/chrome/browser/chromeos/gdata/gdata_protocol_handler.cc b/chrome/browser/chromeos/gdata/gdata_protocol_handler.cc index c45ae80..079b111 100644 --- a/chrome/browser/chromeos/gdata/gdata_protocol_handler.cc +++ b/chrome/browser/chromeos/gdata/gdata_protocol_handler.cc @@ -34,7 +34,6 @@ #include "net/http/http_response_headers.h" #include "net/http/http_response_info.h" #include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_job.h" using content::BrowserThread; @@ -130,7 +129,8 @@ void CancelGDataDownloadOnUIThread(const FilePath& gdata_file_path) { // formatted as drive://<resource-id>. class GDataURLRequestJob : public net::URLRequestJob { public: - explicit GDataURLRequestJob(net::URLRequest* request); + GDataURLRequestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate); // net::URLRequestJob overrides: virtual void Start() OVERRIDE; @@ -224,8 +224,9 @@ class GDataURLRequestJob : public net::URLRequestJob { DISALLOW_COPY_AND_ASSIGN(GDataURLRequestJob); }; -GDataURLRequestJob::GDataURLRequestJob(net::URLRequest* request) - : net::URLRequestJob(request, request->context()->network_delegate()), +GDataURLRequestJob::GDataURLRequestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate) + : net::URLRequestJob(request, network_delegate), weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST( new base::WeakPtrFactory<GDataURLRequestJob>(this))), file_system_(NULL), @@ -934,9 +935,9 @@ GDataProtocolHandler::~GDataProtocolHandler() { } net::URLRequestJob* GDataProtocolHandler::MaybeCreateJob( - net::URLRequest* request) const { + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { DVLOG(1) << "Handling url: " << request->url().spec(); - return new GDataURLRequestJob(request); + return new GDataURLRequestJob(request, network_delegate); } } // namespace gdata diff --git a/chrome/browser/chromeos/gdata/gdata_protocol_handler.h b/chrome/browser/chromeos/gdata/gdata_protocol_handler.h index 90b9bcd..5396716 100644 --- a/chrome/browser/chromeos/gdata/gdata_protocol_handler.h +++ b/chrome/browser/chromeos/gdata/gdata_protocol_handler.h @@ -15,7 +15,8 @@ class GDataProtocolHandler : public net::URLRequestJobFactory::ProtocolHandler { virtual ~GDataProtocolHandler(); // Creates URLRequestJobs for drive:// URLs. virtual net::URLRequestJob* MaybeCreateJob( - net::URLRequest* request) const OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; }; } // namespace gdata diff --git a/chrome/browser/chromeos/gview_request_interceptor.cc b/chrome/browser/chromeos/gview_request_interceptor.cc index 67aa267..530e2a9 100644 --- a/chrome/browser/chromeos/gview_request_interceptor.cc +++ b/chrome/browser/chromeos/gview_request_interceptor.cc @@ -51,7 +51,7 @@ GViewRequestInterceptor::~GViewRequestInterceptor() { } net::URLRequestJob* GViewRequestInterceptor::MaybeIntercept( - net::URLRequest* request) const { + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { // Don't attempt to intercept here as we want to wait until the mime // type is fully determined. return NULL; @@ -59,7 +59,8 @@ net::URLRequestJob* GViewRequestInterceptor::MaybeIntercept( net::URLRequestJob* GViewRequestInterceptor::MaybeInterceptRedirect( const GURL& location, - net::URLRequest* request) const { + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const { return NULL; } @@ -87,7 +88,7 @@ bool GViewRequestInterceptor::ShouldInterceptScheme( } net::URLRequestJob* GViewRequestInterceptor::MaybeInterceptResponse( - net::URLRequest* request) const { + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { // Do not intercept this request if it is a download. if (request->load_flags() & net::LOAD_IS_DOWNLOAD) { return NULL; @@ -112,7 +113,7 @@ net::URLRequestJob* GViewRequestInterceptor::MaybeInterceptResponse( if (supported_mime_types_.count(mime_type) > 0) { std::string url(kGViewUrlPrefix); url += net::EscapePath(request->url().spec()); - return new net::URLRequestRedirectJob(request, GURL(url)); + return new net::URLRequestRedirectJob(request, network_delegate, GURL(url)); } return NULL; } diff --git a/chrome/browser/chromeos/gview_request_interceptor.h b/chrome/browser/chromeos/gview_request_interceptor.h index 6b2ca83..41b7947 100644 --- a/chrome/browser/chromeos/gview_request_interceptor.h +++ b/chrome/browser/chromeos/gview_request_interceptor.h @@ -26,18 +26,21 @@ class GViewRequestInterceptor : public net::URLRequestJobFactory::Interceptor { // Always returns NULL because we don't want to attempt a redirect // before seeing the detected mime type of the request. virtual net::URLRequestJob* MaybeIntercept( - net::URLRequest* request) const OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; // Always returns NULL. virtual net::URLRequestJob* MaybeInterceptRedirect( const GURL& location, - net::URLRequest* request) const OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; // Determines if the requested document can be viewed by the Google // Document Viewer. If it can, returns a net::URLRequestJob that // redirects the browser to the view URL. virtual net::URLRequestJob* MaybeInterceptResponse( - net::URLRequest* request) const OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; private: bool ShouldUsePdfPlugin(net::URLRequest* request) const; diff --git a/chrome/browser/chromeos/gview_request_interceptor_unittest.cc b/chrome/browser/chromeos/gview_request_interceptor_unittest.cc index 76c0c0c..ca074a9 100644 --- a/chrome/browser/chromeos/gview_request_interceptor_unittest.cc +++ b/chrome/browser/chromeos/gview_request_interceptor_unittest.cc @@ -45,8 +45,9 @@ const char kPptUrlIntercepted[] = class GViewURLRequestTestJob : public net::URLRequestTestJob { public: - explicit GViewURLRequestTestJob(net::URLRequest* request) - : net::URLRequestTestJob(request, true) { + GViewURLRequestTestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate) + : net::URLRequestTestJob(request, network_delegate, true) { } virtual bool GetMimeType(std::string* mime_type) const { @@ -79,8 +80,9 @@ class GViewRequestProtocolFactory GViewRequestProtocolFactory() {} virtual ~GViewRequestProtocolFactory() {} - virtual net::URLRequestJob* MaybeCreateJob(net::URLRequest* request) const { - return new GViewURLRequestTestJob(request); + virtual net::URLRequestJob* MaybeCreateJob( + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { + return new GViewURLRequestTestJob(request, network_delegate); } }; diff --git a/chrome/browser/chromeos/login/registration_screen.cc b/chrome/browser/chromeos/login/registration_screen.cc index 913aada..c156159 100644 --- a/chrome/browser/chromeos/login/registration_screen.cc +++ b/chrome/browser/chromeos/login/registration_screen.cc @@ -138,10 +138,12 @@ void RegistrationScreen::CloseScreen(ScreenObserver::ExitCodes code) { } // static -net::URLRequestJob* RegistrationScreen::Factory(net::URLRequest* request, - const std::string& scheme) { +net::URLRequestJob* RegistrationScreen::Factory( + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const std::string& scheme) { VLOG(1) << "Handling url: " << request->url().spec().c_str(); - return new net::URLRequestAboutJob(request); + return new net::URLRequestAboutJob(request, network_delegate); } } // namespace chromeos diff --git a/chrome/browser/chromeos/login/registration_screen.h b/chrome/browser/chromeos/login/registration_screen.h index 3ba1af2..31bde9b 100644 --- a/chrome/browser/chromeos/login/registration_screen.h +++ b/chrome/browser/chromeos/login/registration_screen.h @@ -18,6 +18,7 @@ class GURL; class Profile; namespace net { +class NetworkDelegate; class URLRequest; class URLRequestJob; } // namespace net @@ -57,6 +58,7 @@ class RegistrationScreen : public ViewScreen<RegistrationView>, // Handler factory for net::URLRequestFilter::AddHostnameHandler. static net::URLRequestJob* Factory(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme); private: diff --git a/chrome/browser/component_updater/component_updater_interceptor.cc b/chrome/browser/component_updater/component_updater_interceptor.cc index afd7b0d..41d7eae 100644 --- a/chrome/browser/component_updater/component_updater_interceptor.cc +++ b/chrome/browser/component_updater/component_updater_interceptor.cc @@ -6,6 +6,7 @@ #include "base/file_util.h" #include "base/threading/thread_restrictions.h" #include "content/public/browser/browser_thread.h" +#include "net/url_request/url_request.h" #include "net/url_request/url_request_test_job.h" #include "testing/gtest/include/gtest/gtest.h" @@ -21,7 +22,7 @@ ComponentUpdateInterceptor::~ComponentUpdateInterceptor() { } net::URLRequestJob* ComponentUpdateInterceptor::MaybeIntercept( - net::URLRequest* request) { + net::URLRequest* request, net::NetworkDelegate* network_delegate) { EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); if (request->url().scheme() != "http" || request->url().host() != "localhost") { @@ -43,6 +44,7 @@ net::URLRequestJob* ComponentUpdateInterceptor::MaybeIntercept( EXPECT_TRUE(file_util::ReadFileToString(response.data_path, &contents)); return new net::URLRequestTestJob(request, + network_delegate, response.headers, contents, true); diff --git a/chrome/browser/component_updater/component_updater_interceptor.h b/chrome/browser/component_updater/component_updater_interceptor.h index 9f310a4..67b9199 100644 --- a/chrome/browser/component_updater/component_updater_interceptor.h +++ b/chrome/browser/component_updater/component_updater_interceptor.h @@ -37,7 +37,9 @@ class ComponentUpdateInterceptor private: // When computing matches, this ignores the query parameters of the url. - virtual net::URLRequestJob* MaybeIntercept(net::URLRequest* request) OVERRIDE; + virtual net::URLRequestJob* MaybeIntercept( + net::URLRequest* request, + net::NetworkDelegate* network_delegate) OVERRIDE; friend class base::RefCountedThreadSafe<ComponentUpdateInterceptor>; diff --git a/chrome/browser/custom_handlers/protocol_handler_registry.cc b/chrome/browser/custom_handlers/protocol_handler_registry.cc index 518be11..12ca2f2 100644 --- a/chrome/browser/custom_handlers/protocol_handler_registry.cc +++ b/chrome/browser/custom_handlers/protocol_handler_registry.cc @@ -90,7 +90,8 @@ class ProtocolHandlerRegistry::Core // Creates a URL request job for the given request if there is a matching // protocol handler, returns NULL otherwise. - net::URLRequestJob* MaybeCreateJob(net::URLRequest* request) const; + net::URLRequestJob* MaybeCreateJob( + net::URLRequest* request, net::NetworkDelegate* network_delegate) const; // Indicate that the registry has been enabled in the IO thread's // copy of the data. @@ -137,7 +138,7 @@ void ProtocolHandlerRegistry::Core::SetDefault(const ProtocolHandler& handler) { // is registered and the associated handler is able to interpret // the url from |request|. net::URLRequestJob* ProtocolHandlerRegistry::Core::MaybeCreateJob( - net::URLRequest* request) const { + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); ProtocolHandler handler = LookupHandler(default_handlers_, @@ -149,7 +150,8 @@ net::URLRequestJob* ProtocolHandlerRegistry::Core::MaybeCreateJob( if (!translated_url.is_valid()) return NULL; - return new net::URLRequestRedirectJob(request, translated_url); + return new net::URLRequestRedirectJob( + request, network_delegate, translated_url); } // URLInterceptor ------------------------------------------------------------ @@ -165,17 +167,21 @@ class ProtocolHandlerRegistry::URLInterceptor virtual ~URLInterceptor(); virtual net::URLRequestJob* MaybeIntercept( - net::URLRequest* request) const OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; virtual bool WillHandleProtocol(const std::string& protocol) const OVERRIDE; virtual net::URLRequestJob* MaybeInterceptRedirect( - const GURL& url, net::URLRequest* request) const OVERRIDE { + const GURL& url, + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE { return NULL; } virtual net::URLRequestJob* MaybeInterceptResponse( - net::URLRequest* request) const OVERRIDE { + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE { return NULL; } @@ -193,10 +199,10 @@ ProtocolHandlerRegistry::URLInterceptor::~URLInterceptor() { } net::URLRequestJob* ProtocolHandlerRegistry::URLInterceptor::MaybeIntercept( - net::URLRequest* request) const { + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - return core_->MaybeCreateJob(request); + return core_->MaybeCreateJob(request, network_delegate); } bool ProtocolHandlerRegistry::URLInterceptor::WillHandleProtocol( diff --git a/chrome/browser/custom_handlers/protocol_handler_registry_unittest.cc b/chrome/browser/custom_handlers/protocol_handler_registry_unittest.cc index 784e134..26a2fb4 100644 --- a/chrome/browser/custom_handlers/protocol_handler_registry_unittest.cc +++ b/chrome/browser/custom_handlers/protocol_handler_registry_unittest.cc @@ -34,7 +34,8 @@ void AssertInterceptedIO( DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); net::URLRequestContext context; net::URLRequest request(url, NULL, &context); - scoped_refptr<net::URLRequestJob> job = interceptor->MaybeIntercept(&request); + scoped_refptr<net::URLRequestJob> job = interceptor->MaybeIntercept( + &request, context.network_delegate()); ASSERT_TRUE(job.get() != NULL); } diff --git a/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc b/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc index d4cd8d3..88be724 100644 --- a/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc +++ b/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc @@ -626,9 +626,11 @@ class TestProtocolHandler : public net::URLRequestJobFactory::ProtocolHandler { virtual ~TestProtocolHandler() {} virtual net::URLRequestJob* MaybeCreateJob( - net::URLRequest* request) const OVERRIDE { + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE { return new webkit_blob::BlobURLRequestJob( request, + network_delegate, blob_storage_controller_->GetBlobDataFromUrl(request->url()), base::MessageLoopProxy::current()); } diff --git a/chrome/browser/extensions/autoupdate_interceptor.cc b/chrome/browser/extensions/autoupdate_interceptor.cc index 34e01b6..febc9cf 100644 --- a/chrome/browser/extensions/autoupdate_interceptor.cc +++ b/chrome/browser/extensions/autoupdate_interceptor.cc @@ -8,6 +8,7 @@ #include "base/file_util.h" #include "base/threading/thread_restrictions.h" #include "content/public/browser/browser_thread.h" +#include "net/url_request/url_request.h" #include "net/url_request/url_request_test_job.h" #include "testing/gtest/include/gtest/gtest.h" @@ -21,8 +22,10 @@ namespace extensions { class AutoUpdateTestRequestJob : public net::URLRequestTestJob { public: AutoUpdateTestRequestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& response_data) : net::URLRequestTestJob(request, + network_delegate, net::URLRequestTestJob::test_headers(), response_data, true) { @@ -44,7 +47,7 @@ AutoUpdateInterceptor::~AutoUpdateInterceptor() { } net::URLRequestJob* AutoUpdateInterceptor::MaybeIntercept( - net::URLRequest* request) { + net::URLRequest* request, net::NetworkDelegate* network_delegate) { EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); if (request->url().scheme() != "http" || request->url().host() != "localhost") { @@ -69,7 +72,7 @@ net::URLRequestJob* AutoUpdateInterceptor::MaybeIntercept( std::string contents; EXPECT_TRUE(file_util::ReadFileToString(i->second, &contents)); - return new AutoUpdateTestRequestJob(request, contents); + return new AutoUpdateTestRequestJob(request, network_delegate, contents); } diff --git a/chrome/browser/extensions/autoupdate_interceptor.h b/chrome/browser/extensions/autoupdate_interceptor.h index 36dd7c9..cfc06590 100644 --- a/chrome/browser/extensions/autoupdate_interceptor.h +++ b/chrome/browser/extensions/autoupdate_interceptor.h @@ -23,7 +23,9 @@ class AutoUpdateInterceptor // When computing matches, this ignores query parameters (since the autoupdate // fetch code appends a bunch of them to manifest fetches). - virtual net::URLRequestJob* MaybeIntercept(net::URLRequest* request) OVERRIDE; + virtual net::URLRequestJob* MaybeIntercept( + net::URLRequest* request, + net::NetworkDelegate* network_delegate) OVERRIDE; // When requests for |url| arrive, respond with the contents of |path|. The // hostname of |url| must be "localhost" to avoid DNS lookups, and the scheme diff --git a/chrome/browser/extensions/extension_protocols.cc b/chrome/browser/extensions/extension_protocols.cc index 8dc1af8..70af6bf 100644 --- a/chrome/browser/extensions/extension_protocols.cc +++ b/chrome/browser/extensions/extension_protocols.cc @@ -31,7 +31,6 @@ #include "net/base/net_errors.h" #include "net/http/http_response_headers.h" #include "net/http/http_response_info.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_error_job.h" #include "net/url_request/url_request_file_job.h" #include "net/url_request/url_request_simple_job.h" @@ -69,10 +68,13 @@ void ReadMimeTypeFromFile(const FilePath& filename, class URLRequestResourceBundleJob : public net::URLRequestSimpleJob { public: - URLRequestResourceBundleJob( - net::URLRequest* request, const FilePath& filename, int resource_id, - const std::string& content_security_policy, bool send_cors_header) - : net::URLRequestSimpleJob(request), + URLRequestResourceBundleJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const FilePath& filename, + int resource_id, + const std::string& content_security_policy, + bool send_cors_header) + : net::URLRequestSimpleJob(request, network_delegate), filename_(filename), resource_id_(resource_id), weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { @@ -146,9 +148,10 @@ class URLRequestResourceBundleJob : public net::URLRequestSimpleJob { class GeneratedBackgroundPageJob : public net::URLRequestSimpleJob { public: GeneratedBackgroundPageJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const scoped_refptr<const Extension> extension, const std::string& content_security_policy) - : net::URLRequestSimpleJob(request), + : net::URLRequestSimpleJob(request, network_delegate), extension_(extension) { const bool send_cors_headers = false; response_info_.headers = BuildHttpHeaders(content_security_policy, @@ -192,13 +195,12 @@ void ReadResourceFilePath(const ExtensionResource& resource, class URLRequestExtensionJob : public net::URLRequestFileJob { public: URLRequestExtensionJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& extension_id, const FilePath& directory_path, const std::string& content_security_policy, bool send_cors_header) - : net::URLRequestFileJob(request, - FilePath(), - request->context()->network_delegate()), + : net::URLRequestFileJob(request, network_delegate, FilePath()), // TODO(tc): Move all of these files into resources.pak so we don't break // when updating on Linux. resource_(extension_id, directory_path, @@ -306,7 +308,8 @@ class ExtensionProtocolHandler virtual ~ExtensionProtocolHandler() {} virtual net::URLRequestJob* MaybeCreateJob( - net::URLRequest* request) const OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; private: const bool is_incognito_; @@ -316,11 +319,13 @@ class ExtensionProtocolHandler // Creates URLRequestJobs for extension:// URLs. net::URLRequestJob* -ExtensionProtocolHandler::MaybeCreateJob(net::URLRequest* request) const { +ExtensionProtocolHandler::MaybeCreateJob( + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { // TODO(mpcomplete): better error code. if (!AllowExtensionResourceLoad( request, is_incognito_, extension_info_map_)) { - return new net::URLRequestErrorJob(request, net::ERR_ADDRESS_UNREACHABLE); + return new net::URLRequestErrorJob( + request, network_delegate, net::ERR_ADDRESS_UNREACHABLE); } // chrome-extension://extension-id/resource/path.js @@ -357,7 +362,7 @@ ExtensionProtocolHandler::MaybeCreateJob(net::URLRequest* request) const { if (path.size() > 1 && path.substr(1) == extension_filenames::kGeneratedBackgroundPageFilename) { return new GeneratedBackgroundPageJob( - request, extension, content_security_policy); + request, network_delegate, extension, content_security_policy); } FilePath resources_path; @@ -382,15 +387,23 @@ ExtensionProtocolHandler::MaybeCreateJob(net::URLRequest* request) const { FilePath().AppendASCII(kComponentExtensionResources[i].name); bm_resource_path = bm_resource_path.NormalizePathSeparators(); if (relative_path == bm_resource_path) { - return new URLRequestResourceBundleJob(request, relative_path, - kComponentExtensionResources[i].value, content_security_policy, + return new URLRequestResourceBundleJob( + request, + network_delegate, + relative_path, + kComponentExtensionResources[i].value, + content_security_policy, send_cors_header); } } } - return new URLRequestExtensionJob(request, extension_id, directory_path, - content_security_policy, send_cors_header); + return new URLRequestExtensionJob(request, + network_delegate, + extension_id, + directory_path, + content_security_policy, + send_cors_header); } } // namespace diff --git a/chrome/browser/extensions/extension_resource_protocols.cc b/chrome/browser/extensions/extension_resource_protocols.cc index 91a9b02..cb3d2cc 100644 --- a/chrome/browser/extensions/extension_resource_protocols.cc +++ b/chrome/browser/extensions/extension_resource_protocols.cc @@ -9,18 +9,16 @@ #include "chrome/common/chrome_paths.h" #include "chrome/common/extensions/extension_file_util.h" #include "content/public/browser/browser_thread.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_file_job.h" namespace { class ExtensionResourcesJob : public net::URLRequestFileJob { public: - explicit ExtensionResourcesJob(net::URLRequest* request) - : net::URLRequestFileJob(request, - FilePath(), - request->context()->network_delegate()), - thread_id_(content::BrowserThread::UI) { + ExtensionResourcesJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate) + : net::URLRequestFileJob(request, network_delegate, FilePath()), + thread_id_(content::BrowserThread::UI) { } virtual void Start() OVERRIDE; @@ -65,7 +63,8 @@ class ExtensionResourceProtocolHandler virtual ~ExtensionResourceProtocolHandler() {} virtual net::URLRequestJob* MaybeCreateJob( - net::URLRequest* request) const OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; private: DISALLOW_COPY_AND_ASSIGN(ExtensionResourceProtocolHandler); @@ -74,8 +73,8 @@ class ExtensionResourceProtocolHandler // Creates URLRequestJobs for chrome-extension-resource:// URLs. net::URLRequestJob* ExtensionResourceProtocolHandler::MaybeCreateJob( - net::URLRequest* request) const { - return new ExtensionResourcesJob(request); + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { + return new ExtensionResourcesJob(request, network_delegate); } } // namespace diff --git a/chrome/browser/extensions/user_script_listener_unittest.cc b/chrome/browser/extensions/user_script_listener_unittest.cc index 93d7c0b..42d2011 100644 --- a/chrome/browser/extensions/user_script_listener_unittest.cc +++ b/chrome/browser/extensions/user_script_listener_unittest.cc @@ -58,8 +58,13 @@ class ThrottleController : public base::SupportsUserData::Data, // whether it starts and finishes. class SimpleTestJob : public net::URLRequestTestJob { public: - explicit SimpleTestJob(net::URLRequest* request) - : net::URLRequestTestJob(request, test_headers(), kTestData, true) {} + SimpleTestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate) + : net::URLRequestTestJob(request, + network_delegate, + test_headers(), + kTestData, + true) {} private: ~SimpleTestJob() {} }; @@ -116,8 +121,9 @@ class UserScriptListenerTest } // net::URLRequest::Interceptor - virtual net::URLRequestJob* MaybeIntercept(net::URLRequest* request) { - return new SimpleTestJob(request); + virtual net::URLRequestJob* MaybeIntercept( + net::URLRequest* request, net::NetworkDelegate* network_delegate) { + return new SimpleTestJob(request, network_delegate); } protected: diff --git a/chrome/browser/net/about_protocol_handler.cc b/chrome/browser/net/about_protocol_handler.cc index 9eea3d5..20a8f1f 100644 --- a/chrome/browser/net/about_protocol_handler.cc +++ b/chrome/browser/net/about_protocol_handler.cc @@ -12,9 +12,9 @@ AboutProtocolHandler::AboutProtocolHandler() { } URLRequestJob* AboutProtocolHandler::MaybeCreateJob( - URLRequest* request) const { + URLRequest* request, NetworkDelegate* network_delegate) const { DCHECK(false); - return new URLRequestAboutJob(request); + return new URLRequestAboutJob(request, network_delegate); } } // namespace net diff --git a/chrome/browser/net/about_protocol_handler.h b/chrome/browser/net/about_protocol_handler.h index 6e1c5da..46bbe6f 100644 --- a/chrome/browser/net/about_protocol_handler.h +++ b/chrome/browser/net/about_protocol_handler.h @@ -17,7 +17,8 @@ class URLRequestJob; class AboutProtocolHandler : public URLRequestJobFactory::ProtocolHandler { public: AboutProtocolHandler(); - virtual URLRequestJob* MaybeCreateJob(URLRequest* request) const OVERRIDE; + virtual URLRequestJob* MaybeCreateJob( + URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE; private: DISALLOW_COPY_AND_ASSIGN(AboutProtocolHandler); diff --git a/chrome/browser/net/connect_interceptor.cc b/chrome/browser/net/connect_interceptor.cc index 0ea6dbd..c1d6dea 100644 --- a/chrome/browser/net/connect_interceptor.cc +++ b/chrome/browser/net/connect_interceptor.cc @@ -28,7 +28,7 @@ ConnectInterceptor::~ConnectInterceptor() { } net::URLRequestJob* ConnectInterceptor::MaybeIntercept( - net::URLRequest* request) const { + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { GURL request_scheme_host(Predictor::CanonicalizeUrl(request->url())); if (request_scheme_host == GURL::EmptyGURL()) return NULL; @@ -88,13 +88,14 @@ net::URLRequestJob* ConnectInterceptor::MaybeIntercept( } net::URLRequestJob* ConnectInterceptor::MaybeInterceptResponse( - net::URLRequest* request) const { + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { return NULL; } net::URLRequestJob* ConnectInterceptor::MaybeInterceptRedirect( const GURL& location, - net::URLRequest* request) const { + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const { return NULL; } diff --git a/chrome/browser/net/connect_interceptor.h b/chrome/browser/net/connect_interceptor.h index 5fb3da7..1cef9fe 100644 --- a/chrome/browser/net/connect_interceptor.h +++ b/chrome/browser/net/connect_interceptor.h @@ -28,11 +28,15 @@ class ConnectInterceptor : public net::URLRequestJobFactory::Interceptor { // Overridden from net::URLRequest::Interceptor: // Learn about referrers, and optionally preconnect based on history. virtual net::URLRequestJob* MaybeIntercept( - net::URLRequest* request) const OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; virtual net::URLRequestJob* MaybeInterceptResponse( - net::URLRequest* request) const OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; virtual net::URLRequestJob* MaybeInterceptRedirect( - const GURL& location, net::URLRequest* request) const OVERRIDE; + const GURL& location, + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; private: // Provide access to local class TimedCache for testing. diff --git a/chrome/browser/net/url_request_mock_link_doctor_job.cc b/chrome/browser/net/url_request_mock_link_doctor_job.cc index fb6563e..d68122b 100644 --- a/chrome/browser/net/url_request_mock_link_doctor_job.cc +++ b/chrome/browser/net/url_request_mock_link_doctor_job.cc @@ -24,8 +24,9 @@ FilePath GetMockFilePath() { // static net::URLRequestJob* URLRequestMockLinkDoctorJob::Factory( net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme) { - return new URLRequestMockLinkDoctorJob(request); + return new URLRequestMockLinkDoctorJob(request, network_delegate); } // static @@ -37,6 +38,6 @@ void URLRequestMockLinkDoctorJob::AddUrlHandler() { } URLRequestMockLinkDoctorJob::URLRequestMockLinkDoctorJob( - net::URLRequest* request) - : URLRequestMockHTTPJob(request, GetMockFilePath()) { + net::URLRequest* request, net::NetworkDelegate* network_delegate) + : URLRequestMockHTTPJob(request, network_delegate, GetMockFilePath()) { } diff --git a/chrome/browser/net/url_request_mock_link_doctor_job.h b/chrome/browser/net/url_request_mock_link_doctor_job.h index eba6c57..c559d06 100644 --- a/chrome/browser/net/url_request_mock_link_doctor_job.h +++ b/chrome/browser/net/url_request_mock_link_doctor_job.h @@ -11,7 +11,8 @@ class URLRequestMockLinkDoctorJob : public URLRequestMockHTTPJob { public: - explicit URLRequestMockLinkDoctorJob(net::URLRequest* request); + URLRequestMockLinkDoctorJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate); static net::URLRequest::ProtocolFactory Factory; diff --git a/chrome/browser/policy/device_management_service_browsertest.cc b/chrome/browser/policy/device_management_service_browsertest.cc index ff532ba..e01cc0a 100644 --- a/chrome/browser/policy/device_management_service_browsertest.cc +++ b/chrome/browser/policy/device_management_service_browsertest.cc @@ -42,7 +42,8 @@ class CannedResponseInterceptor : public net::URLRequest::Interceptor { // net::URLRequest::Interceptor overrides. virtual net::URLRequestJob* MaybeIntercept( - net::URLRequest* request) OVERRIDE { + net::URLRequest* request, + net::NetworkDelegate* network_delegate) OVERRIDE { em::DeviceManagementRequest dm_request; net::UploadData* upload = request->get_upload_mutable(); if (request->url().GetOrigin() == service_url_.GetOrigin() && @@ -54,6 +55,7 @@ class CannedResponseInterceptor : public net::URLRequest::Interceptor { upload->elements()->at(0).bytes_length(), &response_data); return new net::URLRequestTestJob(request, + network_delegate, net::URLRequestTestJob::test_headers(), response_data, true); diff --git a/chrome/browser/printing/print_dialog_cloud_interative_uitest.cc b/chrome/browser/printing/print_dialog_cloud_interative_uitest.cc index cb71eaa..fabc49e 100644 --- a/chrome/browser/printing/print_dialog_cloud_interative_uitest.cc +++ b/chrome/browser/printing/print_dialog_cloud_interative_uitest.cc @@ -29,6 +29,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" #include "content/public/test/test_browser_thread.h" +#include "net/url_request/url_request.h" #include "net/url_request/url_request_filter.h" #include "net/url_request/url_request_test_job.h" #include "net/url_request/url_request_test_util.h" @@ -70,9 +71,13 @@ class TestData { // whether it starts and finishes. class SimpleTestJob : public net::URLRequestTestJob { public: - explicit SimpleTestJob(net::URLRequest* request) - : net::URLRequestTestJob(request, test_headers(), - TestData::GetInstance()->GetTestData(), true) {} + SimpleTestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate) + : net::URLRequestTestJob(request, + network_delegate, + test_headers(), + TestData::GetInstance()->GetTestData(), + true) {} virtual void GetResponseInfo(net::HttpResponseInfo* info) { net::URLRequestTestJob::GetResponseInfo(info); @@ -220,18 +225,22 @@ class PrintDialogCloudTest : public InProcessBrowserTest { AutoQuitDelegate delegate_; }; -net::URLRequestJob* PrintDialogCloudTest::Factory(net::URLRequest* request, - const std::string& scheme) { +net::URLRequestJob* PrintDialogCloudTest::Factory( + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const std::string& scheme) { if (request && (request->url() == TestController::GetInstance()->expected_url())) { if (TestController::GetInstance()->use_delegate()) request->set_delegate(TestController::GetInstance()->delegate()); TestController::GetInstance()->set_result(true); - return new SimpleTestJob(request); + return new SimpleTestJob(request, network_delegate); } return new net::URLRequestTestJob(request, + network_delegate, net::URLRequestTestJob::test_headers(), - "", true); + "", + true); } #if defined(OS_WIN) diff --git a/chrome/browser/profiles/off_the_record_profile_io_data.cc b/chrome/browser/profiles/off_the_record_profile_io_data.cc index eca2df4..2e0b896 100644 --- a/chrome/browser/profiles/off_the_record_profile_io_data.cc +++ b/chrome/browser/profiles/off_the_record_profile_io_data.cc @@ -256,14 +256,15 @@ void OffTheRecordProfileIOData::LazyInitializeInternal( extensions_job_factory_.reset(new net::URLRequestJobFactory); int set_protocol = main_job_factory_->SetProtocolHandler( - chrome::kFileScheme, new net::FileProtocolHandler(network_delegate())); + chrome::kFileScheme, new net::FileProtocolHandler()); DCHECK(set_protocol); - // TODO(shalev): Without a network_delegate this protocol handler will never + // TODO(shalev): The extension_job_factory_ has a NULL NetworkDelegate. + // Without a network_delegate, this protocol handler will never // handle file: requests, but as a side effect it makes // job_factory::IsHandledProtocol return true, which prevents attempts to // handle the protocol externally. set_protocol = extensions_job_factory_->SetProtocolHandler( - chrome::kFileScheme, new net::FileProtocolHandler(NULL)); + chrome::kFileScheme, new net::FileProtocolHandler()); DCHECK(set_protocol); set_protocol = main_job_factory_->SetProtocolHandler( @@ -359,8 +360,7 @@ void OffTheRecordProfileIOData::CreateFtpProtocolHandler( net::FtpAuthCache* ftp_auth_cache) const { job_factory->SetProtocolHandler( chrome::kFtpScheme, - new net::FtpProtocolHandler( - network_delegate(), ftp_factory_.get(), ftp_auth_cache)); + new net::FtpProtocolHandler(ftp_factory_.get(), ftp_auth_cache)); } chrome_browser_net::LoadTimeStats* OffTheRecordProfileIOData::GetLoadTimeStats( diff --git a/chrome/browser/profiles/profile_impl_io_data.cc b/chrome/browser/profiles/profile_impl_io_data.cc index 60a349f..d2afc28 100644 --- a/chrome/browser/profiles/profile_impl_io_data.cc +++ b/chrome/browser/profiles/profile_impl_io_data.cc @@ -456,17 +456,18 @@ void ProfileImplIOData::LazyInitializeInternal( extensions_job_factory_.reset(new net::URLRequestJobFactory); int set_protocol = main_job_factory_->SetProtocolHandler( - chrome::kFileScheme, new net::FileProtocolHandler(network_delegate())); + chrome::kFileScheme, new net::FileProtocolHandler()); DCHECK(set_protocol); set_protocol = media_request_job_factory_->SetProtocolHandler( - chrome::kFileScheme, new net::FileProtocolHandler(network_delegate())); + chrome::kFileScheme, new net::FileProtocolHandler()); DCHECK(set_protocol); - // TODO(shalev): Without a network_delegate this protocol handler will never + // TODO(shalev): The extensions_job_factory has a NULL NetworkDelegate. + // Without a network_delegate, this protocol handler will never // handle file: requests, but as a side effect it makes // job_factory::IsHandledProtocol return true, which prevents attempts to // handle the protocol externally. set_protocol = extensions_job_factory_->SetProtocolHandler( - chrome::kFileScheme, new net::FileProtocolHandler(NULL)); + chrome::kFileScheme, new net::FileProtocolHandler()); DCHECK(set_protocol); set_protocol = main_job_factory_->SetProtocolHandler( @@ -662,8 +663,7 @@ void ProfileImplIOData::CreateFtpProtocolHandler( net::FtpAuthCache* ftp_auth_cache) const { job_factory->SetProtocolHandler( chrome::kFtpScheme, - new net::FtpProtocolHandler(network_delegate(), - ftp_factory_.get(), + new net::FtpProtocolHandler(ftp_factory_.get(), ftp_auth_cache)); } diff --git a/chrome/browser/ui/webui/chrome_url_data_manager_backend.cc b/chrome/browser/ui/webui/chrome_url_data_manager_backend.cc index b11da17..aa1a7e0 100644 --- a/chrome/browser/ui/webui/chrome_url_data_manager_backend.cc +++ b/chrome/browser/ui/webui/chrome_url_data_manager_backend.cc @@ -162,6 +162,7 @@ class URLRequestChromeJob : public net::URLRequestJob, public base::SupportsWeakPtr<URLRequestChromeJob> { public: URLRequestChromeJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, ChromeURLDataManagerBackend* backend); // net::URLRequestJob implementation. @@ -223,8 +224,9 @@ class URLRequestChromeJob : public net::URLRequestJob, }; URLRequestChromeJob::URLRequestChromeJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, ChromeURLDataManagerBackend* backend) - : net::URLRequestJob(request, request->context()->network_delegate()), + : net::URLRequestJob(request, network_delegate), data_offset_(0), pending_buf_size_(0), allow_caching_(true), @@ -361,7 +363,8 @@ class ChromeProtocolHandler ~ChromeProtocolHandler(); virtual net::URLRequestJob* MaybeCreateJob( - net::URLRequest* request) const OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; private: // These members are owned by ProfileIOData, which owns this ProtocolHandler. @@ -377,11 +380,11 @@ ChromeProtocolHandler::ChromeProtocolHandler( ChromeProtocolHandler::~ChromeProtocolHandler() {} net::URLRequestJob* ChromeProtocolHandler::MaybeCreateJob( - net::URLRequest* request) const { + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { DCHECK(request); // Fall back to using a custom handler - return new URLRequestChromeJob(request, backend_); + return new URLRequestChromeJob(request, network_delegate, backend_); } } // namespace @@ -573,7 +576,8 @@ class DevToolsJobFactory virtual ~DevToolsJobFactory(); virtual net::URLRequestJob* MaybeCreateJob( - net::URLRequest* request) const OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; private: // |backend_| and |network_delegate_| are owned by ProfileIOData, which owns @@ -594,14 +598,15 @@ DevToolsJobFactory::DevToolsJobFactory(ChromeURLDataManagerBackend* backend, DevToolsJobFactory::~DevToolsJobFactory() {} net::URLRequestJob* -DevToolsJobFactory::MaybeCreateJob(net::URLRequest* request) const { +DevToolsJobFactory::MaybeCreateJob( + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { if (ShouldLoadFromDisk()) { FilePath path; if (IsSupportedURL(request->url(), &path)) - return new net::URLRequestFileJob(request, path, network_delegate_); + return new net::URLRequestFileJob(request, network_delegate, path); } - return new URLRequestChromeJob(request, backend_); + return new URLRequestChromeJob(request, network_delegate, backend_); } } // namespace diff --git a/chrome_frame/test/net/test_automation_provider.cc b/chrome_frame/test/net/test_automation_provider.cc index 980b3e5..9012a19 100644 --- a/chrome_frame/test/net/test_automation_provider.cc +++ b/chrome_frame/test/net/test_automation_provider.cc @@ -69,8 +69,10 @@ bool TestAutomationProvider::Send(IPC::Message* msg) { return AutomationProvider::Send(msg); } -net::URLRequestJob* TestAutomationProvider::Factory(net::URLRequest* request, - const std::string& scheme) { +net::URLRequestJob* TestAutomationProvider::Factory( + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const std::string& scheme) { if (CFTestsDisabled()) return NULL; @@ -89,7 +91,8 @@ net::URLRequestJob* TestAutomationProvider::Factory(net::URLRequest* request, // and without userdata, we're OK. However, just to make debugging // a little easier, we have a significantly higher start value. static int new_id = 0x00100000; - URLRequestAutomationJob* job = new URLRequestAutomationJob(request, + URLRequestAutomationJob* job = new URLRequestAutomationJob( + request, network_delegate, g_provider_instance_->tab_handle_, new_id++, g_provider_instance_->automation_resource_message_filter_, false); return job; diff --git a/chrome_frame/test/net/test_automation_provider.h b/chrome_frame/test/net/test_automation_provider.h index 76c74b8..2c84d76 100644 --- a/chrome_frame/test/net/test_automation_provider.h +++ b/chrome_frame/test/net/test_automation_provider.h @@ -8,6 +8,7 @@ #include "chrome/browser/automation/automation_provider.h" namespace net { +class NetworkDelegate; class URLRequest; class URLRequestJob; } // namespace net @@ -42,6 +43,7 @@ class TestAutomationProvider // Protocol factory for handling http/https requests over automation. static net::URLRequestJob* Factory(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme); // Call to instantiate and initialize a new instance of diff --git a/content/browser/histogram_internals_request_job.cc b/content/browser/histogram_internals_request_job.cc index 8989210..ad59f2a 100644 --- a/content/browser/histogram_internals_request_job.cc +++ b/content/browser/histogram_internals_request_job.cc @@ -15,7 +15,8 @@ namespace content { HistogramInternalsRequestJob::HistogramInternalsRequestJob( - net::URLRequest* request) : net::URLRequestSimpleJob(request) { + net::URLRequest* request, net::NetworkDelegate* network_delegate) + : net::URLRequestSimpleJob(request, network_delegate) { const std::string& spec = request->url().possibly_invalid_spec(); const url_parse::Parsed& parsed = request->url().parsed_for_possibly_invalid_spec(); diff --git a/content/browser/histogram_internals_request_job.h b/content/browser/histogram_internals_request_job.h index b5d11ce..4be774b 100644 --- a/content/browser/histogram_internals_request_job.h +++ b/content/browser/histogram_internals_request_job.h @@ -14,7 +14,8 @@ namespace content { class HistogramInternalsRequestJob : public net::URLRequestSimpleJob { public: - explicit HistogramInternalsRequestJob(net::URLRequest* request); + HistogramInternalsRequestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate); virtual int GetData(std::string* mime_type, std::string* charset, diff --git a/content/browser/net/view_blob_internals_job_factory.cc b/content/browser/net/view_blob_internals_job_factory.cc index 32dbd99..ab98a97 100644 --- a/content/browser/net/view_blob_internals_job_factory.cc +++ b/content/browser/net/view_blob_internals_job_factory.cc @@ -7,7 +7,6 @@ #include "base/memory/scoped_ptr.h" #include "base/string_util.h" #include "content/public/common/url_constants.h" -#include "net/url_request/url_request.h" #include "webkit/blob/view_blob_internals_job.h" // static. @@ -19,7 +18,8 @@ bool ViewBlobInternalsJobFactory::IsSupportedURL(const GURL& url) { // static. net::URLRequestJob* ViewBlobInternalsJobFactory::CreateJobForRequest( net::URLRequest* request, + net::NetworkDelegate* network_delegate, webkit_blob::BlobStorageController* blob_storage_controller) { return new webkit_blob::ViewBlobInternalsJob( - request, blob_storage_controller); + request, network_delegate, blob_storage_controller); } diff --git a/content/browser/net/view_blob_internals_job_factory.h b/content/browser/net/view_blob_internals_job_factory.h index 71ba830..e4c36eb 100644 --- a/content/browser/net/view_blob_internals_job_factory.h +++ b/content/browser/net/view_blob_internals_job_factory.h @@ -6,6 +6,7 @@ #define CONTENT_BROWSER_NET_VIEW_BLOB_INTERNALS_JOB_FACTORY_H_ namespace net { +class NetworkDelegate; class URLRequest; class URLRequestJob; } // namespace net @@ -20,6 +21,7 @@ class ViewBlobInternalsJobFactory { static bool IsSupportedURL(const GURL& url); static net::URLRequestJob* CreateJobForRequest( net::URLRequest* request, + net::NetworkDelegate* network_delegate, webkit_blob::BlobStorageController* blob_storage_controller); }; diff --git a/content/browser/net/view_http_cache_job_factory.cc b/content/browser/net/view_http_cache_job_factory.cc index dddb9ba..716f4a3 100644 --- a/content/browser/net/view_http_cache_job_factory.cc +++ b/content/browser/net/view_http_cache_job_factory.cc @@ -15,7 +15,6 @@ #include "net/base/completion_callback.h" #include "net/base/net_errors.h" #include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_simple_job.h" #include "net/url_request/view_cache_helper.h" @@ -24,8 +23,9 @@ namespace { // A job subclass that dumps an HTTP cache entry. class ViewHttpCacheJob : public net::URLRequestJob { public: - explicit ViewHttpCacheJob(net::URLRequest* request) - : net::URLRequestJob(request, request->context()->network_delegate()), + ViewHttpCacheJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate) + : net::URLRequestJob(request, network_delegate), core_(new Core), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), ALLOW_THIS_IN_INITIALIZER_LIST( @@ -197,6 +197,6 @@ bool ViewHttpCacheJobFactory::IsSupportedURL(const GURL& url) { // Static. net::URLRequestJob* ViewHttpCacheJobFactory::CreateJobForRequest( - net::URLRequest* request) { - return new ViewHttpCacheJob(request); + net::URLRequest* request, net::NetworkDelegate* network_delegate) { + return new ViewHttpCacheJob(request, network_delegate); } diff --git a/content/browser/net/view_http_cache_job_factory.h b/content/browser/net/view_http_cache_job_factory.h index abd5777..88c84da 100644 --- a/content/browser/net/view_http_cache_job_factory.h +++ b/content/browser/net/view_http_cache_job_factory.h @@ -6,6 +6,7 @@ #define CONTENT_BROWSER_NET_VIEW_HTTP_CACHE_JOB_FACTORY_H_ namespace net { +class NetworkDelegate; class URLRequest; class URLRequestJob; } // namespace net @@ -15,7 +16,8 @@ class GURL; class ViewHttpCacheJobFactory { public: static bool IsSupportedURL(const GURL& url); - static net::URLRequestJob* CreateJobForRequest(net::URLRequest* request); + static net::URLRequestJob* CreateJobForRequest( + net::URLRequest* request, net::NetworkDelegate* network_delegate); }; #endif // CONTENT_BROWSER_NET_VIEW_HTTP_CACHE_JOB_FACTORY_H_ diff --git a/content/browser/renderer_host/resource_dispatcher_host_unittest.cc b/content/browser/renderer_host/resource_dispatcher_host_unittest.cc index d22181d..6d96949 100644 --- a/content/browser/renderer_host/resource_dispatcher_host_unittest.cc +++ b/content/browser/renderer_host/resource_dispatcher_host_unittest.cc @@ -209,20 +209,27 @@ class ForwardingFilter : public ResourceMessageFilter { // not complete start upon entry, only when specifically told to. class URLRequestTestDelayedStartJob : public net::URLRequestTestJob { public: - URLRequestTestDelayedStartJob(net::URLRequest* request) - : net::URLRequestTestJob(request) { + URLRequestTestDelayedStartJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate) + : net::URLRequestTestJob(request, network_delegate) { Init(); } - URLRequestTestDelayedStartJob(net::URLRequest* request, bool auto_advance) - : net::URLRequestTestJob(request, auto_advance) { + URLRequestTestDelayedStartJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, + bool auto_advance) + : net::URLRequestTestJob(request, network_delegate, auto_advance) { Init(); } URLRequestTestDelayedStartJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& response_headers, const std::string& response_data, bool auto_advance) - : net::URLRequestTestJob( - request, response_headers, response_data, auto_advance) { + : net::URLRequestTestJob(request, + network_delegate, + response_headers, + response_data, + auto_advance) { Init(); } @@ -286,17 +293,23 @@ URLRequestTestDelayedStartJob::list_head_ = NULL; // returns IO_pending errors before every read, not just the first one. class URLRequestTestDelayedCompletionJob : public net::URLRequestTestJob { public: - explicit URLRequestTestDelayedCompletionJob(net::URLRequest* request) - : net::URLRequestTestJob(request) {} URLRequestTestDelayedCompletionJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate) + : net::URLRequestTestJob(request, network_delegate) {} + URLRequestTestDelayedCompletionJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, bool auto_advance) - : net::URLRequestTestJob(request, auto_advance) {} + : net::URLRequestTestJob(request, network_delegate, auto_advance) {} URLRequestTestDelayedCompletionJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& response_headers, const std::string& response_data, bool auto_advance) - : net::URLRequestTestJob(request, response_headers, - response_data, auto_advance) {} + : net::URLRequestTestJob(request, + network_delegate, + response_headers, + response_data, + auto_advance) {} protected: ~URLRequestTestDelayedCompletionJob() {} @@ -307,8 +320,9 @@ class URLRequestTestDelayedCompletionJob : public net::URLRequestTestJob { class URLRequestBigJob : public net::URLRequestSimpleJob { public: - URLRequestBigJob(net::URLRequest* request) - : net::URLRequestSimpleJob(request) { + URLRequestBigJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate) + : net::URLRequestSimpleJob(request, network_delegate) { } virtual int GetData(std::string* mime_type, @@ -564,31 +578,35 @@ class ResourceDispatcherHostTest : public testing::Test, // Our own net::URLRequestJob factory. static net::URLRequestJob* Factory(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme) { if (test_fixture_->response_headers_.empty()) { if (delay_start_) { - return new URLRequestTestDelayedStartJob(request); + return new URLRequestTestDelayedStartJob(request, network_delegate); } else if (delay_complete_) { - return new URLRequestTestDelayedCompletionJob(request); + return new URLRequestTestDelayedCompletionJob(request, + network_delegate); } else if (scheme == "big-job") { - return new URLRequestBigJob(request); + return new URLRequestBigJob(request, network_delegate); } else { - return new net::URLRequestTestJob(request); + return new net::URLRequestTestJob(request, network_delegate); } } else { if (delay_start_) { return new URLRequestTestDelayedStartJob( - request, test_fixture_->response_headers_, - test_fixture_->response_data_, false); + request, network_delegate, + test_fixture_->response_headers_, test_fixture_->response_data_, + false); } else if (delay_complete_) { return new URLRequestTestDelayedCompletionJob( - request, test_fixture_->response_headers_, - test_fixture_->response_data_, false); + request, network_delegate, + test_fixture_->response_headers_, test_fixture_->response_data_, + false); } else { - return new net::URLRequestTestJob(request, - test_fixture_->response_headers_, - test_fixture_->response_data_, - false); + return new net::URLRequestTestJob( + request, network_delegate, + test_fixture_->response_headers_, test_fixture_->response_data_, + false); } } } diff --git a/content/browser/resource_context_impl.cc b/content/browser/resource_context_impl.cc index 8281aea..7e3555d 100644 --- a/content/browser/resource_context_impl.cc +++ b/content/browser/resource_context_impl.cc @@ -94,36 +94,38 @@ class DeveloperProtocolHandler virtual ~DeveloperProtocolHandler() {} virtual net::URLRequestJob* MaybeIntercept( - net::URLRequest* request) const OVERRIDE { + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE { // Check for chrome://view-http-cache/*, which uses its own job type. if (ViewHttpCacheJobFactory::IsSupportedURL(request->url())) - return ViewHttpCacheJobFactory::CreateJobForRequest(request); + return ViewHttpCacheJobFactory::CreateJobForRequest(request, + network_delegate); // Next check for chrome://appcache-internals/, which uses its own job type. if (request->url().SchemeIs(chrome::kChromeUIScheme) && request->url().host() == chrome::kChromeUIAppCacheInternalsHost) { return appcache::ViewAppCacheInternalsJobFactory::CreateJobForRequest( - request, appcache_service_); + request, network_delegate, appcache_service_); } // Next check for chrome://blob-internals/, which uses its own job type. if (ViewBlobInternalsJobFactory::IsSupportedURL(request->url())) { return ViewBlobInternalsJobFactory::CreateJobForRequest( - request, blob_storage_controller_); + request, network_delegate, blob_storage_controller_); } #if defined(USE_TCMALLOC) // Next check for chrome://tcmalloc/, which uses its own job type. if (request->url().SchemeIs(chrome::kChromeUIScheme) && request->url().host() == chrome::kChromeUITcmallocHost) { - return new TcmallocInternalsRequestJob(request); + return new TcmallocInternalsRequestJob(request, network_delegate); } #endif // Next check for chrome://histograms/, which uses its own job type. if (request->url().SchemeIs(chrome::kChromeUIScheme) && request->url().host() == chrome::kChromeUIHistogramHost) { - return new HistogramInternalsRequestJob(request); + return new HistogramInternalsRequestJob(request, network_delegate); } return NULL; @@ -131,12 +133,14 @@ class DeveloperProtocolHandler virtual net::URLRequestJob* MaybeInterceptRedirect( const GURL& location, - net::URLRequest* request) const OVERRIDE { + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE { return NULL; } virtual net::URLRequestJob* MaybeInterceptResponse( - net::URLRequest* request) const OVERRIDE { + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE { return NULL; } diff --git a/content/browser/tcmalloc_internals_request_job.cc b/content/browser/tcmalloc_internals_request_job.cc index 5b0c45b..2c4ef0d 100644 --- a/content/browser/tcmalloc_internals_request_job.cc +++ b/content/browser/tcmalloc_internals_request_job.cc @@ -57,7 +57,8 @@ void AboutTcmallocOutputs::DumpToHTMLTable(std::string* data) { } TcmallocInternalsRequestJob::TcmallocInternalsRequestJob( - net::URLRequest* request) : net::URLRequestSimpleJob(request) { + net::URLRequest* request, net::NetworkDelegate* network_delegate) + : net::URLRequestSimpleJob(request, network_delegate) { } #if defined(USE_TCMALLOC) diff --git a/content/browser/tcmalloc_internals_request_job.h b/content/browser/tcmalloc_internals_request_job.h index e70c274..d74b656 100644 --- a/content/browser/tcmalloc_internals_request_job.h +++ b/content/browser/tcmalloc_internals_request_job.h @@ -48,7 +48,8 @@ class AboutTcmallocOutputs { class TcmallocInternalsRequestJob : public net::URLRequestSimpleJob { public: - explicit TcmallocInternalsRequestJob(net::URLRequest* request); + TcmallocInternalsRequestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate); virtual int GetData(std::string* mime_type, std::string* charset, diff --git a/content/test/net/url_request_abort_on_end_job.cc b/content/test/net/url_request_abort_on_end_job.cc index 8216220..17312ad 100644 --- a/content/test/net/url_request_abort_on_end_job.cc +++ b/content/test/net/url_request_abort_on_end_job.cc @@ -14,7 +14,6 @@ #include "net/base/net_errors.h" #include "net/http/http_response_headers.h" #include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_filter.h" #include "net/url_request/url_request_status.h" @@ -35,9 +34,10 @@ void URLRequestAbortOnEndJob::AddUrlHandler() { // static net::URLRequestJob* URLRequestAbortOnEndJob::Factory( net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme) { DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); - return new URLRequestAbortOnEndJob(request); + return new URLRequestAbortOnEndJob(request, network_delegate); } // Private const version. @@ -58,8 +58,9 @@ void URLRequestAbortOnEndJob::GetResponseInfoConst( info->headers = new net::HttpResponseHeaders(raw_headers); } -URLRequestAbortOnEndJob::URLRequestAbortOnEndJob(net::URLRequest* request) - : URLRequestJob(request, request->context()->network_delegate()), +URLRequestAbortOnEndJob::URLRequestAbortOnEndJob( + net::URLRequest* request, net::NetworkDelegate* network_delegate) + : URLRequestJob(request, network_delegate), sent_data_(false), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { } diff --git a/content/test/net/url_request_abort_on_end_job.h b/content/test/net/url_request_abort_on_end_job.h index 56e80b2..e1045a28 100644 --- a/content/test/net/url_request_abort_on_end_job.h +++ b/content/test/net/url_request_abort_on_end_job.h @@ -29,12 +29,14 @@ class URLRequestAbortOnEndJob : public net::URLRequestJob { int* bytes_read) OVERRIDE; static net::URLRequestJob* Factory(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme); static void AddUrlHandler(); private: - explicit URLRequestAbortOnEndJob(net::URLRequest* request); + URLRequestAbortOnEndJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate); virtual ~URLRequestAbortOnEndJob(); void GetResponseInfoConst(net::HttpResponseInfo* info) const; diff --git a/content/test/net/url_request_failed_job.cc b/content/test/net/url_request_failed_job.cc index a9efd18..0283386 100644 --- a/content/test/net/url_request_failed_job.cc +++ b/content/test/net/url_request_failed_job.cc @@ -10,7 +10,6 @@ #include "base/string_number_conversions.h" #include "net/base/net_errors.h" #include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_filter.h" namespace { @@ -42,8 +41,9 @@ GURL GetMockUrl(const std::string& scheme, int net_error) { } // namespace URLRequestFailedJob::URLRequestFailedJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, int net_error) - : net::URLRequestJob(request, request->context()->network_delegate()), + : net::URLRequestJob(request, network_delegate), net_error_(net_error), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {} @@ -77,9 +77,12 @@ GURL URLRequestFailedJob::GetMockHttpsUrl(int net_error) { } // static -net::URLRequestJob* URLRequestFailedJob::Factory(net::URLRequest* request, +net::URLRequestJob* URLRequestFailedJob::Factory( + net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme) { - return new URLRequestFailedJob(request, GetErrorCode(request)); + return new URLRequestFailedJob( + request, network_delegate, GetErrorCode(request)); } void URLRequestFailedJob::StartAsync() { diff --git a/content/test/net/url_request_failed_job.h b/content/test/net/url_request_failed_job.h index 9c8a387..39ab9d0f 100644 --- a/content/test/net/url_request_failed_job.h +++ b/content/test/net/url_request_failed_job.h @@ -16,7 +16,9 @@ // trying to connect. class URLRequestFailedJob : public net::URLRequestJob { public: - URLRequestFailedJob(net::URLRequest* request, int net_error); + URLRequestFailedJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, + int net_error); virtual void Start() OVERRIDE; @@ -31,6 +33,7 @@ class URLRequestFailedJob : public net::URLRequestJob { private: static net::URLRequestJob* Factory(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme); virtual ~URLRequestFailedJob(); diff --git a/content/test/net/url_request_mock_http_job.cc b/content/test/net/url_request_mock_http_job.cc index 69f57622d..5a4d28d 100644 --- a/content/test/net/url_request_mock_http_job.cc +++ b/content/test/net/url_request_mock_http_job.cc @@ -12,7 +12,6 @@ #include "content/public/common/url_constants.h" #include "net/base/net_util.h" #include "net/http/http_response_headers.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_filter.h" const char kMockHostname[] = "mock.http"; @@ -31,9 +30,12 @@ FilePath& BasePath() { } // namespace // static -net::URLRequestJob* URLRequestMockHTTPJob::Factory(net::URLRequest* request, - const std::string& scheme) { +net::URLRequestJob* URLRequestMockHTTPJob::Factory( + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const std::string& scheme) { return new URLRequestMockHTTPJob(request, + network_delegate, GetOnDiskPath(BasePath(), request, scheme)); } @@ -81,11 +83,11 @@ FilePath URLRequestMockHTTPJob::GetOnDiskPath(const FilePath& base_path, return file_path; } -URLRequestMockHTTPJob::URLRequestMockHTTPJob(net::URLRequest* request, - const FilePath& file_path) - : net::URLRequestFileJob(request, - file_path, - request->context()->network_delegate()) { } +URLRequestMockHTTPJob::URLRequestMockHTTPJob( + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const FilePath& file_path) + : net::URLRequestFileJob(request, network_delegate, file_path) { } // Public virtual version. void URLRequestMockHTTPJob::GetResponseInfo(net::HttpResponseInfo* info) { diff --git a/content/test/net/url_request_mock_http_job.h b/content/test/net/url_request_mock_http_job.h index d5bbee1..2c8434c 100644 --- a/content/test/net/url_request_mock_http_job.h +++ b/content/test/net/url_request_mock_http_job.h @@ -15,7 +15,9 @@ class FilePath; class URLRequestMockHTTPJob : public net::URLRequestFileJob { public: - URLRequestMockHTTPJob(net::URLRequest* request, const FilePath& file_path); + URLRequestMockHTTPJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const FilePath& file_path); virtual bool GetMimeType(std::string* mime_type) const OVERRIDE; virtual int GetResponseCode() const OVERRIDE; diff --git a/content/test/net/url_request_slow_download_job.cc b/content/test/net/url_request_slow_download_job.cc index 5fc435d..4d69145 100644 --- a/content/test/net/url_request_slow_download_job.cc +++ b/content/test/net/url_request_slow_download_job.cc @@ -15,7 +15,6 @@ #include "net/base/io_buffer.h" #include "net/http/http_response_headers.h" #include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_filter.h" using content::BrowserThread; @@ -55,9 +54,11 @@ void URLRequestSlowDownloadJob::AddUrlHandler() { // static net::URLRequestJob* URLRequestSlowDownloadJob::Factory( net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - URLRequestSlowDownloadJob* job = new URLRequestSlowDownloadJob(request); + URLRequestSlowDownloadJob* job = new URLRequestSlowDownloadJob( + request, network_delegate); if (request->url().spec() != kFinishDownloadUrl) pending_requests_.Get().insert(job); return job; @@ -79,8 +80,9 @@ void URLRequestSlowDownloadJob::FinishPendingRequests() { } } -URLRequestSlowDownloadJob::URLRequestSlowDownloadJob(net::URLRequest* request) - : net::URLRequestJob(request, request->context()->network_delegate()), +URLRequestSlowDownloadJob::URLRequestSlowDownloadJob( + net::URLRequest* request, net::NetworkDelegate* network_delegate) + : net::URLRequestJob(request, network_delegate), bytes_already_sent_(0), should_finish_download_(false), buffer_size_(0), diff --git a/content/test/net/url_request_slow_download_job.h b/content/test/net/url_request_slow_download_job.h index fe5489e..bc7c1ea 100644 --- a/content/test/net/url_request_slow_download_job.h +++ b/content/test/net/url_request_slow_download_job.h @@ -40,6 +40,7 @@ class URLRequestSlowDownloadJob : public net::URLRequestJob { int *bytes_read) OVERRIDE; static net::URLRequestJob* Factory(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme); // Returns the current number of URLRequestSlowDownloadJobs that have @@ -50,7 +51,8 @@ class URLRequestSlowDownloadJob : public net::URLRequestJob { static void AddUrlHandler(); private: - explicit URLRequestSlowDownloadJob(net::URLRequest* request); + URLRequestSlowDownloadJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate); virtual ~URLRequestSlowDownloadJob(); // Enum indicating where we are in the read after a call to diff --git a/content/test/net/url_request_slow_http_job.cc b/content/test/net/url_request_slow_http_job.cc index 7aa6001..b5d30aa 100644 --- a/content/test/net/url_request_slow_http_job.cc +++ b/content/test/net/url_request_slow_http_job.cc @@ -27,9 +27,11 @@ const int URLRequestSlowHTTPJob::kDelayMs = 1000; using base::TimeDelta; // static -net::URLRequestJob* URLRequestSlowHTTPJob::Factory(net::URLRequest* request, - const std::string& scheme) { - return new URLRequestSlowHTTPJob(request, +net::URLRequestJob* URLRequestSlowHTTPJob::Factory( + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const std::string& scheme) { + return new URLRequestSlowHTTPJob(request, network_delegate, GetOnDiskPath(BasePath(), request, scheme)); } @@ -54,9 +56,11 @@ GURL URLRequestSlowHTTPJob::GetMockUrl(const FilePath& path) { return GURL(url); } -URLRequestSlowHTTPJob::URLRequestSlowHTTPJob(net::URLRequest* request, - const FilePath& file_path) - : URLRequestMockHTTPJob(request, file_path) { } +URLRequestSlowHTTPJob::URLRequestSlowHTTPJob( + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const FilePath& file_path) + : URLRequestMockHTTPJob(request, network_delegate, file_path) { } void URLRequestSlowHTTPJob::Start() { delay_timer_.Start(FROM_HERE, TimeDelta::FromMilliseconds(kDelayMs), this, diff --git a/content/test/net/url_request_slow_http_job.h b/content/test/net/url_request_slow_http_job.h index 27265a7..cbb2d7e 100644 --- a/content/test/net/url_request_slow_http_job.h +++ b/content/test/net/url_request_slow_http_job.h @@ -12,7 +12,9 @@ class URLRequestSlowHTTPJob : public URLRequestMockHTTPJob { public: - URLRequestSlowHTTPJob(net::URLRequest* request, const FilePath& file_path); + URLRequestSlowHTTPJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const FilePath& file_path); static const int kDelayMs; diff --git a/net/proxy/proxy_script_fetcher_impl_unittest.cc b/net/proxy/proxy_script_fetcher_impl_unittest.cc index bd6404b..7ece88c 100644 --- a/net/proxy/proxy_script_fetcher_impl_unittest.cc +++ b/net/proxy/proxy_script_fetcher_impl_unittest.cc @@ -49,19 +49,21 @@ struct FetchResult { class CheckNoRevocationFlagSetInterceptor : public URLRequestJobFactory::Interceptor { public: - virtual URLRequestJob* MaybeIntercept(URLRequest* request) const OVERRIDE { + virtual URLRequestJob* MaybeIntercept( + URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE { EXPECT_TRUE(request->load_flags() & LOAD_DISABLE_CERT_REVOCATION_CHECKING); return NULL; } - virtual URLRequestJob* MaybeInterceptRedirect(const GURL& location, - URLRequest* request) - const OVERRIDE { + virtual URLRequestJob* MaybeInterceptRedirect( + const GURL& location, + URLRequest* request, + NetworkDelegate* network_delegate) const OVERRIDE { return NULL; } - virtual URLRequestJob* MaybeInterceptResponse(URLRequest* request) - const OVERRIDE{ + virtual URLRequestJob* MaybeInterceptResponse( + URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE { return NULL; } }; diff --git a/net/url_request/data_protocol_handler.cc b/net/url_request/data_protocol_handler.cc index 3ad5e21..3222f72 100644 --- a/net/url_request/data_protocol_handler.cc +++ b/net/url_request/data_protocol_handler.cc @@ -12,8 +12,8 @@ DataProtocolHandler::DataProtocolHandler() { } URLRequestJob* DataProtocolHandler::MaybeCreateJob( - URLRequest* request) const { - return new URLRequestDataJob(request); + URLRequest* request, NetworkDelegate* network_delegate) const { + return new URLRequestDataJob(request, network_delegate); } } // namespace net diff --git a/net/url_request/data_protocol_handler.h b/net/url_request/data_protocol_handler.h index d87212e..abb5abe 100644 --- a/net/url_request/data_protocol_handler.h +++ b/net/url_request/data_protocol_handler.h @@ -18,7 +18,8 @@ class NET_EXPORT DataProtocolHandler : public URLRequestJobFactory::ProtocolHandler { public: DataProtocolHandler(); - virtual URLRequestJob* MaybeCreateJob(URLRequest* request) const OVERRIDE; + virtual URLRequestJob* MaybeCreateJob( + URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE; private: DISALLOW_COPY_AND_ASSIGN(DataProtocolHandler); diff --git a/net/url_request/file_protocol_handler.cc b/net/url_request/file_protocol_handler.cc index ec77772..0f9f73c 100644 --- a/net/url_request/file_protocol_handler.cc +++ b/net/url_request/file_protocol_handler.cc @@ -7,25 +7,24 @@ #include "base/logging.h" #include "net/base/net_errors.h" #include "net/base/net_util.h" +#include "net/url_request/url_request.h" #include "net/url_request/url_request_error_job.h" #include "net/url_request/url_request_file_dir_job.h" #include "net/url_request/url_request_file_job.h" namespace net { -FileProtocolHandler::FileProtocolHandler( - NetworkDelegate* network_delegate) - : network_delegate_(network_delegate) { -} +FileProtocolHandler::FileProtocolHandler() { } -URLRequestJob* FileProtocolHandler::MaybeCreateJob(URLRequest* request) const { +URLRequestJob* FileProtocolHandler::MaybeCreateJob( + URLRequest* request, NetworkDelegate* network_delegate) const { FilePath file_path; const bool is_file = FileURLToFilePath(request->url(), &file_path); // Check file access permissions. - if (!network_delegate_ || - !network_delegate_->CanAccessFile(*request, file_path)) { - return new URLRequestErrorJob(request, ERR_ACCESS_DENIED); + if (!network_delegate || + !network_delegate->CanAccessFile(*request, file_path)) { + return new URLRequestErrorJob(request, network_delegate, ERR_ACCESS_DENIED); } // We need to decide whether to create URLRequestFileJob for file access or @@ -37,12 +36,12 @@ URLRequestJob* FileProtocolHandler::MaybeCreateJob(URLRequest* request) const { if (is_file && file_util::EndsWithSeparator(file_path) && file_path.IsAbsolute()) { - return new URLRequestFileDirJob(request, file_path); + return new URLRequestFileDirJob(request, network_delegate, file_path); } // Use a regular file request job for all non-directories (including invalid // file names). - return new URLRequestFileJob(request, file_path, network_delegate_); + return new URLRequestFileJob(request, network_delegate, file_path); } } // namespace net diff --git a/net/url_request/file_protocol_handler.h b/net/url_request/file_protocol_handler.h index 6c93ab2..619227b 100644 --- a/net/url_request/file_protocol_handler.h +++ b/net/url_request/file_protocol_handler.h @@ -19,12 +19,11 @@ class URLRequestJob; class NET_EXPORT FileProtocolHandler : public URLRequestJobFactory::ProtocolHandler { public: - explicit FileProtocolHandler(NetworkDelegate* network_delegate); - virtual URLRequestJob* MaybeCreateJob(URLRequest* request) const OVERRIDE; + FileProtocolHandler(); + virtual URLRequestJob* MaybeCreateJob( + URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE; private: - NetworkDelegate* network_delegate_; - DISALLOW_COPY_AND_ASSIGN(FileProtocolHandler); }; diff --git a/net/url_request/ftp_protocol_handler.cc b/net/url_request/ftp_protocol_handler.cc index b9dc0fa0..7d9ba88 100644 --- a/net/url_request/ftp_protocol_handler.cc +++ b/net/url_request/ftp_protocol_handler.cc @@ -15,26 +15,24 @@ namespace net { FtpProtocolHandler::FtpProtocolHandler( - NetworkDelegate* network_delegate, FtpTransactionFactory* ftp_transaction_factory, FtpAuthCache* ftp_auth_cache) - : network_delegate_(network_delegate), - ftp_transaction_factory_(ftp_transaction_factory), + : ftp_transaction_factory_(ftp_transaction_factory), ftp_auth_cache_(ftp_auth_cache) { DCHECK(ftp_transaction_factory_); DCHECK(ftp_auth_cache_); } URLRequestJob* FtpProtocolHandler::MaybeCreateJob( - URLRequest* request) const { + URLRequest* request, NetworkDelegate* network_delegate) const { int port = request->url().IntPort(); if (request->url().has_port() && !IsPortAllowedByFtp(port) && !IsPortAllowedByOverride(port)) { - return new URLRequestErrorJob(request, ERR_UNSAFE_PORT); + return new URLRequestErrorJob(request, network_delegate, ERR_UNSAFE_PORT); } return new URLRequestFtpJob(request, - network_delegate_, + network_delegate, ftp_transaction_factory_, ftp_auth_cache_); } diff --git a/net/url_request/ftp_protocol_handler.h b/net/url_request/ftp_protocol_handler.h index ab1596f..871f422 100644 --- a/net/url_request/ftp_protocol_handler.h +++ b/net/url_request/ftp_protocol_handler.h @@ -20,13 +20,12 @@ class URLRequestJob; class NET_EXPORT FtpProtocolHandler : public URLRequestJobFactory::ProtocolHandler { public: - FtpProtocolHandler(NetworkDelegate* network_delegate, - FtpTransactionFactory* ftp_transaction_factory, + FtpProtocolHandler(FtpTransactionFactory* ftp_transaction_factory, FtpAuthCache* ftp_auth_cache); - virtual URLRequestJob* MaybeCreateJob(URLRequest* request) const OVERRIDE; + virtual URLRequestJob* MaybeCreateJob( + URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE; private: - NetworkDelegate* network_delegate_; FtpTransactionFactory* ftp_transaction_factory_; FtpAuthCache* ftp_auth_cache_; diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc index a63171e..ec48c6a 100644 --- a/net/url_request/url_request.cc +++ b/net/url_request/url_request.cc @@ -96,12 +96,13 @@ void URLRequest::Deprecated::UnregisterRequestInterceptor( URLRequestJob* URLRequest::Interceptor::MaybeInterceptRedirect( URLRequest* request, + NetworkDelegate* network_delegate, const GURL& location) { return NULL; } URLRequestJob* URLRequest::Interceptor::MaybeInterceptResponse( - URLRequest* request) { + URLRequest* request, NetworkDelegate* network_delegate) { return NULL; } @@ -428,7 +429,8 @@ void URLRequest::Start() { return; } - StartJob(URLRequestJobManager::GetInstance()->CreateJob(this)); + StartJob(URLRequestJobManager::GetInstance()->CreateJob( + this, context_->network_delegate())); } /////////////////////////////////////////////////////////////////////////////// @@ -447,18 +449,20 @@ void URLRequest::BeforeRequestComplete(int error) { std::string source("delegate"); net_log_.AddEvent(NetLog::TYPE_CANCELLED, NetLog::StringCallback("source", &source)); - StartJob(new URLRequestErrorJob(this, error)); + StartJob(new URLRequestErrorJob(this, context_->network_delegate(), error)); } else if (!delegate_redirect_url_.is_empty()) { GURL new_url; new_url.Swap(&delegate_redirect_url_); - URLRequestRedirectJob* job = new URLRequestRedirectJob(this, new_url); + URLRequestRedirectJob* job = new URLRequestRedirectJob( + this, context_->network_delegate(), new_url); // Use status code 307 to preserve the method, so POST requests work. job->set_redirect_code( URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT); StartJob(job); } else { - StartJob(URLRequestJobManager::GetInstance()->CreateJob(this)); + StartJob(URLRequestJobManager::GetInstance()->CreateJob( + this, context_->network_delegate())); } } @@ -491,7 +495,8 @@ void URLRequest::StartJob(URLRequestJob* job) { void URLRequest::Restart() { // Should only be called if the original job didn't make any progress. DCHECK(job_ && !job_->has_response_started()); - RestartWithJob(URLRequestJobManager::GetInstance()->CreateJob(this)); + RestartWithJob(URLRequestJobManager::GetInstance()->CreateJob( + this, context_->network_delegate())); } void URLRequest::RestartWithJob(URLRequestJob *job) { @@ -586,8 +591,8 @@ void URLRequest::StopCaching() { void URLRequest::NotifyReceivedRedirect(const GURL& location, bool* defer_redirect) { URLRequestJob* job = - URLRequestJobManager::GetInstance()->MaybeInterceptRedirect(this, - location); + URLRequestJobManager::GetInstance()->MaybeInterceptRedirect( + this, context_->network_delegate(), location); if (job) { RestartWithJob(job); } else if (delegate_) { @@ -603,7 +608,8 @@ void URLRequest::NotifyResponseStarted() { net_error); URLRequestJob* job = - URLRequestJobManager::GetInstance()->MaybeInterceptResponse(this); + URLRequestJobManager::GetInstance()->MaybeInterceptResponse( + this, context_->network_delegate()); if (job) { RestartWithJob(job); } else { diff --git a/net/url_request/url_request.h b/net/url_request/url_request.h index 1ccc339..091f23f2 100644 --- a/net/url_request/url_request.h +++ b/net/url_request/url_request.h @@ -119,6 +119,7 @@ class NET_EXPORT URLRequest : NON_EXPORTED_BASE(public base::NonThreadSafe), // factories to be queried. If no factory handles the request, then the // default job will be used. typedef URLRequestJob* (ProtocolFactory)(URLRequest* request, + NetworkDelegate* network_delegate, const std::string& scheme); // HTTP request/response header IDs (via some preprocessor fun) for use with @@ -153,7 +154,8 @@ class NET_EXPORT URLRequest : NON_EXPORTED_BASE(public base::NonThreadSafe), // Called for every request made. Should return a new job to handle the // request if it should be intercepted, or NULL to allow the request to // be handled in the normal manner. - virtual URLRequestJob* MaybeIntercept(URLRequest* request) = 0; + virtual URLRequestJob* MaybeIntercept( + URLRequest* request, NetworkDelegate* network_delegate) = 0; // Called after having received a redirect response, but prior to the // the request delegate being informed of the redirect. Can return a new @@ -161,8 +163,10 @@ class NET_EXPORT URLRequest : NON_EXPORTED_BASE(public base::NonThreadSafe), // to allow the normal handling to continue. If a new job is provided, // the delegate never sees the original redirect response, instead the // response produced by the intercept job will be returned. - virtual URLRequestJob* MaybeInterceptRedirect(URLRequest* request, - const GURL& location); + virtual URLRequestJob* MaybeInterceptRedirect( + URLRequest* request, + NetworkDelegate* network_delegate, + const GURL& location); // Called after having received a final response, but prior to the // the request delegate being informed of the response. This is also @@ -172,7 +176,8 @@ class NET_EXPORT URLRequest : NON_EXPORTED_BASE(public base::NonThreadSafe), // continue. If a new job is provided, the delegate never sees the original // response, instead the response produced by the intercept job will be // returned. - virtual URLRequestJob* MaybeInterceptResponse(URLRequest* request); + virtual URLRequestJob* MaybeInterceptResponse( + URLRequest* request, NetworkDelegate* network_delegate); }; // Deprecated interfaces in net::URLRequest. They have been moved to diff --git a/net/url_request/url_request_about_job.cc b/net/url_request/url_request_about_job.cc index d96f2d4..242a735 100644 --- a/net/url_request/url_request_about_job.cc +++ b/net/url_request/url_request_about_job.cc @@ -11,20 +11,20 @@ #include "base/bind.h" #include "base/compiler_specific.h" #include "base/message_loop.h" -#include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" namespace net { -URLRequestAboutJob::URLRequestAboutJob(URLRequest* request) - : URLRequestJob(request, request->context()->network_delegate()), +URLRequestAboutJob::URLRequestAboutJob(URLRequest* request, + NetworkDelegate* network_delegate) + : URLRequestJob(request, network_delegate), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { } // static URLRequestJob* URLRequestAboutJob::Factory(URLRequest* request, + NetworkDelegate* network_delegate, const std::string& scheme) { - return new URLRequestAboutJob(request); + return new URLRequestAboutJob(request, network_delegate); } void URLRequestAboutJob::Start() { diff --git a/net/url_request/url_request_about_job.h b/net/url_request/url_request_about_job.h index 39d37cd..ea2b83f 100644 --- a/net/url_request/url_request_about_job.h +++ b/net/url_request/url_request_about_job.h @@ -15,7 +15,7 @@ namespace net { class NET_EXPORT URLRequestAboutJob : public URLRequestJob { public: - explicit URLRequestAboutJob(URLRequest* request); + URLRequestAboutJob(URLRequest* request, NetworkDelegate* network_delegate); static URLRequest::ProtocolFactory Factory; diff --git a/net/url_request/url_request_data_job.cc b/net/url_request/url_request_data_job.cc index ed58cbb..5dffe32 100644 --- a/net/url_request/url_request_data_job.cc +++ b/net/url_request/url_request_data_job.cc @@ -11,14 +11,16 @@ namespace net { -URLRequestDataJob::URLRequestDataJob(URLRequest* request) - : URLRequestSimpleJob(request) { +URLRequestDataJob::URLRequestDataJob( + URLRequest* request, NetworkDelegate* network_delegate) + : URLRequestSimpleJob(request, network_delegate) { } // static URLRequestJob* URLRequestDataJob::Factory(URLRequest* request, + NetworkDelegate* network_delegate, const std::string& scheme) { - return new URLRequestDataJob(request); + return new URLRequestDataJob(request, network_delegate); } int URLRequestDataJob::GetData(std::string* mime_type, diff --git a/net/url_request/url_request_data_job.h b/net/url_request/url_request_data_job.h index 4d1f5c1..7ab6561 100644 --- a/net/url_request/url_request_data_job.h +++ b/net/url_request/url_request_data_job.h @@ -16,7 +16,7 @@ class URLRequest; class URLRequestDataJob : public URLRequestSimpleJob { public: - explicit URLRequestDataJob(URLRequest* request); + URLRequestDataJob(URLRequest* request, NetworkDelegate* network_delegate); static URLRequest::ProtocolFactory Factory; diff --git a/net/url_request/url_request_error_job.cc b/net/url_request/url_request_error_job.cc index c3dc95e..71069f2 100644 --- a/net/url_request/url_request_error_job.cc +++ b/net/url_request/url_request_error_job.cc @@ -8,14 +8,13 @@ #include "base/compiler_specific.h" #include "base/message_loop.h" #include "net/base/net_errors.h" -#include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_status.h" namespace net { -URLRequestErrorJob::URLRequestErrorJob(URLRequest* request, int error) - : URLRequestJob(request, request->context()->network_delegate()), +URLRequestErrorJob::URLRequestErrorJob( + URLRequest* request, NetworkDelegate* network_delegate, int error) + : URLRequestJob(request, network_delegate), error_(error), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {} diff --git a/net/url_request/url_request_error_job.h b/net/url_request/url_request_error_job.h index 7ab745f..7c162f0 100644 --- a/net/url_request/url_request_error_job.h +++ b/net/url_request/url_request_error_job.h @@ -16,7 +16,9 @@ namespace net { class NET_EXPORT URLRequestErrorJob : public URLRequestJob { public: - URLRequestErrorJob(URLRequest* request, int error); + URLRequestErrorJob(URLRequest* request, + NetworkDelegate* network_delegate, + int error); virtual void Start() OVERRIDE; diff --git a/net/url_request/url_request_file_dir_job.cc b/net/url_request/url_request_file_dir_job.cc index 796cbf9..7e59234 100644 --- a/net/url_request/url_request_file_dir_job.cc +++ b/net/url_request/url_request_file_dir_job.cc @@ -15,8 +15,7 @@ #include "net/base/io_buffer.h" #include "net/base/net_errors.h" #include "net/base/net_util.h" -#include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" +#include "net/url_request/url_request_status.h" #if defined(OS_POSIX) #include <sys/stat.h> @@ -25,8 +24,9 @@ namespace net { URLRequestFileDirJob::URLRequestFileDirJob(URLRequest* request, + NetworkDelegate* network_delegate, const FilePath& dir_path) - : URLRequestJob(request, request->context()->network_delegate()), + : URLRequestJob(request, network_delegate), ALLOW_THIS_IN_INITIALIZER_LIST(lister_(dir_path, this)), dir_path_(dir_path), canceled_(false), diff --git a/net/url_request/url_request_file_dir_job.h b/net/url_request/url_request_file_dir_job.h index 7153831..bc6cccb 100644 --- a/net/url_request/url_request_file_dir_job.h +++ b/net/url_request/url_request_file_dir_job.h @@ -19,7 +19,9 @@ class URLRequestFileDirJob : public URLRequestJob, public DirectoryLister::DirectoryListerDelegate { public: - URLRequestFileDirJob(URLRequest* request, const FilePath& dir_path); + URLRequestFileDirJob(URLRequest* request, + NetworkDelegate* network_delegate, + const FilePath& dir_path); bool list_complete() const { return list_complete_; } diff --git a/net/url_request/url_request_file_job.cc b/net/url_request/url_request_file_job.cc index f07e92fc..5f33508 100644 --- a/net/url_request/url_request_file_job.cc +++ b/net/url_request/url_request_file_job.cc @@ -35,8 +35,6 @@ #include "net/base/net_errors.h" #include "net/base/net_util.h" #include "net/http/http_util.h" -#include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_error_job.h" #include "net/url_request/url_request_file_dir_job.h" @@ -84,8 +82,8 @@ class URLRequestFileJob::AsyncResolver }; URLRequestFileJob::URLRequestFileJob(URLRequest* request, - const FilePath& file_path, - NetworkDelegate* network_delegate) + NetworkDelegate* network_delegate, + const FilePath& file_path) : URLRequestJob(request, network_delegate), file_path_(file_path), stream_(NULL), @@ -95,17 +93,16 @@ URLRequestFileJob::URLRequestFileJob(URLRequest* request, // static URLRequestJob* URLRequestFileJob::Factory(URLRequest* request, + NetworkDelegate* network_delegate, const std::string& scheme) { FilePath file_path; const bool is_file = FileURLToFilePath(request->url(), &file_path); // Check file access permissions. - if (!request->context()->network_delegate() || - !request->context()->network_delegate()->CanAccessFile( - *request, file_path)) { - return new URLRequestErrorJob(request, ERR_ACCESS_DENIED); + if (!network_delegate || + !network_delegate->CanAccessFile(*request, file_path)) { + return new URLRequestErrorJob(request, network_delegate, ERR_ACCESS_DENIED); } - // We need to decide whether to create URLRequestFileJob for file access or // URLRequestFileDirJob for directory access. To avoid accessing the // filesystem, we only look at the path string here. @@ -115,12 +112,11 @@ URLRequestJob* URLRequestFileJob::Factory(URLRequest* request, if (is_file && file_util::EndsWithSeparator(file_path) && file_path.IsAbsolute()) - return new URLRequestFileDirJob(request, file_path); + return new URLRequestFileDirJob(request, network_delegate, file_path); // Use a regular file request job for all non-directories (including invalid // file names). - return new URLRequestFileJob( - request, file_path, request->context()->network_delegate()); + return new URLRequestFileJob(request, network_delegate, file_path); } void URLRequestFileJob::Start() { diff --git a/net/url_request/url_request_file_job.h b/net/url_request/url_request_file_job.h index 011a894..45dabed 100644 --- a/net/url_request/url_request_file_job.h +++ b/net/url_request/url_request_file_job.h @@ -25,8 +25,8 @@ namespace net { class NET_EXPORT URLRequestFileJob : public URLRequestJob { public: URLRequestFileJob(URLRequest* request, - const FilePath& file_path, - NetworkDelegate* network_delegate); + NetworkDelegate* network_delegate, + const FilePath& file_path); static URLRequest::ProtocolFactory Factory; diff --git a/net/url_request/url_request_filter.cc b/net/url_request/url_request_filter.cc index 913c0fd..01b6069 100644 --- a/net/url_request/url_request_filter.cc +++ b/net/url_request/url_request_filter.cc @@ -16,9 +16,10 @@ URLRequestFilter::~URLRequestFilter() {} // static URLRequestJob* URLRequestFilter::Factory(URLRequest* request, + NetworkDelegate* network_delegate, const std::string& scheme) { // Returning null here just means that the built-in handler will be used. - return GetInstance()->FindRequestHandler(request, scheme); + return GetInstance()->FindRequestHandler(request, network_delegate, scheme); } // static @@ -119,6 +120,7 @@ URLRequestFilter::URLRequestFilter() : hit_count_(0) { } URLRequestJob* URLRequestFilter::FindRequestHandler( URLRequest* request, + NetworkDelegate* network_delegate, const std::string& scheme) { URLRequestJob* job = NULL; if (request->url().is_valid()) { @@ -128,14 +130,14 @@ URLRequestJob* URLRequestFilter::FindRequestHandler( HostnameHandlerMap::iterator i = hostname_handler_map_.find(make_pair(scheme, hostname)); if (i != hostname_handler_map_.end()) - job = i->second(request, scheme); + job = i->second(request, network_delegate, scheme); if (!job) { // Not in the hostname map, check the url map. const std::string& url = request->url().spec(); UrlHandlerMap::iterator i = url_handler_map_.find(url); if (i != url_handler_map_.end()) - job = i->second(request, scheme); + job = i->second(request, network_delegate, scheme); } } if (job) { diff --git a/net/url_request/url_request_filter.h b/net/url_request/url_request_filter.h index 7e86c39..c039300 100644 --- a/net/url_request/url_request_filter.h +++ b/net/url_request/url_request_filter.h @@ -71,6 +71,7 @@ class NET_EXPORT URLRequestFilter { // Helper method that looks up the request in the url_handler_map_. URLRequestJob* FindRequestHandler(URLRequest* request, + NetworkDelegate* network_delegate, const std::string& scheme); // Maps hostnames to factories. Hostnames take priority over URLs. diff --git a/net/url_request/url_request_filter_unittest.cc b/net/url_request/url_request_filter_unittest.cc index 938747a..9f11675 100644 --- a/net/url_request/url_request_filter_unittest.cc +++ b/net/url_request/url_request_filter_unittest.cc @@ -19,15 +19,19 @@ namespace { URLRequestTestJob* job_a; -URLRequestJob* FactoryA(URLRequest* request, const std::string& scheme) { - job_a = new URLRequestTestJob(request); +URLRequestJob* FactoryA(URLRequest* request, + NetworkDelegate* network_delegate, + const std::string& scheme) { + job_a = new URLRequestTestJob(request, network_delegate); return job_a; } URLRequestTestJob* job_b; -URLRequestJob* FactoryB(URLRequest* request, const std::string& scheme) { - job_b = new URLRequestTestJob(request); +URLRequestJob* FactoryB(URLRequest* request, + NetworkDelegate* network_delegate, + const std::string& scheme) { + job_b = new URLRequestTestJob(request, network_delegate); return job_b; } @@ -51,7 +55,7 @@ TEST(URLRequestFilter, BasicMatching) { &FactoryA)); { scoped_refptr<URLRequestJob> found = URLRequestFilter::Factory( - &request_1, url_1.scheme()); + &request_1, request_context.network_delegate(), url_1.scheme()); EXPECT_EQ(job_a, found); EXPECT_TRUE(job_a != NULL); job_a = NULL; @@ -59,7 +63,8 @@ TEST(URLRequestFilter, BasicMatching) { EXPECT_EQ(URLRequestFilter::GetInstance()->hit_count(), 1); // Check we don't match other URLs. - EXPECT_TRUE(URLRequestFilter::Factory(&request_2, url_2.scheme()) == NULL); + EXPECT_TRUE(URLRequestFilter::Factory( + &request_2, request_context.network_delegate(), url_2.scheme()) == NULL); EXPECT_EQ(1, URLRequestFilter::GetInstance()->hit_count()); // Check we can overwrite URL handler. @@ -67,7 +72,7 @@ TEST(URLRequestFilter, BasicMatching) { &FactoryB)); { scoped_refptr<URLRequestJob> found = URLRequestFilter::Factory( - &request_1, url_1.scheme()); + &request_1, request_context.network_delegate(), url_1.scheme()); EXPECT_EQ(job_b, found); EXPECT_TRUE(job_b != NULL); job_b = NULL; @@ -76,7 +81,8 @@ TEST(URLRequestFilter, BasicMatching) { // Check we can remove URL matching. URLRequestFilter::GetInstance()->RemoveUrlHandler(url_1); - EXPECT_TRUE(URLRequestFilter::Factory(&request_1, url_1.scheme()) == NULL); + EXPECT_TRUE(URLRequestFilter::Factory( + &request_1, request_context.network_delegate(), url_1.scheme()) == NULL); EXPECT_EQ(URLRequestFilter::GetInstance()->hit_count(), 2); // Check hostname matching. @@ -87,7 +93,7 @@ TEST(URLRequestFilter, BasicMatching) { &FactoryB); { scoped_refptr<URLRequestJob> found = URLRequestFilter::Factory( - &request_1, url_1.scheme()); + &request_1, request_context.network_delegate(), url_1.scheme()); EXPECT_EQ(job_b, found); EXPECT_TRUE(job_b != NULL); job_b = NULL; @@ -95,7 +101,8 @@ TEST(URLRequestFilter, BasicMatching) { EXPECT_EQ(1, URLRequestFilter::GetInstance()->hit_count()); // Check we don't match other hostnames. - EXPECT_TRUE(URLRequestFilter::Factory(&request_2, url_2.scheme()) == NULL); + EXPECT_TRUE(URLRequestFilter::Factory( + &request_2, request_context.network_delegate(), url_2.scheme()) == NULL); EXPECT_EQ(URLRequestFilter::GetInstance()->hit_count(), 1); // Check we can overwrite hostname handler. @@ -104,7 +111,7 @@ TEST(URLRequestFilter, BasicMatching) { &FactoryA); { scoped_refptr<URLRequestJob> found = URLRequestFilter::Factory( - &request_1, url_1.scheme()); + &request_1, request_context.network_delegate(), url_1.scheme()); EXPECT_EQ(job_a, found); EXPECT_TRUE(job_a != NULL); job_a = NULL; @@ -114,7 +121,8 @@ TEST(URLRequestFilter, BasicMatching) { // Check we can remove hostname matching. URLRequestFilter::GetInstance()->RemoveHostnameHandler(url_1.scheme(), url_1.host()); - EXPECT_TRUE(URLRequestFilter::Factory(&request_1, url_1.scheme()) == NULL); + EXPECT_TRUE(URLRequestFilter::Factory( + &request_1, request_context.network_delegate(), url_1.scheme()) == NULL); EXPECT_EQ(2, URLRequestFilter::GetInstance()->hit_count()); } diff --git a/net/url_request/url_request_ftp_job.cc b/net/url_request/url_request_ftp_job.cc index fb34599..e910625 100644 --- a/net/url_request/url_request_ftp_job.cc +++ b/net/url_request/url_request_ftp_job.cc @@ -35,17 +35,20 @@ URLRequestFtpJob::URLRequestFtpJob( // static URLRequestJob* URLRequestFtpJob::Factory(URLRequest* request, + NetworkDelegate* network_delegate, const std::string& scheme) { DCHECK_EQ(scheme, "ftp"); int port = request->url().IntPort(); if (request->url().has_port() && !IsPortAllowedByFtp(port) && !IsPortAllowedByOverride(port)) { - return new URLRequestErrorJob(request, ERR_UNSAFE_PORT); + return new URLRequestErrorJob(request, + network_delegate, + ERR_UNSAFE_PORT); } return new URLRequestFtpJob(request, - request->context()->network_delegate(), + network_delegate, request->context()->ftp_transaction_factory(), request->context()->ftp_auth_cache()); } diff --git a/net/url_request/url_request_ftp_job.h b/net/url_request/url_request_ftp_job.h index eadf445..6deaf0a 100644 --- a/net/url_request/url_request_ftp_job.h +++ b/net/url_request/url_request_ftp_job.h @@ -31,6 +31,7 @@ class URLRequestFtpJob : public URLRequestJob { // TODO(shalev): get rid of this function in favor of FtpProtocolHandler. static URLRequestJob* Factory(URLRequest* request, + NetworkDelegate* network_delegate, const std::string& scheme); // Overridden from URLRequestJob: diff --git a/net/url_request/url_request_ftp_job_unittest.cc b/net/url_request/url_request_ftp_job_unittest.cc index d1ad36a..743daf1f 100644 --- a/net/url_request/url_request_ftp_job_unittest.cc +++ b/net/url_request/url_request_ftp_job_unittest.cc @@ -57,10 +57,10 @@ TEST(FtpProtocolHandlerTest, CreateTransactionFails) { URLRequest url_request(url, &delegate, &context); FtpProtocolHandler ftp_protocol_handler( - NULL, &ftp_transaction_factory, &ftp_auth_cache); + &ftp_transaction_factory, &ftp_auth_cache); scoped_refptr<URLRequestJob> ftp_job( - ftp_protocol_handler.MaybeCreateJob(&url_request)); + ftp_protocol_handler.MaybeCreateJob(&url_request, NULL)); ASSERT_TRUE(ftp_job.get()); EXPECT_CALL(ftp_transaction_factory, CreateTransaction()) diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc index 1d60eef..64906ef 100644 --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc @@ -208,23 +208,26 @@ void URLRequestHttpJob::HttpFilterContext::RecordPacketStats( // TODO(darin): make sure the port blocking code is not lost // static URLRequestJob* URLRequestHttpJob::Factory(URLRequest* request, + NetworkDelegate* network_delegate, const std::string& scheme) { DCHECK(scheme == "http" || scheme == "https"); if (!request->context()->http_transaction_factory()) { NOTREACHED() << "requires a valid context"; - return new URLRequestErrorJob(request, ERR_INVALID_ARGUMENT); + return new URLRequestErrorJob( + request, network_delegate, ERR_INVALID_ARGUMENT); } GURL redirect_url; if (request->GetHSTSRedirect(&redirect_url)) - return new URLRequestRedirectJob(request, redirect_url); - return new URLRequestHttpJob(request); + return new URLRequestRedirectJob(request, network_delegate, redirect_url); + return new URLRequestHttpJob(request, network_delegate); } -URLRequestHttpJob::URLRequestHttpJob(URLRequest* request) - : URLRequestJob(request, request->context()->network_delegate()), +URLRequestHttpJob::URLRequestHttpJob(URLRequest* request, + NetworkDelegate* network_delegate) + : URLRequestJob(request, network_delegate), response_info_(NULL), response_cookies_save_index_(0), proxy_auth_state_(AUTH_STATE_DONT_NEED_AUTH), diff --git a/net/url_request/url_request_http_job.h b/net/url_request/url_request_http_job.h index d028348..063d399 100644 --- a/net/url_request/url_request_http_job.h +++ b/net/url_request/url_request_http_job.h @@ -31,10 +31,11 @@ class URLRequestContext; class URLRequestHttpJob : public URLRequestJob { public: static URLRequestJob* Factory(URLRequest* request, + NetworkDelegate* network_delegate, const std::string& scheme); protected: - explicit URLRequestHttpJob(URLRequest* request); + URLRequestHttpJob(URLRequest* request, NetworkDelegate* network_delegate); // Shadows URLRequestJob's version of this method so we can grab cookies. void NotifyHeadersComplete(); diff --git a/net/url_request/url_request_job_factory.cc b/net/url_request/url_request_job_factory.cc index 44bc002..4961c03 100644 --- a/net/url_request/url_request_job_factory.cc +++ b/net/url_request/url_request_job_factory.cc @@ -56,14 +56,14 @@ void URLRequestJobFactory::AddInterceptor(Interceptor* interceptor) { } URLRequestJob* URLRequestJobFactory::MaybeCreateJobWithInterceptor( - URLRequest* request) const { + URLRequest* request, NetworkDelegate* network_delegate) const { DCHECK(CalledOnValidThread()); URLRequestJob* job = NULL; if (!(request->load_flags() & LOAD_DISABLE_INTERCEPT)) { InterceptorList::const_iterator i; for (i = interceptors_.begin(); i != interceptors_.end(); ++i) { - job = (*i)->MaybeIntercept(request); + job = (*i)->MaybeIntercept(request, network_delegate); if (job) return job; } @@ -73,24 +73,26 @@ URLRequestJob* URLRequestJobFactory::MaybeCreateJobWithInterceptor( URLRequestJob* URLRequestJobFactory::MaybeCreateJobWithProtocolHandler( const std::string& scheme, - URLRequest* request) const { + URLRequest* request, + NetworkDelegate* network_delegate) const { DCHECK(CalledOnValidThread()); ProtocolHandlerMap::const_iterator it = protocol_handler_map_.find(scheme); if (it == protocol_handler_map_.end()) return NULL; - return it->second->MaybeCreateJob(request); + return it->second->MaybeCreateJob(request, network_delegate); } URLRequestJob* URLRequestJobFactory::MaybeInterceptRedirect( const GURL& location, - URLRequest* request) const { + URLRequest* request, + NetworkDelegate* network_delegate) const { DCHECK(CalledOnValidThread()); URLRequestJob* job = NULL; if (!(request->load_flags() & LOAD_DISABLE_INTERCEPT)) { InterceptorList::const_iterator i; for (i = interceptors_.begin(); i != interceptors_.end(); ++i) { - job = (*i)->MaybeInterceptRedirect(location, request); + job = (*i)->MaybeInterceptRedirect(location, request, network_delegate); if (job) return job; } @@ -99,14 +101,14 @@ URLRequestJob* URLRequestJobFactory::MaybeInterceptRedirect( } URLRequestJob* URLRequestJobFactory::MaybeInterceptResponse( - URLRequest* request) const { + URLRequest* request, NetworkDelegate* network_delegate) const { DCHECK(CalledOnValidThread()); URLRequestJob* job = NULL; if (!(request->load_flags() & LOAD_DISABLE_INTERCEPT)) { InterceptorList::const_iterator i; for (i = interceptors_.begin(); i != interceptors_.end(); ++i) { - job = (*i)->MaybeInterceptResponse(request); + job = (*i)->MaybeInterceptResponse(request, network_delegate); if (job) return job; } diff --git a/net/url_request/url_request_job_factory.h b/net/url_request/url_request_job_factory.h index 746e948..5f4e1ae 100644 --- a/net/url_request/url_request_job_factory.h +++ b/net/url_request/url_request_job_factory.h @@ -16,6 +16,7 @@ class GURL; namespace net { +class NetworkDelegate; class URLRequest; class URLRequestJob; @@ -26,7 +27,8 @@ class NET_EXPORT URLRequestJobFactory public: virtual ~ProtocolHandler(); - virtual URLRequestJob* MaybeCreateJob(URLRequest* request) const = 0; + virtual URLRequestJob* MaybeCreateJob( + URLRequest* request, NetworkDelegate* network_delegate) const = 0; }; class NET_EXPORT Interceptor { @@ -36,7 +38,8 @@ class NET_EXPORT URLRequestJobFactory // Called for every request made. Should return a new job to handle the // request if it should be intercepted, or NULL to allow the request to // be handled in the normal manner. - virtual URLRequestJob* MaybeIntercept(URLRequest* request) const = 0; + virtual URLRequestJob* MaybeIntercept( + URLRequest* request, NetworkDelegate* network_delegate) const = 0; // Called after having received a redirect response, but prior to the // the request delegate being informed of the redirect. Can return a new @@ -46,7 +49,8 @@ class NET_EXPORT URLRequestJobFactory // response produced by the intercept job will be returned. virtual URLRequestJob* MaybeInterceptRedirect( const GURL& location, - URLRequest* request) const = 0; + URLRequest* request, + NetworkDelegate* network_delegate) const = 0; // Called after having received a final response, but prior to the // the request delegate being informed of the response. This is also @@ -57,7 +61,7 @@ class NET_EXPORT URLRequestJobFactory // response, instead the response produced by the intercept job will be // returned. virtual URLRequestJob* MaybeInterceptResponse( - URLRequest* request) const = 0; + URLRequest* request, NetworkDelegate* network_delegate) const = 0; // Returns true if this interceptor handles requests for URLs with the // given protocol. Returning false does not imply that this interceptor @@ -78,15 +82,21 @@ class NET_EXPORT URLRequestJobFactory // list. void AddInterceptor(Interceptor* interceptor); - URLRequestJob* MaybeCreateJobWithInterceptor(URLRequest* request) const; + URLRequestJob* MaybeCreateJobWithInterceptor( + URLRequest* request, NetworkDelegate* network_delegate) const; - URLRequestJob* MaybeCreateJobWithProtocolHandler(const std::string& scheme, - URLRequest* request) const; + URLRequestJob* MaybeCreateJobWithProtocolHandler( + const std::string& scheme, + URLRequest* request, + NetworkDelegate* network_delegate) const; - URLRequestJob* MaybeInterceptRedirect(const GURL& location, - URLRequest* request) const; + URLRequestJob* MaybeInterceptRedirect( + const GURL& location, + URLRequest* request, + NetworkDelegate* network_delegate) const; - URLRequestJob* MaybeInterceptResponse(URLRequest* request) const; + URLRequestJob* MaybeInterceptResponse( + URLRequest* request, NetworkDelegate* network_delegate) const; bool IsHandledProtocol(const std::string& scheme) const; diff --git a/net/url_request/url_request_job_factory_unittest.cc b/net/url_request/url_request_job_factory_unittest.cc index a87c717..673e007 100644 --- a/net/url_request/url_request_job_factory_unittest.cc +++ b/net/url_request/url_request_job_factory_unittest.cc @@ -7,7 +7,6 @@ #include "base/bind.h" #include "base/memory/weak_ptr.h" #include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_job.h" #include "net/url_request/url_request_test_util.h" #include "testing/gtest/include/gtest/gtest.h" @@ -18,8 +17,10 @@ namespace { class MockURLRequestJob : public URLRequestJob { public: - MockURLRequestJob(URLRequest* request, const URLRequestStatus& status) - : URLRequestJob(request, request->context()->network_delegate()), + MockURLRequestJob(URLRequest* request, + NetworkDelegate* network_delegate, + const URLRequestStatus& status) + : URLRequestJob(request, network_delegate), status_(status), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {} @@ -47,9 +48,12 @@ class MockURLRequestJob : public URLRequestJob { class DummyProtocolHandler : public URLRequestJobFactory::ProtocolHandler { public: - virtual URLRequestJob* MaybeCreateJob(URLRequest* request) const OVERRIDE { + virtual URLRequestJob* MaybeCreateJob( + URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE { return new MockURLRequestJob( - request, URLRequestStatus(URLRequestStatus::SUCCESS, OK)); + request, + network_delegate, + URLRequestStatus(URLRequestStatus::SUCCESS, OK)); } }; @@ -60,21 +64,25 @@ class DummyInterceptor : public URLRequestJobFactory::Interceptor { handle_all_protocols_(false) { } - virtual URLRequestJob* MaybeIntercept(URLRequest* request) const OVERRIDE { + virtual URLRequestJob* MaybeIntercept( + URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE { did_intercept_ = true; return new MockURLRequestJob( request, + network_delegate, URLRequestStatus(URLRequestStatus::FAILED, ERR_FAILED)); } virtual URLRequestJob* MaybeInterceptRedirect( - const GURL& /* location */, - URLRequest* /* request */) const OVERRIDE { + const GURL& /* location */, + URLRequest* /* request */, + NetworkDelegate* network_delegate /* network delegate */) const OVERRIDE { return NULL; } virtual URLRequestJob* MaybeInterceptResponse( - URLRequest* /* request */) const OVERRIDE { + URLRequest* /* request */, + NetworkDelegate* network_delegate /* network delegate */) const OVERRIDE { return NULL; } diff --git a/net/url_request/url_request_job_manager.cc b/net/url_request/url_request_job_manager.cc index b345628..2a68088 100644 --- a/net/url_request/url_request_job_manager.cc +++ b/net/url_request/url_request_job_manager.cc @@ -48,12 +48,12 @@ URLRequestJobManager* URLRequestJobManager::GetInstance() { } URLRequestJob* URLRequestJobManager::CreateJob( - URLRequest* request) const { + URLRequest* request, NetworkDelegate* network_delegate) const { DCHECK(IsAllowedThread()); // If we are given an invalid URL, then don't even try to inspect the scheme. if (!request->url().is_valid()) - return new URLRequestErrorJob(request, ERR_INVALID_URL); + return new URLRequestErrorJob(request, network_delegate, ERR_INVALID_URL); // We do this here to avoid asking interceptors about unsupported schemes. const URLRequestJobFactory* job_factory = NULL; @@ -62,10 +62,12 @@ URLRequestJob* URLRequestJobManager::CreateJob( const std::string& scheme = request->url().scheme(); // already lowercase if (job_factory) { if (!job_factory->IsHandledProtocol(scheme)) { - return new URLRequestErrorJob(request, ERR_UNKNOWN_URL_SCHEME); + return new URLRequestErrorJob( + request, network_delegate, ERR_UNKNOWN_URL_SCHEME); } } else if (!SupportsScheme(scheme)) { - return new URLRequestErrorJob(request, ERR_UNKNOWN_URL_SCHEME); + return new URLRequestErrorJob( + request, network_delegate, ERR_UNKNOWN_URL_SCHEME); } // THREAD-SAFETY NOTICE: @@ -76,7 +78,8 @@ URLRequestJob* URLRequestJobManager::CreateJob( // if (job_factory) { - URLRequestJob* job = job_factory->MaybeCreateJobWithInterceptor(request); + URLRequestJob* job = job_factory->MaybeCreateJobWithInterceptor( + request, network_delegate); if (job) return job; } @@ -85,15 +88,15 @@ URLRequestJob* URLRequestJobManager::CreateJob( if (!(request->load_flags() & LOAD_DISABLE_INTERCEPT)) { InterceptorList::const_iterator i; for (i = interceptors_.begin(); i != interceptors_.end(); ++i) { - URLRequestJob* job = (*i)->MaybeIntercept(request); + URLRequestJob* job = (*i)->MaybeIntercept(request, network_delegate); if (job) return job; } } if (job_factory) { - URLRequestJob* job = - job_factory->MaybeCreateJobWithProtocolHandler(scheme, request); + URLRequestJob* job = job_factory->MaybeCreateJobWithProtocolHandler( + scheme, request, network_delegate); if (job) return job; } @@ -105,7 +108,7 @@ URLRequestJob* URLRequestJobManager::CreateJob( // built-in protocol factory. FactoryMap::const_iterator i = factories_.find(scheme); if (i != factories_.end()) { - URLRequestJob* job = i->second(request, scheme); + URLRequestJob* job = i->second(request, network_delegate, scheme); if (job) return job; } @@ -113,7 +116,8 @@ URLRequestJob* URLRequestJobManager::CreateJob( // See if the request should be handled by a built-in protocol factory. for (size_t i = 0; i < arraysize(kBuiltinFactories); ++i) { if (scheme == kBuiltinFactories[i].scheme) { - URLRequestJob* job = (kBuiltinFactories[i].factory)(request, scheme); + URLRequestJob* job = (kBuiltinFactories[i].factory)( + request, network_delegate, scheme); DCHECK(job); // The built-in factories are not expected to fail! return job; } @@ -123,11 +127,12 @@ URLRequestJob* URLRequestJobManager::CreateJob( // wasn't interested in handling the URL. That is fairly unexpected, and we // don't have a specific error to report here :-( LOG(WARNING) << "Failed to map: " << request->url().spec(); - return new URLRequestErrorJob(request, ERR_FAILED); + return new URLRequestErrorJob(request, network_delegate, ERR_FAILED); } URLRequestJob* URLRequestJobManager::MaybeInterceptRedirect( URLRequest* request, + NetworkDelegate* network_delegate, const GURL& location) const { DCHECK(IsAllowedThread()); if (!request->url().is_valid() || @@ -150,13 +155,14 @@ URLRequestJob* URLRequestJobManager::MaybeInterceptRedirect( URLRequestJob* job = NULL; if (job_factory) - job = job_factory->MaybeInterceptRedirect(location, request); + job = job_factory->MaybeInterceptRedirect( + location, request, network_delegate); if (job) return job; InterceptorList::const_iterator i; for (i = interceptors_.begin(); i != interceptors_.end(); ++i) { - job = (*i)->MaybeInterceptRedirect(request, location); + job = (*i)->MaybeInterceptRedirect(request, network_delegate, location); if (job) return job; } @@ -164,7 +170,7 @@ URLRequestJob* URLRequestJobManager::MaybeInterceptRedirect( } URLRequestJob* URLRequestJobManager::MaybeInterceptResponse( - URLRequest* request) const { + URLRequest* request, NetworkDelegate* network_delegate) const { DCHECK(IsAllowedThread()); if (!request->url().is_valid() || request->load_flags() & LOAD_DISABLE_INTERCEPT || @@ -186,13 +192,13 @@ URLRequestJob* URLRequestJobManager::MaybeInterceptResponse( URLRequestJob* job = NULL; if (job_factory) - job = job_factory->MaybeInterceptResponse(request); + job = job_factory->MaybeInterceptResponse(request, network_delegate); if (job) return job; InterceptorList::const_iterator i; for (i = interceptors_.begin(); i != interceptors_.end(); ++i) { - job = (*i)->MaybeInterceptResponse(request); + job = (*i)->MaybeInterceptResponse(request, network_delegate); if (job) return job; } diff --git a/net/url_request/url_request_job_manager.h b/net/url_request/url_request_job_manager.h index 5412ef0..ea441be 100644 --- a/net/url_request/url_request_job_manager.h +++ b/net/url_request/url_request_job_manager.h @@ -36,18 +36,21 @@ class URLRequestJobManager { // Instantiate an URLRequestJob implementation based on the registered // interceptors and protocol factories. This will always succeed in // returning a job unless we are--in the extreme case--out of memory. - URLRequestJob* CreateJob(URLRequest* request) const; + URLRequestJob* CreateJob(URLRequest* request, + NetworkDelegate* network_delegate) const; // Allows interceptors to hijack the request after examining the new location // of a redirect. Returns NULL if no interceptor intervenes. URLRequestJob* MaybeInterceptRedirect(URLRequest* request, - const GURL& location) const; + NetworkDelegate* network_delegate, + const GURL& location) const; // Allows interceptors to hijack the request after examining the response // status and headers. This is also called when there is no server response // at all to allow interception of failed requests due to network errors. // Returns NULL if no interceptor intervenes. - URLRequestJob* MaybeInterceptResponse(URLRequest* request) const; + URLRequestJob* MaybeInterceptResponse( + URLRequest* request, NetworkDelegate* network_delegate) const; // Returns true if there is a protocol factory registered for the given // scheme. Note: also returns true if there is a built-in handler for the diff --git a/net/url_request/url_request_redirect_job.cc b/net/url_request/url_request_redirect_job.cc index 9960ea6..998ad18 100644 --- a/net/url_request/url_request_redirect_job.cc +++ b/net/url_request/url_request_redirect_job.cc @@ -7,14 +7,13 @@ #include "base/bind.h" #include "base/compiler_specific.h" #include "base/message_loop.h" -#include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" namespace net { URLRequestRedirectJob::URLRequestRedirectJob(URLRequest* request, + NetworkDelegate* network_delegate, const GURL& redirect_destination) - : URLRequestJob(request, request->context()->network_delegate()), + : URLRequestJob(request, network_delegate), redirect_destination_(redirect_destination), http_status_code_(302), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {} diff --git a/net/url_request/url_request_redirect_job.h b/net/url_request/url_request_redirect_job.h index be5ffb9..08b84a7f 100644 --- a/net/url_request/url_request_redirect_job.h +++ b/net/url_request/url_request_redirect_job.h @@ -26,7 +26,9 @@ class NET_EXPORT URLRequestRedirectJob : public URLRequestJob { }; // Constructs a job that redirects to the specified URL. - URLRequestRedirectJob(URLRequest* request, const GURL& redirect_destination); + URLRequestRedirectJob(URLRequest* request, + NetworkDelegate* network_delegate, + const GURL& redirect_destination); // Change the HTTP status code to use for the redirect. Default is // REDIRECT_302_FOUND. diff --git a/net/url_request/url_request_simple_job.cc b/net/url_request/url_request_simple_job.cc index 8ab59f6..fda1012 100644 --- a/net/url_request/url_request_simple_job.cc +++ b/net/url_request/url_request_simple_job.cc @@ -9,14 +9,13 @@ #include "base/message_loop.h" #include "net/base/io_buffer.h" #include "net/base/net_errors.h" -#include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_status.h" namespace net { -URLRequestSimpleJob::URLRequestSimpleJob(URLRequest* request) - : URLRequestJob(request, request->context()->network_delegate()), +URLRequestSimpleJob::URLRequestSimpleJob( + URLRequest* request, NetworkDelegate* network_delegate) + : URLRequestJob(request, network_delegate), data_offset_(0), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {} diff --git a/net/url_request/url_request_simple_job.h b/net/url_request/url_request_simple_job.h index 9e1945e..7577151d 100644 --- a/net/url_request/url_request_simple_job.h +++ b/net/url_request/url_request_simple_job.h @@ -18,7 +18,7 @@ class URLRequest; class NET_EXPORT URLRequestSimpleJob : public URLRequestJob { public: - explicit URLRequestSimpleJob(URLRequest* request); + URLRequestSimpleJob(URLRequest* request, NetworkDelegate* network_delegate); virtual void Start() OVERRIDE; virtual bool ReadRawData(IOBuffer* buf, diff --git a/net/url_request/url_request_test_job.cc b/net/url_request/url_request_test_job.cc index 9ec31fc..05b562b 100644 --- a/net/url_request/url_request_test_job.cc +++ b/net/url_request/url_request_test_job.cc @@ -15,8 +15,6 @@ #include "net/base/io_buffer.h" #include "net/base/net_errors.h" #include "net/http/http_response_headers.h" -#include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" namespace net { @@ -81,12 +79,14 @@ std::string URLRequestTestJob::test_error_headers() { // static URLRequestJob* URLRequestTestJob::Factory(URLRequest* request, + NetworkDelegate* network_delegate, const std::string& scheme) { - return new URLRequestTestJob(request); + return new URLRequestTestJob(request, network_delegate); } -URLRequestTestJob::URLRequestTestJob(URLRequest* request) - : URLRequestJob(request, request->context()->network_delegate()), +URLRequestTestJob::URLRequestTestJob(URLRequest* request, + NetworkDelegate* network_delegate) + : URLRequestJob(request, network_delegate), auto_advance_(false), stage_(WAITING), offset_(0), @@ -96,8 +96,9 @@ URLRequestTestJob::URLRequestTestJob(URLRequest* request) } URLRequestTestJob::URLRequestTestJob(URLRequest* request, + NetworkDelegate* network_delegate, bool auto_advance) - : URLRequestJob(request, request->context()->network_delegate()), + : URLRequestJob(request, network_delegate), auto_advance_(auto_advance), stage_(WAITING), offset_(0), @@ -107,10 +108,11 @@ URLRequestTestJob::URLRequestTestJob(URLRequest* request, } URLRequestTestJob::URLRequestTestJob(URLRequest* request, + NetworkDelegate* network_delegate, const std::string& response_headers, const std::string& response_data, bool auto_advance) - : URLRequestJob(request, request->context()->network_delegate()), + : URLRequestJob(request, network_delegate), auto_advance_(auto_advance), stage_(WAITING), response_headers_(new HttpResponseHeaders(response_headers)), diff --git a/net/url_request/url_request_test_job.h b/net/url_request/url_request_test_job.h index 40b2f0f30..0c46d1b 100644 --- a/net/url_request/url_request_test_job.h +++ b/net/url_request/url_request_test_job.h @@ -39,16 +39,19 @@ class NET_EXPORT_PRIVATE URLRequestTestJob : public URLRequestJob { public: // Constructs a job to return one of the canned responses depending on the // request url, with auto advance disabled. - explicit URLRequestTestJob(URLRequest* request); + URLRequestTestJob(URLRequest* request, NetworkDelegate* network_delegate); // Constructs a job to return one of the canned responses depending on the // request url, optionally with auto advance enabled. - URLRequestTestJob(URLRequest* request, bool auto_advance); + URLRequestTestJob(URLRequest* request, + NetworkDelegate* network_delegate, + bool auto_advance); // Constructs a job to return the given response regardless of the request // url. The headers should include the HTTP status line and be formatted as // expected by HttpResponseHeaders. URLRequestTestJob(URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& response_headers, const std::string& response_data, bool auto_advance); diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc index 3ded0da..325cdce 100644 --- a/net/url_request/url_request_unittest.cc +++ b/net/url_request/url_request_unittest.cc @@ -378,19 +378,22 @@ class TestJobInterceptor : public URLRequestJobFactory::Interceptor { : main_intercept_job_(NULL) { } - virtual URLRequestJob* MaybeIntercept(URLRequest* request) const OVERRIDE { + virtual URLRequestJob* MaybeIntercept( + URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE { URLRequestJob* job = main_intercept_job_; main_intercept_job_ = NULL; return job; } virtual URLRequestJob* MaybeInterceptRedirect( - const GURL& location, URLRequest* request) const OVERRIDE { + const GURL& location, + URLRequest* request, + NetworkDelegate* network_delegate) const OVERRIDE { return NULL; } virtual URLRequestJob* MaybeInterceptResponse( - URLRequest* request) const OVERRIDE { + URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE { return NULL; } @@ -3560,8 +3563,8 @@ TEST_F(URLRequestTestHTTP, InterceptPost302RedirectGet) { base::UintToString(arraysize(kData) - 1)); req.SetExtraRequestHeaders(headers); - URLRequestRedirectJob* job = - new URLRequestRedirectJob(&req, test_server_.GetURL("echo")); + URLRequestRedirectJob* job = new URLRequestRedirectJob( + &req, default_context_.network_delegate(), test_server_.GetURL("echo")); AddTestInterceptor()->set_main_intercept_job(job); req.Start(); @@ -3583,8 +3586,8 @@ TEST_F(URLRequestTestHTTP, InterceptPost307RedirectPost) { base::UintToString(arraysize(kData) - 1)); req.SetExtraRequestHeaders(headers); - URLRequestRedirectJob* job = - new URLRequestRedirectJob(&req, test_server_.GetURL("echo")); + URLRequestRedirectJob* job = new URLRequestRedirectJob( + &req, default_context_.network_delegate(), test_server_.GetURL("echo")); job->set_redirect_code( URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT); AddTestInterceptor()->set_main_intercept_job(job); @@ -3598,8 +3601,8 @@ TEST_F(URLRequestTestHTTP, InterceptPost307RedirectPost) { // Custom URLRequestJobs for use with interceptor tests class RestartTestJob : public URLRequestTestJob { public: - explicit RestartTestJob(URLRequest* request) - : URLRequestTestJob(request, true) {} + RestartTestJob(URLRequest* request, NetworkDelegate* network_delegate) + : URLRequestTestJob(request, network_delegate, true) {} protected: virtual void StartAsync() { this->NotifyRestartRequired(); @@ -3610,8 +3613,8 @@ class RestartTestJob : public URLRequestTestJob { class CancelTestJob : public URLRequestTestJob { public: - explicit CancelTestJob(URLRequest* request) - : URLRequestTestJob(request, true) {} + explicit CancelTestJob(URLRequest* request, NetworkDelegate* network_delegate) + : URLRequestTestJob(request, network_delegate, true) {} protected: virtual void StartAsync() { request_->Cancel(); @@ -3622,8 +3625,9 @@ class CancelTestJob : public URLRequestTestJob { class CancelThenRestartTestJob : public URLRequestTestJob { public: - explicit CancelThenRestartTestJob(URLRequest* request) - : URLRequestTestJob(request, true) { + explicit CancelThenRestartTestJob(URLRequest* request, + NetworkDelegate* network_delegate) + : URLRequestTestJob(request, network_delegate, true) { } protected: virtual void StartAsync() { @@ -3655,69 +3659,76 @@ class TestInterceptor : URLRequest::Interceptor { URLRequest::Deprecated::UnregisterRequestInterceptor(this); } - virtual URLRequestJob* MaybeIntercept(URLRequest* request) { + virtual URLRequestJob* MaybeIntercept(URLRequest* request, + NetworkDelegate* network_delegate) { if (restart_main_request_) { restart_main_request_ = false; did_restart_main_ = true; - return new RestartTestJob(request); + return new RestartTestJob(request, network_delegate); } if (cancel_main_request_) { cancel_main_request_ = false; did_cancel_main_ = true; - return new CancelTestJob(request); + return new CancelTestJob(request, network_delegate); } if (cancel_then_restart_main_request_) { cancel_then_restart_main_request_ = false; did_cancel_then_restart_main_ = true; - return new CancelThenRestartTestJob(request); + return new CancelThenRestartTestJob(request, network_delegate); } if (simulate_main_network_error_) { simulate_main_network_error_ = false; did_simulate_error_main_ = true; // will error since the requeted url is not one of its canned urls - return new URLRequestTestJob(request, true); + return new URLRequestTestJob(request, network_delegate, true); } if (!intercept_main_request_) return NULL; intercept_main_request_ = false; did_intercept_main_ = true; return new URLRequestTestJob(request, - main_headers_, - main_data_, - true); + network_delegate, + main_headers_, + main_data_, + true); } - virtual URLRequestJob* MaybeInterceptRedirect(URLRequest* request, - const GURL& location) { + virtual URLRequestJob* MaybeInterceptRedirect( + URLRequest* request, + NetworkDelegate* network_delegate, + const GURL& location) { if (cancel_redirect_request_) { cancel_redirect_request_ = false; did_cancel_redirect_ = true; - return new CancelTestJob(request); + return new CancelTestJob(request, network_delegate); } if (!intercept_redirect_) return NULL; intercept_redirect_ = false; did_intercept_redirect_ = true; return new URLRequestTestJob(request, - redirect_headers_, - redirect_data_, - true); + network_delegate, + redirect_headers_, + redirect_data_, + true); } - virtual URLRequestJob* MaybeInterceptResponse(URLRequest* request) { + virtual URLRequestJob* MaybeInterceptResponse( + URLRequest* request, NetworkDelegate* network_delegate) { if (cancel_final_request_) { cancel_final_request_ = false; did_cancel_final_ = true; - return new CancelTestJob(request); + return new CancelTestJob(request, network_delegate); } if (!intercept_final_response_) return NULL; intercept_final_response_ = false; did_intercept_final_ = true; return new URLRequestTestJob(request, - final_headers_, - final_data_, - true); + network_delegate, + final_headers_, + final_data_, + true); } // Whether to intercept the main request, and if so the response to return. @@ -4161,13 +4172,11 @@ TEST_F(URLRequestTestFTP, UnsafePort) { GURL url("ftp://127.0.0.1:7"); FtpProtocolHandler ftp_protocol_handler( - default_context_.network_delegate(), default_context_.ftp_transaction_factory(), default_context_.ftp_auth_cache()); job_factory.SetProtocolHandler( "ftp", - new FtpProtocolHandler(default_context_.network_delegate(), - default_context_.ftp_transaction_factory(), + new FtpProtocolHandler(default_context_.ftp_transaction_factory(), default_context_.ftp_auth_cache())); default_context_.set_job_factory(&job_factory); diff --git a/webkit/appcache/appcache_interceptor.cc b/webkit/appcache/appcache_interceptor.cc index f1be933..6342b93 100644 --- a/webkit/appcache/appcache_interceptor.cc +++ b/webkit/appcache/appcache_interceptor.cc @@ -71,28 +71,30 @@ AppCacheInterceptor::~AppCacheInterceptor() { } net::URLRequestJob* AppCacheInterceptor::MaybeIntercept( - net::URLRequest* request) { + net::URLRequest* request, net::NetworkDelegate* network_delegate) { AppCacheRequestHandler* handler = GetHandler(request); if (!handler) return NULL; - return handler->MaybeLoadResource(request); + return handler->MaybeLoadResource(request, network_delegate); } net::URLRequestJob* AppCacheInterceptor::MaybeInterceptRedirect( net::URLRequest* request, + net::NetworkDelegate* network_delegate, const GURL& location) { AppCacheRequestHandler* handler = GetHandler(request); if (!handler) return NULL; - return handler->MaybeLoadFallbackForRedirect(request, location); + return handler->MaybeLoadFallbackForRedirect( + request, network_delegate, location); } net::URLRequestJob* AppCacheInterceptor::MaybeInterceptResponse( - net::URLRequest* request) { + net::URLRequest* request, net::NetworkDelegate* network_delegate) { AppCacheRequestHandler* handler = GetHandler(request); if (!handler) return NULL; - return handler->MaybeLoadFallbackForResponse(request); + return handler->MaybeLoadFallbackForResponse(request, network_delegate); } } // namespace appcache diff --git a/webkit/appcache/appcache_interceptor.h b/webkit/appcache/appcache_interceptor.h index 9f6759a..1bbe121 100644 --- a/webkit/appcache/appcache_interceptor.h +++ b/webkit/appcache/appcache_interceptor.h @@ -44,11 +44,15 @@ class APPCACHE_EXPORT AppCacheInterceptor protected: // Override from net::URLRequest::Interceptor: - virtual net::URLRequestJob* MaybeIntercept(net::URLRequest* request) OVERRIDE; + virtual net::URLRequestJob* MaybeIntercept( + net::URLRequest* request, + net::NetworkDelegate* network_delegate) OVERRIDE; virtual net::URLRequestJob* MaybeInterceptResponse( - net::URLRequest* request) OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) OVERRIDE; virtual net::URLRequestJob* MaybeInterceptRedirect( net::URLRequest* request, + net::NetworkDelegate* network_delegate, const GURL& location) OVERRIDE; private: diff --git a/webkit/appcache/appcache_request_handler.cc b/webkit/appcache/appcache_request_handler.cc index 0f123a1..7673273 100644 --- a/webkit/appcache/appcache_request_handler.cc +++ b/webkit/appcache/appcache_request_handler.cc @@ -43,7 +43,7 @@ void AppCacheRequestHandler::GetExtraResponseInfo( } AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadResource( - net::URLRequest* request) { + net::URLRequest* request, net::NetworkDelegate* network_delegate) { if (!host_ || !IsSchemeAndMethodSupported(request) || cache_entry_not_found_) return NULL; @@ -73,9 +73,9 @@ AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadResource( found_network_namespace_ = false; if (is_main_resource()) - MaybeLoadMainResource(request); + MaybeLoadMainResource(request, network_delegate); else - MaybeLoadSubResource(request); + MaybeLoadSubResource(request, network_delegate); // If its been setup to deliver a network response, we can just delete // it now and return NULL instead to achieve that since it couldn't @@ -89,7 +89,9 @@ AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadResource( } AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadFallbackForRedirect( - net::URLRequest* request, const GURL& location) { + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const GURL& location) { if (!host_ || !IsSchemeAndMethodSupported(request) || cache_entry_not_found_) return NULL; if (is_main_resource()) @@ -102,13 +104,13 @@ AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadFallbackForRedirect( if (found_fallback_entry_.has_response_id()) { // 6.9.6, step 4: If this results in a redirect to another origin, // get the resource of the fallback entry. - job_ = new AppCacheURLRequestJob(request, storage()); + job_ = new AppCacheURLRequestJob(request, network_delegate, storage()); DeliverAppCachedResponse( found_fallback_entry_, found_cache_id_, found_group_id_, found_manifest_url_, true, found_namespace_entry_url_); } else if (!found_network_namespace_) { // 6.9.6, step 6: Fail the resource load. - job_ = new AppCacheURLRequestJob(request, storage()); + job_ = new AppCacheURLRequestJob(request, network_delegate, storage()); DeliverErrorResponse(); } else { // 6.9.6 step 3 and 5: Fetch the resource normally. @@ -118,7 +120,7 @@ AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadFallbackForRedirect( } AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadFallbackForResponse( - net::URLRequest* request) { + net::URLRequest* request, net::NetworkDelegate* network_delegate) { if (!host_ || !IsSchemeAndMethodSupported(request) || cache_entry_not_found_) return NULL; if (!found_fallback_entry_.has_response_id()) @@ -154,7 +156,7 @@ AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadFallbackForResponse( // 6.9.6, step 4: If this results in a 4xx or 5xx status code // or there were network errors, get the resource of the fallback entry. - job_ = new AppCacheURLRequestJob(request, storage()); + job_ = new AppCacheURLRequestJob(request, network_delegate, storage()); DeliverAppCachedResponse( found_fallback_entry_, found_cache_id_, found_group_id_, found_manifest_url_, true, found_namespace_entry_url_); @@ -199,7 +201,8 @@ void AppCacheRequestHandler::DeliverNetworkResponse() { // Main-resource handling ---------------------------------------------- -void AppCacheRequestHandler::MaybeLoadMainResource(net::URLRequest* request) { +void AppCacheRequestHandler::MaybeLoadMainResource( + net::URLRequest* request, net::NetworkDelegate* network_delegate) { DCHECK(!job_); DCHECK(host_); @@ -211,7 +214,7 @@ void AppCacheRequestHandler::MaybeLoadMainResource(net::URLRequest* request) { // We may have to wait for our storage query to complete, but // this query can also complete syncrhonously. - job_ = new AppCacheURLRequestJob(request, storage()); + job_ = new AppCacheURLRequestJob(request, network_delegate, storage()); storage()->FindResponseForMainRequest( request->url(), preferred_manifest_url, this); } @@ -277,14 +280,14 @@ void AppCacheRequestHandler::OnMainResponseFound( // Sub-resource handling ---------------------------------------------- void AppCacheRequestHandler::MaybeLoadSubResource( - net::URLRequest* request) { + net::URLRequest* request, net::NetworkDelegate* network_delegate) { DCHECK(!job_); if (host_->is_selection_pending()) { // We have to wait until cache selection is complete and the // selected cache is loaded. is_waiting_for_cache_selection_ = true; - job_ = new AppCacheURLRequestJob(request, storage()); + job_ = new AppCacheURLRequestJob(request, network_delegate, storage()); return; } @@ -293,7 +296,7 @@ void AppCacheRequestHandler::MaybeLoadSubResource( return; } - job_ = new AppCacheURLRequestJob(request, storage()); + job_ = new AppCacheURLRequestJob(request, network_delegate, storage()); ContinueMaybeLoadSubResource(); } diff --git a/webkit/appcache/appcache_request_handler.h b/webkit/appcache/appcache_request_handler.h index f7e8c23..bedd90d 100644 --- a/webkit/appcache/appcache_request_handler.h +++ b/webkit/appcache/appcache_request_handler.h @@ -13,6 +13,7 @@ #include "webkit/glue/resource_type.h" namespace net { +class NetworkDelegate; class URLRequest; class URLRequestJob; } // namespace net @@ -34,10 +35,14 @@ class APPCACHE_EXPORT AppCacheRequestHandler virtual ~AppCacheRequestHandler(); // These are called on each request intercept opportunity. - AppCacheURLRequestJob* MaybeLoadResource(net::URLRequest* request); - AppCacheURLRequestJob* MaybeLoadFallbackForRedirect(net::URLRequest* request, - const GURL& location); - AppCacheURLRequestJob* MaybeLoadFallbackForResponse(net::URLRequest* request); + AppCacheURLRequestJob* MaybeLoadResource( + net::URLRequest* request, net::NetworkDelegate* network_delegate); + AppCacheURLRequestJob* MaybeLoadFallbackForRedirect( + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const GURL& location); + AppCacheURLRequestJob* MaybeLoadFallbackForResponse( + net::URLRequest* request, net::NetworkDelegate* network_delegate); void GetExtraResponseInfo(int64* cache_id, GURL* manifest_url); @@ -74,7 +79,8 @@ class APPCACHE_EXPORT AppCacheRequestHandler // Main-resource loading ------------------------------------- // Frame and SharedWorker main resources are handled here. - void MaybeLoadMainResource(net::URLRequest* request); + void MaybeLoadMainResource(net::URLRequest* request, + net::NetworkDelegate* network_delegate); // AppCacheStorage::Delegate methods virtual void OnMainResponseFound( @@ -85,7 +91,8 @@ class APPCACHE_EXPORT AppCacheRequestHandler // Sub-resource loading ------------------------------------- // Dedicated worker and all manner of sub-resources are handled here. - void MaybeLoadSubResource(net::URLRequest* request); + void MaybeLoadSubResource(net::URLRequest* request, + net::NetworkDelegate* network_delegate); void ContinueMaybeLoadSubResource(); // AppCacheHost::Observer override diff --git a/webkit/appcache/appcache_request_handler_unittest.cc b/webkit/appcache/appcache_request_handler_unittest.cc index d537212..2abb0f4 100644 --- a/webkit/appcache/appcache_request_handler_unittest.cc +++ b/webkit/appcache/appcache_request_handler_unittest.cc @@ -74,14 +74,15 @@ class AppCacheRequestHandlerTest : public testing::Test { class MockURLRequestJob : public net::URLRequestJob { public: MockURLRequestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, int response_code) - : net::URLRequestJob(request, request->context()->network_delegate()), + : net::URLRequestJob(request, network_delegate), response_code_(response_code), has_response_info_(false) {} MockURLRequestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const net::HttpResponseInfo& info) - : net::URLRequestJob(request, - request->context()->network_delegate()), + : net::URLRequestJob(request, network_delegate), response_code_(info.headers->response_code()), has_response_info_(true), response_info_(info) {} @@ -114,7 +115,8 @@ class AppCacheRequestHandlerTest : public testing::Test { } void SimulateResponseCode(int http_response_code) { - mock_factory_job_ = new MockURLRequestJob(this, http_response_code); + mock_factory_job_ = new MockURLRequestJob( + this, context()->network_delegate(), http_response_code); Start(); DCHECK(!mock_factory_job_); // All our simulation needs to satisfy are the following two DCHECKs @@ -123,7 +125,8 @@ class AppCacheRequestHandlerTest : public testing::Test { } void SimulateResponseInfo(const net::HttpResponseInfo& info) { - mock_factory_job_ = new MockURLRequestJob(this, info); + mock_factory_job_ = new MockURLRequestJob( + this, context()->network_delegate(), info); set_delegate(&delegate_); // needed to get the info back out Start(); DCHECK(!mock_factory_job_); @@ -132,8 +135,10 @@ class AppCacheRequestHandlerTest : public testing::Test { MockURLRequestDelegate delegate_; }; - static net::URLRequestJob* MockHttpJobFactory(net::URLRequest* request, - const std::string& scheme) { + static net::URLRequestJob* MockHttpJobFactory( + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const std::string& scheme) { if (mock_factory_job_) { net::URLRequestJob* temp = mock_factory_job_; mock_factory_job_ = NULL; @@ -142,6 +147,7 @@ class AppCacheRequestHandlerTest : public testing::Test { // Some of these tests trigger UpdateJobs which start URLRequests. // We short circuit those be returning error jobs. return new net::URLRequestErrorJob(request, + network_delegate, net::ERR_INTERNET_DISCONNECTED); } } @@ -246,7 +252,8 @@ class AppCacheRequestHandlerTest : public testing::Test { ResourceType::MAIN_FRAME)); EXPECT_TRUE(handler_.get()); - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_TRUE(job_.get()); EXPECT_TRUE(job_->is_waiting()); @@ -267,9 +274,12 @@ class AppCacheRequestHandlerTest : public testing::Test { AppCacheURLRequestJob* fallback_job; fallback_job = handler_->MaybeLoadFallbackForRedirect( - request_.get(), GURL("http://blah/redirect")); + request_.get(), + request_->context()->network_delegate(), + GURL("http://blah/redirect")); EXPECT_FALSE(fallback_job); - fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); + fallback_job = handler_->MaybeLoadFallbackForResponse( + request_.get(), request_->context()->network_delegate()); EXPECT_FALSE(fallback_job); EXPECT_TRUE(host_->preferred_manifest_url().is_empty()); @@ -294,7 +304,8 @@ class AppCacheRequestHandlerTest : public testing::Test { GURL(), AppCacheEntry(), 1, 2, GURL("http://blah/manifest/")); - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_TRUE(job_.get()); EXPECT_TRUE(job_->is_waiting()); @@ -314,7 +325,8 @@ class AppCacheRequestHandlerTest : public testing::Test { EXPECT_EQ(2, handler_->found_group_id_); AppCacheURLRequestJob* fallback_job; - fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); + fallback_job = handler_->MaybeLoadFallbackForResponse( + request_.get(), request_->context()->network_delegate()); EXPECT_FALSE(fallback_job); EXPECT_EQ(GURL("http://blah/manifest/"), @@ -341,7 +353,8 @@ class AppCacheRequestHandlerTest : public testing::Test { AppCacheEntry(AppCacheEntry::EXPLICIT, 1), 1, 2, GURL("http://blah/manifest/")); - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_TRUE(job_.get()); EXPECT_TRUE(job_->is_waiting()); @@ -356,13 +369,15 @@ class AppCacheRequestHandlerTest : public testing::Test { // When the request is restarted, the existing job is dropped so a // real network job gets created. We expect NULL here which will cause // the net library to create a real job. - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_FALSE(job_); // Simulate an http error of the real network job. request_->SimulateResponseCode(500); - job_ = handler_->MaybeLoadFallbackForResponse(request_.get()); + job_ = handler_->MaybeLoadFallbackForResponse( + request_.get(), request_->context()->network_delegate()); EXPECT_TRUE(job_); EXPECT_TRUE(job_->is_delivering_appcache_response()); @@ -399,7 +414,8 @@ class AppCacheRequestHandlerTest : public testing::Test { AppCacheEntry(AppCacheEntry::EXPLICIT, 1), 1, 2, GURL("http://blah/manifest/")); - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_TRUE(job_.get()); EXPECT_TRUE(job_->is_waiting()); @@ -414,7 +430,8 @@ class AppCacheRequestHandlerTest : public testing::Test { // When the request is restarted, the existing job is dropped so a // real network job gets created. We expect NULL here which will cause // the net library to create a real job. - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_FALSE(job_); // Simulate an http error of the real network job, but with custom @@ -428,7 +445,8 @@ class AppCacheRequestHandlerTest : public testing::Test { std::string(kOverrideHeaders, arraysize(kOverrideHeaders))); request_->SimulateResponseInfo(info); - job_ = handler_->MaybeLoadFallbackForResponse(request_.get()); + job_ = handler_->MaybeLoadFallbackForResponse( + request_.get(), request_->context()->network_delegate()); EXPECT_FALSE(job_); TestFinished(); @@ -460,15 +478,19 @@ class AppCacheRequestHandlerTest : public testing::Test { ResourceType::SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_TRUE(job_.get()); EXPECT_TRUE(job_->is_delivering_error_response()); AppCacheURLRequestJob* fallback_job; fallback_job = handler_->MaybeLoadFallbackForRedirect( - request_.get(), GURL("http://blah/redirect")); + request_.get(), + empty_context_.network_delegate(), + GURL("http://blah/redirect")); EXPECT_FALSE(fallback_job); - fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); + fallback_job = handler_->MaybeLoadFallbackForResponse( + request_.get(), empty_context_.network_delegate()); EXPECT_FALSE(fallback_job); TestFinished(); @@ -486,7 +508,8 @@ class AppCacheRequestHandlerTest : public testing::Test { handler_.reset(host_->CreateRequestHandler(request_.get(), ResourceType::SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_TRUE(job_.get()); EXPECT_TRUE(job_->is_waiting()); @@ -496,9 +519,12 @@ class AppCacheRequestHandlerTest : public testing::Test { AppCacheURLRequestJob* fallback_job; fallback_job = handler_->MaybeLoadFallbackForRedirect( - request_.get(), GURL("http://blah/redirect")); + request_.get(), + empty_context_.network_delegate(), + GURL("http://blah/redirect")); EXPECT_FALSE(fallback_job); - fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); + fallback_job = handler_->MaybeLoadFallbackForResponse( + request_.get(), empty_context_.network_delegate()); EXPECT_FALSE(fallback_job); TestFinished(); @@ -516,15 +542,19 @@ class AppCacheRequestHandlerTest : public testing::Test { handler_.reset(host_->CreateRequestHandler(request_.get(), ResourceType::SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_TRUE(job_.get()); EXPECT_TRUE(job_->is_delivering_appcache_response()); AppCacheURLRequestJob* fallback_job; fallback_job = handler_->MaybeLoadFallbackForRedirect( - request_.get(), GURL("http://blah/redirect")); + request_.get(), + empty_context_.network_delegate(), + GURL("http://blah/redirect")); EXPECT_FALSE(fallback_job); - fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); + fallback_job = handler_->MaybeLoadFallbackForResponse( + request_.get(), empty_context_.network_delegate()); EXPECT_FALSE(fallback_job); TestFinished(); @@ -544,16 +574,20 @@ class AppCacheRequestHandlerTest : public testing::Test { handler_.reset(host_->CreateRequestHandler(request_.get(), ResourceType::SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_FALSE(job_.get()); job_ = handler_->MaybeLoadFallbackForRedirect( - request_.get(), GURL("http://not_blah/redirect")); + request_.get(), + empty_context_.network_delegate(), + GURL("http://not_blah/redirect")); EXPECT_TRUE(job_.get()); EXPECT_TRUE(job_->is_delivering_appcache_response()); AppCacheURLRequestJob* fallback_job; - fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); + fallback_job = handler_->MaybeLoadFallbackForResponse( + request_.get(), empty_context_.network_delegate()); EXPECT_FALSE(fallback_job); TestFinished(); @@ -573,16 +607,20 @@ class AppCacheRequestHandlerTest : public testing::Test { handler_.reset(host_->CreateRequestHandler(request_.get(), ResourceType::SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_FALSE(job_.get()); AppCacheURLRequestJob* fallback_job; fallback_job = handler_->MaybeLoadFallbackForRedirect( - request_.get(), GURL("http://blah/redirect")); + request_.get(), + empty_context_.network_delegate(), + GURL("http://blah/redirect")); EXPECT_FALSE(fallback_job); request_->SimulateResponseCode(200); - fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); + fallback_job = handler_->MaybeLoadFallbackForResponse( + request_.get(), empty_context_.network_delegate()); EXPECT_FALSE(fallback_job); TestFinished(); @@ -603,14 +641,18 @@ class AppCacheRequestHandlerTest : public testing::Test { handler_.reset(host_->CreateRequestHandler(request_.get(), ResourceType::SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_FALSE(job_.get()); AppCacheURLRequestJob* fallback_job; fallback_job = handler_->MaybeLoadFallbackForRedirect( - request_.get(), GURL("http://blah/redirect")); + request_.get(), + empty_context_.network_delegate(), + GURL("http://blah/redirect")); EXPECT_FALSE(fallback_job); - fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); + fallback_job = handler_->MaybeLoadFallbackForResponse( + request_.get(), empty_context_.network_delegate()); EXPECT_FALSE(fallback_job); TestFinished(); @@ -632,10 +674,14 @@ class AppCacheRequestHandlerTest : public testing::Test { backend_impl_->UnregisterHost(1); host_ = NULL; - EXPECT_FALSE(handler_->MaybeLoadResource(request_.get())); + EXPECT_FALSE(handler_->MaybeLoadResource( + request_.get(), empty_context_.network_delegate())); EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( - request_.get(), GURL("http://blah/redirect"))); - EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(request_.get())); + request_.get(), + empty_context_.network_delegate(), + GURL("http://blah/redirect"))); + EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( + request_.get(), empty_context_.network_delegate())); TestFinished(); } @@ -651,7 +697,8 @@ class AppCacheRequestHandlerTest : public testing::Test { ResourceType::SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource( + request_.get(), empty_context_.network_delegate()); EXPECT_TRUE(job_.get()); EXPECT_TRUE(job_->is_waiting()); @@ -659,10 +706,14 @@ class AppCacheRequestHandlerTest : public testing::Test { host_ = NULL; EXPECT_TRUE(job_->has_been_killed()); - EXPECT_FALSE(handler_->MaybeLoadResource(request_.get())); + EXPECT_FALSE(handler_->MaybeLoadResource( + request_.get(), empty_context_.network_delegate())); EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( - request_.get(), GURL("http://blah/redirect"))); - EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(request_.get())); + request_.get(), + empty_context_.network_delegate(), + GURL("http://blah/redirect"))); + EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( + request_.get(), empty_context_.network_delegate())); TestFinished(); } @@ -678,10 +729,14 @@ class AppCacheRequestHandlerTest : public testing::Test { ResourceType::SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); // we could redirect to http (conceivably) - EXPECT_FALSE(handler_->MaybeLoadResource(request_.get())); + EXPECT_FALSE(handler_->MaybeLoadResource( + request_.get(), empty_context_.network_delegate())); EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( - request_.get(), GURL("ftp://blah/redirect"))); - EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(request_.get())); + request_.get(), + empty_context_.network_delegate(), + GURL("ftp://blah/redirect"))); + EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( + request_.get(), empty_context_.network_delegate())); TestFinished(); } @@ -694,7 +749,8 @@ class AppCacheRequestHandlerTest : public testing::Test { ResourceType::MAIN_FRAME)); EXPECT_TRUE(handler_.get()); - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_TRUE(job_.get()); EXPECT_TRUE(job_->is_waiting()); EXPECT_FALSE(job_->has_been_started()); @@ -706,7 +762,8 @@ class AppCacheRequestHandlerTest : public testing::Test { request_->Cancel(); EXPECT_TRUE(job_->has_been_killed()); - EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(request_.get())); + EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( + request_.get(), empty_context_.network_delegate())); TestFinished(); } @@ -771,7 +828,8 @@ class AppCacheRequestHandlerTest : public testing::Test { GURL(), AppCacheEntry(), 1, 2, GURL("http://blah/manifest/")); - job_ = handler_->MaybeLoadResource(request_.get()); + job_ = handler_->MaybeLoadResource(request_.get(), + empty_context_.network_delegate()); EXPECT_TRUE(job_.get()); EXPECT_TRUE(job_->is_waiting()); diff --git a/webkit/appcache/appcache_update_job_unittest.cc b/webkit/appcache/appcache_update_job_unittest.cc index 123a563..73f8692 100644 --- a/webkit/appcache/appcache_update_job_unittest.cc +++ b/webkit/appcache/appcache_update_job_unittest.cc @@ -51,14 +51,16 @@ class MockHttpServer { return GURL("https://cross_origin_host/" + path); } - static net::URLRequestJob* JobFactory(net::URLRequest* request) { + static net::URLRequestJob* JobFactory( + net::URLRequest* request, net::NetworkDelegate* network_delegate) { if (request->url().host() != "mockhost" && request->url().host() != "cross_origin_host") - return new net::URLRequestErrorJob(request, -100); + return new net::URLRequestErrorJob(request, network_delegate, -100); std::string headers, body; GetMockResponse(request->url().path(), &headers, &body); - return new net::URLRequestTestJob(request, headers, body, true); + return new net::URLRequestTestJob( + request, network_delegate, headers, body, true); } private: @@ -194,8 +196,9 @@ class MockHttpServer { class MockHttpServerJobFactory : public net::URLRequestJobFactory::ProtocolHandler { public: - virtual net::URLRequestJob* MaybeCreateJob(net::URLRequest* request) const { - return MockHttpServer::JobFactory(request); + virtual net::URLRequestJob* MaybeCreateJob( + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { + return MockHttpServer::JobFactory(request, network_delegate); } }; @@ -336,9 +339,11 @@ class MockFrontend : public AppCacheFrontend { // Helper factories to simulate redirected URL responses for tests. class RedirectFactory : public net::URLRequestJobFactory::ProtocolHandler { public: - virtual net::URLRequestJob* MaybeCreateJob(net::URLRequest* request) const { + virtual net::URLRequestJob* MaybeCreateJob( + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { return new net::URLRequestTestJob( request, + network_delegate, net::URLRequestTestJob::test_redirect_headers(), net::URLRequestTestJob::test_data_1(), true); @@ -372,15 +377,18 @@ class RetryRequestTestJob : public net::URLRequestTestJob { expected_requests_ = 0; } - static net::URLRequestJob* RetryFactory(net::URLRequest* request) { + static net::URLRequestJob* RetryFactory( + net::URLRequest* request, net::NetworkDelegate* network_delegate) { ++num_requests_; if (num_retries_ > 0 && request->original_url() == kRetryUrl) { --num_retries_; return new RetryRequestTestJob( - request, RetryRequestTestJob::retry_headers(), 503); + request, network_delegate, RetryRequestTestJob::retry_headers(), 503); } else { return new RetryRequestTestJob( - request, RetryRequestTestJob::manifest_headers(), 200); + request, + network_delegate, + RetryRequestTestJob::manifest_headers(), 200); } } @@ -427,9 +435,11 @@ class RetryRequestTestJob : public net::URLRequestTestJob { } RetryRequestTestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& headers, int response_code) - : net::URLRequestTestJob(request, headers, data(), true), + : net::URLRequestTestJob( + request, network_delegate, headers, data(), true), response_code_(response_code) { } @@ -444,8 +454,9 @@ class RetryRequestTestJob : public net::URLRequestTestJob { class RetryRequestTestJobFactory : public net::URLRequestJobFactory::ProtocolHandler { public: - virtual net::URLRequestJob* MaybeCreateJob(net::URLRequest* request) const { - return RetryRequestTestJob::RetryFactory(request); + virtual net::URLRequestJob* MaybeCreateJob( + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { + return RetryRequestTestJob::RetryFactory(request, network_delegate); } }; @@ -481,7 +492,8 @@ class HttpHeadersRequestTestJob : public net::URLRequestTestJob { already_checked_ = false; } - static net::URLRequestJob* IfModifiedSinceFactory(net::URLRequest* request) { + static net::URLRequestJob* IfModifiedSinceFactory( + net::URLRequest* request, net::NetworkDelegate* network_delegate) { if (!already_checked_) { already_checked_ = true; // only check once for a test const net::HttpRequestHeaders& extra_headers = @@ -497,7 +509,7 @@ class HttpHeadersRequestTestJob : public net::URLRequestTestJob { net::HttpRequestHeaders::kIfNoneMatch, &header_value) && header_value == expect_if_none_match_; } - return MockHttpServer::JobFactory(request); + return MockHttpServer::JobFactory(request, network_delegate); } protected: @@ -521,8 +533,10 @@ bool HttpHeadersRequestTestJob::already_checked_ = false; class IfModifiedSinceJobFactory : public net::URLRequestJobFactory::ProtocolHandler { public: - virtual net::URLRequestJob* MaybeCreateJob(net::URLRequest* request) const { - return HttpHeadersRequestTestJob::IfModifiedSinceFactory(request); + virtual net::URLRequestJob* MaybeCreateJob( + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { + return HttpHeadersRequestTestJob::IfModifiedSinceFactory( + request, network_delegate); } }; diff --git a/webkit/appcache/appcache_url_request_job.cc b/webkit/appcache/appcache_url_request_job.cc index 2c8efa7..80c0b7d 100644 --- a/webkit/appcache/appcache_url_request_job.cc +++ b/webkit/appcache/appcache_url_request_job.cc @@ -18,15 +18,16 @@ #include "net/http/http_response_headers.h" #include "net/http/http_util.h" #include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_status.h" #include "webkit/appcache/appcache_service.h" namespace appcache { AppCacheURLRequestJob::AppCacheURLRequestJob( - net::URLRequest* request, AppCacheStorage* storage) - : net::URLRequestJob(request, request->context()->network_delegate()), + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + AppCacheStorage* storage) + : net::URLRequestJob(request, network_delegate), storage_(storage), has_been_started_(false), has_been_killed_(false), delivery_type_(AWAITING_DELIVERY_ORDERS), diff --git a/webkit/appcache/appcache_url_request_job.h b/webkit/appcache/appcache_url_request_job.h index 2e11abc..38ee9bd 100644 --- a/webkit/appcache/appcache_url_request_job.h +++ b/webkit/appcache/appcache_url_request_job.h @@ -22,7 +22,9 @@ namespace appcache { class APPCACHE_EXPORT AppCacheURLRequestJob : public net::URLRequestJob, public AppCacheStorage::Delegate { public: - AppCacheURLRequestJob(net::URLRequest* request, AppCacheStorage* storage); + AppCacheURLRequestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, + AppCacheStorage* storage); // Informs the job of what response it should deliver. Only one of these // methods should be called, and only once per job. A job will sit idle and diff --git a/webkit/appcache/appcache_url_request_job_unittest.cc b/webkit/appcache/appcache_url_request_job_unittest.cc index 1c2d1f1..9fa8ded 100644 --- a/webkit/appcache/appcache_url_request_job_unittest.cc +++ b/webkit/appcache/appcache_url_request_job_unittest.cc @@ -127,14 +127,17 @@ class AppCacheURLRequestJobTest : public testing::Test { bool kill_with_io_pending_; }; - static net::URLRequestJob* MockHttpJobFactory(net::URLRequest* request, - const std::string& scheme) { + static net::URLRequestJob* MockHttpJobFactory( + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const std::string& scheme) { if (mock_factory_job_) { net::URLRequestJob* temp = mock_factory_job_; mock_factory_job_ = NULL; return temp; } else { return new net::URLRequestErrorJob(request, + network_delegate, net::ERR_INTERNET_DISCONNECTED); } } @@ -375,7 +378,8 @@ class AppCacheURLRequestJobTest : public testing::Test { // Create an instance and see that it looks as expected. - job = new AppCacheURLRequestJob(&request, storage); + job = new AppCacheURLRequestJob( + &request, empty_context_.network_delegate(), storage); EXPECT_TRUE(job->is_waiting()); EXPECT_FALSE(job->is_delivering_appcache_response()); EXPECT_FALSE(job->is_delivering_network_response()); @@ -398,17 +402,20 @@ class AppCacheURLRequestJobTest : public testing::Test { // Create an instance, give it a delivery order and see that // it looks as expected. - job = new AppCacheURLRequestJob(&request, storage); + job = new AppCacheURLRequestJob( + &request, empty_context_.network_delegate(), storage); job->DeliverErrorResponse(); EXPECT_TRUE(job->is_delivering_error_response()); EXPECT_FALSE(job->has_been_started()); - job = new AppCacheURLRequestJob(&request, storage); + job = new AppCacheURLRequestJob( + &request, empty_context_.network_delegate(), storage); job->DeliverNetworkResponse(); EXPECT_TRUE(job->is_delivering_network_response()); EXPECT_FALSE(job->has_been_started()); - job = new AppCacheURLRequestJob(&request, storage); + job = new AppCacheURLRequestJob( + &request, empty_context_.network_delegate(), storage); const GURL kManifestUrl("http://blah/"); const int64 kCacheId(1); const int64 kGroupId(1); @@ -443,7 +450,8 @@ class AppCacheURLRequestJobTest : public testing::Test { // Setup to create an AppCacheURLRequestJob with orders to deliver // a network response. - mock_factory_job_ = new AppCacheURLRequestJob(request_.get(), storage); + mock_factory_job_ = new AppCacheURLRequestJob( + request_.get(), empty_context_.network_delegate(), storage); mock_factory_job_->DeliverNetworkResponse(); EXPECT_TRUE(mock_factory_job_->is_delivering_network_response()); EXPECT_FALSE(mock_factory_job_->has_been_started()); @@ -478,7 +486,8 @@ class AppCacheURLRequestJobTest : public testing::Test { // Setup to create an AppCacheURLRequestJob with orders to deliver // a network response. - mock_factory_job_ = new AppCacheURLRequestJob(request_.get(), storage); + mock_factory_job_ = new AppCacheURLRequestJob( + request_.get(), empty_context_.network_delegate(), storage); mock_factory_job_->DeliverErrorResponse(); EXPECT_TRUE(mock_factory_job_->is_delivering_error_response()); EXPECT_FALSE(mock_factory_job_->has_been_started()); @@ -528,8 +537,8 @@ class AppCacheURLRequestJobTest : public testing::Test { // Setup to create an AppCacheURLRequestJob with orders to deliver // a network response. - scoped_refptr<AppCacheURLRequestJob> job( - new AppCacheURLRequestJob(request_.get(), storage)); + scoped_refptr<AppCacheURLRequestJob> job(new AppCacheURLRequestJob( + request_.get(), empty_context_.network_delegate(), storage)); if (start_after_delivery_orders) { job->DeliverAppCachedResponse( @@ -646,8 +655,8 @@ class AppCacheURLRequestJobTest : public testing::Test { request_->SetExtraRequestHeaders(extra_headers); // Create job with orders to deliver an appcached entry. - scoped_refptr<AppCacheURLRequestJob> job( - new AppCacheURLRequestJob(request_.get(), storage)); + scoped_refptr<AppCacheURLRequestJob> job(new AppCacheURLRequestJob( + request_.get(), empty_context_.network_delegate(), storage)); job->DeliverAppCachedResponse( GURL(), 0, 111, AppCacheEntry(AppCacheEntry::EXPLICIT, written_response_id_), diff --git a/webkit/appcache/view_appcache_internals_job.cc b/webkit/appcache/view_appcache_internals_job.cc index 94ee601..c33c7ae 100644 --- a/webkit/appcache/view_appcache_internals_job.cc +++ b/webkit/appcache/view_appcache_internals_job.cc @@ -311,8 +311,11 @@ GURL ClearQuery(const GURL& url) { // Simple base class for the job subclasses defined here. class BaseInternalsJob : public net::URLRequestSimpleJob { protected: - BaseInternalsJob(net::URLRequest* request, AppCacheService* service) - : URLRequestSimpleJob(request), appcache_service_(service) {} + BaseInternalsJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, + AppCacheService* service) + : URLRequestSimpleJob(request, network_delegate), + appcache_service_(service) {} virtual ~BaseInternalsJob() {} AppCacheService* appcache_service_; @@ -321,8 +324,10 @@ class BaseInternalsJob : public net::URLRequestSimpleJob { // Job that lists all appcaches in the system. class MainPageJob : public BaseInternalsJob { public: - MainPageJob(net::URLRequest* request, AppCacheService* service) - : BaseInternalsJob(request, service), + MainPageJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, + AppCacheService* service) + : BaseInternalsJob(request, network_delegate, service), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { } @@ -383,8 +388,10 @@ class MainPageJob : public BaseInternalsJob { // Job that redirects back to the main appcache internals page. class RedirectToMainPageJob : public BaseInternalsJob { public: - RedirectToMainPageJob(net::URLRequest* request, AppCacheService* service) - : BaseInternalsJob(request, service) {} + RedirectToMainPageJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, + AppCacheService* service) + : BaseInternalsJob(request, network_delegate, service) {} virtual int GetData(std::string* mime_type, std::string* charset, @@ -407,9 +414,11 @@ class RedirectToMainPageJob : public BaseInternalsJob { class RemoveAppCacheJob : public RedirectToMainPageJob { public: RemoveAppCacheJob( - net::URLRequest* request, AppCacheService* service, + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + AppCacheService* service, const GURL& manifest_url) - : RedirectToMainPageJob(request, service), + : RedirectToMainPageJob(request, network_delegate, service), manifest_url_(manifest_url), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { } @@ -439,9 +448,11 @@ class ViewAppCacheJob : public BaseInternalsJob, public AppCacheStorage::Delegate { public: ViewAppCacheJob( - net::URLRequest* request, AppCacheService* service, + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + AppCacheService* service, const GURL& manifest_url) - : BaseInternalsJob(request, service), + : BaseInternalsJob(request, network_delegate, service), manifest_url_(manifest_url) {} virtual void Start() { @@ -508,10 +519,13 @@ class ViewEntryJob : public BaseInternalsJob, public AppCacheStorage::Delegate { public: ViewEntryJob( - net::URLRequest* request, AppCacheService* service, - const GURL& manifest_url, const GURL& entry_url, + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + AppCacheService* service, + const GURL& manifest_url, + const GURL& entry_url, int64 response_id, int64 group_id) - : BaseInternalsJob(request, service), + : BaseInternalsJob(request, network_delegate, service), manifest_url_(manifest_url), entry_url_(entry_url), response_id_(response_id), group_id_(group_id), amount_read_(0) { } @@ -599,20 +613,22 @@ class ViewEntryJob : public BaseInternalsJob, } // namespace net::URLRequestJob* ViewAppCacheInternalsJobFactory::CreateJobForRequest( - net::URLRequest* request, AppCacheService* service) { + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + AppCacheService* service) { if (!request->url().has_query()) - return new MainPageJob(request, service); + return new MainPageJob(request, network_delegate, service); std::string command; std::string param; ParseQuery(request->url().query(), &command, ¶m); if (command == kRemoveCacheCommand) - return new RemoveAppCacheJob(request, service, + return new RemoveAppCacheJob(request, network_delegate, service, DecodeBase64URL(param)); if (command == kViewCacheCommand) - return new ViewAppCacheJob(request, service, + return new ViewAppCacheJob(request, network_delegate, service, DecodeBase64URL(param)); std::vector<std::string> tokens; @@ -621,13 +637,13 @@ net::URLRequestJob* ViewAppCacheInternalsJobFactory::CreateJobForRequest( if (command == kViewEntryCommand && Tokenize(param, "|", &tokens) == 4u && base::StringToInt64(tokens[2], &response_id) && base::StringToInt64(tokens[3], &group_id)) { - return new ViewEntryJob(request, service, + return new ViewEntryJob(request, network_delegate, service, DecodeBase64URL(tokens[0]), // manifest url DecodeBase64URL(tokens[1]), // entry url response_id, group_id); } - return new RedirectToMainPageJob(request, service); + return new RedirectToMainPageJob(request, network_delegate, service); } } // namespace appcache diff --git a/webkit/appcache/view_appcache_internals_job.h b/webkit/appcache/view_appcache_internals_job.h index 762a703..aad961f 100644 --- a/webkit/appcache/view_appcache_internals_job.h +++ b/webkit/appcache/view_appcache_internals_job.h @@ -9,6 +9,7 @@ #include "webkit/appcache/appcache_export.h" namespace net { +class NetworkDelegate; class URLRequest; class URLRequestJob; } @@ -20,7 +21,9 @@ class AppCacheService; class APPCACHE_EXPORT ViewAppCacheInternalsJobFactory { public: static net::URLRequestJob* CreateJobForRequest( - net::URLRequest* request, AppCacheService* service); + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + AppCacheService* service); private: DISALLOW_IMPLICIT_CONSTRUCTORS(ViewAppCacheInternalsJobFactory); diff --git a/webkit/blob/blob_url_request_job.cc b/webkit/blob/blob_url_request_job.cc index edda7fc..642f955 100644 --- a/webkit/blob/blob_url_request_job.cc +++ b/webkit/blob/blob_url_request_job.cc @@ -48,9 +48,10 @@ const char kHTTPInternalErrorText[] = "Internal Server Error"; BlobURLRequestJob::BlobURLRequestJob( net::URLRequest* request, + net::NetworkDelegate* network_delegate, BlobData* blob_data, base::MessageLoopProxy* file_thread_proxy) - : net::URLRequestJob(request, request->context()->network_delegate()), + : net::URLRequestJob(request, network_delegate), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), blob_data_(blob_data), file_thread_proxy_(file_thread_proxy), diff --git a/webkit/blob/blob_url_request_job.h b/webkit/blob/blob_url_request_job.h index 676ebaf..d7080bc 100644 --- a/webkit/blob/blob_url_request_job.h +++ b/webkit/blob/blob_url_request_job.h @@ -31,6 +31,7 @@ class LocalFileStreamReader; class BLOB_EXPORT BlobURLRequestJob : public net::URLRequestJob { public: BlobURLRequestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, BlobData* blob_data, base::MessageLoopProxy* resolving_message_loop_proxy); diff --git a/webkit/blob/blob_url_request_job_factory.cc b/webkit/blob/blob_url_request_job_factory.cc index 539570e..52f0874 100644 --- a/webkit/blob/blob_url_request_job_factory.cc +++ b/webkit/blob/blob_url_request_job_factory.cc @@ -26,13 +26,14 @@ BlobProtocolHandler::BlobProtocolHandler( BlobProtocolHandler::~BlobProtocolHandler() {} net::URLRequestJob* BlobProtocolHandler::MaybeCreateJob( - net::URLRequest* request) const { + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { scoped_refptr<webkit_blob::BlobData> data = LookupBlobData(request); if (!data) { // This request is not coming through resource dispatcher host. data = blob_storage_controller_->GetBlobDataFromUrl(request->url()); } - return new webkit_blob::BlobURLRequestJob(request, data, file_loop_proxy_); + return new webkit_blob::BlobURLRequestJob( + request, network_delegate, data, file_loop_proxy_); } scoped_refptr<webkit_blob::BlobData> diff --git a/webkit/blob/blob_url_request_job_factory.h b/webkit/blob/blob_url_request_job_factory.h index 61d55094..cf7452a 100644 --- a/webkit/blob/blob_url_request_job_factory.h +++ b/webkit/blob/blob_url_request_job_factory.h @@ -33,7 +33,8 @@ class BLOB_EXPORT BlobProtocolHandler virtual ~BlobProtocolHandler(); virtual net::URLRequestJob* MaybeCreateJob( - net::URLRequest* request) const OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; private: virtual scoped_refptr<BlobData> LookupBlobData( diff --git a/webkit/blob/blob_url_request_job_unittest.cc b/webkit/blob/blob_url_request_job_unittest.cc index a9462e6..3463d01 100644 --- a/webkit/blob/blob_url_request_job_unittest.cc +++ b/webkit/blob/blob_url_request_job_unittest.cc @@ -144,6 +144,7 @@ class BlobURLRequestJobTest : public testing::Test { static net::URLRequestJob* BlobURLRequestJobFactory( net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme) { BlobURLRequestJob* temp = blob_url_request_job_; blob_url_request_job_ = NULL; @@ -248,6 +249,7 @@ class BlobURLRequestJobTest : public testing::Test { request_->set_method(method); blob_url_request_job_ = new BlobURLRequestJob( request_.get(), + empty_context_.network_delegate(), blob_data, base::MessageLoopProxy::current()); diff --git a/webkit/blob/view_blob_internals_job.cc b/webkit/blob/view_blob_internals_job.cc index 03029ef..dfbf3a0 100644 --- a/webkit/blob/view_blob_internals_job.cc +++ b/webkit/blob/view_blob_internals_job.cc @@ -98,8 +98,10 @@ void AddHTMLButton(const std::string& title, namespace webkit_blob { ViewBlobInternalsJob::ViewBlobInternalsJob( - net::URLRequest* request, BlobStorageController* blob_storage_controller) - : net::URLRequestSimpleJob(request), + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + BlobStorageController* blob_storage_controller) + : net::URLRequestSimpleJob(request, network_delegate), blob_storage_controller_(blob_storage_controller), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { } diff --git a/webkit/blob/view_blob_internals_job.h b/webkit/blob/view_blob_internals_job.h index 24324ca..17c3cf9 100644 --- a/webkit/blob/view_blob_internals_job.h +++ b/webkit/blob/view_blob_internals_job.h @@ -25,6 +25,7 @@ class BlobStorageController; class BLOB_EXPORT ViewBlobInternalsJob : public net::URLRequestSimpleJob { public: ViewBlobInternalsJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, BlobStorageController* blob_storage_controller); virtual void Start() OVERRIDE; diff --git a/webkit/fileapi/file_system_dir_url_request_job.cc b/webkit/fileapi/file_system_dir_url_request_job.cc index 642887d..f8fe544 100644 --- a/webkit/fileapi/file_system_dir_url_request_job.cc +++ b/webkit/fileapi/file_system_dir_url_request_job.cc @@ -20,11 +20,11 @@ #include "net/base/net_errors.h" #include "net/base/net_util.h" #include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" #include "webkit/fileapi/file_system_context.h" #include "webkit/fileapi/file_system_operation_interface.h" #include "webkit/fileapi/file_system_url.h" +using net::NetworkDelegate; using net::URLRequest; using net::URLRequestJob; using net::URLRequestStatus; @@ -32,8 +32,10 @@ using net::URLRequestStatus; namespace fileapi { FileSystemDirURLRequestJob::FileSystemDirURLRequestJob( - URLRequest* request, FileSystemContext* file_system_context) - : URLRequestJob(request, request->context()->network_delegate()), + URLRequest* request, + NetworkDelegate* network_delegate, + FileSystemContext* file_system_context) + : URLRequestJob(request, network_delegate), file_system_context_(file_system_context), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { } diff --git a/webkit/fileapi/file_system_dir_url_request_job.h b/webkit/fileapi/file_system_dir_url_request_job.h index c999358..0929bf3 100644 --- a/webkit/fileapi/file_system_dir_url_request_job.h +++ b/webkit/fileapi/file_system_dir_url_request_job.h @@ -27,6 +27,7 @@ class FILEAPI_EXPORT_PRIVATE FileSystemDirURLRequestJob public: FileSystemDirURLRequestJob( net::URLRequest* request, + net::NetworkDelegate* network_delegate, FileSystemContext* file_system_context); // URLRequestJob methods: diff --git a/webkit/fileapi/file_system_dir_url_request_job_unittest.cc b/webkit/fileapi/file_system_dir_url_request_job_unittest.cc index 5529253..9294ffd 100644 --- a/webkit/fileapi/file_system_dir_url_request_job_unittest.cc +++ b/webkit/fileapi/file_system_dir_url_request_job_unittest.cc @@ -18,6 +18,7 @@ #include "net/base/net_util.h" #include "net/http/http_request_headers.h" #include "net/url_request/url_request.h" +#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_test_util.h" #include "testing/gtest/include/gtest/gtest.h" #include "unicode/regex.h" @@ -86,8 +87,10 @@ class FileSystemDirURLRequestJobTest : public testing::Test { request_.reset(new net::URLRequest(url, delegate_.get(), &empty_context_)); - job_ = new FileSystemDirURLRequestJob(request_.get(), - file_system_context_.get()); + job_ = new FileSystemDirURLRequestJob( + request_.get(), + empty_context_.network_delegate(), + file_system_context_.get()); request_->Start(); ASSERT_TRUE(request_->is_pending()); // verify that we're starting async @@ -186,6 +189,7 @@ class FileSystemDirURLRequestJobTest : public testing::Test { static net::URLRequestJob* FileSystemDirURLRequestJobFactory( net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme) { DCHECK(job_); net::URLRequestJob* temp = job_; diff --git a/webkit/fileapi/file_system_url_request_job.cc b/webkit/fileapi/file_system_url_request_job.cc index 72269db..1d09ed5 100644 --- a/webkit/fileapi/file_system_url_request_job.cc +++ b/webkit/fileapi/file_system_url_request_job.cc @@ -26,12 +26,12 @@ #include "net/http/http_response_info.h" #include "net/http/http_util.h" #include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" #include "webkit/blob/file_stream_reader.h" #include "webkit/fileapi/file_system_context.h" #include "webkit/fileapi/file_system_util.h" #include "webkit/fileapi/local_file_system_operation.h" +using net::NetworkDelegate; using net::URLRequest; using net::URLRequestJob; using net::URLRequestStatus; @@ -55,8 +55,10 @@ static net::HttpResponseHeaders* CreateHttpResponseHeaders() { } FileSystemURLRequestJob::FileSystemURLRequestJob( - URLRequest* request, FileSystemContext* file_system_context) - : URLRequestJob(request, request->context()->network_delegate()), + URLRequest* request, + NetworkDelegate* network_delegate, + FileSystemContext* file_system_context) + : URLRequestJob(request, network_delegate), file_system_context_(file_system_context), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), is_directory_(false), diff --git a/webkit/fileapi/file_system_url_request_job.h b/webkit/fileapi/file_system_url_request_job.h index cc2f6c7..5dfb4cc 100644 --- a/webkit/fileapi/file_system_url_request_job.h +++ b/webkit/fileapi/file_system_url_request_job.h @@ -32,6 +32,7 @@ class FILEAPI_EXPORT_PRIVATE FileSystemURLRequestJob public: FileSystemURLRequestJob( net::URLRequest* request, + net::NetworkDelegate* network_delegate, FileSystemContext* file_system_context); // URLRequestJob methods: diff --git a/webkit/fileapi/file_system_url_request_job_factory.cc b/webkit/fileapi/file_system_url_request_job_factory.cc index ae6f39c..f0bf0d8 100644 --- a/webkit/fileapi/file_system_url_request_job_factory.cc +++ b/webkit/fileapi/file_system_url_request_job_factory.cc @@ -23,7 +23,8 @@ class FileSystemProtocolHandler virtual ~FileSystemProtocolHandler(); virtual net::URLRequestJob* MaybeCreateJob( - net::URLRequest* request) const OVERRIDE; + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE; private: // No scoped_refptr because |file_system_context_| is owned by the @@ -42,16 +43,18 @@ FileSystemProtocolHandler::FileSystemProtocolHandler( FileSystemProtocolHandler::~FileSystemProtocolHandler() {} net::URLRequestJob* FileSystemProtocolHandler::MaybeCreateJob( - net::URLRequest* request) const { + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { const std::string path = request->url().path(); // If the path ends with a /, we know it's a directory. If the path refers // to a directory and gets dispatched to FileSystemURLRequestJob, that class // redirects back here, by adding a / to the URL. if (!path.empty() && path[path.size() - 1] == '/') { - return new FileSystemDirURLRequestJob(request, file_system_context_); + return new FileSystemDirURLRequestJob( + request, network_delegate, file_system_context_); } - return new FileSystemURLRequestJob(request, file_system_context_); + return new FileSystemURLRequestJob( + request, network_delegate, file_system_context_); } } // anonymous namespace diff --git a/webkit/fileapi/file_system_url_request_job_unittest.cc b/webkit/fileapi/file_system_url_request_job_unittest.cc index 3a30889..ce77edd 100644 --- a/webkit/fileapi/file_system_url_request_job_unittest.cc +++ b/webkit/fileapi/file_system_url_request_job_unittest.cc @@ -24,6 +24,7 @@ #include "net/base/net_util.h" #include "net/http/http_request_headers.h" #include "net/url_request/url_request.h" +#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_test_util.h" #include "testing/gtest/include/gtest/gtest.h" #include "webkit/fileapi/file_system_context.h" @@ -117,6 +118,7 @@ class FileSystemURLRequestJobTest : public testing::Test { ASSERT_TRUE(!job_); job_ = new FileSystemURLRequestJob( request_.get(), + empty_context_.network_delegate(), file_system_context_.get()); pending_job_ = job_; @@ -188,6 +190,7 @@ class FileSystemURLRequestJobTest : public testing::Test { static net::URLRequestJob* FileSystemURLRequestJobFactory( net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme) { DCHECK(job_); net::URLRequestJob* temp = job_; diff --git a/webkit/fileapi/file_writer_delegate_unittest.cc b/webkit/fileapi/file_writer_delegate_unittest.cc index d20c9b8..3b1a515 100644 --- a/webkit/fileapi/file_writer_delegate_unittest.cc +++ b/webkit/fileapi/file_writer_delegate_unittest.cc @@ -143,8 +143,9 @@ static std::string g_content; class FileWriterDelegateTestJob : public net::URLRequestJob { public: FileWriterDelegateTestJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& content) - : net::URLRequestJob(request, request->context()->network_delegate()), + : net::URLRequestJob(request, network_delegate), content_(content), remaining_bytes_(content.length()), cursor_(0) { @@ -189,9 +190,10 @@ class FileWriterDelegateTestJob : public net::URLRequestJob { // static net::URLRequestJob* FileWriterDelegateTest::Factory( net::URLRequest* request, + net::NetworkDelegate* network_delegate, const std::string& scheme) { return new FileWriterDelegateTestJob( - request, FileWriterDelegateTest::content_); + request, network_delegate, FileWriterDelegateTest::content_); } void FileWriterDelegateTest::SetUp() { diff --git a/webkit/fileapi/local_file_system_operation_write_unittest.cc b/webkit/fileapi/local_file_system_operation_write_unittest.cc index 3851da3..d715fd4 100644 --- a/webkit/fileapi/local_file_system_operation_write_unittest.cc +++ b/webkit/fileapi/local_file_system_operation_write_unittest.cc @@ -160,9 +160,11 @@ class TestProtocolHandler : public net::URLRequestJobFactory::ProtocolHandler { virtual ~TestProtocolHandler() {} virtual net::URLRequestJob* MaybeCreateJob( - net::URLRequest* request) const OVERRIDE { + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const OVERRIDE { return new webkit_blob::BlobURLRequestJob( request, + network_delegate, blob_storage_controller_->GetBlobDataFromUrl(request->url()), base::MessageLoopProxy::current()); } diff --git a/webkit/tools/test_shell/test_shell.cc b/webkit/tools/test_shell/test_shell.cc index bce8ba3..32070d5 100644 --- a/webkit/tools/test_shell/test_shell.cc +++ b/webkit/tools/test_shell/test_shell.cc @@ -22,6 +22,7 @@ #include "grit/webkit_strings.h" #include "net/base/mime_util.h" #include "net/base/net_util.h" +#include "net/url_request/url_request.h" #include "net/url_request/url_request_file_job.h" #include "net/url_request/url_request_filter.h" #include "skia/ext/bitmap_platform_device.h" @@ -82,21 +83,23 @@ const int kSVGTestWindowHeight = 360; // URLRequestTestShellFileJob is used to serve the inspector class URLRequestTestShellFileJob : public net::URLRequestFileJob { public: - static net::URLRequestJob* InspectorFactory(net::URLRequest* request, - const std::string& scheme) { + static net::URLRequestJob* InspectorFactory( + net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const std::string& scheme) { FilePath path; PathService::Get(base::DIR_EXE, &path); path = path.AppendASCII("resources"); path = path.AppendASCII("inspector"); path = path.AppendASCII(request->url().path().substr(1)); - return new URLRequestTestShellFileJob(request, path); + return new URLRequestTestShellFileJob(request, network_delegate, path); } private: - URLRequestTestShellFileJob(net::URLRequest* request, const FilePath& path) - : net::URLRequestFileJob(request, - path, - request->context()->network_delegate()) { + URLRequestTestShellFileJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const FilePath& path) + : net::URLRequestFileJob(request, network_delegate, path) { } virtual ~URLRequestTestShellFileJob() { } |