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

Side by Side Diff: net/http/http_server_properties_impl_unittest.cc

Issue 1802893002: Revert of Remove support for Alt-Svc/Alternate Protocol Probability (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 unified diff | Download patch
« no previous file with comments | « net/http/http_server_properties_impl.cc ('k') | net/http/http_server_properties_manager.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/http_server_properties_impl.h" 5 #include "net/http/http_server_properties_impl.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 55
56 class HttpServerPropertiesImplTest : public testing::Test { 56 class HttpServerPropertiesImplTest : public testing::Test {
57 protected: 57 protected:
58 bool HasAlternativeService(const HostPortPair& origin) { 58 bool HasAlternativeService(const HostPortPair& origin) {
59 const AlternativeServiceVector alternative_service_vector = 59 const AlternativeServiceVector alternative_service_vector =
60 impl_.GetAlternativeServices(origin); 60 impl_.GetAlternativeServices(origin);
61 return !alternative_service_vector.empty(); 61 return !alternative_service_vector.empty();
62 } 62 }
63 63
64 bool SetAlternativeService(const HostPortPair& origin, 64 bool SetAlternativeService(const HostPortPair& origin,
65 const AlternativeService& alternative_service) { 65 const AlternativeService& alternative_service,
66 double alternative_probability) {
66 const base::Time expiration = 67 const base::Time expiration =
67 base::Time::Now() + base::TimeDelta::FromDays(1); 68 base::Time::Now() + base::TimeDelta::FromDays(1);
68 return impl_.SetAlternativeService(origin, alternative_service, expiration); 69 return impl_.SetAlternativeService(origin, alternative_service,
70 alternative_probability, expiration);
69 } 71 }
70 72
71 void InitializeSpdySettingsUploadBandwidth(SpdySettingsMap* spdy_settings_map, 73 void InitializeSpdySettingsUploadBandwidth(SpdySettingsMap* spdy_settings_map,
72 const HostPortPair& spdy_server, 74 const HostPortPair& spdy_server,
73 uint32_t value) { 75 uint32_t value) {
74 SettingsMap settings_map; 76 SettingsMap settings_map;
75 settings_map[kSpdySettingsId] = 77 settings_map[kSpdySettingsId] =
76 SettingsFlagsAndValue(kSpdySettingsFlags, value); 78 SettingsFlagsAndValue(kSpdySettingsFlags, value);
77 spdy_settings_map->Put(spdy_server, settings_map); 79 spdy_settings_map->Put(spdy_server, settings_map);
78 } 80 }
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 EXPECT_FALSE(impl_.SupportsRequestPriority(spdy_server_mail)); 216 EXPECT_FALSE(impl_.SupportsRequestPriority(spdy_server_mail));
215 217
216 // Add docs.google.com:443 as supporting SPDY. 218 // Add docs.google.com:443 as supporting SPDY.
217 HostPortPair spdy_server_docs("docs.google.com", 443); 219 HostPortPair spdy_server_docs("docs.google.com", 443);
218 impl_.SetSupportsSpdy(spdy_server_docs, true); 220 impl_.SetSupportsSpdy(spdy_server_docs, true);
219 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_docs)); 221 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_docs));
220 222
221 // Add www.youtube.com:443 as supporting QUIC. 223 // Add www.youtube.com:443 as supporting QUIC.
222 HostPortPair quic_server_youtube("www.youtube.com", 443); 224 HostPortPair quic_server_youtube("www.youtube.com", 443);
223 const AlternativeService alternative_service1(QUIC, "www.youtube.com", 443); 225 const AlternativeService alternative_service1(QUIC, "www.youtube.com", 443);
224 SetAlternativeService(quic_server_youtube, alternative_service1); 226 SetAlternativeService(quic_server_youtube, alternative_service1, 1.0);
225 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_youtube)); 227 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_youtube));
226 228
227 // Add www.example.com:443 with two alternative services, one supporting QUIC. 229 // Add www.example.com:443 with two alternative services, one supporting QUIC.
228 HostPortPair quic_server_example("www.example.com", 443); 230 HostPortPair quic_server_example("www.example.com", 443);
229 const AlternativeService alternative_service2(NPN_HTTP_2, "", 443); 231 const AlternativeService alternative_service2(NPN_HTTP_2, "", 443);
230 SetAlternativeService(quic_server_example, alternative_service2); 232 SetAlternativeService(quic_server_example, alternative_service2, 1.0);
231 SetAlternativeService(quic_server_example, alternative_service1); 233 SetAlternativeService(quic_server_example, alternative_service1, 1.0);
232 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_example)); 234 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_example));
233 235
234 // Verify all the entries are the same after additions. 236 // Verify all the entries are the same after additions.
235 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_google)); 237 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_google));
236 EXPECT_FALSE(impl_.SupportsRequestPriority(spdy_server_mail)); 238 EXPECT_FALSE(impl_.SupportsRequestPriority(spdy_server_mail));
237 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_docs)); 239 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_docs));
238 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_youtube)); 240 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_youtube));
239 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_example)); 241 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_example));
240 } 242 }
241 243
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 ASSERT_EQ(spdy_server_m, string_value_m); 351 ASSERT_EQ(spdy_server_m, string_value_m);
350 } 352 }
351 353
352 typedef HttpServerPropertiesImplTest AlternateProtocolServerPropertiesTest; 354 typedef HttpServerPropertiesImplTest AlternateProtocolServerPropertiesTest;
353 355
354 TEST_F(AlternateProtocolServerPropertiesTest, Basic) { 356 TEST_F(AlternateProtocolServerPropertiesTest, Basic) {
355 HostPortPair test_host_port_pair("foo", 80); 357 HostPortPair test_host_port_pair("foo", 80);
356 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 358 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
357 359
358 AlternativeService alternative_service(NPN_HTTP_2, "foo", 443); 360 AlternativeService alternative_service(NPN_HTTP_2, "foo", 443);
359 SetAlternativeService(test_host_port_pair, alternative_service); 361 SetAlternativeService(test_host_port_pair, alternative_service, 1.0);
360 const AlternativeServiceVector alternative_service_vector = 362 const AlternativeServiceVector alternative_service_vector =
361 impl_.GetAlternativeServices(test_host_port_pair); 363 impl_.GetAlternativeServices(test_host_port_pair);
362 ASSERT_EQ(1u, alternative_service_vector.size()); 364 ASSERT_EQ(1u, alternative_service_vector.size());
363 EXPECT_EQ(alternative_service, alternative_service_vector[0]); 365 EXPECT_EQ(alternative_service, alternative_service_vector[0]);
364 366
365 impl_.Clear(); 367 impl_.Clear();
366 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 368 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
367 } 369 }
368 370
369 TEST_F(AlternateProtocolServerPropertiesTest, ExcludeOrigin) { 371 TEST_F(AlternateProtocolServerPropertiesTest, ExcludeOrigin) {
370 AlternativeServiceInfoVector alternative_service_info_vector; 372 AlternativeServiceInfoVector alternative_service_info_vector;
371 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 373 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
372 // Same hostname, same port, TCP: should be ignored. 374 // Same hostname, same port, TCP: should be ignored.
373 AlternativeService alternative_service1(NPN_HTTP_2, "foo", 443); 375 AlternativeService alternative_service1(NPN_HTTP_2, "foo", 443);
374 alternative_service_info_vector.push_back( 376 alternative_service_info_vector.push_back(
375 AlternativeServiceInfo(alternative_service1, expiration)); 377 AlternativeServiceInfo(alternative_service1, 1.0, expiration));
376 // Different hostname: GetAlternativeServices should return this one. 378 // Different hostname: GetAlternativeServices should return this one.
377 AlternativeService alternative_service2(NPN_HTTP_2, "bar", 443); 379 AlternativeService alternative_service2(NPN_HTTP_2, "bar", 443);
378 alternative_service_info_vector.push_back( 380 alternative_service_info_vector.push_back(
379 AlternativeServiceInfo(alternative_service2, expiration)); 381 AlternativeServiceInfo(alternative_service2, 1.0, expiration));
380 // Different port: GetAlternativeServices should return this one too. 382 // Different port: GetAlternativeServices should return this one too.
381 AlternativeService alternative_service3(NPN_HTTP_2, "foo", 80); 383 AlternativeService alternative_service3(NPN_HTTP_2, "foo", 80);
382 alternative_service_info_vector.push_back( 384 alternative_service_info_vector.push_back(
383 AlternativeServiceInfo(alternative_service3, expiration)); 385 AlternativeServiceInfo(alternative_service3, 1.0, expiration));
384 // QUIC: GetAlternativeServices should return this one too. 386 // QUIC: GetAlternativeServices should return this one too.
385 AlternativeService alternative_service4(QUIC, "foo", 443); 387 AlternativeService alternative_service4(QUIC, "foo", 443);
386 alternative_service_info_vector.push_back( 388 alternative_service_info_vector.push_back(
387 AlternativeServiceInfo(alternative_service4, expiration)); 389 AlternativeServiceInfo(alternative_service4, 1.0, expiration));
388 390
389 HostPortPair test_host_port_pair("foo", 443); 391 HostPortPair test_host_port_pair("foo", 443);
390 impl_.SetAlternativeServices(test_host_port_pair, 392 impl_.SetAlternativeServices(test_host_port_pair,
391 alternative_service_info_vector); 393 alternative_service_info_vector);
392 394
393 const AlternativeServiceVector alternative_service_vector = 395 const AlternativeServiceVector alternative_service_vector =
394 impl_.GetAlternativeServices(test_host_port_pair); 396 impl_.GetAlternativeServices(test_host_port_pair);
395 ASSERT_EQ(3u, alternative_service_vector.size()); 397 ASSERT_EQ(3u, alternative_service_vector.size());
396 EXPECT_EQ(alternative_service2, alternative_service_vector[0]); 398 EXPECT_EQ(alternative_service2, alternative_service_vector[0]);
397 EXPECT_EQ(alternative_service3, alternative_service_vector[1]); 399 EXPECT_EQ(alternative_service3, alternative_service_vector[1]);
398 EXPECT_EQ(alternative_service4, alternative_service_vector[2]); 400 EXPECT_EQ(alternative_service4, alternative_service_vector[2]);
399 } 401 }
400 402
403 TEST_F(AlternateProtocolServerPropertiesTest, DefaultProbabilityExcluded) {
404 HostPortPair test_host_port_pair("foo", 80);
405 const AlternativeService alternative_service(NPN_HTTP_2, "foo", 443);
406 SetAlternativeService(test_host_port_pair, alternative_service, 0.99);
407
408 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
409 }
410
411 // GetAlternativeServices and HasAlternativeServices should only return the ones
412 // with probability greater than or equal to the threshold.
413 TEST_F(AlternateProtocolServerPropertiesTest, Probability) {
414 impl_.SetAlternativeServiceProbabilityThreshold(0.5);
415
416 AlternativeServiceInfoVector alternative_service_info_vector;
417 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
418 const AlternativeService alternative_service1(NPN_HTTP_2, "foo", 443);
419 alternative_service_info_vector.push_back(
420 AlternativeServiceInfo(alternative_service1, 0.3, expiration));
421 const AlternativeService alternative_service2(QUIC, "bar", 123);
422 alternative_service_info_vector.push_back(
423 AlternativeServiceInfo(alternative_service2, 0.7, expiration));
424 const AlternativeService alternative_service3(NPN_SPDY_3_1, "baz", 443);
425 alternative_service_info_vector.push_back(
426 AlternativeServiceInfo(alternative_service3, 0.4, expiration));
427 const AlternativeService alternative_service4(NPN_HTTP_2, "qux", 1234);
428 alternative_service_info_vector.push_back(
429 AlternativeServiceInfo(alternative_service4, 0.6, expiration));
430
431 HostPortPair test_host_port_pair("foo", 80);
432 impl_.SetAlternativeServices(test_host_port_pair,
433 alternative_service_info_vector);
434
435 const AlternativeServiceVector alternative_service_vector =
436 impl_.GetAlternativeServices(test_host_port_pair);
437 ASSERT_EQ(2u, alternative_service_vector.size());
438 EXPECT_EQ(alternative_service2, alternative_service_vector[0]);
439 EXPECT_EQ(alternative_service4, alternative_service_vector[1]);
440 }
441
442 TEST_F(AlternateProtocolServerPropertiesTest, ProbabilityExcluded) {
443 impl_.SetAlternativeServiceProbabilityThreshold(0.75);
444
445 HostPortPair test_host_port_pair("foo", 80);
446 const AlternativeService alternative_service(NPN_HTTP_2, "foo", 443);
447 SetAlternativeService(test_host_port_pair, alternative_service, 0.5);
448 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
449 }
450
451 TEST_F(AlternateProtocolServerPropertiesTest, ZeroProbabilityAlwaysExcluded) {
452 impl_.SetAlternativeServiceProbabilityThreshold(0.0);
453
454 HostPortPair test_host_port_pair("foo", 80);
455 const AlternativeService alternative_service(NPN_HTTP_2, "foo", 443);
456 SetAlternativeService(test_host_port_pair, alternative_service, 0);
457 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
458 }
459
401 TEST_F(AlternateProtocolServerPropertiesTest, Initialize) { 460 TEST_F(AlternateProtocolServerPropertiesTest, Initialize) {
402 // |test_host_port_pair1| has an alternative service, which will not be 461 // |test_host_port_pair1| has an alternative service, which will not be
403 // affected by InitializeAlternativeServiceServers(), because 462 // affected by InitializeAlternativeServiceServers(), because
404 // |alternative_service_map| does not have an entry for 463 // |alternative_service_map| does not have an entry for
405 // |test_host_port_pair1|. 464 // |test_host_port_pair1|.
406 HostPortPair test_host_port_pair1("foo1", 80); 465 HostPortPair test_host_port_pair1("foo1", 80);
407 const AlternativeService alternative_service1(NPN_HTTP_2, "bar1", 443); 466 const AlternativeService alternative_service1(NPN_HTTP_2, "bar1", 443);
408 const base::Time now = base::Time::Now(); 467 const base::Time now = base::Time::Now();
409 base::Time expiration1 = now + base::TimeDelta::FromDays(1); 468 base::Time expiration1 = now + base::TimeDelta::FromDays(1);
410 // 1st entry in the memory. 469 // 1st entry in the memory.
411 impl_.SetAlternativeService(test_host_port_pair1, alternative_service1, 470 impl_.SetAlternativeService(test_host_port_pair1, alternative_service1, 1.0,
412 expiration1); 471 expiration1);
413 472
414 // |test_host_port_pair2| has an alternative service, which will be 473 // |test_host_port_pair2| has an alternative service, which will be
415 // overwritten by InitializeAlternativeServiceServers(), because 474 // overwritten by InitializeAlternativeServiceServers(), because
416 // |alternative_service_map| has an entry for 475 // |alternative_service_map| has an entry for
417 // |test_host_port_pair2|. 476 // |test_host_port_pair2|.
418 AlternativeServiceInfoVector alternative_service_info_vector; 477 AlternativeServiceInfoVector alternative_service_info_vector;
419 const AlternativeService alternative_service2(NPN_SPDY_3_1, "bar2", 443); 478 const AlternativeService alternative_service2(NPN_SPDY_3_1, "bar2", 443);
420 base::Time expiration2 = now + base::TimeDelta::FromDays(2); 479 base::Time expiration2 = now + base::TimeDelta::FromDays(2);
421 alternative_service_info_vector.push_back( 480 alternative_service_info_vector.push_back(
422 AlternativeServiceInfo(alternative_service2, expiration2)); 481 AlternativeServiceInfo(alternative_service2, 1.0, expiration2));
423 HostPortPair test_host_port_pair2("foo2", 80); 482 HostPortPair test_host_port_pair2("foo2", 80);
424 // 0th entry in the memory. 483 // 0th entry in the memory.
425 impl_.SetAlternativeServices(test_host_port_pair2, 484 impl_.SetAlternativeServices(test_host_port_pair2,
426 alternative_service_info_vector); 485 alternative_service_info_vector);
427 486
428 // Prepare |alternative_service_map| to be loaded by 487 // Prepare |alternative_service_map| to be loaded by
429 // InitializeAlternativeServiceServers(). 488 // InitializeAlternativeServiceServers().
430 AlternativeServiceMap alternative_service_map( 489 AlternativeServiceMap alternative_service_map(
431 AlternativeServiceMap::NO_AUTO_EVICT); 490 AlternativeServiceMap::NO_AUTO_EVICT);
432 const AlternativeService alternative_service3(NPN_HTTP_2, "bar3", 123); 491 const AlternativeService alternative_service3(NPN_HTTP_2, "bar3", 123);
433 base::Time expiration3 = now + base::TimeDelta::FromDays(3); 492 base::Time expiration3 = now + base::TimeDelta::FromDays(3);
434 const AlternativeServiceInfo alternative_service_info1(alternative_service3, 493 const AlternativeServiceInfo alternative_service_info1(alternative_service3,
435 expiration3); 494 0.7, expiration3);
436 // Simulate updating data for 0th entry with data from Preferences. 495 // Simulate updating data for 0th entry with data from Preferences.
437 alternative_service_map.Put( 496 alternative_service_map.Put(
438 test_host_port_pair2, 497 test_host_port_pair2,
439 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info1)); 498 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info1));
440 499
441 HostPortPair test_host_port_pair3("foo3", 80); 500 HostPortPair test_host_port_pair3("foo3", 80);
442 const AlternativeService alternative_service4(NPN_HTTP_2, "bar4", 1234); 501 const AlternativeService alternative_service4(NPN_HTTP_2, "bar4", 1234);
443 base::Time expiration4 = now + base::TimeDelta::FromDays(4); 502 base::Time expiration4 = now + base::TimeDelta::FromDays(4);
444 const AlternativeServiceInfo alternative_service_info2(alternative_service4, 503 const AlternativeServiceInfo alternative_service_info2(alternative_service4,
445 expiration4); 504 0.2, expiration4);
446 // Add an old entry from Preferences, this will be added to end of recency 505 // Add an old entry from Preferences, this will be added to end of recency
447 // list. 506 // list.
448 alternative_service_map.Put( 507 alternative_service_map.Put(
449 test_host_port_pair3, 508 test_host_port_pair3,
450 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info2)); 509 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info2));
451 510
452 // MRU list will be test_host_port_pair2, test_host_port_pair1, 511 // MRU list will be test_host_port_pair2, test_host_port_pair1,
453 // test_host_port_pair3. 512 // test_host_port_pair3.
454 impl_.InitializeAlternativeServiceServers(&alternative_service_map); 513 impl_.InitializeAlternativeServiceServers(&alternative_service_map);
455 514
456 // Verify alternative_service_map. 515 // Verify alternative_service_map.
457 const AlternativeServiceMap& map = impl_.alternative_service_map(); 516 const AlternativeServiceMap& map = impl_.alternative_service_map();
458 ASSERT_EQ(3u, map.size()); 517 ASSERT_EQ(3u, map.size());
459 AlternativeServiceMap::const_iterator map_it = map.begin(); 518 AlternativeServiceMap::const_iterator map_it = map.begin();
460 519
461 EXPECT_TRUE(map_it->first.Equals(test_host_port_pair2)); 520 EXPECT_TRUE(map_it->first.Equals(test_host_port_pair2));
462 ASSERT_EQ(1u, map_it->second.size()); 521 ASSERT_EQ(1u, map_it->second.size());
463 EXPECT_EQ(alternative_service3, map_it->second[0].alternative_service); 522 EXPECT_EQ(alternative_service3, map_it->second[0].alternative_service);
523 EXPECT_EQ(0.7, map_it->second[0].probability);
464 EXPECT_EQ(expiration3, map_it->second[0].expiration); 524 EXPECT_EQ(expiration3, map_it->second[0].expiration);
465 ++map_it; 525 ++map_it;
466 EXPECT_TRUE(map_it->first.Equals(test_host_port_pair1)); 526 EXPECT_TRUE(map_it->first.Equals(test_host_port_pair1));
467 ASSERT_EQ(1u, map_it->second.size()); 527 ASSERT_EQ(1u, map_it->second.size());
468 EXPECT_EQ(alternative_service1, map_it->second[0].alternative_service); 528 EXPECT_EQ(alternative_service1, map_it->second[0].alternative_service);
529 EXPECT_EQ(1.0, map_it->second[0].probability);
469 EXPECT_EQ(expiration1, map_it->second[0].expiration); 530 EXPECT_EQ(expiration1, map_it->second[0].expiration);
470 ++map_it; 531 ++map_it;
471 EXPECT_TRUE(map_it->first.Equals(test_host_port_pair3)); 532 EXPECT_TRUE(map_it->first.Equals(test_host_port_pair3));
472 ASSERT_EQ(1u, map_it->second.size()); 533 ASSERT_EQ(1u, map_it->second.size());
473 EXPECT_EQ(alternative_service4, map_it->second[0].alternative_service); 534 EXPECT_EQ(alternative_service4, map_it->second[0].alternative_service);
535 EXPECT_EQ(0.2, map_it->second[0].probability);
474 EXPECT_EQ(expiration4, map_it->second[0].expiration); 536 EXPECT_EQ(expiration4, map_it->second[0].expiration);
475 } 537 }
476 538
477 // Regression test for https://crbug.com/504032: 539 // Regression test for https://crbug.com/504032:
478 // InitializeAlternativeServiceServers() should not crash if there is an empty 540 // InitializeAlternativeServiceServers() should not crash if there is an empty
479 // hostname is the mapping. 541 // hostname is the mapping.
480 TEST_F(AlternateProtocolServerPropertiesTest, InitializeWithEmptyHostname) { 542 TEST_F(AlternateProtocolServerPropertiesTest, InitializeWithEmptyHostname) {
481 const HostPortPair host_port_pair("foo", 443); 543 const HostPortPair host_port_pair("foo", 443);
482 const AlternativeService alternative_service_with_empty_hostname(NPN_HTTP_2, 544 const AlternativeService alternative_service_with_empty_hostname(NPN_HTTP_2,
483 "", 1234); 545 "", 1234);
484 const AlternativeService alternative_service_with_foo_hostname(NPN_HTTP_2, 546 const AlternativeService alternative_service_with_foo_hostname(NPN_HTTP_2,
485 "foo", 1234); 547 "foo", 1234);
486 SetAlternativeService(host_port_pair, 548 SetAlternativeService(host_port_pair, alternative_service_with_empty_hostname,
487 alternative_service_with_empty_hostname); 549 1.0);
488 impl_.MarkAlternativeServiceBroken(alternative_service_with_foo_hostname); 550 impl_.MarkAlternativeServiceBroken(alternative_service_with_foo_hostname);
489 551
490 AlternativeServiceMap alternative_service_map( 552 AlternativeServiceMap alternative_service_map(
491 AlternativeServiceMap::NO_AUTO_EVICT); 553 AlternativeServiceMap::NO_AUTO_EVICT);
492 impl_.InitializeAlternativeServiceServers(&alternative_service_map); 554 impl_.InitializeAlternativeServiceServers(&alternative_service_map);
493 555
494 EXPECT_TRUE( 556 EXPECT_TRUE(
495 impl_.IsAlternativeServiceBroken(alternative_service_with_foo_hostname)); 557 impl_.IsAlternativeServiceBroken(alternative_service_with_foo_hostname));
496 const AlternativeServiceVector alternative_service_vector = 558 const AlternativeServiceVector alternative_service_vector =
497 impl_.GetAlternativeServices(host_port_pair); 559 impl_.GetAlternativeServices(host_port_pair);
498 ASSERT_EQ(1u, alternative_service_vector.size()); 560 ASSERT_EQ(1u, alternative_service_vector.size());
499 EXPECT_EQ(alternative_service_with_foo_hostname, 561 EXPECT_EQ(alternative_service_with_foo_hostname,
500 alternative_service_vector[0]); 562 alternative_service_vector[0]);
501 } 563 }
502 564
503 // Regression test for https://crbug.com/516486: 565 // Regression test for https://crbug.com/516486:
504 // GetAlternativeServices() should remove |alternative_service_map_| elements 566 // GetAlternativeServices() should remove |alternative_service_map_| elements
505 // with empty value. 567 // with empty value.
506 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVector) { 568 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVector) {
507 HostPortPair host_port_pair("foo", 443); 569 HostPortPair host_port_pair("foo", 443);
508 const AlternativeService alternative_service(NPN_HTTP_2, "bar", 443); 570 const AlternativeService alternative_service(NPN_HTTP_2, "bar", 443);
509 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); 571 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1);
510 const AlternativeServiceInfo alternative_service_info(alternative_service, 572 const AlternativeServiceInfo alternative_service_info(alternative_service,
511 expiration); 573 1.0, expiration);
512 AlternativeServiceMap alternative_service_map( 574 AlternativeServiceMap alternative_service_map(
513 AlternativeServiceMap::NO_AUTO_EVICT); 575 AlternativeServiceMap::NO_AUTO_EVICT);
514 alternative_service_map.Put( 576 alternative_service_map.Put(
515 host_port_pair, 577 host_port_pair,
516 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); 578 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info));
517 579
518 // Prepare |alternative_service_map_| with a single key that has a single 580 // Prepare |alternative_service_map_| with a single key that has a single
519 // AlternativeServiceInfo with identical hostname and port. 581 // AlternativeServiceInfo with identical hostname and port.
520 impl_.InitializeAlternativeServiceServers(&alternative_service_map); 582 impl_.InitializeAlternativeServiceServers(&alternative_service_map);
521 583
(...skipping 15 matching lines...) Expand all
537 ASSERT_TRUE(alternative_service_vector.empty()); 599 ASSERT_TRUE(alternative_service_vector.empty());
538 } 600 }
539 601
540 // Regression test for https://crbug.com/516486 for the canonical host case. 602 // Regression test for https://crbug.com/516486 for the canonical host case.
541 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVectorForCanonical) { 603 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVectorForCanonical) {
542 HostPortPair host_port_pair("foo.c.youtube.com", 443); 604 HostPortPair host_port_pair("foo.c.youtube.com", 443);
543 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 443); 605 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 443);
544 const AlternativeService alternative_service(NPN_HTTP_2, "", 443); 606 const AlternativeService alternative_service(NPN_HTTP_2, "", 443);
545 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); 607 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1);
546 const AlternativeServiceInfo alternative_service_info(alternative_service, 608 const AlternativeServiceInfo alternative_service_info(alternative_service,
547 expiration); 609 1.0, expiration);
548 AlternativeServiceMap alternative_service_map( 610 AlternativeServiceMap alternative_service_map(
549 AlternativeServiceMap::NO_AUTO_EVICT); 611 AlternativeServiceMap::NO_AUTO_EVICT);
550 alternative_service_map.Put( 612 alternative_service_map.Put(
551 canonical_host_port_pair, 613 canonical_host_port_pair,
552 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); 614 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info));
553 615
554 // Prepare |alternative_service_map_| with a single key that has a single 616 // Prepare |alternative_service_map_| with a single key that has a single
555 // AlternativeServiceInfo with identical hostname and port. 617 // AlternativeServiceInfo with identical hostname and port.
556 impl_.InitializeAlternativeServiceServers(&alternative_service_map); 618 impl_.InitializeAlternativeServiceServers(&alternative_service_map);
557 619
(...skipping 14 matching lines...) Expand all
572 // There should still be no alternative service assigned to 634 // There should still be no alternative service assigned to
573 // |canonical_host_port_pair|. 635 // |canonical_host_port_pair|.
574 alternative_service_vector = 636 alternative_service_vector =
575 impl_.GetAlternativeServices(canonical_host_port_pair); 637 impl_.GetAlternativeServices(canonical_host_port_pair);
576 ASSERT_TRUE(alternative_service_vector.empty()); 638 ASSERT_TRUE(alternative_service_vector.empty());
577 } 639 }
578 640
579 TEST_F(AlternateProtocolServerPropertiesTest, MRUOfGetAlternativeServices) { 641 TEST_F(AlternateProtocolServerPropertiesTest, MRUOfGetAlternativeServices) {
580 HostPortPair test_host_port_pair1("foo1", 80); 642 HostPortPair test_host_port_pair1("foo1", 80);
581 const AlternativeService alternative_service1(NPN_SPDY_3_1, "foo1", 443); 643 const AlternativeService alternative_service1(NPN_SPDY_3_1, "foo1", 443);
582 SetAlternativeService(test_host_port_pair1, alternative_service1); 644 SetAlternativeService(test_host_port_pair1, alternative_service1, 1.0);
583 HostPortPair test_host_port_pair2("foo2", 80); 645 HostPortPair test_host_port_pair2("foo2", 80);
584 const AlternativeService alternative_service2(NPN_HTTP_2, "foo2", 1234); 646 const AlternativeService alternative_service2(NPN_HTTP_2, "foo2", 1234);
585 SetAlternativeService(test_host_port_pair2, alternative_service2); 647 SetAlternativeService(test_host_port_pair2, alternative_service2, 1.0);
586 648
587 const AlternativeServiceMap& map = impl_.alternative_service_map(); 649 const AlternativeServiceMap& map = impl_.alternative_service_map();
588 AlternativeServiceMap::const_iterator it = map.begin(); 650 AlternativeServiceMap::const_iterator it = map.begin();
589 EXPECT_TRUE(it->first.Equals(test_host_port_pair2)); 651 EXPECT_TRUE(it->first.Equals(test_host_port_pair2));
590 ASSERT_EQ(1u, it->second.size()); 652 ASSERT_EQ(1u, it->second.size());
591 EXPECT_EQ(alternative_service2, it->second[0].alternative_service); 653 EXPECT_EQ(alternative_service2, it->second[0].alternative_service);
592 654
593 const AlternativeServiceVector alternative_service_vector = 655 const AlternativeServiceVector alternative_service_vector =
594 impl_.GetAlternativeServices(test_host_port_pair1); 656 impl_.GetAlternativeServices(test_host_port_pair1);
595 ASSERT_EQ(1u, alternative_service_vector.size()); 657 ASSERT_EQ(1u, alternative_service_vector.size());
596 EXPECT_EQ(alternative_service1, alternative_service_vector[0]); 658 EXPECT_EQ(alternative_service1, alternative_service_vector[0]);
597 659
598 // GetAlternativeServices should reorder the AlternateProtocol map. 660 // GetAlternativeServices should reorder the AlternateProtocol map.
599 it = map.begin(); 661 it = map.begin();
600 EXPECT_TRUE(it->first.Equals(test_host_port_pair1)); 662 EXPECT_TRUE(it->first.Equals(test_host_port_pair1));
601 ASSERT_EQ(1u, it->second.size()); 663 ASSERT_EQ(1u, it->second.size());
602 EXPECT_EQ(alternative_service1, it->second[0].alternative_service); 664 EXPECT_EQ(alternative_service1, it->second[0].alternative_service);
603 } 665 }
604 666
605 TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) { 667 TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) {
606 HostPortPair test_host_port_pair("foo", 80); 668 HostPortPair test_host_port_pair("foo", 80);
607 const AlternativeService alternative_service1(NPN_HTTP_2, "foo", 443); 669 const AlternativeService alternative_service1(NPN_HTTP_2, "foo", 443);
608 SetAlternativeService(test_host_port_pair, alternative_service1); 670 SetAlternativeService(test_host_port_pair, alternative_service1, 1.0);
609 AlternativeServiceVector alternative_service_vector = 671 AlternativeServiceVector alternative_service_vector =
610 impl_.GetAlternativeServices(test_host_port_pair); 672 impl_.GetAlternativeServices(test_host_port_pair);
611 ASSERT_EQ(1u, alternative_service_vector.size()); 673 ASSERT_EQ(1u, alternative_service_vector.size());
612 EXPECT_EQ(alternative_service1, alternative_service_vector[0]); 674 EXPECT_EQ(alternative_service1, alternative_service_vector[0]);
613 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service1)); 675 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service1));
614 676
615 // GetAlternativeServices should return the broken alternative service. 677 // GetAlternativeServices should return the broken alternative service.
616 impl_.MarkAlternativeServiceBroken(alternative_service1); 678 impl_.MarkAlternativeServiceBroken(alternative_service1);
617 alternative_service_vector = 679 alternative_service_vector =
618 impl_.GetAlternativeServices(test_host_port_pair); 680 impl_.GetAlternativeServices(test_host_port_pair);
619 ASSERT_EQ(1u, alternative_service_vector.size()); 681 ASSERT_EQ(1u, alternative_service_vector.size());
620 EXPECT_EQ(alternative_service1, alternative_service_vector[0]); 682 EXPECT_EQ(alternative_service1, alternative_service_vector[0]);
621 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); 683 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
622 684
623 // SetAlternativeServices should add a broken alternative service to the map. 685 // SetAlternativeServices should add a broken alternative service to the map.
624 AlternativeServiceInfoVector alternative_service_info_vector; 686 AlternativeServiceInfoVector alternative_service_info_vector;
625 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 687 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
626 alternative_service_info_vector.push_back( 688 alternative_service_info_vector.push_back(
627 AlternativeServiceInfo(alternative_service1, expiration)); 689 AlternativeServiceInfo(alternative_service1, 1.0, expiration));
628 const AlternativeService alternative_service2(NPN_HTTP_2, "foo", 1234); 690 const AlternativeService alternative_service2(NPN_HTTP_2, "foo", 1234);
629 alternative_service_info_vector.push_back( 691 alternative_service_info_vector.push_back(
630 AlternativeServiceInfo(alternative_service2, expiration)); 692 AlternativeServiceInfo(alternative_service2, 1.0, expiration));
631 impl_.SetAlternativeServices(test_host_port_pair, 693 impl_.SetAlternativeServices(test_host_port_pair,
632 alternative_service_info_vector); 694 alternative_service_info_vector);
633 alternative_service_vector = 695 alternative_service_vector =
634 impl_.GetAlternativeServices(test_host_port_pair); 696 impl_.GetAlternativeServices(test_host_port_pair);
635 ASSERT_EQ(2u, alternative_service_vector.size()); 697 ASSERT_EQ(2u, alternative_service_vector.size());
636 EXPECT_EQ(alternative_service1, alternative_service_vector[0]); 698 EXPECT_EQ(alternative_service1, alternative_service_vector[0]);
637 EXPECT_EQ(alternative_service2, alternative_service_vector[1]); 699 EXPECT_EQ(alternative_service2, alternative_service_vector[1]);
638 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service_vector[0])); 700 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service_vector[0]));
639 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service_vector[1])); 701 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service_vector[1]));
640 702
641 // SetAlternativeService should add a broken alternative service to the map. 703 // SetAlternativeService should add a broken alternative service to the map.
642 SetAlternativeService(test_host_port_pair, alternative_service1); 704 SetAlternativeService(test_host_port_pair, alternative_service1, 1.0);
643 alternative_service_vector = 705 alternative_service_vector =
644 impl_.GetAlternativeServices(test_host_port_pair); 706 impl_.GetAlternativeServices(test_host_port_pair);
645 ASSERT_EQ(1u, alternative_service_vector.size()); 707 ASSERT_EQ(1u, alternative_service_vector.size());
646 EXPECT_EQ(alternative_service1, alternative_service_vector[0]); 708 EXPECT_EQ(alternative_service1, alternative_service_vector[0]);
647 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service_vector[0])); 709 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service_vector[0]));
648 } 710 }
649 711
650 TEST_F(AlternateProtocolServerPropertiesTest, MaxAge) { 712 TEST_F(AlternateProtocolServerPropertiesTest, MaxAge) {
651 AlternativeServiceInfoVector alternative_service_info_vector; 713 AlternativeServiceInfoVector alternative_service_info_vector;
652 base::Time now = base::Time::Now(); 714 base::Time now = base::Time::Now();
653 base::TimeDelta one_day = base::TimeDelta::FromDays(1); 715 base::TimeDelta one_day = base::TimeDelta::FromDays(1);
654 716
655 // First alternative service expired one day ago, should not be returned by 717 // First alternative service expired one day ago, should not be returned by
656 // GetAlternativeServices(). 718 // GetAlternativeServices().
657 const AlternativeService alternative_service1(NPN_SPDY_3_1, "foo", 443); 719 const AlternativeService alternative_service1(NPN_SPDY_3_1, "foo", 443);
658 alternative_service_info_vector.push_back( 720 alternative_service_info_vector.push_back(
659 AlternativeServiceInfo(alternative_service1, now - one_day)); 721 AlternativeServiceInfo(alternative_service1, 1.0, now - one_day));
660 722
661 // Second alterrnative service will expire one day from now, should be 723 // Second alterrnative service will expire one day from now, should be
662 // returned by GetAlternativeSerices(). 724 // returned by GetAlternativeSerices().
663 const AlternativeService alternative_service2(NPN_HTTP_2, "bar", 1234); 725 const AlternativeService alternative_service2(NPN_HTTP_2, "bar", 1234);
664 alternative_service_info_vector.push_back( 726 alternative_service_info_vector.push_back(
665 AlternativeServiceInfo(alternative_service2, now + one_day)); 727 AlternativeServiceInfo(alternative_service2, 1.0, now + one_day));
666 728
667 HostPortPair test_host_port_pair("foo", 80); 729 HostPortPair test_host_port_pair("foo", 80);
668 impl_.SetAlternativeServices(test_host_port_pair, 730 impl_.SetAlternativeServices(test_host_port_pair,
669 alternative_service_info_vector); 731 alternative_service_info_vector);
670 732
671 AlternativeServiceVector alternative_service_vector = 733 AlternativeServiceVector alternative_service_vector =
672 impl_.GetAlternativeServices(test_host_port_pair); 734 impl_.GetAlternativeServices(test_host_port_pair);
673 ASSERT_EQ(1u, alternative_service_vector.size()); 735 ASSERT_EQ(1u, alternative_service_vector.size());
674 EXPECT_EQ(alternative_service2, alternative_service_vector[0]); 736 EXPECT_EQ(alternative_service2, alternative_service_vector[0]);
675 } 737 }
676 738
677 TEST_F(AlternateProtocolServerPropertiesTest, MaxAgeCanonical) { 739 TEST_F(AlternateProtocolServerPropertiesTest, MaxAgeCanonical) {
678 AlternativeServiceInfoVector alternative_service_info_vector; 740 AlternativeServiceInfoVector alternative_service_info_vector;
679 base::Time now = base::Time::Now(); 741 base::Time now = base::Time::Now();
680 base::TimeDelta one_day = base::TimeDelta::FromDays(1); 742 base::TimeDelta one_day = base::TimeDelta::FromDays(1);
681 743
682 // First alternative service expired one day ago, should not be returned by 744 // First alternative service expired one day ago, should not be returned by
683 // GetAlternativeServices(). 745 // GetAlternativeServices().
684 const AlternativeService alternative_service1(NPN_SPDY_3_1, "foo", 443); 746 const AlternativeService alternative_service1(NPN_SPDY_3_1, "foo", 443);
685 alternative_service_info_vector.push_back( 747 alternative_service_info_vector.push_back(
686 AlternativeServiceInfo(alternative_service1, now - one_day)); 748 AlternativeServiceInfo(alternative_service1, 1.0, now - one_day));
687 749
688 // Second alterrnative service will expire one day from now, should be 750 // Second alterrnative service will expire one day from now, should be
689 // returned by GetAlternativeSerices(). 751 // returned by GetAlternativeSerices().
690 const AlternativeService alternative_service2(NPN_HTTP_2, "bar", 1234); 752 const AlternativeService alternative_service2(NPN_HTTP_2, "bar", 1234);
691 alternative_service_info_vector.push_back( 753 alternative_service_info_vector.push_back(
692 AlternativeServiceInfo(alternative_service2, now + one_day)); 754 AlternativeServiceInfo(alternative_service2, 1.0, now + one_day));
693 755
694 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80); 756 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
695 impl_.SetAlternativeServices(canonical_host_port_pair, 757 impl_.SetAlternativeServices(canonical_host_port_pair,
696 alternative_service_info_vector); 758 alternative_service_info_vector);
697 759
698 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 760 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
699 AlternativeServiceVector alternative_service_vector = 761 AlternativeServiceVector alternative_service_vector =
700 impl_.GetAlternativeServices(test_host_port_pair); 762 impl_.GetAlternativeServices(test_host_port_pair);
701 ASSERT_EQ(1u, alternative_service_vector.size()); 763 ASSERT_EQ(1u, alternative_service_vector.size());
702 EXPECT_EQ(alternative_service2, alternative_service_vector[0]); 764 EXPECT_EQ(alternative_service2, alternative_service_vector[0]);
703 } 765 }
704 766
705 TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternativeServices) { 767 TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternativeServices) {
706 AlternativeServiceInfoVector alternative_service_info_vector; 768 AlternativeServiceInfoVector alternative_service_info_vector;
707 const AlternativeService alternative_service1(NPN_SPDY_3_1, "foo", 443); 769 const AlternativeService alternative_service1(NPN_SPDY_3_1, "foo", 443);
708 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 770 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
709 alternative_service_info_vector.push_back( 771 alternative_service_info_vector.push_back(
710 AlternativeServiceInfo(alternative_service1, expiration)); 772 AlternativeServiceInfo(alternative_service1, 1.0, expiration));
711 const AlternativeService alternative_service2(NPN_HTTP_2, "bar", 1234); 773 const AlternativeService alternative_service2(NPN_HTTP_2, "bar", 1234);
712 alternative_service_info_vector.push_back( 774 alternative_service_info_vector.push_back(
713 AlternativeServiceInfo(alternative_service2, expiration)); 775 AlternativeServiceInfo(alternative_service2, 1.0, expiration));
714 HostPortPair test_host_port_pair("foo", 80); 776 HostPortPair test_host_port_pair("foo", 80);
715 impl_.SetAlternativeServices(test_host_port_pair, 777 impl_.SetAlternativeServices(test_host_port_pair,
716 alternative_service_info_vector); 778 alternative_service_info_vector);
717 779
718 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); 780 const net::AlternativeServiceMap& map = impl_.alternative_service_map();
719 net::AlternativeServiceMap::const_iterator it = map.begin(); 781 net::AlternativeServiceMap::const_iterator it = map.begin();
720 EXPECT_TRUE(it->first.Equals(test_host_port_pair)); 782 EXPECT_TRUE(it->first.Equals(test_host_port_pair));
721 ASSERT_EQ(2u, it->second.size()); 783 ASSERT_EQ(2u, it->second.size());
722 EXPECT_EQ(alternative_service1, it->second[0].alternative_service); 784 EXPECT_EQ(alternative_service1, it->second[0].alternative_service);
723 EXPECT_EQ(alternative_service2, it->second[1].alternative_service); 785 EXPECT_EQ(alternative_service2, it->second[1].alternative_service);
724 786
725 impl_.ClearAlternativeServices(test_host_port_pair); 787 impl_.ClearAlternativeServices(test_host_port_pair);
726 EXPECT_TRUE(map.empty()); 788 EXPECT_TRUE(map.empty());
727 } 789 }
728 790
729 // A broken alternative service in the mapping carries meaningful information, 791 // A broken alternative service in the mapping carries meaningful information,
730 // therefore it should not be ignored by SetAlternativeService(). In 792 // therefore it should not be ignored by SetAlternativeService(). In
731 // particular, an alternative service mapped to an origin shadows alternative 793 // particular, an alternative service mapped to an origin shadows alternative
732 // services of canonical hosts. 794 // services of canonical hosts.
733 TEST_F(AlternateProtocolServerPropertiesTest, BrokenShadowsCanonical) { 795 TEST_F(AlternateProtocolServerPropertiesTest, BrokenShadowsCanonical) {
734 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 796 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
735 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80); 797 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
736 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com", 798 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com",
737 1234); 799 1234);
738 SetAlternativeService(canonical_host_port_pair, 800 SetAlternativeService(canonical_host_port_pair, canonical_alternative_service,
739 canonical_alternative_service); 801 1.0);
740 AlternativeServiceVector alternative_service_vector = 802 AlternativeServiceVector alternative_service_vector =
741 impl_.GetAlternativeServices(test_host_port_pair); 803 impl_.GetAlternativeServices(test_host_port_pair);
742 ASSERT_EQ(1u, alternative_service_vector.size()); 804 ASSERT_EQ(1u, alternative_service_vector.size());
743 EXPECT_EQ(canonical_alternative_service, alternative_service_vector[0]); 805 EXPECT_EQ(canonical_alternative_service, alternative_service_vector[0]);
744 806
745 const AlternativeService broken_alternative_service(NPN_HTTP_2, "foo", 443); 807 const AlternativeService broken_alternative_service(NPN_HTTP_2, "foo", 443);
746 impl_.MarkAlternativeServiceBroken(broken_alternative_service); 808 impl_.MarkAlternativeServiceBroken(broken_alternative_service);
747 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service)); 809 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service));
748 810
749 SetAlternativeService(test_host_port_pair, broken_alternative_service); 811 SetAlternativeService(test_host_port_pair, broken_alternative_service, 1.0);
750 alternative_service_vector = 812 alternative_service_vector =
751 impl_.GetAlternativeServices(test_host_port_pair); 813 impl_.GetAlternativeServices(test_host_port_pair);
752 ASSERT_EQ(1u, alternative_service_vector.size()); 814 ASSERT_EQ(1u, alternative_service_vector.size());
753 EXPECT_EQ(broken_alternative_service, alternative_service_vector[0]); 815 EXPECT_EQ(broken_alternative_service, alternative_service_vector[0]);
754 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service)); 816 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service));
755 } 817 }
756 818
757 TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) { 819 TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) {
758 HostPortPair test_host_port_pair("foo", 80); 820 HostPortPair test_host_port_pair("foo", 80);
759 const AlternativeService alternative_service(NPN_HTTP_2, "foo", 443); 821 const AlternativeService alternative_service(NPN_HTTP_2, "foo", 443);
760 SetAlternativeService(test_host_port_pair, alternative_service); 822 SetAlternativeService(test_host_port_pair, alternative_service, 1.0);
761 impl_.MarkAlternativeServiceBroken(alternative_service); 823 impl_.MarkAlternativeServiceBroken(alternative_service);
762 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); 824 ASSERT_TRUE(HasAlternativeService(test_host_port_pair));
763 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service)); 825 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
764 // ClearAlternativeServices should leave a broken alternative service marked 826 // ClearAlternativeServices should leave a broken alternative service marked
765 // as such. 827 // as such.
766 impl_.ClearAlternativeServices(test_host_port_pair); 828 impl_.ClearAlternativeServices(test_host_port_pair);
767 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service)); 829 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
768 } 830 }
769 831
770 TEST_F(AlternateProtocolServerPropertiesTest, MarkRecentlyBroken) { 832 TEST_F(AlternateProtocolServerPropertiesTest, MarkRecentlyBroken) {
771 HostPortPair host_port_pair("foo", 80); 833 HostPortPair host_port_pair("foo", 80);
772 const AlternativeService alternative_service(NPN_HTTP_2, "foo", 443); 834 const AlternativeService alternative_service(NPN_HTTP_2, "foo", 443);
773 SetAlternativeService(host_port_pair, alternative_service); 835 SetAlternativeService(host_port_pair, alternative_service, 1.0);
774 836
775 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); 837 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
776 EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); 838 EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
777 839
778 impl_.MarkAlternativeServiceRecentlyBroken(alternative_service); 840 impl_.MarkAlternativeServiceRecentlyBroken(alternative_service);
779 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); 841 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
780 EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); 842 EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
781 843
782 impl_.ConfirmAlternativeService(alternative_service); 844 impl_.ConfirmAlternativeService(alternative_service);
783 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); 845 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
784 EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); 846 EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
785 } 847 }
786 848
787 TEST_F(AlternateProtocolServerPropertiesTest, Canonical) { 849 TEST_F(AlternateProtocolServerPropertiesTest, Canonical) {
788 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 850 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
789 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 851 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
790 852
791 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80); 853 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
792 EXPECT_FALSE(HasAlternativeService(canonical_host_port_pair)); 854 EXPECT_FALSE(HasAlternativeService(canonical_host_port_pair));
793 855
794 AlternativeServiceInfoVector alternative_service_info_vector; 856 AlternativeServiceInfoVector alternative_service_info_vector;
795 const AlternativeService canonical_alternative_service1( 857 const AlternativeService canonical_alternative_service1(
796 QUIC, "bar.c.youtube.com", 1234); 858 QUIC, "bar.c.youtube.com", 1234);
797 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 859 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
798 alternative_service_info_vector.push_back( 860 alternative_service_info_vector.push_back(
799 AlternativeServiceInfo(canonical_alternative_service1, expiration)); 861 AlternativeServiceInfo(canonical_alternative_service1, 1.0, expiration));
800 const AlternativeService canonical_alternative_service2(NPN_HTTP_2, "", 443); 862 const AlternativeService canonical_alternative_service2(NPN_HTTP_2, "", 443);
801 alternative_service_info_vector.push_back( 863 alternative_service_info_vector.push_back(
802 AlternativeServiceInfo(canonical_alternative_service2, expiration)); 864 AlternativeServiceInfo(canonical_alternative_service2, 1.0, expiration));
803 impl_.SetAlternativeServices(canonical_host_port_pair, 865 impl_.SetAlternativeServices(canonical_host_port_pair,
804 alternative_service_info_vector); 866 alternative_service_info_vector);
805 867
806 // Since |test_host_port_pair| does not have an alternative service itself, 868 // Since |test_host_port_pair| does not have an alternative service itself,
807 // GetAlternativeServices should return those of |canonical_host_port_pair|. 869 // GetAlternativeServices should return those of |canonical_host_port_pair|.
808 AlternativeServiceVector alternative_service_vector = 870 AlternativeServiceVector alternative_service_vector =
809 impl_.GetAlternativeServices(test_host_port_pair); 871 impl_.GetAlternativeServices(test_host_port_pair);
810 ASSERT_EQ(2u, alternative_service_vector.size()); 872 ASSERT_EQ(2u, alternative_service_vector.size());
811 EXPECT_EQ(canonical_alternative_service1, alternative_service_vector[0]); 873 EXPECT_EQ(canonical_alternative_service1, alternative_service_vector[0]);
812 874
813 // Since |canonical_alternative_service2| has an empty host, 875 // Since |canonical_alternative_service2| has an empty host,
814 // GetAlternativeServices should substitute the hostname of its |origin| 876 // GetAlternativeServices should substitute the hostname of its |origin|
815 // argument. 877 // argument.
816 EXPECT_EQ(test_host_port_pair.host(), alternative_service_vector[1].host); 878 EXPECT_EQ(test_host_port_pair.host(), alternative_service_vector[1].host);
817 EXPECT_EQ(canonical_alternative_service2.protocol, 879 EXPECT_EQ(canonical_alternative_service2.protocol,
818 alternative_service_vector[1].protocol); 880 alternative_service_vector[1].protocol);
819 EXPECT_EQ(canonical_alternative_service2.port, 881 EXPECT_EQ(canonical_alternative_service2.port,
820 alternative_service_vector[1].port); 882 alternative_service_vector[1].port);
821 883
822 // Verify the canonical suffix. 884 // Verify the canonical suffix.
823 EXPECT_EQ(".c.youtube.com", 885 EXPECT_EQ(".c.youtube.com",
824 impl_.GetCanonicalSuffix(test_host_port_pair.host())); 886 impl_.GetCanonicalSuffix(test_host_port_pair.host()));
825 EXPECT_EQ(".c.youtube.com", 887 EXPECT_EQ(".c.youtube.com",
826 impl_.GetCanonicalSuffix(canonical_host_port_pair.host())); 888 impl_.GetCanonicalSuffix(canonical_host_port_pair.host()));
827 } 889 }
828 890
891 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBelowThreshold) {
892 impl_.SetAlternativeServiceProbabilityThreshold(0.02);
893
894 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
895 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
896 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com",
897 1234);
898
899 SetAlternativeService(canonical_host_port_pair, canonical_alternative_service,
900 0.01);
901 EXPECT_FALSE(HasAlternativeService(canonical_host_port_pair));
902 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
903 }
904
905 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalAboveThreshold) {
906 impl_.SetAlternativeServiceProbabilityThreshold(0.02);
907
908 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
909 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
910 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com",
911 1234);
912
913 SetAlternativeService(canonical_host_port_pair, canonical_alternative_service,
914 0.03);
915 EXPECT_TRUE(HasAlternativeService(canonical_host_port_pair));
916 EXPECT_TRUE(HasAlternativeService(test_host_port_pair));
917 }
918
829 TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) { 919 TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) {
830 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 920 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
831 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80); 921 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
832 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com", 922 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com",
833 1234); 923 1234);
834 924
835 SetAlternativeService(canonical_host_port_pair, 925 SetAlternativeService(canonical_host_port_pair, canonical_alternative_service,
836 canonical_alternative_service); 926 1.0);
837 impl_.ClearAlternativeServices(canonical_host_port_pair); 927 impl_.ClearAlternativeServices(canonical_host_port_pair);
838 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 928 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
839 } 929 }
840 930
841 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken) { 931 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken) {
842 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 932 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
843 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80); 933 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
844 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com", 934 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com",
845 1234); 935 1234);
846 936
847 SetAlternativeService(canonical_host_port_pair, 937 SetAlternativeService(canonical_host_port_pair, canonical_alternative_service,
848 canonical_alternative_service); 938 1.0);
849 impl_.MarkAlternativeServiceBroken(canonical_alternative_service); 939 impl_.MarkAlternativeServiceBroken(canonical_alternative_service);
850 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 940 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
851 } 941 }
852 942
853 // Adding an alternative service for a new host overrides canonical host. 943 // Adding an alternative service for a new host overrides canonical host.
854 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalOverride) { 944 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalOverride) {
855 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 945 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
856 HostPortPair bar_host_port_pair("bar.c.youtube.com", 80); 946 HostPortPair bar_host_port_pair("bar.c.youtube.com", 80);
857 AlternativeService bar_alternative_service(QUIC, "bar.c.youtube.com", 1234); 947 AlternativeService bar_alternative_service(QUIC, "bar.c.youtube.com", 1234);
858 SetAlternativeService(bar_host_port_pair, bar_alternative_service); 948 SetAlternativeService(bar_host_port_pair, bar_alternative_service, 1.0);
859 AlternativeServiceVector alternative_service_vector = 949 AlternativeServiceVector alternative_service_vector =
860 impl_.GetAlternativeServices(test_host_port_pair); 950 impl_.GetAlternativeServices(test_host_port_pair);
861 ASSERT_EQ(1u, alternative_service_vector.size()); 951 ASSERT_EQ(1u, alternative_service_vector.size());
862 EXPECT_EQ(bar_alternative_service, alternative_service_vector[0]); 952 EXPECT_EQ(bar_alternative_service, alternative_service_vector[0]);
863 953
864 HostPortPair qux_host_port_pair("qux.c.youtube.com", 80); 954 HostPortPair qux_host_port_pair("qux.c.youtube.com", 80);
865 AlternativeService qux_alternative_service(QUIC, "qux.c.youtube.com", 443); 955 AlternativeService qux_alternative_service(QUIC, "qux.c.youtube.com", 443);
866 SetAlternativeService(qux_host_port_pair, qux_alternative_service); 956 SetAlternativeService(qux_host_port_pair, qux_alternative_service, 1.0);
867 alternative_service_vector = 957 alternative_service_vector =
868 impl_.GetAlternativeServices(test_host_port_pair); 958 impl_.GetAlternativeServices(test_host_port_pair);
869 ASSERT_EQ(1u, alternative_service_vector.size()); 959 ASSERT_EQ(1u, alternative_service_vector.size());
870 EXPECT_EQ(qux_alternative_service, alternative_service_vector[0]); 960 EXPECT_EQ(qux_alternative_service, alternative_service_vector[0]);
871 } 961 }
872 962
873 TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) { 963 TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) {
874 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 964 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
875 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80); 965 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
876 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com", 966 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com",
877 1234); 967 1234);
878 968
879 SetAlternativeService(canonical_host_port_pair, 969 SetAlternativeService(canonical_host_port_pair, canonical_alternative_service,
880 canonical_alternative_service); 970 1.0);
881 impl_.Clear(); 971 impl_.Clear();
882 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 972 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
883 } 973 }
884 974
885 TEST_F(AlternateProtocolServerPropertiesTest, 975 TEST_F(AlternateProtocolServerPropertiesTest,
886 ExpireBrokenAlternateProtocolMappings) { 976 ExpireBrokenAlternateProtocolMappings) {
887 HostPortPair host_port_pair("foo", 443); 977 HostPortPair host_port_pair("foo", 443);
888 AlternativeService alternative_service(QUIC, "foo", 443); 978 AlternativeService alternative_service(QUIC, "foo", 443);
889 SetAlternativeService(host_port_pair, alternative_service); 979 SetAlternativeService(host_port_pair, alternative_service, 1.0);
890 EXPECT_TRUE(HasAlternativeService(host_port_pair)); 980 EXPECT_TRUE(HasAlternativeService(host_port_pair));
891 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); 981 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
892 EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); 982 EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
893 983
894 base::TimeTicks past = 984 base::TimeTicks past =
895 base::TimeTicks::Now() - base::TimeDelta::FromSeconds(42); 985 base::TimeTicks::Now() - base::TimeDelta::FromSeconds(42);
896 HttpServerPropertiesImplPeer::AddBrokenAlternativeServiceWithExpirationTime( 986 HttpServerPropertiesImplPeer::AddBrokenAlternativeServiceWithExpirationTime(
897 impl_, alternative_service, past); 987 impl_, alternative_service, past);
898 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service)); 988 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
899 EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); 989 EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
900 990
901 HttpServerPropertiesImplPeer::ExpireBrokenAlternateProtocolMappings(impl_); 991 HttpServerPropertiesImplPeer::ExpireBrokenAlternateProtocolMappings(impl_);
902 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); 992 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
903 EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); 993 EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
904 } 994 }
905 995
906 // Regression test for https://crbug.com/505413. 996 // Regression test for https://crbug.com/505413.
907 TEST_F(AlternateProtocolServerPropertiesTest, RemoveExpiredBrokenAltSvc) { 997 TEST_F(AlternateProtocolServerPropertiesTest, RemoveExpiredBrokenAltSvc) {
908 HostPortPair foo_host_port_pair("foo", 443); 998 HostPortPair foo_host_port_pair("foo", 443);
909 AlternativeService bar_alternative_service(QUIC, "bar", 443); 999 AlternativeService bar_alternative_service(QUIC, "bar", 443);
910 SetAlternativeService(foo_host_port_pair, bar_alternative_service); 1000 SetAlternativeService(foo_host_port_pair, bar_alternative_service, 1.0);
911 EXPECT_TRUE(HasAlternativeService(foo_host_port_pair)); 1001 EXPECT_TRUE(HasAlternativeService(foo_host_port_pair));
912 1002
913 HostPortPair bar_host_port_pair1("bar", 80); 1003 HostPortPair bar_host_port_pair1("bar", 80);
914 AlternativeService nohost_alternative_service(QUIC, "", 443); 1004 AlternativeService nohost_alternative_service(QUIC, "", 443);
915 SetAlternativeService(bar_host_port_pair1, nohost_alternative_service); 1005 SetAlternativeService(bar_host_port_pair1, nohost_alternative_service, 1.0);
916 EXPECT_TRUE(HasAlternativeService(bar_host_port_pair1)); 1006 EXPECT_TRUE(HasAlternativeService(bar_host_port_pair1));
917 1007
918 HostPortPair bar_host_port_pair2("bar", 443); 1008 HostPortPair bar_host_port_pair2("bar", 443);
919 AlternativeService baz_alternative_service(QUIC, "baz", 1234); 1009 AlternativeService baz_alternative_service(QUIC, "baz", 1234);
920 SetAlternativeService(bar_host_port_pair2, baz_alternative_service); 1010 SetAlternativeService(bar_host_port_pair2, baz_alternative_service, 1.0);
921 EXPECT_TRUE(HasAlternativeService(bar_host_port_pair2)); 1011 EXPECT_TRUE(HasAlternativeService(bar_host_port_pair2));
922 1012
923 // Mark "bar:443" as broken. 1013 // Mark "bar:443" as broken.
924 base::TimeTicks past = 1014 base::TimeTicks past =
925 base::TimeTicks::Now() - base::TimeDelta::FromSeconds(42); 1015 base::TimeTicks::Now() - base::TimeDelta::FromSeconds(42);
926 HttpServerPropertiesImplPeer::AddBrokenAlternativeServiceWithExpirationTime( 1016 HttpServerPropertiesImplPeer::AddBrokenAlternativeServiceWithExpirationTime(
927 impl_, bar_alternative_service, past); 1017 impl_, bar_alternative_service, past);
928 1018
929 // Expire brokenness of "bar:443". 1019 // Expire brokenness of "bar:443".
930 HttpServerPropertiesImplPeer::ExpireBrokenAlternateProtocolMappings(impl_); 1020 HttpServerPropertiesImplPeer::ExpireBrokenAlternateProtocolMappings(impl_);
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
1393 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id))); 1483 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id)));
1394 1484
1395 impl_.Clear(); 1485 impl_.Clear();
1396 EXPECT_EQ(0u, impl_.quic_server_info_map().size()); 1486 EXPECT_EQ(0u, impl_.quic_server_info_map().size());
1397 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id)); 1487 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id));
1398 } 1488 }
1399 1489
1400 } // namespace 1490 } // namespace
1401 1491
1402 } // namespace net 1492 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_server_properties_impl.cc ('k') | net/http/http_server_properties_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698