Index: chrome/browser/profiles/off_the_record_profile_io_data.cc |
diff --git a/chrome/browser/profiles/off_the_record_profile_io_data.cc b/chrome/browser/profiles/off_the_record_profile_io_data.cc |
index e77e99a50b0b48a16cfab41cd89ae1da17b685fb..9c70a9949852cd8dab9dd37a714e2bff100ac303 100644 |
--- a/chrome/browser/profiles/off_the_record_profile_io_data.cc |
+++ b/chrome/browser/profiles/off_the_record_profile_io_data.cc |
@@ -35,6 +35,8 @@ |
#include "net/sdch/sdch_owner.h" |
#include "net/ssl/channel_id_service.h" |
#include "net/ssl/default_channel_id_store.h" |
+#include "net/url_request/url_request_context_builder.h" |
+#include "net/url_request/url_request_context_storage.h" |
#include "net/url_request/url_request_job_factory_impl.h" |
#include "storage/browser/database/database_tracker.h" |
@@ -199,87 +201,92 @@ void OffTheRecordProfileIOData::InitializeInternal( |
scoped_ptr<ChromeNetworkDelegate> chrome_network_delegate, |
ProfileParams* profile_params, |
content::ProtocolHandlerMap* protocol_handlers, |
- content::URLRequestInterceptorScopedVector request_interceptors) const { |
- net::URLRequestContext* main_context = main_request_context(); |
+ content::URLRequestInterceptorScopedVector request_interceptors, |
+ net::URLRequestContextBuilder* context_builder) const { |
IOThread* const io_thread = profile_params->io_thread; |
IOThread::Globals* const io_thread_globals = io_thread->globals(); |
- ApplyProfileParamsToContext(main_context); |
- |
- main_context->set_transport_security_state(transport_security_state()); |
+ ApplyProfileParamsToContext(context_builder); |
- main_context->set_net_log(io_thread->net_log()); |
+ context_builder->set_net_log_unowned(io_thread->net_log()); |
- main_context->set_network_delegate(chrome_network_delegate.get()); |
- |
- network_delegate_ = chrome_network_delegate.Pass(); |
- |
- main_context->set_host_resolver( |
+ context_builder->set_host_resolver_unowned( |
io_thread_globals->host_resolver.get()); |
- main_context->set_http_auth_handler_factory( |
+ context_builder->set_http_auth_handler_factory_unowned( |
io_thread_globals->http_auth_handler_factory.get()); |
- main_context->set_fraudulent_certificate_reporter( |
- fraudulent_certificate_reporter()); |
- main_context->set_proxy_service(proxy_service()); |
+ context_builder->set_proxy_service_unowned(proxy_service()); |
- main_context->set_cert_transparency_verifier( |
+ context_builder->set_cert_transparency_verifier_unowned( |
io_thread_globals->cert_transparency_verifier.get()); |
// For incognito, we use the default non-persistent HttpServerPropertiesImpl. |
set_http_server_properties( |
scoped_ptr<net::HttpServerProperties>( |
new net::HttpServerPropertiesImpl())); |
- main_context->set_http_server_properties(http_server_properties()); |
+ // The context receives a WeakPtr to the server properties. |
+ context_builder->set_http_server_properties(http_server_properties()); |
// For incognito, we use a non-persistent channel ID store. |
net::ChannelIDService* channel_id_service = |
new net::ChannelIDService( |
new net::DefaultChannelIDStore(NULL), |
base::WorkerPool::GetTaskRunner(true)); |
- set_channel_id_service(channel_id_service); |
- main_context->set_channel_id_service(channel_id_service); |
using content::CookieStoreConfig; |
- main_context->set_cookie_store( |
+ scoped_refptr<net::CookieStore> cookie_store = |
CreateCookieStore(CookieStoreConfig( |
- base::FilePath(), |
- CookieStoreConfig::EPHEMERAL_SESSION_COOKIES, |
- NULL, |
- profile_params->cookie_monster_delegate.get()))); |
+ base::FilePath(), CookieStoreConfig::EPHEMERAL_SESSION_COOKIES, NULL, |
+ profile_params->cookie_monster_delegate.get())); |
+ context_builder->SetCookieAndChannelIdStores( |
+ cookie_store.get(), make_scoped_ptr(channel_id_service)); |
net::HttpCache::BackendFactory* main_backend = |
net::HttpCache::DefaultBackend::InMemory(0); |
- main_http_factory_ = CreateMainHttpFactory(profile_params, main_backend); |
- main_context->set_http_transaction_factory(main_http_factory_.get()); |
+ context_builder->set_http_transaction_factory_factory( |
+ new ProfileIOData::HttpTransactionFactoryDelegate(this, profile_params, |
+ main_backend)); |
+ |
#if !defined(DISABLE_FTP_SUPPORT) |
ftp_factory_.reset( |
- new net::FtpNetworkLayer(main_context->host_resolver())); |
+ new net::FtpNetworkLayer(io_thread_globals->host_resolver.get())); |
#endif // !defined(DISABLE_FTP_SUPPORT) |
scoped_ptr<net::URLRequestJobFactoryImpl> main_job_factory( |
new net::URLRequestJobFactoryImpl()); |
+ scoped_ptr<net::NetworkDelegate> network_delegate = |
+ chrome_network_delegate.Pass(); |
+ |
InstallProtocolHandlers(main_job_factory.get(), protocol_handlers); |
- main_job_factory_ = SetUpJobFactoryDefaults( |
+ context_builder->set_job_factory(SetUpJobFactoryDefaults( |
main_job_factory.Pass(), |
request_interceptors.Pass(), |
profile_params->protocol_handler_interceptor.Pass(), |
- main_context->network_delegate(), |
- ftp_factory_.get()); |
- main_context->set_job_factory(main_job_factory_.get()); |
+ network_delegate.get(), |
+ ftp_factory_.get())); |
+ context_builder->set_network_delegate(network_delegate.release()); |
// Setup SDCH for this profile. |
- sdch_manager_.reset(new net::SdchManager); |
- sdch_policy_.reset(new net::SdchOwner(sdch_manager_.get(), main_context)); |
- main_context->set_sdch_manager(sdch_manager_.get()); |
+ context_builder->set_sdch_manager(new net::SdchManager); |
#if defined(ENABLE_EXTENSIONS) |
+ // This call initializes the extensions URLRequestContext *independently* of |
+ // the, as-yet unbuilt, main URLRequestContext. If that ever changes, then |
+ // this should not be called in this function. |
InitializeExtensionsRequestContext(profile_params); |
#endif |
} |
+void OffTheRecordProfileIOData::InitPostContextSetup( |
+ ChromeNetworkDelegate* chrome_network_delegate) const { |
+ net::URLRequestContext* main_context = main_request_context(); |
+ |
+ sdch_policy_.reset( |
+ new net::SdchOwner(main_context->sdch_manager(), main_context)); |
+} |
+ |
void OffTheRecordProfileIOData:: |
InitializeExtensionsRequestContext(ProfileParams* profile_params) const { |
net::URLRequestContext* extensions_context = extensions_request_context(); |
@@ -348,7 +355,7 @@ net::URLRequestContext* OffTheRecordProfileIOData::InitializeAppRequestContext( |
net::HttpCache::BackendFactory* app_backend = |
net::HttpCache::DefaultBackend::InMemory(0); |
net::HttpNetworkSession* main_network_session = |
- main_http_factory_->GetSession(); |
+ context->storage()->http_transaction_factory()->GetSession(); |
scoped_ptr<net::HttpCache> app_http_cache = |
CreateHttpFactory(main_network_session, app_backend); |