OLD | NEW |
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 <memory> | 7 #include <memory> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
12 #include "base/test/test_mock_time_task_runner.h" | 12 #include "base/test/test_mock_time_task_runner.h" |
13 #include "base/values.h" | 13 #include "base/values.h" |
14 #include "net/base/host_port_pair.h" | 14 #include "net/base/host_port_pair.h" |
15 #include "net/base/ip_address.h" | 15 #include "net/base/ip_address.h" |
| 16 #include "net/http/http_network_session.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
17 #include "url/gurl.h" | 18 #include "url/gurl.h" |
18 | 19 |
19 namespace base { | 20 namespace base { |
20 class ListValue; | 21 class ListValue; |
21 } | 22 } |
22 | 23 |
23 namespace net { | 24 namespace net { |
24 | 25 |
25 const base::TimeDelta BROKEN_ALT_SVC_EXPIRE_DELAYS[10] = { | 26 const base::TimeDelta BROKEN_ALT_SVC_EXPIRE_DELAYS[10] = { |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 bool HasAlternativeService(const url::SchemeHostPort& origin) { | 72 bool HasAlternativeService(const url::SchemeHostPort& origin) { |
72 const AlternativeServiceInfoVector alternative_service_info_vector = | 73 const AlternativeServiceInfoVector alternative_service_info_vector = |
73 impl_.GetAlternativeServiceInfos(origin); | 74 impl_.GetAlternativeServiceInfos(origin); |
74 return !alternative_service_info_vector.empty(); | 75 return !alternative_service_info_vector.empty(); |
75 } | 76 } |
76 | 77 |
77 bool SetAlternativeService(const url::SchemeHostPort& origin, | 78 bool SetAlternativeService(const url::SchemeHostPort& origin, |
78 const AlternativeService& alternative_service) { | 79 const AlternativeService& alternative_service) { |
79 const base::Time expiration = | 80 const base::Time expiration = |
80 base::Time::Now() + base::TimeDelta::FromDays(1); | 81 base::Time::Now() + base::TimeDelta::FromDays(1); |
81 return impl_.SetAlternativeService(origin, alternative_service, expiration); | 82 if (alternative_service.protocol == kProtoQUIC) { |
| 83 return impl_.SetQuicAlternativeService( |
| 84 origin, alternative_service, expiration, |
| 85 HttpNetworkSession::Params().quic_supported_versions); |
| 86 } else { |
| 87 return impl_.SetHttp2AlternativeService(origin, alternative_service, |
| 88 expiration); |
| 89 } |
82 } | 90 } |
83 | 91 |
84 void MarkBrokenAndLetExpireAlternativeServiceNTimes( | 92 void MarkBrokenAndLetExpireAlternativeServiceNTimes( |
85 const AlternativeService& alternative_service, | 93 const AlternativeService& alternative_service, |
86 int num_times) {} | 94 int num_times) {} |
87 | 95 |
88 scoped_refptr<base::TestMockTimeTaskRunner> test_task_runner_; | 96 scoped_refptr<base::TestMockTimeTaskRunner> test_task_runner_; |
89 | 97 |
90 std::unique_ptr<base::TickClock> broken_services_clock_; | 98 std::unique_ptr<base::TickClock> broken_services_clock_; |
91 HttpServerPropertiesImpl impl_; | 99 HttpServerPropertiesImpl impl_; |
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 alternative_service_info_vector[0].alternative_service()); | 369 alternative_service_info_vector[0].alternative_service()); |
362 | 370 |
363 impl_.Clear(); | 371 impl_.Clear(); |
364 EXPECT_FALSE(HasAlternativeService(test_server)); | 372 EXPECT_FALSE(HasAlternativeService(test_server)); |
365 } | 373 } |
366 | 374 |
367 TEST_F(AlternateProtocolServerPropertiesTest, ExcludeOrigin) { | 375 TEST_F(AlternateProtocolServerPropertiesTest, ExcludeOrigin) { |
368 AlternativeServiceInfoVector alternative_service_info_vector; | 376 AlternativeServiceInfoVector alternative_service_info_vector; |
369 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 377 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
370 // Same hostname, same port, TCP: should be ignored. | 378 // Same hostname, same port, TCP: should be ignored. |
371 AlternativeServiceInfo alternative_service_info1(kProtoHTTP2, "foo", 443, | 379 AlternativeServiceInfo alternative_service_info1 = |
372 expiration); | 380 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 381 AlternativeService(kProtoHTTP2, "foo", 443), expiration); |
373 alternative_service_info_vector.push_back(alternative_service_info1); | 382 alternative_service_info_vector.push_back(alternative_service_info1); |
374 // Different hostname: GetAlternativeServiceInfos should return this one. | 383 // Different hostname: GetAlternativeServiceInfos should return this one. |
375 AlternativeServiceInfo alternative_service_info2(kProtoHTTP2, "bar", 443, | 384 AlternativeServiceInfo alternative_service_info2 = |
376 expiration); | 385 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 386 AlternativeService(kProtoHTTP2, "bar", 443), expiration); |
377 alternative_service_info_vector.push_back(alternative_service_info2); | 387 alternative_service_info_vector.push_back(alternative_service_info2); |
378 // Different port: GetAlternativeServiceInfos should return this one too. | 388 // Different port: GetAlternativeServiceInfos should return this one too. |
379 AlternativeServiceInfo alternative_service_info3(kProtoHTTP2, "foo", 80, | 389 AlternativeServiceInfo alternative_service_info3 = |
380 expiration); | 390 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 391 AlternativeService(kProtoHTTP2, "foo", 80), expiration); |
381 alternative_service_info_vector.push_back(alternative_service_info3); | 392 alternative_service_info_vector.push_back(alternative_service_info3); |
382 // QUIC: GetAlternativeServices should return this one too. | 393 // QUIC: GetAlternativeServices should return this one too. |
383 AlternativeServiceInfo alternative_service_info4(kProtoQUIC, "foo", 443, | 394 AlternativeServiceInfo alternative_service_info4 = |
384 expiration); | 395 AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( |
| 396 AlternativeService(kProtoQUIC, "foo", 443), expiration, |
| 397 HttpNetworkSession::Params().quic_supported_versions); |
385 alternative_service_info_vector.push_back(alternative_service_info4); | 398 alternative_service_info_vector.push_back(alternative_service_info4); |
386 | 399 |
387 url::SchemeHostPort test_server("https", "foo", 443); | 400 url::SchemeHostPort test_server("https", "foo", 443); |
388 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); | 401 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); |
389 | 402 |
390 const AlternativeServiceInfoVector alternative_service_info_vector2 = | 403 const AlternativeServiceInfoVector alternative_service_info_vector2 = |
391 impl_.GetAlternativeServiceInfos(test_server); | 404 impl_.GetAlternativeServiceInfos(test_server); |
392 ASSERT_EQ(3u, alternative_service_info_vector2.size()); | 405 ASSERT_EQ(3u, alternative_service_info_vector2.size()); |
393 EXPECT_EQ(alternative_service_info2, alternative_service_info_vector2[0]); | 406 EXPECT_EQ(alternative_service_info2, alternative_service_info_vector2[0]); |
394 EXPECT_EQ(alternative_service_info3, alternative_service_info_vector2[1]); | 407 EXPECT_EQ(alternative_service_info3, alternative_service_info_vector2[1]); |
395 EXPECT_EQ(alternative_service_info4, alternative_service_info_vector2[2]); | 408 EXPECT_EQ(alternative_service_info4, alternative_service_info_vector2[2]); |
396 } | 409 } |
397 | 410 |
398 TEST_F(AlternateProtocolServerPropertiesTest, Set) { | 411 TEST_F(AlternateProtocolServerPropertiesTest, Set) { |
399 // |test_server1| has an alternative service, which will not be | 412 // |test_server1| has an alternative service, which will not be |
400 // affected by SetAlternativeServiceServers(), because | 413 // affected by SetAlternativeServiceServers(), because |
401 // |alternative_service_map| does not have an entry for | 414 // |alternative_service_map| does not have an entry for |
402 // |test_server1|. | 415 // |test_server1|. |
403 url::SchemeHostPort test_server1("http", "foo1", 80); | 416 url::SchemeHostPort test_server1("http", "foo1", 80); |
404 const AlternativeService alternative_service1(kProtoHTTP2, "bar1", 443); | 417 const AlternativeService alternative_service1(kProtoHTTP2, "bar1", 443); |
405 const base::Time now = base::Time::Now(); | 418 const base::Time now = base::Time::Now(); |
406 base::Time expiration1 = now + base::TimeDelta::FromDays(1); | 419 base::Time expiration1 = now + base::TimeDelta::FromDays(1); |
407 // 1st entry in the memory. | 420 // 1st entry in the memory. |
408 impl_.SetAlternativeService(test_server1, alternative_service1, expiration1); | 421 impl_.SetHttp2AlternativeService(test_server1, alternative_service1, |
| 422 expiration1); |
409 | 423 |
410 // |test_server2| has an alternative service, which will be | 424 // |test_server2| has an alternative service, which will be |
411 // overwritten by SetAlternativeServiceServers(), because | 425 // overwritten by SetAlternativeServiceServers(), because |
412 // |alternative_service_map| has an entry for | 426 // |alternative_service_map| has an entry for |
413 // |test_server2|. | 427 // |test_server2|. |
414 AlternativeServiceInfoVector alternative_service_info_vector; | 428 AlternativeServiceInfoVector alternative_service_info_vector; |
415 const AlternativeService alternative_service2(kProtoHTTP2, "bar2", 443); | 429 const AlternativeService alternative_service2(kProtoHTTP2, "bar2", 443); |
416 base::Time expiration2 = now + base::TimeDelta::FromDays(2); | 430 base::Time expiration2 = now + base::TimeDelta::FromDays(2); |
417 alternative_service_info_vector.push_back( | 431 alternative_service_info_vector.push_back( |
418 AlternativeServiceInfo(alternative_service2, expiration2)); | 432 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 433 alternative_service2, expiration2)); |
419 url::SchemeHostPort test_server2("http", "foo2", 80); | 434 url::SchemeHostPort test_server2("http", "foo2", 80); |
420 // 0th entry in the memory. | 435 // 0th entry in the memory. |
421 impl_.SetAlternativeServices(test_server2, alternative_service_info_vector); | 436 impl_.SetAlternativeServices(test_server2, alternative_service_info_vector); |
422 | 437 |
423 // Prepare |alternative_service_map| to be loaded by | 438 // Prepare |alternative_service_map| to be loaded by |
424 // SetAlternativeServiceServers(). | 439 // SetAlternativeServiceServers(). |
425 std::unique_ptr<AlternativeServiceMap> alternative_service_map = | 440 std::unique_ptr<AlternativeServiceMap> alternative_service_map = |
426 base::MakeUnique<AlternativeServiceMap>( | 441 base::MakeUnique<AlternativeServiceMap>( |
427 AlternativeServiceMap::NO_AUTO_EVICT); | 442 AlternativeServiceMap::NO_AUTO_EVICT); |
428 const AlternativeService alternative_service3(kProtoHTTP2, "bar3", 123); | 443 const AlternativeService alternative_service3(kProtoHTTP2, "bar3", 123); |
429 base::Time expiration3 = now + base::TimeDelta::FromDays(3); | 444 base::Time expiration3 = now + base::TimeDelta::FromDays(3); |
430 const AlternativeServiceInfo alternative_service_info1(alternative_service3, | 445 const AlternativeServiceInfo alternative_service_info1 = |
431 expiration3); | 446 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 447 alternative_service3, expiration3); |
432 // Simulate updating data for 0th entry with data from Preferences. | 448 // Simulate updating data for 0th entry with data from Preferences. |
433 alternative_service_map->Put( | 449 alternative_service_map->Put( |
434 test_server2, | 450 test_server2, |
435 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info1)); | 451 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info1)); |
436 | 452 |
437 url::SchemeHostPort test_server3("http", "foo3", 80); | 453 url::SchemeHostPort test_server3("http", "foo3", 80); |
438 const AlternativeService alternative_service4(kProtoHTTP2, "bar4", 1234); | 454 const AlternativeService alternative_service4(kProtoHTTP2, "bar4", 1234); |
439 base::Time expiration4 = now + base::TimeDelta::FromDays(4); | 455 base::Time expiration4 = now + base::TimeDelta::FromDays(4); |
440 const AlternativeServiceInfo alternative_service_info2(alternative_service4, | 456 const AlternativeServiceInfo alternative_service_info2 = |
441 expiration4); | 457 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 458 alternative_service4, expiration4); |
442 // Add an old entry from Preferences, this will be added to end of recency | 459 // Add an old entry from Preferences, this will be added to end of recency |
443 // list. | 460 // list. |
444 alternative_service_map->Put( | 461 alternative_service_map->Put( |
445 test_server3, | 462 test_server3, |
446 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info2)); | 463 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info2)); |
447 | 464 |
448 // MRU list will be test_server2, test_server1, test_server3. | 465 // MRU list will be test_server2, test_server1, test_server3. |
449 impl_.SetAlternativeServiceServers(std::move(alternative_service_map)); | 466 impl_.SetAlternativeServiceServers(std::move(alternative_service_map)); |
450 | 467 |
451 // Verify alternative_service_map. | 468 // Verify alternative_service_map. |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 alternative_service_info_vector[0].alternative_service()); | 512 alternative_service_info_vector[0].alternative_service()); |
496 } | 513 } |
497 | 514 |
498 // Regression test for https://crbug.com/516486: | 515 // Regression test for https://crbug.com/516486: |
499 // GetAlternativeServiceInfos() should remove |alternative_service_map_| | 516 // GetAlternativeServiceInfos() should remove |alternative_service_map_| |
500 // elements with empty value. | 517 // elements with empty value. |
501 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVector) { | 518 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVector) { |
502 url::SchemeHostPort server("https", "foo", 443); | 519 url::SchemeHostPort server("https", "foo", 443); |
503 const AlternativeService alternative_service(kProtoHTTP2, "bar", 443); | 520 const AlternativeService alternative_service(kProtoHTTP2, "bar", 443); |
504 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); | 521 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); |
505 const AlternativeServiceInfo alternative_service_info(alternative_service, | 522 const AlternativeServiceInfo alternative_service_info = |
506 expiration); | 523 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 524 alternative_service, expiration); |
507 std::unique_ptr<AlternativeServiceMap> alternative_service_map = | 525 std::unique_ptr<AlternativeServiceMap> alternative_service_map = |
508 base::MakeUnique<AlternativeServiceMap>( | 526 base::MakeUnique<AlternativeServiceMap>( |
509 AlternativeServiceMap::NO_AUTO_EVICT); | 527 AlternativeServiceMap::NO_AUTO_EVICT); |
510 alternative_service_map->Put( | 528 alternative_service_map->Put( |
511 server, | 529 server, |
512 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); | 530 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); |
513 | 531 |
514 // Prepare |alternative_service_map_| with a single key that has a single | 532 // Prepare |alternative_service_map_| with a single key that has a single |
515 // AlternativeServiceInfo with identical hostname and port. | 533 // AlternativeServiceInfo with identical hostname and port. |
516 impl_.SetAlternativeServiceServers(std::move(alternative_service_map)); | 534 impl_.SetAlternativeServiceServers(std::move(alternative_service_map)); |
(...skipping 12 matching lines...) Expand all Loading... |
529 // There should still be no alternative service assigned to |server|. | 547 // There should still be no alternative service assigned to |server|. |
530 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(server).empty()); | 548 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(server).empty()); |
531 } | 549 } |
532 | 550 |
533 // Regression test for https://crbug.com/516486 for the canonical host case. | 551 // Regression test for https://crbug.com/516486 for the canonical host case. |
534 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVectorForCanonical) { | 552 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVectorForCanonical) { |
535 url::SchemeHostPort server("https", "foo.c.youtube.com", 443); | 553 url::SchemeHostPort server("https", "foo.c.youtube.com", 443); |
536 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); | 554 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); |
537 const AlternativeService alternative_service(kProtoHTTP2, "", 443); | 555 const AlternativeService alternative_service(kProtoHTTP2, "", 443); |
538 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); | 556 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); |
539 const AlternativeServiceInfo alternative_service_info(alternative_service, | 557 const AlternativeServiceInfo alternative_service_info = |
540 expiration); | 558 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 559 alternative_service, expiration); |
541 std::unique_ptr<AlternativeServiceMap> alternative_service_map = | 560 std::unique_ptr<AlternativeServiceMap> alternative_service_map = |
542 base::MakeUnique<AlternativeServiceMap>( | 561 base::MakeUnique<AlternativeServiceMap>( |
543 AlternativeServiceMap::NO_AUTO_EVICT); | 562 AlternativeServiceMap::NO_AUTO_EVICT); |
544 alternative_service_map->Put( | 563 alternative_service_map->Put( |
545 canonical_server, | 564 canonical_server, |
546 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); | 565 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); |
547 | 566 |
548 // Prepare |alternative_service_map_| with a single key that has a single | 567 // Prepare |alternative_service_map_| with a single key that has a single |
549 // AlternativeServiceInfo with identical hostname and port. | 568 // AlternativeServiceInfo with identical hostname and port. |
550 impl_.SetAlternativeServiceServers(std::move(alternative_service_map)); | 569 impl_.SetAlternativeServiceServers(std::move(alternative_service_map)); |
(...skipping 13 matching lines...) Expand all Loading... |
564 // There should still be no alternative service assigned to | 583 // There should still be no alternative service assigned to |
565 // |canonical_server|. | 584 // |canonical_server|. |
566 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(canonical_server).empty()); | 585 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(canonical_server).empty()); |
567 } | 586 } |
568 | 587 |
569 TEST_F(AlternateProtocolServerPropertiesTest, ClearServerWithCanonical) { | 588 TEST_F(AlternateProtocolServerPropertiesTest, ClearServerWithCanonical) { |
570 url::SchemeHostPort server("https", "foo.c.youtube.com", 443); | 589 url::SchemeHostPort server("https", "foo.c.youtube.com", 443); |
571 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); | 590 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); |
572 const AlternativeService alternative_service(kProtoQUIC, "", 443); | 591 const AlternativeService alternative_service(kProtoQUIC, "", 443); |
573 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 592 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
574 const AlternativeServiceInfo alternative_service_info(alternative_service, | 593 const AlternativeServiceInfo alternative_service_info = |
575 expiration); | 594 AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( |
| 595 alternative_service, expiration, |
| 596 HttpNetworkSession::Params().quic_supported_versions); |
576 | 597 |
577 impl_.SetAlternativeServices( | 598 impl_.SetAlternativeServices( |
578 canonical_server, | 599 canonical_server, |
579 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); | 600 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); |
580 | 601 |
581 // Make sure the canonical service is returned for the other server. | 602 // Make sure the canonical service is returned for the other server. |
582 const AlternativeServiceInfoVector alternative_service_info_vector = | 603 const AlternativeServiceInfoVector alternative_service_info_vector = |
583 impl_.GetAlternativeServiceInfos(server); | 604 impl_.GetAlternativeServiceInfos(server); |
584 ASSERT_EQ(1u, alternative_service_info_vector.size()); | 605 ASSERT_EQ(1u, alternative_service_info_vector.size()); |
585 EXPECT_EQ(kProtoQUIC, | 606 EXPECT_EQ(kProtoQUIC, |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
639 impl_.GetAlternativeServiceInfos(test_server); | 660 impl_.GetAlternativeServiceInfos(test_server); |
640 ASSERT_EQ(1u, alternative_service_info_vector.size()); | 661 ASSERT_EQ(1u, alternative_service_info_vector.size()); |
641 EXPECT_EQ(alternative_service1, | 662 EXPECT_EQ(alternative_service1, |
642 alternative_service_info_vector[0].alternative_service()); | 663 alternative_service_info_vector[0].alternative_service()); |
643 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); | 664 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); |
644 | 665 |
645 // SetAlternativeServices should add a broken alternative service to the map. | 666 // SetAlternativeServices should add a broken alternative service to the map. |
646 AlternativeServiceInfoVector alternative_service_info_vector2; | 667 AlternativeServiceInfoVector alternative_service_info_vector2; |
647 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 668 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
648 alternative_service_info_vector2.push_back( | 669 alternative_service_info_vector2.push_back( |
649 AlternativeServiceInfo(alternative_service1, expiration)); | 670 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 671 alternative_service1, expiration)); |
650 const AlternativeService alternative_service2(kProtoHTTP2, "foo", 1234); | 672 const AlternativeService alternative_service2(kProtoHTTP2, "foo", 1234); |
651 alternative_service_info_vector2.push_back( | 673 alternative_service_info_vector2.push_back( |
652 AlternativeServiceInfo(alternative_service2, expiration)); | 674 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 675 alternative_service2, expiration)); |
653 impl_.SetAlternativeServices(test_server, alternative_service_info_vector2); | 676 impl_.SetAlternativeServices(test_server, alternative_service_info_vector2); |
654 alternative_service_info_vector = | 677 alternative_service_info_vector = |
655 impl_.GetAlternativeServiceInfos(test_server); | 678 impl_.GetAlternativeServiceInfos(test_server); |
656 ASSERT_EQ(2u, alternative_service_info_vector.size()); | 679 ASSERT_EQ(2u, alternative_service_info_vector.size()); |
657 EXPECT_EQ(alternative_service1, | 680 EXPECT_EQ(alternative_service1, |
658 alternative_service_info_vector[0].alternative_service()); | 681 alternative_service_info_vector[0].alternative_service()); |
659 EXPECT_EQ(alternative_service2, | 682 EXPECT_EQ(alternative_service2, |
660 alternative_service_info_vector[1].alternative_service()); | 683 alternative_service_info_vector[1].alternative_service()); |
661 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); | 684 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); |
662 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2)); | 685 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2)); |
(...skipping 10 matching lines...) Expand all Loading... |
673 | 696 |
674 TEST_F(AlternateProtocolServerPropertiesTest, MaxAge) { | 697 TEST_F(AlternateProtocolServerPropertiesTest, MaxAge) { |
675 AlternativeServiceInfoVector alternative_service_info_vector; | 698 AlternativeServiceInfoVector alternative_service_info_vector; |
676 base::Time now = base::Time::Now(); | 699 base::Time now = base::Time::Now(); |
677 base::TimeDelta one_day = base::TimeDelta::FromDays(1); | 700 base::TimeDelta one_day = base::TimeDelta::FromDays(1); |
678 | 701 |
679 // First alternative service expired one day ago, should not be returned by | 702 // First alternative service expired one day ago, should not be returned by |
680 // GetAlternativeServiceInfos(). | 703 // GetAlternativeServiceInfos(). |
681 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); | 704 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); |
682 alternative_service_info_vector.push_back( | 705 alternative_service_info_vector.push_back( |
683 AlternativeServiceInfo(alternative_service1, now - one_day)); | 706 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 707 alternative_service1, now - one_day)); |
684 | 708 |
685 // Second alterrnative service will expire one day from now, should be | 709 // Second alterrnative service will expire one day from now, should be |
686 // returned by GetAlternativeSerices(). | 710 // returned by GetAlternativeSerices(). |
687 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); | 711 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); |
688 alternative_service_info_vector.push_back( | 712 alternative_service_info_vector.push_back( |
689 AlternativeServiceInfo(alternative_service2, now + one_day)); | 713 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 714 alternative_service2, now + one_day)); |
690 | 715 |
691 url::SchemeHostPort test_server("http", "foo", 80); | 716 url::SchemeHostPort test_server("http", "foo", 80); |
692 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); | 717 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); |
693 | 718 |
694 AlternativeServiceInfoVector alternative_service_info_vector2 = | 719 AlternativeServiceInfoVector alternative_service_info_vector2 = |
695 impl_.GetAlternativeServiceInfos(test_server); | 720 impl_.GetAlternativeServiceInfos(test_server); |
696 ASSERT_EQ(1u, alternative_service_info_vector2.size()); | 721 ASSERT_EQ(1u, alternative_service_info_vector2.size()); |
697 EXPECT_EQ(alternative_service2, | 722 EXPECT_EQ(alternative_service2, |
698 alternative_service_info_vector2[0].alternative_service()); | 723 alternative_service_info_vector2[0].alternative_service()); |
699 } | 724 } |
700 | 725 |
701 TEST_F(AlternateProtocolServerPropertiesTest, MaxAgeCanonical) { | 726 TEST_F(AlternateProtocolServerPropertiesTest, MaxAgeCanonical) { |
702 AlternativeServiceInfoVector alternative_service_info_vector; | 727 AlternativeServiceInfoVector alternative_service_info_vector; |
703 base::Time now = base::Time::Now(); | 728 base::Time now = base::Time::Now(); |
704 base::TimeDelta one_day = base::TimeDelta::FromDays(1); | 729 base::TimeDelta one_day = base::TimeDelta::FromDays(1); |
705 | 730 |
706 // First alternative service expired one day ago, should not be returned by | 731 // First alternative service expired one day ago, should not be returned by |
707 // GetAlternativeServiceInfos(). | 732 // GetAlternativeServiceInfos(). |
708 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); | 733 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); |
709 alternative_service_info_vector.push_back( | 734 alternative_service_info_vector.push_back( |
710 AlternativeServiceInfo(alternative_service1, now - one_day)); | 735 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 736 alternative_service1, now - one_day)); |
711 | 737 |
712 // Second alterrnative service will expire one day from now, should be | 738 // Second alterrnative service will expire one day from now, should be |
713 // returned by GetAlternativeSerices(). | 739 // returned by GetAlternativeSerices(). |
714 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); | 740 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); |
715 alternative_service_info_vector.push_back( | 741 alternative_service_info_vector.push_back( |
716 AlternativeServiceInfo(alternative_service2, now + one_day)); | 742 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 743 alternative_service2, now + one_day)); |
717 | 744 |
718 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); | 745 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); |
719 impl_.SetAlternativeServices(canonical_server, | 746 impl_.SetAlternativeServices(canonical_server, |
720 alternative_service_info_vector); | 747 alternative_service_info_vector); |
721 | 748 |
722 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443); | 749 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443); |
723 AlternativeServiceInfoVector alternative_service_info_vector2 = | 750 AlternativeServiceInfoVector alternative_service_info_vector2 = |
724 impl_.GetAlternativeServiceInfos(test_server); | 751 impl_.GetAlternativeServiceInfos(test_server); |
725 ASSERT_EQ(1u, alternative_service_info_vector2.size()); | 752 ASSERT_EQ(1u, alternative_service_info_vector2.size()); |
726 EXPECT_EQ(alternative_service2, | 753 EXPECT_EQ(alternative_service2, |
727 alternative_service_info_vector2[0].alternative_service()); | 754 alternative_service_info_vector2[0].alternative_service()); |
728 } | 755 } |
729 | 756 |
730 TEST_F(AlternateProtocolServerPropertiesTest, AlternativeServiceWithScheme) { | 757 TEST_F(AlternateProtocolServerPropertiesTest, AlternativeServiceWithScheme) { |
731 AlternativeServiceInfoVector alternative_service_info_vector; | 758 AlternativeServiceInfoVector alternative_service_info_vector; |
732 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); | 759 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); |
733 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 760 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
734 alternative_service_info_vector.push_back( | 761 alternative_service_info_vector.push_back( |
735 AlternativeServiceInfo(alternative_service1, expiration)); | 762 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 763 alternative_service1, expiration)); |
736 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); | 764 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); |
737 alternative_service_info_vector.push_back( | 765 alternative_service_info_vector.push_back( |
738 AlternativeServiceInfo(alternative_service2, expiration)); | 766 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 767 alternative_service2, expiration)); |
739 // Set Alt-Svc list for |http_server|. | 768 // Set Alt-Svc list for |http_server|. |
740 url::SchemeHostPort http_server("http", "foo", 80); | 769 url::SchemeHostPort http_server("http", "foo", 80); |
741 impl_.SetAlternativeServices(http_server, alternative_service_info_vector); | 770 impl_.SetAlternativeServices(http_server, alternative_service_info_vector); |
742 | 771 |
743 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); | 772 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); |
744 net::AlternativeServiceMap::const_iterator it = map.begin(); | 773 net::AlternativeServiceMap::const_iterator it = map.begin(); |
745 EXPECT_TRUE(it->first.Equals(http_server)); | 774 EXPECT_TRUE(it->first.Equals(http_server)); |
746 ASSERT_EQ(2u, it->second.size()); | 775 ASSERT_EQ(2u, it->second.size()); |
747 EXPECT_EQ(alternative_service1, it->second[0].alternative_service()); | 776 EXPECT_EQ(alternative_service1, it->second[0].alternative_service()); |
748 EXPECT_EQ(alternative_service2, it->second[1].alternative_service()); | 777 EXPECT_EQ(alternative_service2, it->second[1].alternative_service()); |
(...skipping 12 matching lines...) Expand all Loading... |
761 | 790 |
762 EXPECT_EQ(0u, impl_.GetAlternativeServiceInfos(http_server).size()); | 791 EXPECT_EQ(0u, impl_.GetAlternativeServiceInfos(http_server).size()); |
763 EXPECT_EQ(2u, impl_.GetAlternativeServiceInfos(https_server).size()); | 792 EXPECT_EQ(2u, impl_.GetAlternativeServiceInfos(https_server).size()); |
764 } | 793 } |
765 | 794 |
766 TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternativeServices) { | 795 TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternativeServices) { |
767 AlternativeServiceInfoVector alternative_service_info_vector; | 796 AlternativeServiceInfoVector alternative_service_info_vector; |
768 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); | 797 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); |
769 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 798 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
770 alternative_service_info_vector.push_back( | 799 alternative_service_info_vector.push_back( |
771 AlternativeServiceInfo(alternative_service1, expiration)); | 800 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 801 alternative_service1, expiration)); |
772 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); | 802 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); |
773 alternative_service_info_vector.push_back( | 803 alternative_service_info_vector.push_back( |
774 AlternativeServiceInfo(alternative_service2, expiration)); | 804 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 805 alternative_service2, expiration)); |
775 url::SchemeHostPort test_server("http", "foo", 80); | 806 url::SchemeHostPort test_server("http", "foo", 80); |
776 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); | 807 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); |
777 | 808 |
778 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); | 809 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); |
779 net::AlternativeServiceMap::const_iterator it = map.begin(); | 810 net::AlternativeServiceMap::const_iterator it = map.begin(); |
780 EXPECT_TRUE(it->first.Equals(test_server)); | 811 EXPECT_TRUE(it->first.Equals(test_server)); |
781 ASSERT_EQ(2u, it->second.size()); | 812 ASSERT_EQ(2u, it->second.size()); |
782 EXPECT_EQ(alternative_service1, it->second[0].alternative_service()); | 813 EXPECT_EQ(alternative_service1, it->second[0].alternative_service()); |
783 EXPECT_EQ(alternative_service2, it->second[1].alternative_service()); | 814 EXPECT_EQ(alternative_service2, it->second[1].alternative_service()); |
784 | 815 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
850 EXPECT_FALSE(HasAlternativeService(test_server)); | 881 EXPECT_FALSE(HasAlternativeService(test_server)); |
851 | 882 |
852 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); | 883 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); |
853 EXPECT_FALSE(HasAlternativeService(canonical_server)); | 884 EXPECT_FALSE(HasAlternativeService(canonical_server)); |
854 | 885 |
855 AlternativeServiceInfoVector alternative_service_info_vector; | 886 AlternativeServiceInfoVector alternative_service_info_vector; |
856 const AlternativeService canonical_alternative_service1( | 887 const AlternativeService canonical_alternative_service1( |
857 kProtoQUIC, "bar.c.youtube.com", 1234); | 888 kProtoQUIC, "bar.c.youtube.com", 1234); |
858 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 889 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
859 alternative_service_info_vector.push_back( | 890 alternative_service_info_vector.push_back( |
860 AlternativeServiceInfo(canonical_alternative_service1, expiration)); | 891 AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( |
| 892 canonical_alternative_service1, expiration, |
| 893 HttpNetworkSession::Params().quic_supported_versions)); |
861 const AlternativeService canonical_alternative_service2(kProtoHTTP2, "", 443); | 894 const AlternativeService canonical_alternative_service2(kProtoHTTP2, "", 443); |
862 alternative_service_info_vector.push_back( | 895 alternative_service_info_vector.push_back( |
863 AlternativeServiceInfo(canonical_alternative_service2, expiration)); | 896 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| 897 canonical_alternative_service2, expiration)); |
864 impl_.SetAlternativeServices(canonical_server, | 898 impl_.SetAlternativeServices(canonical_server, |
865 alternative_service_info_vector); | 899 alternative_service_info_vector); |
866 | 900 |
867 // Since |test_server| does not have an alternative service itself, | 901 // Since |test_server| does not have an alternative service itself, |
868 // GetAlternativeServiceInfos should return those of |canonical_server|. | 902 // GetAlternativeServiceInfos should return those of |canonical_server|. |
869 AlternativeServiceInfoVector alternative_service_info_vector2 = | 903 AlternativeServiceInfoVector alternative_service_info_vector2 = |
870 impl_.GetAlternativeServiceInfos(test_server); | 904 impl_.GetAlternativeServiceInfos(test_server); |
871 ASSERT_EQ(2u, alternative_service_info_vector2.size()); | 905 ASSERT_EQ(2u, alternative_service_info_vector2.size()); |
872 EXPECT_EQ(canonical_alternative_service1, | 906 EXPECT_EQ(canonical_alternative_service1, |
873 alternative_service_info_vector2[0].alternative_service()); | 907 alternative_service_info_vector2[0].alternative_service()); |
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1319 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id))); | 1353 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id))); |
1320 | 1354 |
1321 impl_.Clear(); | 1355 impl_.Clear(); |
1322 EXPECT_EQ(0u, impl_.quic_server_info_map().size()); | 1356 EXPECT_EQ(0u, impl_.quic_server_info_map().size()); |
1323 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id)); | 1357 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id)); |
1324 } | 1358 } |
1325 | 1359 |
1326 } // namespace | 1360 } // namespace |
1327 | 1361 |
1328 } // namespace net | 1362 } // namespace net |
OLD | NEW |