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

Unified Diff: net/http/http_server_properties_manager.cc

Issue 1892813003: SHP 5: Adding a new version for disk data, migrating disk data to use scheme/host/port representati… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@SHP_4
Patch Set: git sync Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/http/http_server_properties_manager.h ('k') | net/http/http_server_properties_manager_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 397635f007838fd9ad30e51874460b09a147d638..cf891f53f90cbba6383d607fe7293962be1317e7 100644
--- a/net/http/http_server_properties_manager.cc
+++ b/net/http/http_server_properties_manager.cc
@@ -35,7 +35,7 @@ const int64_t kUpdatePrefsDelayMs = 60000;
const int kMissingVersion = 0;
// The version number of persisted http_server_properties.
-const int kVersionNumber = 4;
+const int kVersionNumber = 5;
// Persist 200 MRU AlternateProtocolHostPortPairs.
const int kMaxAlternateProtocolHostsToPersist = 200;
@@ -460,7 +460,7 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread() {
// "servers": {
// "0-edge-chat.facebook.com:443" : {...},
// "0.client-channel.google.com:443" : {...},
- // "yt3.ggpht.com:443" : {...},
+ // "yt3.ggpht.com:80" : {...},
// ...
// }, ...
// },
@@ -470,14 +470,27 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread() {
return;
}
} else {
- // From Version 4 onwards, data was stored in the following format.
+ // For Version 4, data was stored in the following format.
// |servers| are saved in MRU order.
//
// "http_server_properties": {
// "servers": [
// {"yt3.ggpht.com:443" : {...}},
// {"0.client-channel.google.com:443" : {...}},
- // {"0-edge-chat.facebook.com:443" : {...}},
+ // {"0-edge-chat.facebook.com:80" : {...}},
+ // ...
+ // ], ...
+ // },
+ // For Version 5, data was stored in the following format.
+ // |servers| are saved in MRU order. |servers| are in the format flattened
+ // representation of (scheme/host/port) where port might be ignored if is
+ // default with scheme.
+ //
+ // "http_server_properties": {
+ // "servers": [
+ // {"https://yt3.ggpht.com" : {...}},
+ // {"http://0.client-channel.google.com:443" : {...}},
+ // {"http://0-edge-chat.facebook.com" : {...}},
// ...
// ], ...
// },
@@ -505,7 +518,7 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread() {
if (version < 4) {
if (!AddServersData(*servers_dict, spdy_servers.get(),
spdy_settings_map.get(), alternative_service_map.get(),
- server_network_stats_map.get())) {
+ server_network_stats_map.get(), version)) {
detected_corrupted_prefs = true;
}
} else {
@@ -516,9 +529,10 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread() {
detected_corrupted_prefs = true;
continue;
}
- if (!AddServersData(
- *servers_dict, spdy_servers.get(), spdy_settings_map.get(),
- alternative_service_map.get(), server_network_stats_map.get())) {
+ if (!AddServersData(*servers_dict, spdy_servers.get(),
+ spdy_settings_map.get(),
+ alternative_service_map.get(),
+ server_network_stats_map.get(), version)) {
detected_corrupted_prefs = true;
}
}
@@ -546,15 +560,17 @@ bool HttpServerPropertiesManager::AddServersData(
ServerList* spdy_servers,
SpdySettingsMap* spdy_settings_map,
AlternativeServiceMap* alternative_service_map,
- ServerNetworkStatsMap* network_stats_map) {
+ ServerNetworkStatsMap* network_stats_map,
+ int version) {
for (base::DictionaryValue::Iterator it(servers_dict); !it.IsAtEnd();
it.Advance()) {
- // TODO(zhongyi): get server's scheme/host/port when servers_dict migrates
- // to SchemeHostPort.
- // Get server's host/pair.
+ // Get server's scheme/host/pair.
const std::string& server_str = it.key();
- // TODO(zhongyi): fill in the scheme field when servers_dict has scheme.
- std::string spdy_server_url = "https://" + server_str;
+ std::string spdy_server_url = server_str;
+ if (version < 5) {
+ // For old version disk data, always use HTTPS as the scheme.
+ spdy_server_url.insert(0, "https://");
+ }
url::SchemeHostPort spdy_server((GURL(spdy_server_url)));
if (spdy_server.host().empty()) {
DVLOG(1) << "Malformed http_server_properties for server: " << server_str;
@@ -1036,16 +1052,16 @@ void HttpServerPropertiesManager::UpdatePrefsOnPrefThread(
ServerNetworkStatsMap* server_network_stats_map,
QuicServerInfoMap* quic_server_info_map,
const base::Closure& completion) {
- typedef base::MRUCache<HostPortPair, ServerPref> ServerPrefMap;
+ typedef base::MRUCache<url::SchemeHostPort, ServerPref> ServerPrefMap;
ServerPrefMap server_pref_map(ServerPrefMap::NO_AUTO_EVICT);
DCHECK(pref_task_runner_->RunsTasksOnCurrentThread());
// Add servers that support spdy to server_pref_map in the MRU order.
for (size_t index = spdy_server_list->GetSize(); index > 0; --index) {
- std::string s;
- if (spdy_server_list->GetString(index - 1, &s)) {
- HostPortPair server = HostPortPair::FromString(s);
+ std::string server_str;
+ if (spdy_server_list->GetString(index - 1, &server_str)) {
+ url::SchemeHostPort server((GURL(server_str)));
ServerPrefMap::iterator it = server_pref_map.Get(server);
if (it == server_pref_map.end()) {
ServerPref server_pref;
@@ -1060,9 +1076,7 @@ void HttpServerPropertiesManager::UpdatePrefsOnPrefThread(
// Add servers that have SpdySettings to server_pref_map in the MRU order.
for (SpdySettingsMap::reverse_iterator map_it = spdy_settings_map->rbegin();
map_it != spdy_settings_map->rend(); ++map_it) {
- // TODO(zhongyi): use memory data once disk data is migrated.
- const url::SchemeHostPort spdy_server = map_it->first;
- const HostPortPair server(spdy_server.host(), spdy_server.port());
+ const url::SchemeHostPort server = map_it->first;
ServerPrefMap::iterator it = server_pref_map.Get(server);
if (it == server_pref_map.end()) {
ServerPref server_pref;
@@ -1077,8 +1091,7 @@ void HttpServerPropertiesManager::UpdatePrefsOnPrefThread(
for (AlternativeServiceMap::const_reverse_iterator map_it =
alternative_service_map->rbegin();
map_it != alternative_service_map->rend(); ++map_it) {
- // TODO(zhongyi): migrate to SHP once server_pref_map is migrated.
- const HostPortPair server(map_it->first.host(), map_it->first.port());
+ const url::SchemeHostPort server = map_it->first;
ServerPrefMap::iterator it = server_pref_map.Get(server);
if (it == server_pref_map.end()) {
ServerPref server_pref;
@@ -1093,9 +1106,7 @@ void HttpServerPropertiesManager::UpdatePrefsOnPrefThread(
for (ServerNetworkStatsMap::const_reverse_iterator map_it =
server_network_stats_map->rbegin();
map_it != server_network_stats_map->rend(); ++map_it) {
- // TODO(zhongyi): use memory data once disk data is migrated.
- const url::SchemeHostPort spdy_server = map_it->first;
- const HostPortPair server(spdy_server.host(), spdy_server.port());
+ const url::SchemeHostPort server = map_it->first;
ServerPrefMap::iterator it = server_pref_map.Get(server);
if (it == server_pref_map.end()) {
ServerPref server_pref;
@@ -1111,7 +1122,7 @@ void HttpServerPropertiesManager::UpdatePrefsOnPrefThread(
base::ListValue* servers_list = new base::ListValue;
for (ServerPrefMap::const_reverse_iterator map_it = server_pref_map.rbegin();
map_it != server_pref_map.rend(); ++map_it) {
- const HostPortPair& server = map_it->first;
+ const url::SchemeHostPort server = map_it->first;
const ServerPref& server_pref = map_it->second;
base::DictionaryValue* servers_dict = new base::DictionaryValue;
@@ -1126,7 +1137,7 @@ void HttpServerPropertiesManager::UpdatePrefsOnPrefThread(
SaveNetworkStatsToServerPrefs(server_pref.server_network_stats,
server_pref_dict);
- servers_dict->SetWithoutPathExpansion(server.ToString(), server_pref_dict);
+ servers_dict->SetWithoutPathExpansion(server.Serialize(), server_pref_dict);
bool value = servers_list->AppendIfNotPresent(servers_dict);
DCHECK(value); // Should never happen.
}
« no previous file with comments | « net/http/http_server_properties_manager.h ('k') | net/http/http_server_properties_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698