Chromium Code Reviews| Index: chrome/browser/profiles/profile_io_data.cc |
| diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc |
| index 74f94d81938228a36127195cb3c02179c75ab86f..4104762e1af2b1cec258b6f6ab5f7ed2a65271ff 100644 |
| --- a/chrome/browser/profiles/profile_io_data.cc |
| +++ b/chrome/browser/profiles/profile_io_data.cc |
| @@ -17,6 +17,7 @@ |
| #include "base/string_util.h" |
| #include "base/stringprintf.h" |
| #include "chrome/browser/browser_process.h" |
| +#include "chrome/browser/net/about_protocol_handler.h" |
| #include "chrome/browser/content_settings/cookie_settings.h" |
| #include "chrome/browser/content_settings/host_content_settings_map.h" |
| #include "chrome/browser/custom_handlers/protocol_handler_registry.h" |
| @@ -62,6 +63,8 @@ |
| #include "net/proxy/proxy_script_fetcher_impl.h" |
| #include "net/proxy/proxy_service.h" |
| #include "net/url_request/data_protocol_handler.h" |
| +#include "net/url_request/file_protocol_handler.h" |
| +#include "net/url_request/ftp_protocol_handler.h" |
| #include "net/url_request/url_request.h" |
| #if !defined(OS_ANDROID) |
| @@ -190,10 +193,10 @@ void ProfileIOData::InitializeOnUIThread(Profile* profile) { |
| ProtocolHandlerRegistryFactory::GetForProfile(profile); |
| DCHECK(protocol_handler_registry); |
| - // the profile instance is only available here in the InitializeOnUIThread |
| + // The profile instance is only available here in the InitializeOnUIThread |
| // method, so we create the url interceptor here, then save it for |
| - // later delivery to the job factory in LazyInitialize |
| - params->protocol_handler_url_interceptor.reset( |
| + // later delivery to the job factory in LazyInitialize. |
| + params->protocol_handler_interceptor.reset( |
| protocol_handler_registry->CreateURLInterceptor()); |
| ChromeProxyConfigService* proxy_config_service = |
| @@ -238,9 +241,9 @@ ProfileIOData::MediaRequestContext::MediaRequestContext( |
| } |
| void ProfileIOData::MediaRequestContext::SetHttpTransactionFactory( |
| - net::HttpTransactionFactory* http_factory) { |
| - http_factory_.reset(http_factory); |
| - set_http_transaction_factory(http_factory); |
| + scoped_ptr<net::HttpTransactionFactory> http_factory) { |
| + http_factory_ = http_factory.Pass(); |
| + set_http_transaction_factory(http_factory_.get()); |
|
Charlie Reis
2012/09/20 22:57:46
Flip order to be consistent.
awong
2012/09/20 23:16:46
Done.
|
| } |
| ProfileIOData::MediaRequestContext::~MediaRequestContext() {} |
| @@ -258,9 +261,15 @@ void ProfileIOData::AppRequestContext::SetCookieStore( |
| } |
| void ProfileIOData::AppRequestContext::SetHttpTransactionFactory( |
| - net::HttpTransactionFactory* http_factory) { |
| - http_factory_.reset(http_factory); |
| - set_http_transaction_factory(http_factory); |
| + scoped_ptr<net::HttpTransactionFactory> http_factory) { |
| + set_http_transaction_factory(http_factory.get()); |
| + http_factory_ = http_factory.Pass(); |
| +} |
| + |
| +void ProfileIOData::AppRequestContext::SetJobFactory( |
| + scoped_ptr<net::URLRequestJobFactory> job_factory) { |
| + set_job_factory(job_factory.get()); |
| + job_factory_ = job_factory.Pass(); |
| } |
| ProfileIOData::AppRequestContext::~AppRequestContext() {} |
| @@ -376,13 +385,16 @@ ProfileIOData::GetExtensionsRequestContext() const { |
| ChromeURLRequestContext* |
| ProfileIOData::GetIsolatedAppRequestContext( |
| ChromeURLRequestContext* main_context, |
| - const std::string& app_id) const { |
| + const std::string& app_id, |
| + scoped_ptr<net::URLRequestJobFactory::Interceptor> |
| + protocol_handler_interceptor) const { |
| LazyInitialize(); |
| ChromeURLRequestContext* context = NULL; |
| if (ContainsKey(app_request_context_map_, app_id)) { |
| context = app_request_context_map_[app_id]; |
| } else { |
| - context = AcquireIsolatedAppRequestContext(main_context, app_id); |
| + context = AcquireIsolatedAppRequestContext( |
| + main_context, app_id, protocol_handler_interceptor.Pass()); |
| app_request_context_map_[app_id] = context; |
| } |
| DCHECK(context); |
| @@ -391,17 +403,13 @@ ProfileIOData::GetIsolatedAppRequestContext( |
| ChromeURLRequestContext* |
| ProfileIOData::GetIsolatedMediaRequestContext( |
| - ChromeURLRequestContext* main_context, |
| + ChromeURLRequestContext* app_context, |
| const std::string& app_id) const { |
| LazyInitialize(); |
| ChromeURLRequestContext* context = NULL; |
| if (ContainsKey(isolated_media_request_context_map_, app_id)) { |
| context = isolated_media_request_context_map_[app_id]; |
| } else { |
| - // Get the app context as the starting point for the media context, |
| - // so that it uses the app's cookie store. |
| - ChromeURLRequestContext* app_context = GetIsolatedAppRequestContext( |
| - main_context, app_id); |
| context = AcquireIsolatedMediaRequestContext(app_context, app_id); |
| isolated_media_request_context_map_[app_id] = context; |
| } |
| @@ -591,19 +599,31 @@ void ProfileIOData::ApplyProfileParamsToContext( |
| } |
| void ProfileIOData::SetUpJobFactoryDefaults( |
| - net::URLRequestJobFactory* job_factory) const { |
| + net::URLRequestJobFactory* job_factory, |
| + scoped_ptr<net::URLRequestJobFactory::Interceptor> |
| + protocol_handler_interceptor, |
| + net::NetworkDelegate* network_delegate, |
| + net::FtpTransactionFactory* ftp_transaction_factory, |
| + net::FtpAuthCache* ftp_auth_cache) const { |
| // NOTE(willchan): Keep these protocol handlers in sync with |
| // ProfileIOData::IsHandledProtocol(). |
| + bool set_protocol = job_factory->SetProtocolHandler( |
| + chrome::kFileScheme, new net::FileProtocolHandler()); |
| + DCHECK(set_protocol); |
| - if (profile_params_->protocol_handler_url_interceptor.get()) { |
| - job_factory->AddInterceptor( |
| - profile_params_->protocol_handler_url_interceptor.release()); |
| + set_protocol = job_factory->SetProtocolHandler( |
| + chrome::kChromeDevToolsScheme, |
| + CreateDevToolsProtocolHandler(chrome_url_data_manager_backend(), |
| + network_delegate)); |
| + DCHECK(set_protocol); |
| + |
| + if (protocol_handler_interceptor.get()) { |
| + job_factory->AddInterceptor(protocol_handler_interceptor.release()); |
| } |
| - bool set_protocol = job_factory->SetProtocolHandler( |
| + set_protocol = job_factory->SetProtocolHandler( |
| chrome::kExtensionScheme, |
| - CreateExtensionProtocolHandler(is_incognito(), |
| - profile_params_->extension_info_map)); |
| + CreateExtensionProtocolHandler(is_incognito(), extension_info_map())); |
| DCHECK(set_protocol); |
| set_protocol = job_factory->SetProtocolHandler( |
| chrome::kExtensionResourceScheme, |
| @@ -631,6 +651,16 @@ void ProfileIOData::SetUpJobFactoryDefaults( |
| job_factory->AddInterceptor(new chromeos::GViewRequestInterceptor); |
| #endif // !defined(GOOGLE_CHROME_BUILD) |
| #endif // defined(OS_CHROMEOS) |
| + |
| + job_factory->SetProtocolHandler(chrome::kAboutScheme, |
| + new net::AboutProtocolHandler()); |
| +#if !defined(DISABLE_FTP_SUPPORT) |
| + DCHECK(ftp_transaction_factory); |
| + job_factory->SetProtocolHandler( |
| + chrome::kFtpScheme, |
| + new net::FtpProtocolHandler(ftp_transaction_factory, |
| + ftp_auth_cache)); |
| +#endif // !defined(DISABLE_FTP_SUPPORT) |
| } |
| void ProfileIOData::ShutdownOnUIThread() { |