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

Unified Diff: net/http/http_server_properties_manager.cc

Issue 665083009: ABANDONED Handle multiple AlternateProtocols for each HostPortPair. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
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 6796fb19fd8fbb36238da08a9a84f9f808e0ac97..2217d370c63f5fd1bf3b45f1fb4756b5088b721f 100644
--- a/net/http/http_server_properties_manager.cc
+++ b/net/http/http_server_properties_manager.cc
@@ -157,42 +157,46 @@ bool HttpServerPropertiesManager::HasAlternateProtocol(
return http_server_properties_impl_->HasAlternateProtocol(server);
}
-net::AlternateProtocolInfo
-HttpServerPropertiesManager::GetAlternateProtocol(
+net::AlternateProtocols HttpServerPropertiesManager::GetAlternateProtocol(
const net::HostPortPair& server) {
DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
return http_server_properties_impl_->GetAlternateProtocol(server);
}
-void HttpServerPropertiesManager::SetAlternateProtocol(
+void HttpServerPropertiesManager::AddAlternateProtocol(
const net::HostPortPair& server,
uint16 alternate_port,
AlternateProtocol alternate_protocol,
double alternate_probability) {
DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
- http_server_properties_impl_->SetAlternateProtocol(
+ http_server_properties_impl_->AddAlternateProtocol(
server, alternate_port, alternate_protocol, alternate_probability);
ScheduleUpdatePrefsOnNetworkThread();
}
void HttpServerPropertiesManager::SetBrokenAlternateProtocol(
- const net::HostPortPair& server) {
+ const net::HostPortPair& server,
+ const AlternateProtocolInfo& broken_alternate_protocol) {
DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
- http_server_properties_impl_->SetBrokenAlternateProtocol(server);
+ http_server_properties_impl_->SetBrokenAlternateProtocol(
+ server, broken_alternate_protocol);
ScheduleUpdatePrefsOnNetworkThread();
}
bool HttpServerPropertiesManager::WasAlternateProtocolRecentlyBroken(
- const net::HostPortPair& server) {
+ const HostPortPair& server,
+ const AlternateProtocolInfo& alternate_protocol) {
DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
return http_server_properties_impl_->WasAlternateProtocolRecentlyBroken(
- server);
+ server, alternate_protocol);
}
void HttpServerPropertiesManager::ConfirmAlternateProtocol(
- const net::HostPortPair& server) {
+ const HostPortPair& server,
+ const AlternateProtocolInfo& alternate_protocol) {
DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
- http_server_properties_impl_->ConfirmAlternateProtocol(server);
+ http_server_properties_impl_->ConfirmAlternateProtocol(server,
+ alternate_protocol);
ScheduleUpdatePrefsOnNetworkThread();
}
@@ -203,6 +207,15 @@ void HttpServerPropertiesManager::ClearAlternateProtocol(
ScheduleUpdatePrefsOnNetworkThread();
}
+void HttpServerPropertiesManager::RemoveAlternateProtocol(
+ const net::HostPortPair& server,
+ const AlternateProtocolInfo& alternate_protocol) {
+ DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
+ http_server_properties_impl_->RemoveAlternateProtocol(server,
+ alternate_protocol);
+ ScheduleUpdatePrefsOnNetworkThread();
+}
+
const net::AlternateProtocolMap&
HttpServerPropertiesManager::alternate_protocol_map() const {
DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
@@ -451,7 +464,10 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread() {
net::AlternateProtocolInfo port_alternate_protocol(port,
protocol,
probability);
- alternate_protocol_map->Put(server, port_alternate_protocol);
+ alternate_protocol_map->Put(
+ server,
+ AlternateProtocols(/* size = */ 1,
+ /* val = */ port_alternate_protocol));
++count;
} while (false);
@@ -615,24 +631,24 @@ void HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread(
}
// A local or temporary data structure to hold |supports_spdy|, SpdySettings,
-// AlternateProtocolInfo and SupportsQuic preferences for a server. This is used
+// AlternateProtocols and SupportsQuic preferences for a server. This is used
// only in UpdatePrefsOnPrefThread.
struct ServerPref {
ServerPref() : supports_spdy(false),
settings_map(NULL),
- alternate_protocol(NULL),
+ alternate_protocols(NULL),
supports_quic(NULL) {}
ServerPref(bool supports_spdy,
const net::SettingsMap* settings_map,
- const net::AlternateProtocolInfo* alternate_protocol,
+ const net::AlternateProtocols* alternate_protocols,
const net::SupportsQuic* supports_quic)
: supports_spdy(supports_spdy),
settings_map(settings_map),
- alternate_protocol(alternate_protocol),
+ alternate_protocols(alternate_protocols),
supports_quic(supports_quic) {}
bool supports_spdy;
const net::SettingsMap* settings_map;
- const net::AlternateProtocolInfo* alternate_protocol;
+ const net::AlternateProtocols* alternate_protocols;
const net::SupportsQuic* supports_quic;
};
@@ -686,10 +702,18 @@ void HttpServerPropertiesManager::UpdatePrefsOnPrefThread(
map_it != alternate_protocol_map->end();
++map_it) {
const net::HostPortPair& server = map_it->first;
- const net::AlternateProtocolInfo& port_alternate_protocol =
- map_it->second;
- if (!net::IsAlternateProtocolValid(port_alternate_protocol.protocol)) {
- continue;
+ const net::AlternateProtocols alternate_protocols = map_it->second;
+ AlternateProtocols::const_iterator alternate_protocol;
+ for (alternate_protocol = alternate_protocols.begin();
+ alternate_protocol != alternate_protocols.end();
+ ++alternate_protocol) {
+ if (!net::IsAlternateProtocolValid(alternate_protocol->protocol)) {
+ break;
+ }
+ }
+ // Do not add AlternateProtocols unless all of them have a valid protocol.
+ if (alternate_protocol != alternate_protocols.end()) {
+ break;
}
ServerPrefMap::iterator it = server_pref_map.find(server);
@@ -697,7 +721,7 @@ void HttpServerPropertiesManager::UpdatePrefsOnPrefThread(
ServerPref server_pref(false, NULL, &map_it->second, NULL);
server_pref_map[server] = server_pref;
} else {
- it->second.alternate_protocol = &map_it->second;
+ it->second.alternate_protocols = &map_it->second;
}
}
@@ -746,18 +770,19 @@ void HttpServerPropertiesManager::UpdatePrefsOnPrefThread(
}
// Save alternate_protocol.
- if (server_pref.alternate_protocol) {
+ if (server_pref.alternate_protocols &&
+ server_pref.alternate_protocols->size() >= 1) {
base::DictionaryValue* port_alternate_protocol_dict =
new base::DictionaryValue;
- const net::AlternateProtocolInfo* port_alternate_protocol =
- server_pref.alternate_protocol;
+ const net::AlternateProtocolInfo& port_alternate_protocol =
+ server_pref.alternate_protocols->at(0);
port_alternate_protocol_dict->SetInteger("port",
- port_alternate_protocol->port);
+ port_alternate_protocol.port);
const char* protocol_str =
- net::AlternateProtocolToString(port_alternate_protocol->protocol);
+ net::AlternateProtocolToString(port_alternate_protocol.protocol);
port_alternate_protocol_dict->SetString("protocol_str", protocol_str);
port_alternate_protocol_dict->SetDouble(
- "probability", port_alternate_protocol->probability);
+ "probability", port_alternate_protocol.probability);
server_pref_dict->SetWithoutPathExpansion(
"alternate_protocol", port_alternate_protocol_dict);
}

Powered by Google App Engine
This is Rietveld 408576698