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

Unified Diff: chrome/browser/net/http_server_properties_manager.cc

Issue 8770035: Save pipelining capabilities for the most used hosts between sessions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/net/http_server_properties_manager.cc
diff --git a/chrome/browser/net/http_server_properties_manager.cc b/chrome/browser/net/http_server_properties_manager.cc
index dad1876c9f113d5850524765fe1d9e9fece13e4f..9c803bc8bab4d63e20f747722ce08d221f591362 100644
--- a/chrome/browser/net/http_server_properties_manager.cc
+++ b/chrome/browser/net/http_server_properties_manager.cc
@@ -171,6 +171,33 @@ HttpServerPropertiesManager::spdy_settings_map() const {
return http_server_properties_impl_->spdy_settings_map();
}
+net::HttpPipelinedHost::Capability
+HttpServerPropertiesManager::GetPipelineCapability(
+ const net::HostPortPair& origin) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ return http_server_properties_impl_->GetPipelineCapability(origin);
+}
+
+void HttpServerPropertiesManager::SetPipelineCapability(
+ const net::HostPortPair& origin,
+ net::HttpPipelinedHost::Capability capability) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ http_server_properties_impl_->SetPipelineCapability(origin, capability);
+ ScheduleUpdatePrefsOnIO();
+}
+
+void HttpServerPropertiesManager::ClearPipelineCapabilities() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ http_server_properties_impl_->ClearPipelineCapabilities();
+ ScheduleUpdatePrefsOnIO();
+}
+
+net::PipelineCapabilityMap
+HttpServerPropertiesManager::GetPipelineCapabilityMap() const {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ return http_server_properties_impl_->GetPipelineCapabilityMap();
+}
+
//
// Update the HttpServerPropertiesImpl's cache with data from preferences.
//
@@ -207,6 +234,9 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnUI() {
net::AlternateProtocolMap* alternate_protocol_map =
new net::AlternateProtocolMap;
+ net::PipelineCapabilityMap* pipeline_capability_map =
+ new net::PipelineCapabilityMap;
+
const base::DictionaryValue& http_server_properties_dict =
*pref_service_->GetDictionary(prefs::kHttpServerProperties);
for (base::DictionaryValue::key_iterator it =
@@ -281,6 +311,13 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnUI() {
(*spdy_settings_map)[server] = spdy_settings;
}
+ int pipeline_capability = 0;
mmenke 2011/12/02 21:52:10 Use net::HttpPipelinedHost::UNKNOWN to be a little
James Simonsen 2011/12/03 03:16:00 Done.
+ if ((server_pref_dict->GetInteger(
+ "pipeline_capability", &pipeline_capability)) && pipeline_capability) {
mmenke 2011/12/02 21:52:10 pipeline_capability != net::HttpPipelinedHost::UNK
James Simonsen 2011/12/03 03:16:00 Done.
+ (*pipeline_capability_map)[server] =
+ static_cast<net::HttpPipelinedHost::Capability>(pipeline_capability);
+ }
+
// Get alternate_protocol server.
DCHECK(!ContainsKey(*alternate_protocol_map, server));
base::DictionaryValue* port_alternate_protocol_dict = NULL;
@@ -323,13 +360,15 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnUI() {
base::Unretained(this),
base::Owned(spdy_servers),
base::Owned(spdy_settings_map),
- base::Owned(alternate_protocol_map)));
+ base::Owned(alternate_protocol_map),
+ base::Owned(pipeline_capability_map)));
}
void HttpServerPropertiesManager::UpdateCacheFromPrefsOnIO(
StringVector* spdy_servers,
net::SpdySettingsMap* spdy_settings_map,
- net::AlternateProtocolMap* alternate_protocol_map) {
+ net::AlternateProtocolMap* alternate_protocol_map,
+ net::PipelineCapabilityMap* pipeline_capability_map) {
// Preferences have the master data because admins might have pushed new
// preferences. Update the cached data with new data from preferences.
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
@@ -344,6 +383,9 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnIO(
// preferences.
http_server_properties_impl_->InitializeAlternateProtocolServers(
alternate_protocol_map);
+
+ http_server_properties_impl_->InitializePipelineCapabilities(
+ pipeline_capability_map);
}
@@ -381,6 +423,11 @@ void HttpServerPropertiesManager::UpdatePrefsFromCacheOnIO() {
*alternate_protocol_map =
http_server_properties_impl_->alternate_protocol_map();
+ net::PipelineCapabilityMap* pipeline_capability_map =
+ new net::PipelineCapabilityMap;
+ *pipeline_capability_map =
+ http_server_properties_impl_->GetPipelineCapabilityMap();
+
// Update the preferences on the UI thread.
BrowserThread::PostTask(
BrowserThread::UI,
@@ -389,7 +436,8 @@ void HttpServerPropertiesManager::UpdatePrefsFromCacheOnIO() {
ui_weak_ptr_,
base::Owned(spdy_server_list),
base::Owned(spdy_settings_map),
- base::Owned(alternate_protocol_map)));
+ base::Owned(alternate_protocol_map),
+ base::Owned(pipeline_capability_map)));
}
// A local or temporary data structure to hold supports_spdy, SpdySettings and
mmenke 2011/12/02 21:52:10 While you're here, mind replacing supports_spdy wi
James Simonsen 2011/12/03 03:16:00 Done.
@@ -399,24 +447,28 @@ struct ServerPref {
ServerPref()
: supports_spdy(false),
settings(NULL),
- alternate_protocol(NULL) {
+ alternate_protocol(NULL),
+ pipeline_capability(net::HttpPipelinedHost::UNKNOWN) {
}
ServerPref(bool supports_spdy,
const spdy::SpdySettings* settings,
const net::PortAlternateProtocolPair* alternate_protocol)
: supports_spdy(supports_spdy),
settings(settings),
- alternate_protocol(alternate_protocol) {
+ alternate_protocol(alternate_protocol),
+ pipeline_capability(net::HttpPipelinedHost::UNKNOWN) {
}
bool supports_spdy;
const spdy::SpdySettings* settings;
const net::PortAlternateProtocolPair* alternate_protocol;
+ net::HttpPipelinedHost::Capability pipeline_capability;
};
void HttpServerPropertiesManager::UpdatePrefsOnUI(
base::ListValue* spdy_server_list,
net::SpdySettingsMap* spdy_settings_map,
- net::AlternateProtocolMap* alternate_protocol_map) {
+ net::AlternateProtocolMap* alternate_protocol_map,
+ net::PipelineCapabilityMap* pipeline_capability_map) {
typedef std::map<net::HostPortPair, ServerPref> ServerPrefMap;
ServerPrefMap server_pref_map;
@@ -476,6 +528,23 @@ void HttpServerPropertiesManager::UpdatePrefsOnUI(
}
}
+ for (net::PipelineCapabilityMap::const_iterator map_it =
+ pipeline_capability_map->begin();
mmenke 2011/12/02 21:52:10 Could you indent this 4 more spaces, to make it cl
James Simonsen 2011/12/03 03:16:00 Done.
+ map_it != pipeline_capability_map->end(); ++map_it) {
+ const net::HostPortPair& server = map_it->first;
+ const net::HttpPipelinedHost::Capability& pipeline_capability =
+ map_it->second;
+
+ ServerPrefMap::iterator it = server_pref_map.find(server);
+ if (it == server_pref_map.end()) {
+ ServerPref server_pref;
+ server_pref.pipeline_capability = pipeline_capability;
+ server_pref_map[server] = server_pref;
+ } else {
+ it->second.pipeline_capability = pipeline_capability;
+ }
+ }
+
// Persist the prefs::kHttpServerProperties.
base::DictionaryValue http_server_properties_dict;
for (ServerPrefMap::const_iterator map_it =
@@ -518,6 +587,12 @@ void HttpServerPropertiesManager::UpdatePrefsOnUI(
server_pref_dict->SetWithoutPathExpansion(
"alternate_protocol", port_alternate_protocol_dict);
}
+
+ if (server_pref.pipeline_capability != net::HttpPipelinedHost::UNKNOWN) {
+ server_pref_dict->SetInteger("pipeline_capability",
+ server_pref.pipeline_capability);
+ }
+
http_server_properties_dict.SetWithoutPathExpansion(
server.ToString(), server_pref_dict);
mmenke 2011/12/02 21:52:10 Mind fixing the indentation in this old code while
James Simonsen 2011/12/03 03:16:00 Done.
}

Powered by Google App Engine
This is Rietveld 408576698