Chromium Code Reviews| Index: net/http/http_server_properties_manager.cc |
| diff --git a/net/http/http_server_properties_manager.cc b/net/http/http_server_properties_manager.cc |
| index c2f6f56d57b25723c86d6af64e2f75059c652d9d..4ed53a7ed6a7d5dbe3d4204e53b066ac4f82fb36 100644 |
| --- a/net/http/http_server_properties_manager.cc |
| +++ b/net/http/http_server_properties_manager.cc |
| @@ -282,28 +282,20 @@ const SpdySettingsMap& HttpServerPropertiesManager::spdy_settings_map() |
| return http_server_properties_impl_->spdy_settings_map(); |
| } |
| -SupportsQuic HttpServerPropertiesManager::GetSupportsQuic( |
| - const HostPortPair& host_port_pair) const { |
| +bool HttpServerPropertiesManager::GetSupportsQuic( |
| + IPAddressNumber* last_address) const { |
| DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); |
| - return http_server_properties_impl_->GetSupportsQuic(host_port_pair); |
| + return http_server_properties_impl_->GetSupportsQuic(last_address); |
| } |
| void HttpServerPropertiesManager::SetSupportsQuic( |
| - const HostPortPair& host_port_pair, |
| bool used_quic, |
| - const std::string& address) { |
| + const IPAddressNumber& address) { |
| DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); |
| - http_server_properties_impl_->SetSupportsQuic( |
| - host_port_pair, used_quic, address); |
| + http_server_properties_impl_->SetSupportsQuic(used_quic, address); |
| ScheduleUpdatePrefsOnNetworkThread(); |
| } |
| -const SupportsQuicMap& HttpServerPropertiesManager::supports_quic_map() |
| - const { |
| - DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); |
| - return http_server_properties_impl_->supports_quic_map(); |
| -} |
| - |
| void HttpServerPropertiesManager::SetServerNetworkStats( |
| const HostPortPair& host_port_pair, |
| ServerNetworkStats stats) { |
| @@ -372,13 +364,15 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread() { |
| return; |
| } |
| + IPAddressNumber* addr = new IPAddressNumber; |
| + ReadSupportsQuic(http_server_properties_dict, addr); |
| + |
| // String is host/port pair of spdy server. |
| scoped_ptr<StringVector> spdy_servers(new StringVector); |
| scoped_ptr<SpdySettingsMap> spdy_settings_map( |
| new SpdySettingsMap(kMaxSpdySettingsHostsToPersist)); |
| scoped_ptr<AlternateProtocolMap> alternate_protocol_map( |
| new AlternateProtocolMap(kMaxAlternateProtocolHostsToPersist)); |
| - scoped_ptr<SupportsQuicMap> supports_quic_map(new SupportsQuicMap()); |
| scoped_ptr<ServerNetworkStatsMap> server_network_stats_map( |
| new ServerNetworkStatsMap(kMaxServerNetworkStatsHostsToPersist)); |
| @@ -410,8 +404,6 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread() { |
| AddToSpdySettingsMap(server, *server_pref_dict, spdy_settings_map.get()); |
| if (!AddToAlternateProtocolMap(server, *server_pref_dict, |
| alternate_protocol_map.get()) || |
| - !AddToSupportsQuicMap(server, *server_pref_dict, |
| - supports_quic_map.get()) || |
| !AddToNetworkStatsMap(server, *server_pref_dict, |
| server_network_stats_map.get())) { |
| detected_corrupted_prefs = true; |
| @@ -424,8 +416,7 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread() { |
| &HttpServerPropertiesManager::UpdateCacheFromPrefsOnNetworkThread, |
| base::Unretained(this), base::Owned(spdy_servers.release()), |
| base::Owned(spdy_settings_map.release()), |
| - base::Owned(alternate_protocol_map.release()), |
| - base::Owned(supports_quic_map.release()), |
| + base::Owned(alternate_protocol_map.release()), base::Owned(addr), |
| base::Owned(server_network_stats_map.release()), |
| detected_corrupted_prefs)); |
| } |
| @@ -508,30 +499,30 @@ bool HttpServerPropertiesManager::AddToAlternateProtocolMap( |
| return true; |
| } |
| -bool HttpServerPropertiesManager::AddToSupportsQuicMap( |
| - const HostPortPair& server, |
| - const base::DictionaryValue& server_pref_dict, |
| - SupportsQuicMap* supports_quic_map) { |
| - DCHECK(supports_quic_map->find(server) == supports_quic_map->end()); |
| +bool HttpServerPropertiesManager::ReadSupportsQuic( |
| + const base::DictionaryValue& http_server_properties_dict, |
| + IPAddressNumber* last_quic_address) { |
| const base::DictionaryValue* supports_quic_dict = NULL; |
| - if (!server_pref_dict.GetDictionaryWithoutPathExpansion( |
| + if (!http_server_properties_dict.GetDictionaryWithoutPathExpansion( |
| kSupportsQuicKey, &supports_quic_dict)) { |
| return true; |
| } |
| - bool used_quic = 0; |
| + bool used_quic = false; |
| if (!supports_quic_dict->GetBooleanWithoutPathExpansion(kUsedQuicKey, |
| &used_quic)) { |
| - DVLOG(1) << "Malformed SupportsQuic server: " << server.ToString(); |
| + DVLOG(1) << "Malformed SupportsQuic"; |
| return false; |
| } |
| + if (!used_quic) |
| + return false; |
| + |
| std::string address; |
| if (!supports_quic_dict->GetStringWithoutPathExpansion(kAddressKey, |
| - &address)) { |
| - DVLOG(1) << "Malformed SupportsQuic server: " << server.ToString(); |
| + &address) || |
| + !ParseIPLiteralToNumber(address, last_quic_address)) { |
| + DVLOG(1) << "Malformed SupportsQuic"; |
| return false; |
| } |
| - SupportsQuic supports_quic(used_quic, address); |
| - supports_quic_map->insert(std::make_pair(server, supports_quic)); |
| return true; |
| } |
| @@ -564,7 +555,7 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnNetworkThread( |
| StringVector* spdy_servers, |
| SpdySettingsMap* spdy_settings_map, |
| AlternateProtocolMap* alternate_protocol_map, |
| - SupportsQuicMap* supports_quic_map, |
| + IPAddressNumber* last_quic_address, |
| ServerNetworkStatsMap* server_network_stats_map, |
| bool detected_corrupted_prefs) { |
| // Preferences have the master data because admins might have pushed new |
| @@ -586,7 +577,7 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnNetworkThread( |
| http_server_properties_impl_->InitializeAlternateProtocolServers( |
| alternate_protocol_map); |
| - http_server_properties_impl_->InitializeSupportsQuic(supports_quic_map); |
| + http_server_properties_impl_->InitializeSupportsQuic(last_quic_address); |
| http_server_properties_impl_->InitializeServerNetworkStats( |
| server_network_stats_map); |
| @@ -663,14 +654,6 @@ void HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread( |
| ++count; |
| } |
| - SupportsQuicMap* supports_quic_map = new SupportsQuicMap(); |
| - const SupportsQuicMap& main_supports_quic_map = |
| - http_server_properties_impl_->supports_quic_map(); |
| - for (SupportsQuicMap::const_iterator it = main_supports_quic_map.begin(); |
| - it != main_supports_quic_map.end(); ++it) { |
| - supports_quic_map->insert(std::make_pair(it->first, it->second)); |
| - } |
| - |
| ServerNetworkStatsMap* server_network_stats_map = |
| new ServerNetworkStatsMap(kMaxServerNetworkStatsHostsToPersist); |
| const ServerNetworkStatsMap& main_server_network_stats_map = |
| @@ -681,13 +664,15 @@ void HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread( |
| server_network_stats_map->Put(it->first, it->second); |
| } |
| + IPAddressNumber* last_quic_addr = new IPAddressNumber; |
| + http_server_properties_impl_->GetSupportsQuic(last_quic_addr); |
| // Update the preferences on the pref thread. |
| pref_task_runner_->PostTask( |
| FROM_HERE, |
| base::Bind( |
| &HttpServerPropertiesManager::UpdatePrefsOnPrefThread, pref_weak_ptr_, |
| base::Owned(spdy_server_list), base::Owned(spdy_settings_map), |
| - base::Owned(alternate_protocol_map), base::Owned(supports_quic_map), |
| + base::Owned(alternate_protocol_map), base::Owned(last_quic_addr), |
| base::Owned(server_network_stats_map), completion)); |
| } |
| @@ -722,7 +707,7 @@ void HttpServerPropertiesManager::UpdatePrefsOnPrefThread( |
| base::ListValue* spdy_server_list, |
| SpdySettingsMap* spdy_settings_map, |
| AlternateProtocolMap* alternate_protocol_map, |
| - SupportsQuicMap* supports_quic_map, |
| + IPAddressNumber* last_quic_address, |
| ServerNetworkStatsMap* server_network_stats_map, |
| const base::Closure& completion) { |
| typedef std::map<HostPortPair, ServerPref> ServerPrefMap; |
| @@ -761,11 +746,13 @@ void HttpServerPropertiesManager::UpdatePrefsOnPrefThread( |
| } |
| // Add SupportsQuic servers to server_pref_map. |
| + /* |
| for (SupportsQuicMap::const_iterator map_it = supports_quic_map->begin(); |
| map_it != supports_quic_map->end(); ++map_it) { |
| const HostPortPair& server = map_it->first; |
| server_pref_map[server].supports_quic = &map_it->second; |
| } |
| + */ |
|
ramant (doing other things)
2015/02/03 18:09:37
nit: could lines 747-755 be deleted.
Ryan Hamilton
2015/02/03 22:50:45
Done.
|
| // Add ServerNetworkStats servers to server_pref_map. |
| for (ServerNetworkStatsMap::const_iterator map_it = |
| @@ -792,7 +779,6 @@ void HttpServerPropertiesManager::UpdatePrefsOnPrefThread( |
| SaveSpdySettingsToServerPrefs(server_pref.settings_map, server_pref_dict); |
| SaveAlternateProtocolToServerPrefs(server_pref.alternate_protocol, |
| server_pref_dict); |
| - SaveSupportsQuicToServerPrefs(server_pref.supports_quic, server_pref_dict); |
| SaveNetworkStatsToServerPrefs(server_pref.server_network_stats, |
| server_pref_dict); |
| @@ -802,6 +788,9 @@ void HttpServerPropertiesManager::UpdatePrefsOnPrefThread( |
| http_server_properties_dict.SetWithoutPathExpansion(kServersKey, |
| servers_dict); |
| SetVersion(&http_server_properties_dict, kVersionNumber); |
| + |
| + SaveSupportsQuicToPrefs(last_quic_address, &http_server_properties_dict); |
| + |
| setting_prefs_ = true; |
| pref_service_->Set(path_, http_server_properties_dict); |
| setting_prefs_ = false; |
| @@ -850,18 +839,18 @@ void HttpServerPropertiesManager::SaveAlternateProtocolToServerPrefs( |
| port_alternate_protocol_dict); |
| } |
| -void HttpServerPropertiesManager::SaveSupportsQuicToServerPrefs( |
| - const SupportsQuic* supports_quic, |
| - base::DictionaryValue* server_pref_dict) { |
| - // Save supports_quic. |
| - if (!supports_quic) |
| +void HttpServerPropertiesManager::SaveSupportsQuicToPrefs( |
| + const IPAddressNumber* last_quic_address, |
| + base::DictionaryValue* http_server_properties_dict) { |
| + if (!last_quic_address || last_quic_address->empty()) |
| return; |
| base::DictionaryValue* supports_quic_dict = new base::DictionaryValue; |
| - supports_quic_dict->SetBoolean(kUsedQuicKey, supports_quic->used_quic); |
| - supports_quic_dict->SetString(kAddressKey, supports_quic->address); |
| - server_pref_dict->SetWithoutPathExpansion(kSupportsQuicKey, |
| - supports_quic_dict); |
| + supports_quic_dict->SetBoolean(kUsedQuicKey, true); |
| + supports_quic_dict->SetString(kAddressKey, |
| + IPAddressToString(*last_quic_address)); |
| + http_server_properties_dict->SetWithoutPathExpansion(kSupportsQuicKey, |
| + supports_quic_dict); |
| } |
| void HttpServerPropertiesManager::SaveNetworkStatsToServerPrefs( |