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

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

Issue 455623003: stale-while-revalidate experimental implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove --disable-stale-while-revalidate flag and strengthen must-revalidate. Created 6 years, 3 months 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
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/base64.h" 9 #include "base/base64.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 // operators to do feature detection rather than UA-sniffing. As such, this 132 // operators to do feature detection rather than UA-sniffing. As such, this
133 // trial runs continuously. 133 // trial runs continuously.
134 // * A SPDY/4 experiment, for SPDY/4 (aka HTTP/2) vs SPDY/3.1 comparisons and 134 // * A SPDY/4 experiment, for SPDY/4 (aka HTTP/2) vs SPDY/3.1 comparisons and
135 // eventual SPDY/4 deployment. 135 // eventual SPDY/4 deployment.
136 const char kSpdyFieldTrialName[] = "SPDY"; 136 const char kSpdyFieldTrialName[] = "SPDY";
137 const char kSpdyFieldTrialHoldbackGroupName[] = "SpdyDisabled"; 137 const char kSpdyFieldTrialHoldbackGroupName[] = "SpdyDisabled";
138 const char kSpdyFieldTrialHoldbackControlGroupName[] = "Control"; 138 const char kSpdyFieldTrialHoldbackControlGroupName[] = "Control";
139 const char kSpdyFieldTrialSpdy4GroupName[] = "Spdy4Enabled"; 139 const char kSpdyFieldTrialSpdy4GroupName[] = "Spdy4Enabled";
140 const char kSpdyFieldTrialSpdy4ControlGroupName[] = "Spdy4Control"; 140 const char kSpdyFieldTrialSpdy4ControlGroupName[] = "Spdy4Control";
141 141
142 // Field trial for Cache-Control: stale-while-revalidate directive.
143 const char kStaleWhileRevalidateFieldTrialName[] = "StaleWhileRevalidate";
144
142 #if defined(OS_MACOSX) && !defined(OS_IOS) 145 #if defined(OS_MACOSX) && !defined(OS_IOS)
143 void ObserveKeychainEvents() { 146 void ObserveKeychainEvents() {
144 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 147 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
145 net::CertDatabase::GetInstance()->SetMessageLoopForKeychainEvents(); 148 net::CertDatabase::GetInstance()->SetMessageLoopForKeychainEvents();
146 } 149 }
147 #endif 150 #endif
148 151
149 // Used for the "system" URLRequestContext. 152 // Used for the "system" URLRequestContext.
150 class SystemURLRequestContext : public net::URLRequestContext { 153 class SystemURLRequestContext : public net::URLRequestContext {
151 public: 154 public:
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 IOThread::Globals:: 424 IOThread::Globals::
422 SystemRequestContextLeakChecker::~SystemRequestContextLeakChecker() { 425 SystemRequestContextLeakChecker::~SystemRequestContextLeakChecker() {
423 if (globals_->system_request_context.get()) 426 if (globals_->system_request_context.get())
424 globals_->system_request_context->AssertNoURLRequests(); 427 globals_->system_request_context->AssertNoURLRequests();
425 } 428 }
426 429
427 IOThread::Globals::Globals() 430 IOThread::Globals::Globals()
428 : system_request_context_leak_checker(this), 431 : system_request_context_leak_checker(this),
429 enable_ssl_connect_job_waiting(false), 432 enable_ssl_connect_job_waiting(false),
430 ignore_certificate_errors(false), 433 ignore_certificate_errors(false),
434 use_stale_while_revalidate(false),
431 testing_fixed_http_port(0), 435 testing_fixed_http_port(0),
432 testing_fixed_https_port(0), 436 testing_fixed_https_port(0),
433 enable_user_alternate_protocol_ports(false) { 437 enable_user_alternate_protocol_ports(false) {
434 } 438 }
435 439
436 IOThread::Globals::~Globals() {} 440 IOThread::Globals::~Globals() {}
437 441
438 // |local_state| is passed in explicitly in order to (1) reduce implicit 442 // |local_state| is passed in explicitly in order to (1) reduce implicit
439 // dependencies and (2) make IOThread more flexible for testing. 443 // dependencies and (2) make IOThread more flexible for testing.
440 IOThread::IOThread( 444 IOThread::IOThread(
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 if (command_line.HasSwitch(switches::kHostRules)) { 698 if (command_line.HasSwitch(switches::kHostRules)) {
695 TRACE_EVENT_BEGIN0("startup", "IOThread::InitAsync:SetRulesFromString"); 699 TRACE_EVENT_BEGIN0("startup", "IOThread::InitAsync:SetRulesFromString");
696 globals_->host_mapping_rules->SetRulesFromString( 700 globals_->host_mapping_rules->SetRulesFromString(
697 command_line.GetSwitchValueASCII(switches::kHostRules)); 701 command_line.GetSwitchValueASCII(switches::kHostRules));
698 TRACE_EVENT_END0("startup", "IOThread::InitAsync:SetRulesFromString"); 702 TRACE_EVENT_END0("startup", "IOThread::InitAsync:SetRulesFromString");
699 } 703 }
700 if (command_line.HasSwitch(switches::kEnableSSLConnectJobWaiting)) 704 if (command_line.HasSwitch(switches::kEnableSSLConnectJobWaiting))
701 globals_->enable_ssl_connect_job_waiting = true; 705 globals_->enable_ssl_connect_job_waiting = true;
702 if (command_line.HasSwitch(switches::kIgnoreCertificateErrors)) 706 if (command_line.HasSwitch(switches::kIgnoreCertificateErrors))
703 globals_->ignore_certificate_errors = true; 707 globals_->ignore_certificate_errors = true;
708 if (command_line.HasSwitch(switches::kEnableStaleWhileRevalidate))
709 globals_->use_stale_while_revalidate = true;
710 if (base::FieldTrialList::FindFullName(kStaleWhileRevalidateFieldTrialName) ==
711 "Enabled")
712 globals_->use_stale_while_revalidate = true;
704 if (command_line.HasSwitch(switches::kTestingFixedHttpPort)) { 713 if (command_line.HasSwitch(switches::kTestingFixedHttpPort)) {
705 globals_->testing_fixed_http_port = 714 globals_->testing_fixed_http_port =
706 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpPort); 715 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpPort);
707 } 716 }
708 if (command_line.HasSwitch(switches::kTestingFixedHttpsPort)) { 717 if (command_line.HasSwitch(switches::kTestingFixedHttpsPort)) {
709 globals_->testing_fixed_https_port = 718 globals_->testing_fixed_https_port =
710 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpsPort); 719 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpsPort);
711 } 720 }
712 ConfigureQuic(command_line); 721 ConfigureQuic(command_line);
713 if (command_line.HasSwitch( 722 if (command_line.HasSwitch(
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
1011 params->transport_security_state = globals.transport_security_state.get(); 1020 params->transport_security_state = globals.transport_security_state.get();
1012 params->ssl_config_service = globals.ssl_config_service.get(); 1021 params->ssl_config_service = globals.ssl_config_service.get();
1013 params->http_auth_handler_factory = globals.http_auth_handler_factory.get(); 1022 params->http_auth_handler_factory = globals.http_auth_handler_factory.get();
1014 params->http_server_properties = 1023 params->http_server_properties =
1015 globals.http_server_properties->GetWeakPtr(); 1024 globals.http_server_properties->GetWeakPtr();
1016 params->network_delegate = globals.system_network_delegate.get(); 1025 params->network_delegate = globals.system_network_delegate.get();
1017 params->host_mapping_rules = globals.host_mapping_rules.get(); 1026 params->host_mapping_rules = globals.host_mapping_rules.get();
1018 params->enable_ssl_connect_job_waiting = 1027 params->enable_ssl_connect_job_waiting =
1019 globals.enable_ssl_connect_job_waiting; 1028 globals.enable_ssl_connect_job_waiting;
1020 params->ignore_certificate_errors = globals.ignore_certificate_errors; 1029 params->ignore_certificate_errors = globals.ignore_certificate_errors;
1030 params->use_stale_while_revalidate = globals.use_stale_while_revalidate;
1021 params->testing_fixed_http_port = globals.testing_fixed_http_port; 1031 params->testing_fixed_http_port = globals.testing_fixed_http_port;
1022 params->testing_fixed_https_port = globals.testing_fixed_https_port; 1032 params->testing_fixed_https_port = globals.testing_fixed_https_port;
1023 1033
1024 globals.initial_max_spdy_concurrent_streams.CopyToIfSet( 1034 globals.initial_max_spdy_concurrent_streams.CopyToIfSet(
1025 &params->spdy_initial_max_concurrent_streams); 1035 &params->spdy_initial_max_concurrent_streams);
1026 globals.force_spdy_single_domain.CopyToIfSet( 1036 globals.force_spdy_single_domain.CopyToIfSet(
1027 &params->force_spdy_single_domain); 1037 &params->force_spdy_single_domain);
1028 globals.enable_spdy_compression.CopyToIfSet( 1038 globals.enable_spdy_compression.CopyToIfSet(
1029 &params->enable_spdy_compression); 1039 &params->enable_spdy_compression);
1030 globals.enable_spdy_ping_based_connection_checking.CopyToIfSet( 1040 globals.enable_spdy_ping_based_connection_checking.CopyToIfSet(
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
1392 net::QuicVersionVector supported_versions = net::QuicSupportedVersions(); 1402 net::QuicVersionVector supported_versions = net::QuicSupportedVersions();
1393 for (size_t i = 0; i < supported_versions.size(); ++i) { 1403 for (size_t i = 0; i < supported_versions.size(); ++i) {
1394 net::QuicVersion version = supported_versions[i]; 1404 net::QuicVersion version = supported_versions[i];
1395 if (net::QuicVersionToString(version) == quic_version) { 1405 if (net::QuicVersionToString(version) == quic_version) {
1396 return version; 1406 return version;
1397 } 1407 }
1398 } 1408 }
1399 1409
1400 return net::QUIC_VERSION_UNSUPPORTED; 1410 return net::QUIC_VERSION_UNSUPPORTED;
1401 } 1411 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698