diff --git a/brightray/browser/url_request_context_getter.cc b/brightray/browser/url_request_context_getter.cc index fba872f5f7..597f8be588 100644 --- a/brightray/browser/url_request_context_getter.cc +++ b/brightray/browser/url_request_context_getter.cc @@ -73,6 +73,32 @@ const char kProxyServer[] = "proxy-server"; } // namespace +net::URLRequestJobFactory* URLRequestContextGetter::Delegate::CreateURLRequestJobFactory( + content::ProtocolHandlerMap* protocol_handlers, + content::ProtocolHandlerScopedVector* protocol_interceptors) { + scoped_ptr job_factory(new net::URLRequestJobFactoryImpl); + + for (auto it = protocol_handlers->begin(); it != protocol_handlers->end(); ++it) + job_factory->SetProtocolHandler(it->first, it->second.release()); + protocol_handlers->clear(); + + job_factory->SetProtocolHandler(content::kDataScheme, new net::DataProtocolHandler); + job_factory->SetProtocolHandler(content::kFileScheme, new net::FileProtocolHandler( + BrowserThread::GetBlockingPool()->GetTaskRunnerWithShutdownBehavior( + base::SequencedWorkerPool::SKIP_ON_SHUTDOWN))); + + // Set up interceptors in the reverse order. + scoped_ptr top_job_factory = + job_factory.PassAs(); + for (content::ProtocolHandlerScopedVector::reverse_iterator i = protocol_interceptors->rbegin(); + i != protocol_interceptors->rend(); ++i) + top_job_factory.reset(new net::ProtocolInterceptJobFactory( + top_job_factory.Pass(), make_scoped_ptr(*i))); + protocol_interceptors->weak_clear(); + + return top_job_factory.release(); +} + URLRequestContextGetter::URLRequestContextGetter( Delegate* delegate, const base::FilePath& base_path, @@ -137,6 +163,7 @@ net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() { host_resolver = remapped_resolver.PassAs(); } + // --proxy-server net::DhcpProxyScriptFetcherFactory dhcp_factory; if (command_line.HasSwitch(kNoProxyServer)) storage_->set_proxy_service(net::ProxyService::CreateDirect()); @@ -206,46 +233,8 @@ net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() { network_session_params, main_backend); storage_->set_http_transaction_factory(main_cache); - // Give user a chance to create their own job factory. - scoped_ptr user_job_factory( - delegate_->CreateURLRequestJobFactory(&protocol_handlers_, &protocol_interceptors_)); - if (user_job_factory) { - storage_->set_job_factory(user_job_factory.release()); - return url_request_context_.get(); - } - - scoped_ptr job_factory( - new net::URLRequestJobFactoryImpl()); - for (auto it = protocol_handlers_.begin(), - end = protocol_handlers_.end(); it != end; ++it) { - bool set_protocol = job_factory->SetProtocolHandler( - it->first, it->second.release()); - DCHECK(set_protocol); - (void)set_protocol; // silence unused-variable warning in Release builds on Windows - } - protocol_handlers_.clear(); - job_factory->SetProtocolHandler( - content::kDataScheme, new net::DataProtocolHandler); - job_factory->SetProtocolHandler( - content::kFileScheme, - new net::FileProtocolHandler( - BrowserThread::GetBlockingPool()-> - GetTaskRunnerWithShutdownBehavior( - base::SequencedWorkerPool::SKIP_ON_SHUTDOWN))); - - // Set up interceptors in the reverse order. - scoped_ptr top_job_factory = - job_factory.PassAs(); - for (content::ProtocolHandlerScopedVector::reverse_iterator i = - protocol_interceptors_.rbegin(); - i != protocol_interceptors_.rend(); - ++i) { - top_job_factory.reset(new net::ProtocolInterceptJobFactory( - top_job_factory.Pass(), make_scoped_ptr(*i))); - } - protocol_interceptors_.weak_clear(); - - storage_->set_job_factory(top_job_factory.release()); + storage_->set_job_factory(delegate_->CreateURLRequestJobFactory( + &protocol_handlers_, &protocol_interceptors_)); } return url_request_context_.get(); diff --git a/brightray/browser/url_request_context_getter.h b/brightray/browser/url_request_context_getter.h index b2dfc1e7ab..b22df64e1f 100644 --- a/brightray/browser/url_request_context_getter.h +++ b/brightray/browser/url_request_context_getter.h @@ -32,12 +32,10 @@ class URLRequestContextGetter : public net::URLRequestContextGetter { Delegate() {} virtual ~Delegate() {} - virtual net::NetworkDelegate* CreateNetworkDelegate() { return NULL; }; + virtual net::NetworkDelegate* CreateNetworkDelegate() { return NULL; } virtual net::URLRequestJobFactory* CreateURLRequestJobFactory( content::ProtocolHandlerMap* protocol_handlers, - content::ProtocolHandlerScopedVector* protocol_interceptors) { - return NULL; - }; + content::ProtocolHandlerScopedVector* protocol_interceptors); }; URLRequestContextGetter(