| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/io_thread.h" | 5 #include "chrome/browser/io_thread.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 190 | 190 |
| 191 net_log_->AddGlobalEntry(net::NetLog::TYPE_NETWORK_IP_ADDRESSES_CHANGED, | 191 net_log_->AddGlobalEntry(net::NetLog::TYPE_NETWORK_IP_ADDRESSES_CHANGED, |
| 192 NULL); | 192 NULL); |
| 193 } | 193 } |
| 194 | 194 |
| 195 private: | 195 private: |
| 196 net::NetLog* net_log_; | 196 net::NetLog* net_log_; |
| 197 DISALLOW_COPY_AND_ASSIGN(LoggingNetworkChangeObserver); | 197 DISALLOW_COPY_AND_ASSIGN(LoggingNetworkChangeObserver); |
| 198 }; | 198 }; |
| 199 | 199 |
| 200 // Create a separate request context for PAC fetches to avoid reference cycles. | 200 // TODO(willchan): Remove proxy script fetcher context since it's not necessary |
| 201 // now that I got rid of refcounting URLRequestContexts. |
| 201 // See IOThread::Globals for details. | 202 // See IOThread::Globals for details. |
| 202 scoped_refptr<net::URLRequestContext> | 203 net::URLRequestContext* |
| 203 ConstructProxyScriptFetcherContext(IOThread::Globals* globals, | 204 ConstructProxyScriptFetcherContext(IOThread::Globals* globals, |
| 204 net::NetLog* net_log) { | 205 net::NetLog* net_log) { |
| 205 scoped_refptr<net::URLRequestContext> context( | 206 net::URLRequestContext* context = new URLRequestContextWithUserAgent; |
| 206 new URLRequestContextWithUserAgent); | |
| 207 context->set_net_log(net_log); | 207 context->set_net_log(net_log); |
| 208 context->set_host_resolver(globals->host_resolver.get()); | 208 context->set_host_resolver(globals->host_resolver.get()); |
| 209 context->set_cert_verifier(globals->cert_verifier.get()); | 209 context->set_cert_verifier(globals->cert_verifier.get()); |
| 210 context->set_transport_security_state( | 210 context->set_transport_security_state( |
| 211 globals->transport_security_state.get()); | 211 globals->transport_security_state.get()); |
| 212 context->set_http_auth_handler_factory( | 212 context->set_http_auth_handler_factory( |
| 213 globals->http_auth_handler_factory.get()); | 213 globals->http_auth_handler_factory.get()); |
| 214 context->set_proxy_service(globals->proxy_script_fetcher_proxy_service.get()); | 214 context->set_proxy_service(globals->proxy_script_fetcher_proxy_service.get()); |
| 215 context->set_http_transaction_factory( | 215 context->set_http_transaction_factory( |
| 216 globals->proxy_script_fetcher_http_transaction_factory.get()); | 216 globals->proxy_script_fetcher_http_transaction_factory.get()); |
| 217 context->set_ftp_transaction_factory( | 217 context->set_ftp_transaction_factory( |
| 218 globals->proxy_script_fetcher_ftp_transaction_factory.get()); | 218 globals->proxy_script_fetcher_ftp_transaction_factory.get()); |
| 219 context->set_cookie_store(globals->system_cookie_store.get()); | 219 context->set_cookie_store(globals->system_cookie_store.get()); |
| 220 context->set_server_bound_cert_service( | 220 context->set_server_bound_cert_service( |
| 221 globals->system_server_bound_cert_service.get()); | 221 globals->system_server_bound_cert_service.get()); |
| 222 context->set_network_delegate(globals->system_network_delegate.get()); | 222 context->set_network_delegate(globals->system_network_delegate.get()); |
| 223 // TODO(rtenneti): We should probably use HttpServerPropertiesManager for the | 223 // TODO(rtenneti): We should probably use HttpServerPropertiesManager for the |
| 224 // system URLRequestContext too. There's no reason this should be tied to a | 224 // system URLRequestContext too. There's no reason this should be tied to a |
| 225 // profile. | 225 // profile. |
| 226 return context; | 226 return context; |
| 227 } | 227 } |
| 228 | 228 |
| 229 scoped_refptr<net::URLRequestContext> | 229 net::URLRequestContext* |
| 230 ConstructSystemRequestContext(IOThread::Globals* globals, | 230 ConstructSystemRequestContext(IOThread::Globals* globals, |
| 231 net::NetLog* net_log) { | 231 net::NetLog* net_log) { |
| 232 scoped_refptr<net::URLRequestContext> context( | 232 net::URLRequestContext* context = new SystemURLRequestContext; |
| 233 new SystemURLRequestContext); | |
| 234 context->set_net_log(net_log); | 233 context->set_net_log(net_log); |
| 235 context->set_host_resolver(globals->host_resolver.get()); | 234 context->set_host_resolver(globals->host_resolver.get()); |
| 236 context->set_cert_verifier(globals->cert_verifier.get()); | 235 context->set_cert_verifier(globals->cert_verifier.get()); |
| 237 context->set_transport_security_state( | 236 context->set_transport_security_state( |
| 238 globals->transport_security_state.get()); | 237 globals->transport_security_state.get()); |
| 239 context->set_http_auth_handler_factory( | 238 context->set_http_auth_handler_factory( |
| 240 globals->http_auth_handler_factory.get()); | 239 globals->http_auth_handler_factory.get()); |
| 241 context->set_proxy_service(globals->system_proxy_service.get()); | 240 context->set_proxy_service(globals->system_proxy_service.get()); |
| 242 context->set_http_transaction_factory( | 241 context->set_http_transaction_factory( |
| 243 globals->system_http_transaction_factory.get()); | 242 globals->system_http_transaction_factory.get()); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 274 IOThread* io_thread) | 273 IOThread* io_thread) |
| 275 : io_thread_(io_thread), | 274 : io_thread_(io_thread), |
| 276 io_message_loop_proxy_( | 275 io_message_loop_proxy_( |
| 277 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO)) { | 276 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO)) { |
| 278 } | 277 } |
| 279 | 278 |
| 280 SystemURLRequestContextGetter::~SystemURLRequestContextGetter() {} | 279 SystemURLRequestContextGetter::~SystemURLRequestContextGetter() {} |
| 281 | 280 |
| 282 net::URLRequestContext* SystemURLRequestContextGetter::GetURLRequestContext() { | 281 net::URLRequestContext* SystemURLRequestContextGetter::GetURLRequestContext() { |
| 283 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 282 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 284 DCHECK(io_thread_->globals()->system_request_context); | 283 DCHECK(io_thread_->globals()->system_request_context.get()); |
| 285 | 284 |
| 286 return io_thread_->globals()->system_request_context; | 285 return io_thread_->globals()->system_request_context.get(); |
| 287 } | 286 } |
| 288 | 287 |
| 289 scoped_refptr<base::MessageLoopProxy> | 288 scoped_refptr<base::MessageLoopProxy> |
| 290 SystemURLRequestContextGetter::GetIOMessageLoopProxy() const { | 289 SystemURLRequestContextGetter::GetIOMessageLoopProxy() const { |
| 291 return io_message_loop_proxy_; | 290 return io_message_loop_proxy_; |
| 292 } | 291 } |
| 293 | 292 |
| 294 IOThread::Globals:: | 293 IOThread::Globals:: |
| 295 SystemRequestContextLeakChecker::SystemRequestContextLeakChecker( | 294 SystemRequestContextLeakChecker::SystemRequestContextLeakChecker( |
| 296 Globals* globals) | 295 Globals* globals) |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 | 448 |
| 450 globals_->throttler_manager.reset(new net::URLRequestThrottlerManager()); | 449 globals_->throttler_manager.reset(new net::URLRequestThrottlerManager()); |
| 451 // Always done in production, disabled only for unit tests. | 450 // Always done in production, disabled only for unit tests. |
| 452 globals_->throttler_manager->set_enable_thread_checks(true); | 451 globals_->throttler_manager->set_enable_thread_checks(true); |
| 453 if (CommandLine::ForCurrentProcess()->HasSwitch( | 452 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 454 switches::kDisableExtensionsHttpThrottling)) { | 453 switches::kDisableExtensionsHttpThrottling)) { |
| 455 globals_->throttler_manager->set_enforce_throttling(false); | 454 globals_->throttler_manager->set_enforce_throttling(false); |
| 456 } | 455 } |
| 457 globals_->throttler_manager->set_net_log(net_log_); | 456 globals_->throttler_manager->set_net_log(net_log_); |
| 458 | 457 |
| 459 globals_->proxy_script_fetcher_context = | 458 globals_->proxy_script_fetcher_context.reset( |
| 460 ConstructProxyScriptFetcherContext(globals_, net_log_); | 459 ConstructProxyScriptFetcherContext(globals_, net_log_)); |
| 461 | 460 |
| 462 sdch_manager_ = new net::SdchManager(); | 461 sdch_manager_ = new net::SdchManager(); |
| 463 | 462 |
| 464 // InitSystemRequestContext turns right around and posts a task back | 463 // InitSystemRequestContext turns right around and posts a task back |
| 465 // to the IO thread, so we can't let it run until we know the IO | 464 // to the IO thread, so we can't let it run until we know the IO |
| 466 // thread has started. | 465 // thread has started. |
| 467 // | 466 // |
| 468 // Note that since we are at BrowserThread::Init time, the UI thread | 467 // Note that since we are at BrowserThread::Init time, the UI thread |
| 469 // is blocked waiting for the thread to start. Therefore, posting | 468 // is blocked waiting for the thread to start. Therefore, posting |
| 470 // this task to the main thread's message loop here is guaranteed to | 469 // this task to the main thread's message loop here is guaranteed to |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 595 | 594 |
| 596 void IOThread::InitSystemRequestContextOnIOThread() { | 595 void IOThread::InitSystemRequestContextOnIOThread() { |
| 597 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 596 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 598 DCHECK(!globals_->system_proxy_service.get()); | 597 DCHECK(!globals_->system_proxy_service.get()); |
| 599 DCHECK(system_proxy_config_service_.get()); | 598 DCHECK(system_proxy_config_service_.get()); |
| 600 | 599 |
| 601 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 600 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
| 602 globals_->system_proxy_service.reset( | 601 globals_->system_proxy_service.reset( |
| 603 ProxyServiceFactory::CreateProxyService( | 602 ProxyServiceFactory::CreateProxyService( |
| 604 net_log_, | 603 net_log_, |
| 605 globals_->proxy_script_fetcher_context, | 604 globals_->proxy_script_fetcher_context.get(), |
| 606 system_proxy_config_service_.release(), | 605 system_proxy_config_service_.release(), |
| 607 command_line)); | 606 command_line)); |
| 608 net::HttpNetworkSession::Params system_params; | 607 net::HttpNetworkSession::Params system_params; |
| 609 system_params.host_resolver = globals_->host_resolver.get(); | 608 system_params.host_resolver = globals_->host_resolver.get(); |
| 610 system_params.cert_verifier = globals_->cert_verifier.get(); | 609 system_params.cert_verifier = globals_->cert_verifier.get(); |
| 611 system_params.server_bound_cert_service = | 610 system_params.server_bound_cert_service = |
| 612 globals_->system_server_bound_cert_service.get(); | 611 globals_->system_server_bound_cert_service.get(); |
| 613 system_params.transport_security_state = | 612 system_params.transport_security_state = |
| 614 globals_->transport_security_state.get(); | 613 globals_->transport_security_state.get(); |
| 615 system_params.ssl_host_info_factory = NULL; | 614 system_params.ssl_host_info_factory = NULL; |
| 616 system_params.proxy_service = globals_->system_proxy_service.get(); | 615 system_params.proxy_service = globals_->system_proxy_service.get(); |
| 617 system_params.ssl_config_service = globals_->ssl_config_service.get(); | 616 system_params.ssl_config_service = globals_->ssl_config_service.get(); |
| 618 system_params.http_auth_handler_factory = | 617 system_params.http_auth_handler_factory = |
| 619 globals_->http_auth_handler_factory.get(); | 618 globals_->http_auth_handler_factory.get(); |
| 620 system_params.http_server_properties = globals_->http_server_properties.get(); | 619 system_params.http_server_properties = globals_->http_server_properties.get(); |
| 621 system_params.network_delegate = globals_->system_network_delegate.get(); | 620 system_params.network_delegate = globals_->system_network_delegate.get(); |
| 622 system_params.net_log = net_log_; | 621 system_params.net_log = net_log_; |
| 623 globals_->system_http_transaction_factory.reset( | 622 globals_->system_http_transaction_factory.reset( |
| 624 new net::HttpNetworkLayer( | 623 new net::HttpNetworkLayer( |
| 625 new net::HttpNetworkSession(system_params))); | 624 new net::HttpNetworkSession(system_params))); |
| 626 globals_->system_ftp_transaction_factory.reset( | 625 globals_->system_ftp_transaction_factory.reset( |
| 627 new net::FtpNetworkLayer(globals_->host_resolver.get())); | 626 new net::FtpNetworkLayer(globals_->host_resolver.get())); |
| 628 globals_->system_request_context = | 627 globals_->system_request_context.reset( |
| 629 ConstructSystemRequestContext(globals_, net_log_); | 628 ConstructSystemRequestContext(globals_, net_log_)); |
| 630 | 629 |
| 631 sdch_manager_->set_sdch_fetcher( | 630 sdch_manager_->set_sdch_fetcher( |
| 632 new SdchDictionaryFetcher(system_url_request_context_getter_.get())); | 631 new SdchDictionaryFetcher(system_url_request_context_getter_.get())); |
| 633 } | 632 } |
| OLD | NEW |