Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Side by Side Diff: chrome/browser/io_thread.cc

Issue 11415219: Move a number of static variables SPDY to HttpNetworkSession::Params. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Moar cleanup Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 #include "net/base/host_resolver.h" 46 #include "net/base/host_resolver.h"
47 #include "net/base/mapped_host_resolver.h" 47 #include "net/base/mapped_host_resolver.h"
48 #include "net/base/net_util.h" 48 #include "net/base/net_util.h"
49 #include "net/base/sdch_manager.h" 49 #include "net/base/sdch_manager.h"
50 #include "net/base/server_bound_cert_service.h" 50 #include "net/base/server_bound_cert_service.h"
51 #include "net/cookies/cookie_monster.h" 51 #include "net/cookies/cookie_monster.h"
52 #include "net/ftp/ftp_network_layer.h" 52 #include "net/ftp/ftp_network_layer.h"
53 #include "net/http/http_auth_filter.h" 53 #include "net/http/http_auth_filter.h"
54 #include "net/http/http_auth_handler_factory.h" 54 #include "net/http/http_auth_handler_factory.h"
55 #include "net/http/http_network_layer.h" 55 #include "net/http/http_network_layer.h"
56 #include "net/http/http_network_session.h"
willchan no longer on Chromium 2012/12/01 20:49:13 ?
Ryan Hamilton 2012/12/01 23:02:25 Add back. (Odd)
57 #include "net/http/http_server_properties_impl.h" 56 #include "net/http/http_server_properties_impl.h"
58 #include "net/proxy/proxy_config_service.h" 57 #include "net/proxy/proxy_config_service.h"
59 #include "net/proxy/proxy_script_fetcher_impl.h" 58 #include "net/proxy/proxy_script_fetcher_impl.h"
60 #include "net/proxy/proxy_service.h" 59 #include "net/proxy/proxy_service.h"
61 #include "net/spdy/spdy_session.h" 60 #include "net/spdy/spdy_session.h"
62 #include "net/url_request/url_fetcher.h" 61 #include "net/url_request/url_fetcher.h"
63 #include "net/url_request/url_request_throttler_manager.h" 62 #include "net/url_request/url_request_throttler_manager.h"
64 #include "net/websockets/websocket_job.h" 63 #include "net/websockets/websocket_job.h"
65 64
66 #if defined(ENABLE_CONFIGURATION_POLICY) 65 #if defined(ENABLE_CONFIGURATION_POLICY)
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 params->transport_security_state = globals.transport_security_state.get(); 231 params->transport_security_state = globals.transport_security_state.get();
233 params->ssl_config_service = globals.ssl_config_service.get(); 232 params->ssl_config_service = globals.ssl_config_service.get();
234 params->http_auth_handler_factory = globals.http_auth_handler_factory.get(); 233 params->http_auth_handler_factory = globals.http_auth_handler_factory.get();
235 params->http_server_properties = globals.http_server_properties.get(); 234 params->http_server_properties = globals.http_server_properties.get();
236 params->network_delegate = globals.system_network_delegate.get(); 235 params->network_delegate = globals.system_network_delegate.get();
237 params->host_mapping_rules = globals.host_mapping_rules.get(); 236 params->host_mapping_rules = globals.host_mapping_rules.get();
238 params->ignore_certificate_errors = globals.ignore_certificate_errors; 237 params->ignore_certificate_errors = globals.ignore_certificate_errors;
239 params->http_pipelining_enabled = globals.http_pipelining_enabled; 238 params->http_pipelining_enabled = globals.http_pipelining_enabled;
240 params->testing_fixed_http_port = globals.testing_fixed_http_port; 239 params->testing_fixed_http_port = globals.testing_fixed_http_port;
241 params->testing_fixed_https_port = globals.testing_fixed_https_port; 240 params->testing_fixed_https_port = globals.testing_fixed_https_port;
241 params->max_spdy_sessions_per_domain = globals.max_spdy_sessions_per_domain;
242 params->spdy_initial_max_concurrent_streams =
243 globals.initial_max_spdy_concurrent_streams;
244 params->spdy_max_concurrent_streams_limit =
245 globals.max_spdy_concurrent_streams_limit;
246
247 if (globals.force_spdy_single_domain != IOThread::DEFAULT)
248 params->force_spdy_single_domain = globals.force_spdy_single_domain;
249 if (globals.enable_spdy_ip_pooling != IOThread::DEFAULT)
250 params->enable_spdy_ip_pooling = globals.enable_spdy_ip_pooling;
251 if (globals.enable_spdy_credential_frames != IOThread::DEFAULT) {
252 params->enable_spdy_credential_frames =
253 globals.enable_spdy_credential_frames;
254 }
255 if (globals.enable_spdy_compression != IOThread::DEFAULT)
256 params->enable_spdy_compression = globals.enable_spdy_compression;
257 if (globals.enable_spdy_ping_based_connection_checking != IOThread::DEFAULT) {
258 params->enable_spdy_ping_based_connection_checking =
259 globals.enable_spdy_ping_based_connection_checking;
260 }
261 if (globals.spdy_default_protocol != net::kProtoUnknown)
262 params->spdy_default_protocol = globals.spdy_default_protocol;
263 }
264
265 int GetSwitchValueAsInt(const CommandLine& command_line,
266 const std::string& switch_name) {
267 int value;
268 if (!base::StringToInt(command_line.GetSwitchValueASCII(switch_name),
269 &value)) {
270 return 0;
271 }
272 return value;
242 } 273 }
243 274
244 } // namespace 275 } // namespace
245 276
246 class IOThread::LoggingNetworkChangeObserver 277 class IOThread::LoggingNetworkChangeObserver
247 : public net::NetworkChangeNotifier::IPAddressObserver, 278 : public net::NetworkChangeNotifier::IPAddressObserver,
248 public net::NetworkChangeNotifier::ConnectionTypeObserver { 279 public net::NetworkChangeNotifier::ConnectionTypeObserver {
249 public: 280 public:
250 // |net_log| must remain valid throughout our lifetime. 281 // |net_log| must remain valid throughout our lifetime.
251 explicit LoggingNetworkChangeObserver(net::NetLog* net_log) 282 explicit LoggingNetworkChangeObserver(net::NetLog* net_log)
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 if (globals_->system_request_context.get()) 366 if (globals_->system_request_context.get())
336 globals_->system_request_context->AssertNoURLRequests(); 367 globals_->system_request_context->AssertNoURLRequests();
337 } 368 }
338 369
339 IOThread::Globals::Globals() 370 IOThread::Globals::Globals()
340 : ALLOW_THIS_IN_INITIALIZER_LIST( 371 : ALLOW_THIS_IN_INITIALIZER_LIST(
341 system_request_context_leak_checker(this)), 372 system_request_context_leak_checker(this)),
342 ignore_certificate_errors(false), 373 ignore_certificate_errors(false),
343 http_pipelining_enabled(false), 374 http_pipelining_enabled(false),
344 testing_fixed_http_port(0), 375 testing_fixed_http_port(0),
345 testing_fixed_https_port(0) {} 376 testing_fixed_https_port(0),
377 max_spdy_sessions_per_domain(0),
378 initial_max_spdy_concurrent_streams(0),
379 max_spdy_concurrent_streams_limit(0),
380 enable_spdy_ip_pooling(DEFAULT),
381 enable_spdy_credential_frames(DEFAULT),
382 enable_spdy_compression(DEFAULT),
383 enable_spdy_ping_based_connection_checking(DEFAULT),
384 spdy_default_protocol(net::kProtoUnknown) {}
346 385
347 IOThread::Globals::~Globals() {} 386 IOThread::Globals::~Globals() {}
348 387
349 // |local_state| is passed in explicitly in order to (1) reduce implicit 388 // |local_state| is passed in explicitly in order to (1) reduce implicit
350 // dependencies and (2) make IOThread more flexible for testing. 389 // dependencies and (2) make IOThread more flexible for testing.
351 IOThread::IOThread( 390 IOThread::IOThread(
352 PrefService* local_state, 391 PrefService* local_state,
353 policy::PolicyService* policy_service, 392 policy::PolicyService* policy_service,
354 ChromeNetLog* net_log, 393 ChromeNetLog* net_log,
355 extensions::EventRouterForwarder* extension_event_router_forwarder) 394 extensions::EventRouterForwarder* extension_event_router_forwarder)
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 new BasicHttpUserAgentSettings(EmptyString(), EmptyString())); 530 new BasicHttpUserAgentSettings(EmptyString(), EmptyString()));
492 if (command_line.HasSwitch(switches::kHostRules)) { 531 if (command_line.HasSwitch(switches::kHostRules)) {
493 globals_->host_mapping_rules->SetRulesFromString( 532 globals_->host_mapping_rules->SetRulesFromString(
494 command_line.GetSwitchValueASCII(switches::kHostRules)); 533 command_line.GetSwitchValueASCII(switches::kHostRules));
495 } 534 }
496 if (command_line.HasSwitch(switches::kIgnoreCertificateErrors)) 535 if (command_line.HasSwitch(switches::kIgnoreCertificateErrors))
497 globals_->ignore_certificate_errors = true; 536 globals_->ignore_certificate_errors = true;
498 if (command_line.HasSwitch(switches::kEnableHttpPipelining)) 537 if (command_line.HasSwitch(switches::kEnableHttpPipelining))
499 globals_->http_pipelining_enabled = true; 538 globals_->http_pipelining_enabled = true;
500 if (command_line.HasSwitch(switches::kTestingFixedHttpPort)) { 539 if (command_line.HasSwitch(switches::kTestingFixedHttpPort)) {
501 int value; 540 globals_->testing_fixed_http_port =
502 base::StringToInt( 541 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpPort);
503 command_line.GetSwitchValueASCII(
504 switches::kTestingFixedHttpPort),
505 &value);
506 globals_->testing_fixed_http_port = value;
507 } 542 }
508 if (command_line.HasSwitch(switches::kTestingFixedHttpsPort)) { 543 if (command_line.HasSwitch(switches::kTestingFixedHttpsPort)) {
509 int value; 544 globals_->testing_fixed_https_port =
510 base::StringToInt( 545 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpsPort);
511 command_line.GetSwitchValueASCII(
512 switches::kTestingFixedHttpsPort),
513 &value);
514 globals_->testing_fixed_https_port = value;
515 } 546 }
516 547
517 net::HttpNetworkSession::Params session_params; 548 net::HttpNetworkSession::Params session_params;
518 InitializeNetworkSessionParams(*globals_, &session_params); 549 InitializeNetworkSessionParams(*globals_, &session_params);
519 session_params.net_log = net_log_; 550 session_params.net_log = net_log_;
520 session_params.proxy_service = 551 session_params.proxy_service =
521 globals_->proxy_script_fetcher_proxy_service.get(); 552 globals_->proxy_script_fetcher_proxy_service.get();
522 553
523 InitializeNetworkOptions(command_line); 554 InitializeNetworkOptions(command_line);
524 555
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 network_change_observer_.reset(); 618 network_change_observer_.reset();
588 619
589 system_proxy_config_service_.reset(); 620 system_proxy_config_service_.reset();
590 621
591 delete globals_; 622 delete globals_;
592 globals_ = NULL; 623 globals_ = NULL;
593 624
594 base::debug::LeakTracker<SystemURLRequestContextGetter>::CheckForLeaks(); 625 base::debug::LeakTracker<SystemURLRequestContextGetter>::CheckForLeaks();
595 } 626 }
596 627
597 void IOThread::InitializeNetworkOptions( 628 void IOThread::InitializeNetworkOptions(const CommandLine& command_line) {
598 const CommandLine& parsed_command_line) { 629 if (command_line.HasSwitch(switches::kEnableFileCookies)) {
599 if (parsed_command_line.HasSwitch(switches::kEnableFileCookies)) {
600 // Enable cookie storage for file:// URLs. Must do this before the first 630 // Enable cookie storage for file:// URLs. Must do this before the first
601 // Profile (and therefore the first CookieMonster) is created. 631 // Profile (and therefore the first CookieMonster) is created.
602 net::CookieMonster::EnableFileScheme(); 632 net::CookieMonster::EnableFileScheme();
603 } 633 }
604 634
605 // If "spdy.disabled" preference is controlled via policy, then skip use-spdy 635 // If "spdy.disabled" preference is controlled via policy, then skip use-spdy
606 // command line flags. 636 // command line flags.
607 if (is_spdy_disabled_by_policy_) 637 if (is_spdy_disabled_by_policy_)
608 return; 638 return;
609 639
610 if (parsed_command_line.HasSwitch(switches::kEnableIPPooling)) 640 if (command_line.HasSwitch(switches::kMaxSpdySessionsPerDomain)) {
611 net::SpdySessionPool::enable_ip_pooling(true); 641 globals_->max_spdy_sessions_per_domain =
612 642 GetSwitchValueAsInt(command_line, switches::kMaxSpdySessionsPerDomain);
613 if (parsed_command_line.HasSwitch(switches::kDisableIPPooling))
614 net::SpdySessionPool::enable_ip_pooling(false);
615
616 if (parsed_command_line.HasSwitch(switches::kEnableSpdyCredentialFrames))
617 net::SpdySession::set_enable_credential_frames(true);
618 if (parsed_command_line.HasSwitch(switches::kMaxSpdySessionsPerDomain)) {
619 int value;
620 base::StringToInt(
621 parsed_command_line.GetSwitchValueASCII(
622 switches::kMaxSpdySessionsPerDomain),
623 &value);
624 net::SpdySessionPool::set_max_sessions_per_domain(value);
625 } 643 }
626 644
627 if (parsed_command_line.HasSwitch(switches::kEnableWebSocketOverSpdy)) { 645 if (command_line.HasSwitch(switches::kEnableIPPooling))
646 globals_->enable_spdy_ip_pooling = TRUE;
647
648 if (command_line.HasSwitch(switches::kDisableIPPooling))
649 globals_->enable_spdy_ip_pooling = FALSE;
650
651 if (command_line.HasSwitch(switches::kEnableSpdyCredentialFrames))
652 globals_->enable_spdy_credential_frames = TRUE;
653
654 if (command_line.HasSwitch(switches::kEnableWebSocketOverSpdy)) {
628 // Enable WebSocket over SPDY. 655 // Enable WebSocket over SPDY.
629 net::WebSocketJob::set_websocket_over_spdy_enabled(true); 656 net::WebSocketJob::set_websocket_over_spdy_enabled(true);
630 } 657 }
631 658
632 bool used_spdy_switch = false; 659 bool used_spdy_switch = false;
633 if (parsed_command_line.HasSwitch(switches::kUseSpdy)) { 660 if (command_line.HasSwitch(switches::kUseSpdy)) {
634 std::string spdy_mode = 661 std::string spdy_mode =
635 parsed_command_line.GetSwitchValueASCII(switches::kUseSpdy); 662 command_line.GetSwitchValueASCII(switches::kUseSpdy);
636 EnableSpdy(spdy_mode); 663 EnableSpdy(spdy_mode);
637 used_spdy_switch = true; 664 used_spdy_switch = true;
638 } 665 }
639 if (parsed_command_line.HasSwitch(switches::kEnableSpdy3)) { 666 if (command_line.HasSwitch(switches::kEnableSpdy3)) {
640 net::HttpStreamFactory::EnableNpnSpdy3(); 667 net::HttpStreamFactory::EnableNpnSpdy3();
641 used_spdy_switch = true; 668 used_spdy_switch = true;
642 } else if (parsed_command_line.HasSwitch(switches::kEnableNpn)) { 669 } else if (command_line.HasSwitch(switches::kEnableNpn)) {
643 net::HttpStreamFactory::EnableNpnSpdy(); 670 net::HttpStreamFactory::EnableNpnSpdy();
644 used_spdy_switch = true; 671 used_spdy_switch = true;
645 } else if (parsed_command_line.HasSwitch(switches::kEnableNpnHttpOnly)) { 672 } else if (command_line.HasSwitch(switches::kEnableNpnHttpOnly)) {
646 net::HttpStreamFactory::EnableNpnHttpOnly(); 673 net::HttpStreamFactory::EnableNpnHttpOnly();
647 used_spdy_switch = true; 674 used_spdy_switch = true;
648 } 675 }
649 if (!used_spdy_switch) { 676 if (!used_spdy_switch) {
650 net::HttpStreamFactory::EnableNpnSpdy3(); 677 net::HttpStreamFactory::EnableNpnSpdy3();
651 } 678 }
679 if (command_line.HasSwitch(switches::kMaxSpdyConcurrentStreams)) {
680 globals_->max_spdy_concurrent_streams_limit =
681 GetSwitchValueAsInt(command_line, switches::kMaxSpdyConcurrentStreams);
682 }
652 } 683 }
653 684
654 void IOThread::EnableSpdy(const std::string& mode) { 685 void IOThread::EnableSpdy(const std::string& mode) {
655 static const char kOff[] = "off"; 686 static const char kOff[] = "off";
656 static const char kSSL[] = "ssl"; 687 static const char kSSL[] = "ssl";
657 static const char kDisableSSL[] = "no-ssl"; 688 static const char kDisableSSL[] = "no-ssl";
658 static const char kDisablePing[] = "no-ping"; 689 static const char kDisablePing[] = "no-ping";
659 static const char kExclude[] = "exclude"; // Hosts to exclude 690 static const char kExclude[] = "exclude"; // Hosts to exclude
660 static const char kDisableCompression[] = "no-compress"; 691 static const char kDisableCompression[] = "no-compress";
661 static const char kDisableAltProtocols[] = "no-alt-protocols"; 692 static const char kDisableAltProtocols[] = "no-alt-protocols";
662 static const char kForceAltProtocols[] = "force-alt-protocols"; 693 static const char kForceAltProtocols[] = "force-alt-protocols";
663 static const char kSingleDomain[] = "single-domain"; 694 static const char kSingleDomain[] = "single-domain";
664 695
665 static const char kInitialMaxConcurrentStreams[] = "init-max-streams"; 696 static const char kInitialMaxConcurrentStreams[] = "init-max-streams";
666 697
667 std::vector<std::string> spdy_options; 698 std::vector<std::string> spdy_options;
668 base::SplitString(mode, ',', &spdy_options); 699 base::SplitString(mode, ',', &spdy_options);
669 700
670 for (std::vector<std::string>::iterator it = spdy_options.begin(); 701 for (std::vector<std::string>::iterator it = spdy_options.begin();
671 it != spdy_options.end(); ++it) { 702 it != spdy_options.end(); ++it) {
672 const std::string& element = *it; 703 const std::string& element = *it;
673 std::vector<std::string> name_value; 704 std::vector<std::string> name_value;
674 base::SplitString(element, '=', &name_value); 705 base::SplitString(element, '=', &name_value);
675 const std::string& option = name_value.size() > 0 ? name_value[0] : ""; 706 const std::string& option = name_value.size() > 0 ? name_value[0] : "";
676 const std::string value = name_value.size() > 1 ? name_value[1] : ""; 707 const std::string value = name_value.size() > 1 ? name_value[1] : "";
677 708
678 if (option == kOff) { 709 if (option == kOff) {
679 net::HttpStreamFactory::set_spdy_enabled(false); 710 net::HttpStreamFactory::set_spdy_enabled(false);
680 } else if (option == kDisableSSL) { 711 } else if (option == kDisableSSL) {
681 net::SpdySession::set_default_protocol(net::kProtoSPDY2); 712 globals_->spdy_default_protocol = net::kProtoSPDY2;
682 net::HttpStreamFactory::set_force_spdy_over_ssl(false); 713 net::HttpStreamFactory::set_force_spdy_over_ssl(false);
683 net::HttpStreamFactory::set_force_spdy_always(true); 714 net::HttpStreamFactory::set_force_spdy_always(true);
684 } else if (option == kSSL) { 715 } else if (option == kSSL) {
685 net::SpdySession::set_default_protocol(net::kProtoSPDY2); 716 globals_->spdy_default_protocol = net::kProtoSPDY2;
686 net::HttpStreamFactory::set_force_spdy_over_ssl(true); 717 net::HttpStreamFactory::set_force_spdy_over_ssl(true);
687 net::HttpStreamFactory::set_force_spdy_always(true); 718 net::HttpStreamFactory::set_force_spdy_always(true);
688 } else if (option == kDisablePing) { 719 } else if (option == kDisablePing) {
689 net::SpdySession::set_enable_ping_based_connection_checking(false); 720 globals_->enable_spdy_ping_based_connection_checking = FALSE;
690 } else if (option == kExclude) { 721 } else if (option == kExclude) {
691 net::HttpStreamFactory::add_forced_spdy_exclusion(value); 722 net::HttpStreamFactory::add_forced_spdy_exclusion(value);
692 } else if (option == kDisableCompression) { 723 } else if (option == kDisableCompression) {
693 net::BufferedSpdyFramer::set_enable_compression_default(false); 724 globals_->enable_spdy_compression = FALSE;
694 } else if (option == kDisableAltProtocols) { 725 } else if (option == kDisableAltProtocols) {
695 net::HttpStreamFactory::set_use_alternate_protocols(false); 726 net::HttpStreamFactory::set_use_alternate_protocols(false);
696 } else if (option == kForceAltProtocols) { 727 } else if (option == kForceAltProtocols) {
697 net::PortAlternateProtocolPair pair; 728 net::PortAlternateProtocolPair pair;
698 pair.port = 443; 729 pair.port = 443;
699 pair.protocol = net::NPN_SPDY_2; 730 pair.protocol = net::NPN_SPDY_2;
700 net::HttpServerPropertiesImpl::ForceAlternateProtocol(pair); 731 net::HttpServerPropertiesImpl::ForceAlternateProtocol(pair);
701 } else if (option == kSingleDomain) { 732 } else if (option == kSingleDomain) {
702 DLOG(INFO) << "FORCING SINGLE DOMAIN"; 733 DLOG(INFO) << "FORCING SINGLE DOMAIN";
703 net::SpdySessionPool::ForceSingleDomain(); 734 globals_->force_spdy_single_domain = TRUE;
704 } else if (option == kInitialMaxConcurrentStreams) { 735 } else if (option == kInitialMaxConcurrentStreams) {
705 int streams; 736 int streams;
706 if (base::StringToInt(value, &streams) && streams > 0) 737 if (base::StringToInt(value, &streams))
707 net::SpdySession::set_init_max_concurrent_streams(streams); 738 globals_->initial_max_spdy_concurrent_streams = streams;
708 } else if (option.empty() && it == spdy_options.begin()) { 739 } else if (option.empty() && it == spdy_options.begin()) {
709 continue; 740 continue;
710 } else { 741 } else {
711 LOG(DFATAL) << "Unrecognized spdy option: " << option; 742 LOG(DFATAL) << "Unrecognized spdy option: " << option;
712 } 743 }
713 } 744 }
714 } 745 }
715 746
716 // static 747 // static
717 void IOThread::RegisterPrefs(PrefService* local_state) { 748 void IOThread::RegisterPrefs(PrefService* local_state) {
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
844 globals_->system_request_context.reset( 875 globals_->system_request_context.reset(
845 ConstructSystemRequestContext(globals_, net_log_)); 876 ConstructSystemRequestContext(globals_, net_log_));
846 877
847 sdch_manager_->set_sdch_fetcher( 878 sdch_manager_->set_sdch_fetcher(
848 new SdchDictionaryFetcher(system_url_request_context_getter_.get())); 879 new SdchDictionaryFetcher(system_url_request_context_getter_.get()));
849 } 880 }
850 881
851 void IOThread::UpdateDnsClientEnabled() { 882 void IOThread::UpdateDnsClientEnabled() {
852 globals()->host_resolver->SetDnsClientEnabled(*dns_client_enabled_); 883 globals()->host_resolver->SetDnsClientEnabled(*dns_client_enabled_);
853 } 884 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698