| Index: net/http/http_server_properties_manager_unittest.cc
|
| diff --git a/net/http/http_server_properties_manager_unittest.cc b/net/http/http_server_properties_manager_unittest.cc
|
| index f2e36499e736850c19b757f9e8146e5d6adbf96c..07c798750ff84fc3b060ee5cc677ca7b7dec4a44 100644
|
| --- a/net/http/http_server_properties_manager_unittest.cc
|
| +++ b/net/http/http_server_properties_manager_unittest.cc
|
| @@ -136,9 +136,9 @@ class HttpServerPropertiesManagerTest : public testing::Test {
|
| }
|
|
|
| bool HasAlternateProtocol(const HostPortPair& server) {
|
| - const AlternateProtocolInfo alternate =
|
| - http_server_props_manager_->GetAlternateProtocol(server);
|
| - return alternate.protocol != UNINITIALIZED_ALTERNATE_PROTOCOL;
|
| + const AlternateProtocols alternates =
|
| + http_server_props_manager_->GetAlternateProtocols(server);
|
| + return !alternates.empty();
|
| }
|
|
|
| //base::RunLoop loop_;
|
| @@ -163,12 +163,18 @@ TEST_F(HttpServerPropertiesManagerTest,
|
| // Set supports_spdy for www.google.com:80.
|
| server_pref_dict->SetBoolean("supports_spdy", true);
|
|
|
| - // Set up alternate_protocol for www.google.com:80.
|
| - base::DictionaryValue* alternate_protocol = new base::DictionaryValue;
|
| - alternate_protocol->SetInteger("port", 443);
|
| - alternate_protocol->SetString("protocol_str", "npn-spdy/3");
|
| - server_pref_dict->SetWithoutPathExpansion("alternate_protocol",
|
| - alternate_protocol);
|
| + // Set up alternative_services for www.google.com:80.
|
| + base::DictionaryValue* alternate_protocol0 = new base::DictionaryValue;
|
| + alternate_protocol0->SetInteger("port", 443);
|
| + alternate_protocol0->SetString("protocol_str", "npn-spdy/3");
|
| + base::DictionaryValue* alternate_protocol1 = new base::DictionaryValue;
|
| + alternate_protocol1->SetInteger("port", 1234);
|
| + alternate_protocol1->SetString("protocol_str", "quic");
|
| + base::ListValue* alternative_services = new base::ListValue;
|
| + alternative_services->Append(alternate_protocol0);
|
| + alternative_services->Append(alternate_protocol1);
|
| + server_pref_dict->SetWithoutPathExpansion("alternative_services",
|
| + alternative_services);
|
|
|
| // Set up ServerNetworkStats for www.google.com:80.
|
| base::DictionaryValue* stats = new base::DictionaryValue;
|
| @@ -185,13 +191,14 @@ TEST_F(HttpServerPropertiesManagerTest,
|
| // Set supports_spdy for mail.google.com:80
|
| server_pref_dict1->SetBoolean("supports_spdy", true);
|
|
|
| - // Set up alternate_protocol for mail.google.com:80
|
| - base::DictionaryValue* alternate_protocol1 = new base::DictionaryValue;
|
| - alternate_protocol1->SetInteger("port", 444);
|
| - alternate_protocol1->SetString("protocol_str", "npn-spdy/3.1");
|
| -
|
| - server_pref_dict1->SetWithoutPathExpansion("alternate_protocol",
|
| - alternate_protocol1);
|
| + // Set up alternative_services for mail.google.com:80
|
| + base::DictionaryValue* alternate_protocol2 = new base::DictionaryValue;
|
| + alternate_protocol2->SetInteger("port", 444);
|
| + alternate_protocol2->SetString("protocol_str", "npn-spdy/3.1");
|
| + base::ListValue* alternative_services1 = new base::ListValue;
|
| + alternative_services1->Append(alternate_protocol2);
|
| + server_pref_dict1->SetWithoutPathExpansion("alternative_services",
|
| + alternative_services1);
|
|
|
| // Set up ServerNetworkStats for mail.google.com:80.
|
| base::DictionaryValue* stats1 = new base::DictionaryValue;
|
| @@ -230,14 +237,22 @@ TEST_F(HttpServerPropertiesManagerTest,
|
| HostPortPair::FromString("foo.google.com:1337")));
|
|
|
| // Verify AlternateProtocol.
|
| - AlternateProtocolInfo port_alternate_protocol =
|
| - http_server_props_manager_->GetAlternateProtocol(google_server);
|
| - EXPECT_EQ(443, port_alternate_protocol.port);
|
| - EXPECT_EQ(NPN_SPDY_3, port_alternate_protocol.protocol);
|
| - port_alternate_protocol =
|
| - http_server_props_manager_->GetAlternateProtocol(mail_server);
|
| - EXPECT_EQ(444, port_alternate_protocol.port);
|
| - EXPECT_EQ(NPN_SPDY_3_1, port_alternate_protocol.protocol);
|
| + const AlternateProtocolMap& map =
|
| + http_server_props_manager_->alternate_protocol_map();
|
| + AlternateProtocolMap::const_iterator www_it = map.Peek(google_server);
|
| + ASSERT_TRUE(www_it != map.end());
|
| + const AlternateProtocols alternate_protocols0 = www_it->second;
|
| + ASSERT_EQ(2u, alternate_protocols0.size());
|
| + EXPECT_EQ(443, alternate_protocols0[0].port);
|
| + EXPECT_EQ(NPN_SPDY_3, alternate_protocols0[0].protocol);
|
| + EXPECT_EQ(1234, alternate_protocols0[1].port);
|
| + EXPECT_EQ(QUIC, alternate_protocols0[1].protocol);
|
| + AlternateProtocolMap::const_iterator mail_it = map.Peek(mail_server);
|
| + ASSERT_TRUE(mail_it != map.end());
|
| + const AlternateProtocols alternate_protocols1 = mail_it->second;
|
| + ASSERT_EQ(1u, alternate_protocols1.size());
|
| + EXPECT_EQ(444, alternate_protocols1[0].port);
|
| + EXPECT_EQ(NPN_SPDY_3_1, alternate_protocols1[0].protocol);
|
|
|
| // Verify SupportsQuic.
|
| IPAddressNumber last_address;
|
| @@ -263,12 +278,14 @@ TEST_F(HttpServerPropertiesManagerTest, BadCachedHostPortPair) {
|
| // Set supports_spdy for www.google.com:65536.
|
| server_pref_dict->SetBoolean("supports_spdy", true);
|
|
|
| - // Set up alternate_protocol for www.google.com:65536.
|
| + // Set up alternative_services for www.google.com:65536.
|
| base::DictionaryValue* alternate_protocol = new base::DictionaryValue;
|
| alternate_protocol->SetInteger("port", 80);
|
| alternate_protocol->SetString("protocol_str", "npn-spdy/3");
|
| - server_pref_dict->SetWithoutPathExpansion("alternate_protocol",
|
| - alternate_protocol);
|
| + base::ListValue* alternative_services = new base::ListValue;
|
| + alternative_services->Append(alternate_protocol);
|
| + server_pref_dict->SetWithoutPathExpansion("alternative_services",
|
| + alternative_services);
|
|
|
| // Set up ServerNetworkStats for www.google.com:65536.
|
| base::DictionaryValue* stats = new base::DictionaryValue;
|
| @@ -313,12 +330,14 @@ TEST_F(HttpServerPropertiesManagerTest, BadCachedAltProtocolPort) {
|
| // Set supports_spdy for www.google.com:80.
|
| server_pref_dict->SetBoolean("supports_spdy", true);
|
|
|
| - // Set up alternate_protocol for www.google.com:80.
|
| + // Set up alternative_services for www.google.com:80.
|
| base::DictionaryValue* alternate_protocol = new base::DictionaryValue;
|
| alternate_protocol->SetInteger("port", 65536);
|
| alternate_protocol->SetString("protocol_str", "npn-spdy/3");
|
| - server_pref_dict->SetWithoutPathExpansion("alternate_protocol",
|
| - alternate_protocol);
|
| + base::ListValue* alternative_services = new base::ListValue;
|
| + alternative_services->Append(alternate_protocol);
|
| + server_pref_dict->SetWithoutPathExpansion("alternative_services",
|
| + alternative_services);
|
|
|
| // Set the server preference for www.google.com:80.
|
| base::DictionaryValue* servers_dict = new base::DictionaryValue;
|
| @@ -467,18 +486,18 @@ TEST_F(HttpServerPropertiesManagerTest, GetAlternateProtocol) {
|
|
|
| HostPortPair spdy_server_mail("mail.google.com", 80);
|
| EXPECT_FALSE(HasAlternateProtocol(spdy_server_mail));
|
| - http_server_props_manager_->SetAlternateProtocol(spdy_server_mail, 443,
|
| + http_server_props_manager_->AddAlternateProtocol(spdy_server_mail, 443,
|
| NPN_SPDY_3, 1.0);
|
|
|
| // Run the task.
|
| base::RunLoop().RunUntilIdle();
|
| Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
|
|
|
| - const AlternateProtocolInfo alternate_protocol =
|
| - http_server_props_manager_->GetAlternateProtocol(spdy_server_mail);
|
| - EXPECT_EQ(443, alternate_protocol.port);
|
| - EXPECT_EQ(NPN_SPDY_3, alternate_protocol.protocol);
|
| - EXPECT_EQ(1.0, alternate_protocol.probability);
|
| + AlternateProtocols port_alternate_protocols =
|
| + http_server_props_manager_->GetAlternateProtocols(spdy_server_mail);
|
| + ASSERT_EQ(1u, port_alternate_protocols.size());
|
| + EXPECT_EQ(443, port_alternate_protocols[0].port);
|
| + EXPECT_EQ(NPN_SPDY_3, port_alternate_protocols[0].protocol);
|
| }
|
|
|
| TEST_F(HttpServerPropertiesManagerTest, SupportsQuic) {
|
| @@ -524,7 +543,7 @@ TEST_F(HttpServerPropertiesManagerTest, Clear) {
|
|
|
| HostPortPair spdy_server_mail("mail.google.com", 443);
|
| http_server_props_manager_->SetSupportsSpdy(spdy_server_mail, true);
|
| - http_server_props_manager_->SetAlternateProtocol(spdy_server_mail, 443,
|
| + http_server_props_manager_->AddAlternateProtocol(spdy_server_mail, 443,
|
| NPN_SPDY_3, 1.0);
|
| IPAddressNumber actual_address;
|
| CHECK(ParseIPLiteralToNumber("127.0.0.1", &actual_address));
|
| @@ -597,9 +616,11 @@ TEST_F(HttpServerPropertiesManagerTest, BadSupportsQuic) {
|
| base::DictionaryValue* alternate_protocol = new base::DictionaryValue;
|
| alternate_protocol->SetInteger("port", i);
|
| alternate_protocol->SetString("protocol_str", "npn-spdy/3");
|
| + base::ListValue* alternative_services = new base::ListValue;
|
| + alternative_services->Append(alternate_protocol);
|
| base::DictionaryValue* server_pref_dict = new base::DictionaryValue;
|
| - server_pref_dict->SetWithoutPathExpansion("alternate_protocol",
|
| - alternate_protocol);
|
| + server_pref_dict->SetWithoutPathExpansion("alternative_services",
|
| + alternative_services);
|
| servers_dict->SetWithoutPathExpansion(StringPrintf("www.google.com:%d", i),
|
| server_pref_dict);
|
| }
|
| @@ -633,11 +654,12 @@ TEST_F(HttpServerPropertiesManagerTest, BadSupportsQuic) {
|
| // Verify AlternateProtocol.
|
| for (int i = 0; i < 200; ++i) {
|
| std::string server = StringPrintf("www.google.com:%d", i);
|
| - AlternateProtocolInfo port_alternate_protocol =
|
| - http_server_props_manager_->GetAlternateProtocol(
|
| + AlternateProtocols alternate_protocols =
|
| + http_server_props_manager_->GetAlternateProtocols(
|
| HostPortPair::FromString(server));
|
| - EXPECT_EQ(i, port_alternate_protocol.port);
|
| - EXPECT_EQ(NPN_SPDY_3, port_alternate_protocol.protocol);
|
| + ASSERT_EQ(1u, alternate_protocols.size());
|
| + EXPECT_EQ(i, alternate_protocols[0].port);
|
| + EXPECT_EQ(NPN_SPDY_3, alternate_protocols[0].protocol);
|
| }
|
|
|
| // Verify SupportsQuic.
|
| @@ -650,10 +672,12 @@ TEST_F(HttpServerPropertiesManagerTest, UpdateCacheWithPrefs) {
|
| const HostPortPair server_www("www.google.com", 80);
|
| const HostPortPair server_mail("mail.google.com", 80);
|
|
|
| - // Set alternate protocol.
|
| - http_server_props_manager_->SetAlternateProtocol(server_www, 443, NPN_SPDY_3,
|
| + // Set AltSvc.
|
| + http_server_props_manager_->AddAlternateProtocol(server_www, 443, NPN_SPDY_3,
|
| 1.0);
|
| - http_server_props_manager_->SetAlternateProtocol(server_mail, 444,
|
| + http_server_props_manager_->AddAlternateProtocol(server_www, 1234,
|
| + NPN_SPDY_3_1, 0.7);
|
| + http_server_props_manager_->AddAlternateProtocol(server_mail, 444,
|
| NPN_SPDY_3_1, 0.2);
|
|
|
| // Set ServerNetworkStats.
|
| @@ -673,27 +697,16 @@ TEST_F(HttpServerPropertiesManagerTest, UpdateCacheWithPrefs) {
|
| base::RunLoop().RunUntilIdle();
|
|
|
| // Verify preferences.
|
| - const char expected_json[] = "{"
|
| - "\"servers\":{"
|
| - "\"mail.google.com:80\":{"
|
| - "\"alternate_protocol\":{"
|
| - "\"port\":444,\"probability\":0.2,\"protocol_str\":\"npn-spdy/3.1\""
|
| - "},"
|
| - "\"network_stats\":{"
|
| - "\"srtt\":42"
|
| - "}"
|
| - "},"
|
| - "\"www.google.com:80\":{"
|
| - "\"alternate_protocol\":{"
|
| - "\"port\":443,\"probability\":1.0,\"protocol_str\":\"npn-spdy/3\""
|
| - "}"
|
| - "}"
|
| - "},"
|
| - "\"supports_quic\":{"
|
| - "\"address\":\"127.0.0.1\",\"used_quic\":true"
|
| - "},"
|
| - "\"version\":3"
|
| - "}";
|
| + const char expected_json[] =
|
| + "{\"servers\":{\"mail.google.com:80\":{\"alternative_services\":[{"
|
| + "\"host\":\"mail.google.com\",\"port\":444,\"probability\":0.2,"
|
| + "\"protocol_str\":\"npn-spdy/3.1\"}],\"network_stats\":{\"srtt\":42}},"
|
| + "\"www.google.com:80\":{\"alternative_services\":[{\"host\":"
|
| + "\"www.google.com\",\"port\":443,\"probability\":1.0,\"protocol_str\":"
|
| + "\"npn-spdy/3\"},{\"host\":\"www.google.com\",\"port\":1234,"
|
| + "\"probability\":0.7,\"protocol_str\":\"npn-spdy/3.1\"}]}},"
|
| + "\"supports_quic\":{\"address\":\"127.0.0.1\",\"used_quic\":true},"
|
| + "\"version\":3}";
|
|
|
| const base::Value* http_server_properties =
|
| pref_service_.GetUserPref(kTestHttpServerProperties);
|
|
|