Chromium Code Reviews| 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 776ba421d3370a1580bbb469c2d0cea8a7419edf..a13abe10c2b09d1d0c3642d866f4f325b10dc182 100644 |
| --- a/chrome/browser/profiles/profile_impl_io_data.cc |
| +++ b/chrome/browser/profiles/profile_impl_io_data.cc |
| @@ -30,6 +30,7 @@ |
| #include "net/base/server_bound_cert_service.h" |
| #include "net/ftp/ftp_network_layer.h" |
| #include "net/http/http_cache.h" |
| +#include "net/url_request/ftp_protocol_handler.h" |
| #include "net/url_request/url_request_job_factory.h" |
| #include "webkit/quota/special_storage_policy.h" |
| @@ -434,15 +435,29 @@ void ProfileImplIOData::LazyInitializeInternal( |
| main_context->set_ftp_transaction_factory(ftp_factory_.get()); |
| media_request_context_->set_ftp_transaction_factory(ftp_factory_.get()); |
| + ftp_auth_cache_.reset(new net::FtpAuthCache); |
| + |
| main_context->set_chrome_url_data_manager_backend( |
| chrome_url_data_manager_backend()); |
| - main_context->set_job_factory(job_factory()); |
| - media_request_context_->set_job_factory(job_factory()); |
| - extensions_context->set_job_factory(job_factory()); |
| + main_job_factory_.reset(new net::URLRequestJobFactory); |
| + media_request_job_factory_.reset(new net::URLRequestJobFactory); |
| + extensions_job_factory_.reset(new net::URLRequestJobFactory); |
| - job_factory()->AddInterceptor( |
| - new chrome_browser_net::ConnectInterceptor(predictor_.get())); |
| + net::URLRequestJobFactory* job_factories[3]; |
| + job_factories[0] = main_job_factory_.get(); |
| + job_factories[1] = media_request_job_factory_.get(); |
| + job_factories[2] = extensions_job_factory_.get(); |
| + |
| + for (int i = 0; i < 3; i++) { |
| + SetUpJobFactoryDefaults(job_factories[i]); |
| + CreateFtpProtocolHandler(job_factories[i]); |
| + AddConnectInterceptor(job_factories[i]); |
| + } |
| + |
| + main_context->set_job_factory(main_job_factory_.get()); |
| + media_request_context_->set_job_factory(media_request_job_factory_.get()); |
| + extensions_context->set_job_factory(extensions_job_factory_.get()); |
| lazy_params_.reset(); |
| } |
| @@ -528,6 +543,19 @@ ProfileImplIOData::AcquireIsolatedAppRequestContext( |
| return app_request_context; |
| } |
| +void ProfileImplIOData::CreateFtpProtocolHandler( |
| + net::URLRequestJobFactory* job_factory) const { |
| + job_factory->SetProtocolHandler(chrome::kFtpScheme, |
| + new net::FtpProtocolHandler( |
| + network_delegate(), ftp_factory_.get(), ftp_auth_cache_.get())); |
|
mmenke
2012/06/26 18:36:10
nit: Fix indent
shalev
2012/06/26 19:05:01
Done.
|
| +} |
| + |
| +void ProfileImplIOData::AddConnectInterceptor( |
| + net::URLRequestJobFactory* job_factory) const { |
| + job_factory->AddInterceptor( |
| + new chrome_browser_net::ConnectInterceptor(predictor_.get())); |
| +} |
| + |
| void ProfileImplIOData::ClearNetworkingHistorySinceOnIOThread( |
| base::Time time) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |