Chromium Code Reviews| 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.
|
| } |