Pass parameter by pointers when creating job factory.

1. The caller needs to modify protocol_handlers.
2. We need to make sure protocol_handlers and interceptors are not touched
   if user doesn't create a job factory.
This commit is contained in:
Cheng Zhao 2014-08-13 17:31:33 +08:00
parent 604361f93d
commit da3bafd490
4 changed files with 7 additions and 9 deletions

View file

@ -122,8 +122,8 @@ scoped_ptr<NetworkDelegate> BrowserContext::CreateNetworkDelegate() {
} }
scoped_ptr<net::URLRequestJobFactory> BrowserContext::CreateURLRequestJobFactory( scoped_ptr<net::URLRequestJobFactory> BrowserContext::CreateURLRequestJobFactory(
const content::ProtocolHandlerMap& protocol_handlers, content::ProtocolHandlerMap* protocol_handlers,
content::ProtocolHandlerScopedVector protocol_interceptors) { content::ProtocolHandlerScopedVector* protocol_interceptors) {
return scoped_ptr<net::URLRequestJobFactory>(); return scoped_ptr<net::URLRequestJobFactory>();
} }

View file

@ -50,8 +50,8 @@ class BrowserContext : public content::BrowserContext {
// Subclasses should override this to provide a custom URLRequestJobFactory // Subclasses should override this to provide a custom URLRequestJobFactory
// implementation. // implementation.
virtual scoped_ptr<net::URLRequestJobFactory> CreateURLRequestJobFactory( virtual scoped_ptr<net::URLRequestJobFactory> CreateURLRequestJobFactory(
const content::ProtocolHandlerMap& protocol_handlers, content::ProtocolHandlerMap* protocol_handlers,
content::ProtocolHandlerScopedVector protocol_interceptors); content::ProtocolHandlerScopedVector* protocol_interceptors);
virtual base::FilePath GetPath() const OVERRIDE; virtual base::FilePath GetPath() const OVERRIDE;

View file

@ -153,11 +153,9 @@ net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() {
// Give user a chance to create their own job factory. // Give user a chance to create their own job factory.
scoped_ptr<net::URLRequestJobFactory> user_job_factory( scoped_ptr<net::URLRequestJobFactory> user_job_factory(
job_factory_factory_.Run(protocol_handlers_, protocol_interceptors_.Pass())); job_factory_factory_.Run(&protocol_handlers_, &protocol_interceptors_));
if (user_job_factory) { if (user_job_factory) {
storage_->set_job_factory(user_job_factory.release()); storage_->set_job_factory(user_job_factory.release());
protocol_handlers_.clear();
protocol_interceptors_.weak_clear();
return url_request_context_.get(); return url_request_context_.get();
} }

View file

@ -26,8 +26,8 @@ namespace brightray {
class NetworkDelegate; class NetworkDelegate;
typedef base::Callback<scoped_ptr<net::URLRequestJobFactory>( typedef base::Callback<scoped_ptr<net::URLRequestJobFactory>(
const content::ProtocolHandlerMap& protocol_handlers, content::ProtocolHandlerMap* protocol_handlers,
content::ProtocolHandlerScopedVector protocol_interceptors)> URLRequestJobFactoryFactory; content::ProtocolHandlerScopedVector* protocol_interceptors)> URLRequestJobFactoryFactory;
class URLRequestContextGetter : public net::URLRequestContextGetter { class URLRequestContextGetter : public net::URLRequestContextGetter {
public: public: