| Index: chrome/browser/profiles/profile_impl_io_data.cc
|
| diff --git a/chrome/browser/profiles/profile_impl_io_data.cc b/chrome/browser/profiles/profile_impl_io_data.cc
|
| index f4ee92346904023a2a19e4a612e3a26924343dbe..644377d6edbd6fd1835b846eb7b410bb583acecd 100644
|
| --- a/chrome/browser/profiles/profile_impl_io_data.cc
|
| +++ b/chrome/browser/profiles/profile_impl_io_data.cc
|
| @@ -128,25 +128,14 @@ ProfileImplIOData::Handle::GetResourceContextNoInit() const {
|
|
|
| scoped_refptr<ChromeURLRequestContextGetter>
|
| ProfileImplIOData::Handle::CreateMainRequestContextGetter(
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - blob_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - file_system_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - developer_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - chrome_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - chrome_devtools_protocol_handler,
|
| + content::ProtocolHandlerMap* protocol_handlers,
|
| PrefService* local_state,
|
| IOThread* io_thread) const {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| LazyInitialize();
|
| DCHECK(!main_request_context_getter_);
|
| main_request_context_getter_ = ChromeURLRequestContextGetter::CreateOriginal(
|
| - profile_, io_data_, blob_protocol_handler.Pass(),
|
| - file_system_protocol_handler.Pass(), developer_protocol_handler.Pass(),
|
| - chrome_protocol_handler.Pass(), chrome_devtools_protocol_handler.Pass());
|
| + profile_, io_data_, protocol_handlers);
|
|
|
| io_data_->predictor_->InitNetworkPredictor(profile_->GetPrefs(),
|
| local_state,
|
| @@ -188,16 +177,7 @@ scoped_refptr<ChromeURLRequestContextGetter>
|
| ProfileImplIOData::Handle::CreateIsolatedAppRequestContextGetter(
|
| const base::FilePath& partition_path,
|
| bool in_memory,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - blob_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - file_system_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - developer_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - chrome_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - chrome_devtools_protocol_handler) const {
|
| + content::ProtocolHandlerMap* protocol_handlers) const {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| // Check that the partition_path is not the same as the base profile path. We
|
| // expect isolated partition, which will never go to the default profile path.
|
| @@ -218,10 +198,8 @@ ProfileImplIOData::Handle::CreateIsolatedAppRequestContextGetter(
|
| ChromeURLRequestContextGetter* context =
|
| ChromeURLRequestContextGetter::CreateOriginalForIsolatedApp(
|
| profile_, io_data_, descriptor,
|
| - protocol_handler_interceptor.Pass(), blob_protocol_handler.Pass(),
|
| - file_system_protocol_handler.Pass(),
|
| - developer_protocol_handler.Pass(), chrome_protocol_handler.Pass(),
|
| - chrome_devtools_protocol_handler.Pass());
|
| + protocol_handler_interceptor.Pass(),
|
| + protocol_handlers);
|
| app_request_context_getter_map_[descriptor] = context;
|
|
|
| return context;
|
| @@ -317,16 +295,7 @@ ProfileImplIOData::~ProfileImplIOData() {
|
|
|
| void ProfileImplIOData::InitializeInternal(
|
| ProfileParams* profile_params,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - blob_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - file_system_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - developer_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - chrome_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - chrome_devtools_protocol_handler) const {
|
| + content::ProtocolHandlerMap* protocol_handlers) const {
|
| ChromeURLRequestContext* main_context = main_request_context();
|
|
|
| IOThread* const io_thread = profile_params->io_thread;
|
| @@ -447,27 +416,13 @@ void ProfileImplIOData::InitializeInternal(
|
|
|
| scoped_ptr<net::URLRequestJobFactoryImpl> main_job_factory(
|
| new net::URLRequestJobFactoryImpl());
|
| - bool set_protocol = main_job_factory->SetProtocolHandler(
|
| - chrome::kBlobScheme, blob_protocol_handler.release());
|
| - DCHECK(set_protocol);
|
| - set_protocol = main_job_factory->SetProtocolHandler(
|
| - chrome::kFileSystemScheme, file_system_protocol_handler.release());
|
| - DCHECK(set_protocol);
|
| - set_protocol = main_job_factory->SetProtocolHandler(
|
| - chrome::kChromeUIScheme, chrome_protocol_handler.release());
|
| - DCHECK(set_protocol);
|
| - set_protocol = main_job_factory->SetProtocolHandler(
|
| - chrome::kChromeDevToolsScheme,
|
| - chrome_devtools_protocol_handler.release());
|
| - DCHECK(set_protocol);
|
| + InstallProtocolHandlers(main_job_factory.get(), protocol_handlers);
|
| main_job_factory_ = SetUpJobFactoryDefaults(
|
| main_job_factory.Pass(),
|
| profile_params->protocol_handler_interceptor.Pass(),
|
| network_delegate(),
|
| main_context->ftp_transaction_factory(),
|
| main_context->ftp_auth_cache());
|
| - main_job_factory_.reset(new net::ProtocolInterceptJobFactory(
|
| - main_job_factory_.Pass(), developer_protocol_handler.Pass()));
|
| main_context->set_job_factory(main_job_factory_.get());
|
|
|
| #if defined(ENABLE_EXTENSIONS)
|
| @@ -539,16 +494,7 @@ ProfileImplIOData::InitializeAppRequestContext(
|
| const StoragePartitionDescriptor& partition_descriptor,
|
| scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory>
|
| protocol_handler_interceptor,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - blob_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - file_system_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - developer_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - chrome_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - chrome_devtools_protocol_handler) const {
|
| + content::ProtocolHandlerMap* protocol_handlers) const {
|
| // Copy most state from the main context.
|
| AppRequestContext* context = new AppRequestContext(load_time_stats());
|
| context->CopyFrom(main_context);
|
| @@ -620,19 +566,7 @@ ProfileImplIOData::InitializeAppRequestContext(
|
|
|
| scoped_ptr<net::URLRequestJobFactoryImpl> job_factory(
|
| new net::URLRequestJobFactoryImpl());
|
| - bool set_protocol = job_factory->SetProtocolHandler(
|
| - chrome::kBlobScheme, blob_protocol_handler.release());
|
| - DCHECK(set_protocol);
|
| - set_protocol = job_factory->SetProtocolHandler(
|
| - chrome::kFileSystemScheme, file_system_protocol_handler.release());
|
| - DCHECK(set_protocol);
|
| - set_protocol = job_factory->SetProtocolHandler(
|
| - chrome::kChromeUIScheme, chrome_protocol_handler.release());
|
| - DCHECK(set_protocol);
|
| - set_protocol = job_factory->SetProtocolHandler(
|
| - chrome::kChromeDevToolsScheme,
|
| - chrome_devtools_protocol_handler.release());
|
| - DCHECK(set_protocol);
|
| + InstallProtocolHandlers(job_factory.get(), protocol_handlers);
|
| scoped_ptr<net::URLRequestJobFactory> top_job_factory;
|
| // Overwrite the job factory that we inherit from the main context so
|
| // that we can later provide our own handlers for storage related protocols.
|
| @@ -647,8 +581,6 @@ ProfileImplIOData::InitializeAppRequestContext(
|
| } else {
|
| top_job_factory = job_factory.PassAs<net::URLRequestJobFactory>();
|
| }
|
| - top_job_factory.reset(new net::ProtocolInterceptJobFactory(
|
| - top_job_factory.Pass(), developer_protocol_handler.Pass()));
|
| context->SetJobFactory(top_job_factory.Pass());
|
|
|
| return context;
|
| @@ -714,25 +646,12 @@ ProfileImplIOData::AcquireIsolatedAppRequestContext(
|
| const StoragePartitionDescriptor& partition_descriptor,
|
| scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory>
|
| protocol_handler_interceptor,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - blob_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - file_system_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - developer_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - chrome_protocol_handler,
|
| - scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| - chrome_devtools_protocol_handler) const {
|
| + content::ProtocolHandlerMap* protocol_handlers) const {
|
| // We create per-app contexts on demand, unlike the others above.
|
| ChromeURLRequestContext* app_request_context =
|
| InitializeAppRequestContext(main_context, partition_descriptor,
|
| protocol_handler_interceptor.Pass(),
|
| - blob_protocol_handler.Pass(),
|
| - file_system_protocol_handler.Pass(),
|
| - developer_protocol_handler.Pass(),
|
| - chrome_protocol_handler.Pass(),
|
| - chrome_devtools_protocol_handler.Pass());
|
| + protocol_handlers);
|
| DCHECK(app_request_context);
|
| return app_request_context;
|
| }
|
|
|