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/values.h" | 12 #include "base/values.h" |
13 #include "net/base/host_port_pair.h" | 13 #include "net/base/host_port_pair.h" |
14 #include "net/base/ip_address.h" | 14 #include "net/base/ip_address.h" |
| 15 #include "net/http/http_network_session.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
16 #include "url/gurl.h" | 17 #include "url/gurl.h" |
17 | 18 |
18 namespace base { | 19 namespace base { |
19 class ListValue; | 20 class ListValue; |
20 } | 21 } |
21 | 22 |
22 namespace net { | 23 namespace net { |
23 | 24 |
24 class HttpServerPropertiesImplPeer { | 25 class HttpServerPropertiesImplPeer { |
(...skipping 28 matching lines...) Expand all Loading... |
53 bool HasAlternativeService(const url::SchemeHostPort& origin) { | 54 bool HasAlternativeService(const url::SchemeHostPort& origin) { |
54 const AlternativeServiceInfoVector alternative_service_info_vector = | 55 const AlternativeServiceInfoVector alternative_service_info_vector = |
55 impl_.GetAlternativeServiceInfos(origin); | 56 impl_.GetAlternativeServiceInfos(origin); |
56 return !alternative_service_info_vector.empty(); | 57 return !alternative_service_info_vector.empty(); |
57 } | 58 } |
58 | 59 |
59 bool SetAlternativeService(const url::SchemeHostPort& origin, | 60 bool SetAlternativeService(const url::SchemeHostPort& origin, |
60 const AlternativeService& alternative_service) { | 61 const AlternativeService& alternative_service) { |
61 const base::Time expiration = | 62 const base::Time expiration = |
62 base::Time::Now() + base::TimeDelta::FromDays(1); | 63 base::Time::Now() + base::TimeDelta::FromDays(1); |
63 return impl_.SetAlternativeService(origin, alternative_service, expiration); | 64 return impl_.SetAlternativeService( |
| 65 origin, alternative_service, expiration, |
| 66 HttpNetworkSession::Params().quic_supported_versions); |
64 } | 67 } |
65 | 68 |
66 HttpServerPropertiesImpl impl_; | 69 HttpServerPropertiesImpl impl_; |
67 }; | 70 }; |
68 | 71 |
69 typedef HttpServerPropertiesImplTest SpdyServerPropertiesTest; | 72 typedef HttpServerPropertiesImplTest SpdyServerPropertiesTest; |
70 | 73 |
71 TEST_F(SpdyServerPropertiesTest, SetWithSchemeHostPort) { | 74 TEST_F(SpdyServerPropertiesTest, SetWithSchemeHostPort) { |
72 // Check spdy servers are correctly set with SchemeHostPort key. | 75 // Check spdy servers are correctly set with SchemeHostPort key. |
73 url::SchemeHostPort https_www_server("https", "www.google.com", 443); | 76 url::SchemeHostPort https_www_server("https", "www.google.com", 443); |
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 alternative_service_info_vector[0].alternative_service); | 360 alternative_service_info_vector[0].alternative_service); |
358 | 361 |
359 impl_.Clear(); | 362 impl_.Clear(); |
360 EXPECT_FALSE(HasAlternativeService(test_server)); | 363 EXPECT_FALSE(HasAlternativeService(test_server)); |
361 } | 364 } |
362 | 365 |
363 TEST_F(AlternateProtocolServerPropertiesTest, ExcludeOrigin) { | 366 TEST_F(AlternateProtocolServerPropertiesTest, ExcludeOrigin) { |
364 AlternativeServiceInfoVector alternative_service_info_vector; | 367 AlternativeServiceInfoVector alternative_service_info_vector; |
365 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 368 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
366 // Same hostname, same port, TCP: should be ignored. | 369 // Same hostname, same port, TCP: should be ignored. |
367 AlternativeServiceInfo alternative_service_info1(kProtoHTTP2, "foo", 443, | 370 AlternativeServiceInfo alternative_service_info1( |
368 expiration); | 371 AlternativeService(kProtoHTTP2, "foo", 443), expiration, |
| 372 HttpNetworkSession::Params().quic_supported_versions); |
369 alternative_service_info_vector.push_back(alternative_service_info1); | 373 alternative_service_info_vector.push_back(alternative_service_info1); |
370 // Different hostname: GetAlternativeServiceInfos should return this one. | 374 // Different hostname: GetAlternativeServiceInfos should return this one. |
371 AlternativeServiceInfo alternative_service_info2(kProtoHTTP2, "bar", 443, | 375 AlternativeServiceInfo alternative_service_info2( |
372 expiration); | 376 AlternativeService(kProtoHTTP2, "bar", 443), expiration, |
| 377 HttpNetworkSession::Params().quic_supported_versions); |
373 alternative_service_info_vector.push_back(alternative_service_info2); | 378 alternative_service_info_vector.push_back(alternative_service_info2); |
374 // Different port: GetAlternativeServiceInfos should return this one too. | 379 // Different port: GetAlternativeServiceInfos should return this one too. |
375 AlternativeServiceInfo alternative_service_info3(kProtoHTTP2, "foo", 80, | 380 AlternativeServiceInfo alternative_service_info3( |
376 expiration); | 381 AlternativeService(kProtoHTTP2, "foo", 80), expiration, |
| 382 HttpNetworkSession::Params().quic_supported_versions); |
377 alternative_service_info_vector.push_back(alternative_service_info3); | 383 alternative_service_info_vector.push_back(alternative_service_info3); |
378 // QUIC: GetAlternativeServices should return this one too. | 384 // QUIC: GetAlternativeServices should return this one too. |
379 AlternativeServiceInfo alternative_service_info4(kProtoQUIC, "foo", 443, | 385 AlternativeServiceInfo alternative_service_info4( |
380 expiration); | 386 AlternativeService(kProtoQUIC, "foo", 443), expiration, |
| 387 HttpNetworkSession::Params().quic_supported_versions); |
381 alternative_service_info_vector.push_back(alternative_service_info4); | 388 alternative_service_info_vector.push_back(alternative_service_info4); |
382 | 389 |
383 url::SchemeHostPort test_server("https", "foo", 443); | 390 url::SchemeHostPort test_server("https", "foo", 443); |
384 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); | 391 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); |
385 | 392 |
386 const AlternativeServiceInfoVector alternative_service_info_vector2 = | 393 const AlternativeServiceInfoVector alternative_service_info_vector2 = |
387 impl_.GetAlternativeServiceInfos(test_server); | 394 impl_.GetAlternativeServiceInfos(test_server); |
388 ASSERT_EQ(3u, alternative_service_info_vector2.size()); | 395 ASSERT_EQ(3u, alternative_service_info_vector2.size()); |
389 EXPECT_EQ(alternative_service_info2, alternative_service_info_vector2[0]); | 396 EXPECT_EQ(alternative_service_info2, alternative_service_info_vector2[0]); |
390 EXPECT_EQ(alternative_service_info3, alternative_service_info_vector2[1]); | 397 EXPECT_EQ(alternative_service_info3, alternative_service_info_vector2[1]); |
391 EXPECT_EQ(alternative_service_info4, alternative_service_info_vector2[2]); | 398 EXPECT_EQ(alternative_service_info4, alternative_service_info_vector2[2]); |
392 } | 399 } |
393 | 400 |
394 TEST_F(AlternateProtocolServerPropertiesTest, Set) { | 401 TEST_F(AlternateProtocolServerPropertiesTest, Set) { |
395 // |test_server1| has an alternative service, which will not be | 402 // |test_server1| has an alternative service, which will not be |
396 // affected by SetAlternativeServiceServers(), because | 403 // affected by SetAlternativeServiceServers(), because |
397 // |alternative_service_map| does not have an entry for | 404 // |alternative_service_map| does not have an entry for |
398 // |test_server1|. | 405 // |test_server1|. |
399 url::SchemeHostPort test_server1("http", "foo1", 80); | 406 url::SchemeHostPort test_server1("http", "foo1", 80); |
400 const AlternativeService alternative_service1(kProtoHTTP2, "bar1", 443); | 407 const AlternativeService alternative_service1(kProtoHTTP2, "bar1", 443); |
401 const base::Time now = base::Time::Now(); | 408 const base::Time now = base::Time::Now(); |
402 base::Time expiration1 = now + base::TimeDelta::FromDays(1); | 409 base::Time expiration1 = now + base::TimeDelta::FromDays(1); |
403 // 1st entry in the memory. | 410 // 1st entry in the memory. |
404 impl_.SetAlternativeService(test_server1, alternative_service1, expiration1); | 411 impl_.SetAlternativeService( |
| 412 test_server1, alternative_service1, expiration1, |
| 413 HttpNetworkSession::Params().quic_supported_versions); |
405 | 414 |
406 // |test_server2| has an alternative service, which will be | 415 // |test_server2| has an alternative service, which will be |
407 // overwritten by SetAlternativeServiceServers(), because | 416 // overwritten by SetAlternativeServiceServers(), because |
408 // |alternative_service_map| has an entry for | 417 // |alternative_service_map| has an entry for |
409 // |test_server2|. | 418 // |test_server2|. |
410 AlternativeServiceInfoVector alternative_service_info_vector; | 419 AlternativeServiceInfoVector alternative_service_info_vector; |
411 const AlternativeService alternative_service2(kProtoHTTP2, "bar2", 443); | 420 const AlternativeService alternative_service2(kProtoHTTP2, "bar2", 443); |
412 base::Time expiration2 = now + base::TimeDelta::FromDays(2); | 421 base::Time expiration2 = now + base::TimeDelta::FromDays(2); |
413 alternative_service_info_vector.push_back( | 422 alternative_service_info_vector.push_back(AlternativeServiceInfo( |
414 AlternativeServiceInfo(alternative_service2, expiration2)); | 423 alternative_service2, expiration2, |
| 424 HttpNetworkSession::Params().quic_supported_versions)); |
415 url::SchemeHostPort test_server2("http", "foo2", 80); | 425 url::SchemeHostPort test_server2("http", "foo2", 80); |
416 // 0th entry in the memory. | 426 // 0th entry in the memory. |
417 impl_.SetAlternativeServices(test_server2, alternative_service_info_vector); | 427 impl_.SetAlternativeServices(test_server2, alternative_service_info_vector); |
418 | 428 |
419 // Prepare |alternative_service_map| to be loaded by | 429 // Prepare |alternative_service_map| to be loaded by |
420 // SetAlternativeServiceServers(). | 430 // SetAlternativeServiceServers(). |
421 AlternativeServiceMap alternative_service_map( | 431 AlternativeServiceMap alternative_service_map( |
422 AlternativeServiceMap::NO_AUTO_EVICT); | 432 AlternativeServiceMap::NO_AUTO_EVICT); |
423 const AlternativeService alternative_service3(kProtoHTTP2, "bar3", 123); | 433 const AlternativeService alternative_service3(kProtoHTTP2, "bar3", 123); |
424 base::Time expiration3 = now + base::TimeDelta::FromDays(3); | 434 base::Time expiration3 = now + base::TimeDelta::FromDays(3); |
425 const AlternativeServiceInfo alternative_service_info1(alternative_service3, | 435 const AlternativeServiceInfo alternative_service_info1( |
426 expiration3); | 436 alternative_service3, expiration3, |
| 437 HttpNetworkSession::Params().quic_supported_versions); |
427 // Simulate updating data for 0th entry with data from Preferences. | 438 // Simulate updating data for 0th entry with data from Preferences. |
428 alternative_service_map.Put( | 439 alternative_service_map.Put( |
429 test_server2, | 440 test_server2, |
430 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info1)); | 441 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info1)); |
431 | 442 |
432 url::SchemeHostPort test_server3("http", "foo3", 80); | 443 url::SchemeHostPort test_server3("http", "foo3", 80); |
433 const AlternativeService alternative_service4(kProtoHTTP2, "bar4", 1234); | 444 const AlternativeService alternative_service4(kProtoHTTP2, "bar4", 1234); |
434 base::Time expiration4 = now + base::TimeDelta::FromDays(4); | 445 base::Time expiration4 = now + base::TimeDelta::FromDays(4); |
435 const AlternativeServiceInfo alternative_service_info2(alternative_service4, | 446 const AlternativeServiceInfo alternative_service_info2( |
436 expiration4); | 447 alternative_service4, expiration4, |
| 448 HttpNetworkSession::Params().quic_supported_versions); |
437 // Add an old entry from Preferences, this will be added to end of recency | 449 // Add an old entry from Preferences, this will be added to end of recency |
438 // list. | 450 // list. |
439 alternative_service_map.Put( | 451 alternative_service_map.Put( |
440 test_server3, | 452 test_server3, |
441 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info2)); | 453 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info2)); |
442 | 454 |
443 // MRU list will be test_server2, test_server1, test_server3. | 455 // MRU list will be test_server2, test_server1, test_server3. |
444 impl_.SetAlternativeServiceServers(&alternative_service_map); | 456 impl_.SetAlternativeServiceServers(&alternative_service_map); |
445 | 457 |
446 // Verify alternative_service_map. | 458 // Verify alternative_service_map. |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 alternative_service_info_vector[0].alternative_service); | 501 alternative_service_info_vector[0].alternative_service); |
490 } | 502 } |
491 | 503 |
492 // Regression test for https://crbug.com/516486: | 504 // Regression test for https://crbug.com/516486: |
493 // GetAlternativeServiceInfos() should remove |alternative_service_map_| | 505 // GetAlternativeServiceInfos() should remove |alternative_service_map_| |
494 // elements with empty value. | 506 // elements with empty value. |
495 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVector) { | 507 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVector) { |
496 url::SchemeHostPort server("https", "foo", 443); | 508 url::SchemeHostPort server("https", "foo", 443); |
497 const AlternativeService alternative_service(kProtoHTTP2, "bar", 443); | 509 const AlternativeService alternative_service(kProtoHTTP2, "bar", 443); |
498 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); | 510 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); |
499 const AlternativeServiceInfo alternative_service_info(alternative_service, | 511 const AlternativeServiceInfo alternative_service_info( |
500 expiration); | 512 alternative_service, expiration, |
| 513 HttpNetworkSession::Params().quic_supported_versions); |
501 AlternativeServiceMap alternative_service_map( | 514 AlternativeServiceMap alternative_service_map( |
502 AlternativeServiceMap::NO_AUTO_EVICT); | 515 AlternativeServiceMap::NO_AUTO_EVICT); |
503 alternative_service_map.Put( | 516 alternative_service_map.Put( |
504 server, | 517 server, |
505 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); | 518 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); |
506 | 519 |
507 // Prepare |alternative_service_map_| with a single key that has a single | 520 // Prepare |alternative_service_map_| with a single key that has a single |
508 // AlternativeServiceInfo with identical hostname and port. | 521 // AlternativeServiceInfo with identical hostname and port. |
509 impl_.SetAlternativeServiceServers(&alternative_service_map); | 522 impl_.SetAlternativeServiceServers(&alternative_service_map); |
510 | 523 |
(...skipping 11 matching lines...) Expand all Loading... |
522 // There should still be no alternative service assigned to |server|. | 535 // There should still be no alternative service assigned to |server|. |
523 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(server).empty()); | 536 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(server).empty()); |
524 } | 537 } |
525 | 538 |
526 // Regression test for https://crbug.com/516486 for the canonical host case. | 539 // Regression test for https://crbug.com/516486 for the canonical host case. |
527 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVectorForCanonical) { | 540 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVectorForCanonical) { |
528 url::SchemeHostPort server("https", "foo.c.youtube.com", 443); | 541 url::SchemeHostPort server("https", "foo.c.youtube.com", 443); |
529 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); | 542 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); |
530 const AlternativeService alternative_service(kProtoHTTP2, "", 443); | 543 const AlternativeService alternative_service(kProtoHTTP2, "", 443); |
531 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); | 544 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); |
532 const AlternativeServiceInfo alternative_service_info(alternative_service, | 545 const AlternativeServiceInfo alternative_service_info( |
533 expiration); | 546 alternative_service, expiration, |
| 547 HttpNetworkSession::Params().quic_supported_versions); |
534 AlternativeServiceMap alternative_service_map( | 548 AlternativeServiceMap alternative_service_map( |
535 AlternativeServiceMap::NO_AUTO_EVICT); | 549 AlternativeServiceMap::NO_AUTO_EVICT); |
536 alternative_service_map.Put( | 550 alternative_service_map.Put( |
537 canonical_server, | 551 canonical_server, |
538 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); | 552 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); |
539 | 553 |
540 // Prepare |alternative_service_map_| with a single key that has a single | 554 // Prepare |alternative_service_map_| with a single key that has a single |
541 // AlternativeServiceInfo with identical hostname and port. | 555 // AlternativeServiceInfo with identical hostname and port. |
542 impl_.SetAlternativeServiceServers(&alternative_service_map); | 556 impl_.SetAlternativeServiceServers(&alternative_service_map); |
543 | 557 |
(...skipping 12 matching lines...) Expand all Loading... |
556 // There should still be no alternative service assigned to | 570 // There should still be no alternative service assigned to |
557 // |canonical_server|. | 571 // |canonical_server|. |
558 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(canonical_server).empty()); | 572 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(canonical_server).empty()); |
559 } | 573 } |
560 | 574 |
561 TEST_F(AlternateProtocolServerPropertiesTest, ClearServerWithCanonical) { | 575 TEST_F(AlternateProtocolServerPropertiesTest, ClearServerWithCanonical) { |
562 url::SchemeHostPort server("https", "foo.c.youtube.com", 443); | 576 url::SchemeHostPort server("https", "foo.c.youtube.com", 443); |
563 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); | 577 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); |
564 const AlternativeService alternative_service(kProtoQUIC, "", 443); | 578 const AlternativeService alternative_service(kProtoQUIC, "", 443); |
565 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 579 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
566 const AlternativeServiceInfo alternative_service_info(alternative_service, | 580 const AlternativeServiceInfo alternative_service_info( |
567 expiration); | 581 alternative_service, expiration, |
| 582 HttpNetworkSession::Params().quic_supported_versions); |
568 | 583 |
569 impl_.SetAlternativeServices( | 584 impl_.SetAlternativeServices( |
570 canonical_server, | 585 canonical_server, |
571 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); | 586 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); |
572 | 587 |
573 // Make sure the canonical service is returned for the other server. | 588 // Make sure the canonical service is returned for the other server. |
574 const AlternativeServiceInfoVector alternative_service_info_vector = | 589 const AlternativeServiceInfoVector alternative_service_info_vector = |
575 impl_.GetAlternativeServiceInfos(server); | 590 impl_.GetAlternativeServiceInfos(server); |
576 ASSERT_EQ(1u, alternative_service_info_vector.size()); | 591 ASSERT_EQ(1u, alternative_service_info_vector.size()); |
577 EXPECT_EQ(kProtoQUIC, | 592 EXPECT_EQ(kProtoQUIC, |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
630 alternative_service_info_vector = | 645 alternative_service_info_vector = |
631 impl_.GetAlternativeServiceInfos(test_server); | 646 impl_.GetAlternativeServiceInfos(test_server); |
632 ASSERT_EQ(1u, alternative_service_info_vector.size()); | 647 ASSERT_EQ(1u, alternative_service_info_vector.size()); |
633 EXPECT_EQ(alternative_service1, | 648 EXPECT_EQ(alternative_service1, |
634 alternative_service_info_vector[0].alternative_service); | 649 alternative_service_info_vector[0].alternative_service); |
635 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); | 650 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); |
636 | 651 |
637 // SetAlternativeServices should add a broken alternative service to the map. | 652 // SetAlternativeServices should add a broken alternative service to the map. |
638 AlternativeServiceInfoVector alternative_service_info_vector2; | 653 AlternativeServiceInfoVector alternative_service_info_vector2; |
639 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 654 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
640 alternative_service_info_vector2.push_back( | 655 |
641 AlternativeServiceInfo(alternative_service1, expiration)); | 656 alternative_service_info_vector2.push_back(AlternativeServiceInfo( |
| 657 alternative_service1, expiration, |
| 658 HttpNetworkSession::Params().quic_supported_versions)); |
642 const AlternativeService alternative_service2(kProtoHTTP2, "foo", 1234); | 659 const AlternativeService alternative_service2(kProtoHTTP2, "foo", 1234); |
643 alternative_service_info_vector2.push_back( | 660 alternative_service_info_vector2.push_back(AlternativeServiceInfo( |
644 AlternativeServiceInfo(alternative_service2, expiration)); | 661 alternative_service2, expiration, |
| 662 HttpNetworkSession::Params().quic_supported_versions)); |
645 impl_.SetAlternativeServices(test_server, alternative_service_info_vector2); | 663 impl_.SetAlternativeServices(test_server, alternative_service_info_vector2); |
646 alternative_service_info_vector = | 664 alternative_service_info_vector = |
647 impl_.GetAlternativeServiceInfos(test_server); | 665 impl_.GetAlternativeServiceInfos(test_server); |
648 ASSERT_EQ(2u, alternative_service_info_vector.size()); | 666 ASSERT_EQ(2u, alternative_service_info_vector.size()); |
649 EXPECT_EQ(alternative_service1, | 667 EXPECT_EQ(alternative_service1, |
650 alternative_service_info_vector[0].alternative_service); | 668 alternative_service_info_vector[0].alternative_service); |
651 EXPECT_EQ(alternative_service2, | 669 EXPECT_EQ(alternative_service2, |
652 alternative_service_info_vector[1].alternative_service); | 670 alternative_service_info_vector[1].alternative_service); |
653 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); | 671 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); |
654 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2)); | 672 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2)); |
655 | 673 |
656 // SetAlternativeService should add a broken alternative service to the map. | 674 // SetAlternativeService should add a broken alternative service to the map. |
657 SetAlternativeService(test_server, alternative_service1); | 675 SetAlternativeService(test_server, alternative_service1); |
658 alternative_service_info_vector = | 676 alternative_service_info_vector = |
659 impl_.GetAlternativeServiceInfos(test_server); | 677 impl_.GetAlternativeServiceInfos(test_server); |
660 ASSERT_EQ(1u, alternative_service_info_vector.size()); | 678 ASSERT_EQ(1u, alternative_service_info_vector.size()); |
661 EXPECT_EQ(alternative_service1, | 679 EXPECT_EQ(alternative_service1, |
662 alternative_service_info_vector[0].alternative_service); | 680 alternative_service_info_vector[0].alternative_service); |
663 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); | 681 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); |
664 } | 682 } |
665 | 683 |
666 TEST_F(AlternateProtocolServerPropertiesTest, MaxAge) { | 684 TEST_F(AlternateProtocolServerPropertiesTest, MaxAge) { |
667 AlternativeServiceInfoVector alternative_service_info_vector; | 685 AlternativeServiceInfoVector alternative_service_info_vector; |
668 base::Time now = base::Time::Now(); | 686 base::Time now = base::Time::Now(); |
669 base::TimeDelta one_day = base::TimeDelta::FromDays(1); | 687 base::TimeDelta one_day = base::TimeDelta::FromDays(1); |
670 | 688 |
671 // First alternative service expired one day ago, should not be returned by | 689 // First alternative service expired one day ago, should not be returned by |
672 // GetAlternativeServiceInfos(). | 690 // GetAlternativeServiceInfos(). |
673 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); | 691 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); |
674 alternative_service_info_vector.push_back( | 692 alternative_service_info_vector.push_back(AlternativeServiceInfo( |
675 AlternativeServiceInfo(alternative_service1, now - one_day)); | 693 alternative_service1, now - one_day, |
| 694 HttpNetworkSession::Params().quic_supported_versions)); |
676 | 695 |
677 // Second alterrnative service will expire one day from now, should be | 696 // Second alterrnative service will expire one day from now, should be |
678 // returned by GetAlternativeSerices(). | 697 // returned by GetAlternativeSerices(). |
679 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); | 698 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); |
680 alternative_service_info_vector.push_back( | 699 alternative_service_info_vector.push_back(AlternativeServiceInfo( |
681 AlternativeServiceInfo(alternative_service2, now + one_day)); | 700 alternative_service2, now + one_day, |
| 701 HttpNetworkSession::Params().quic_supported_versions)); |
682 | 702 |
683 url::SchemeHostPort test_server("http", "foo", 80); | 703 url::SchemeHostPort test_server("http", "foo", 80); |
684 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); | 704 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); |
685 | 705 |
686 AlternativeServiceInfoVector alternative_service_info_vector2 = | 706 AlternativeServiceInfoVector alternative_service_info_vector2 = |
687 impl_.GetAlternativeServiceInfos(test_server); | 707 impl_.GetAlternativeServiceInfos(test_server); |
688 ASSERT_EQ(1u, alternative_service_info_vector2.size()); | 708 ASSERT_EQ(1u, alternative_service_info_vector2.size()); |
689 EXPECT_EQ(alternative_service2, | 709 EXPECT_EQ(alternative_service2, |
690 alternative_service_info_vector2[0].alternative_service); | 710 alternative_service_info_vector2[0].alternative_service); |
691 } | 711 } |
692 | 712 |
693 TEST_F(AlternateProtocolServerPropertiesTest, MaxAgeCanonical) { | 713 TEST_F(AlternateProtocolServerPropertiesTest, MaxAgeCanonical) { |
694 AlternativeServiceInfoVector alternative_service_info_vector; | 714 AlternativeServiceInfoVector alternative_service_info_vector; |
695 base::Time now = base::Time::Now(); | 715 base::Time now = base::Time::Now(); |
696 base::TimeDelta one_day = base::TimeDelta::FromDays(1); | 716 base::TimeDelta one_day = base::TimeDelta::FromDays(1); |
697 | 717 |
698 // First alternative service expired one day ago, should not be returned by | 718 // First alternative service expired one day ago, should not be returned by |
699 // GetAlternativeServiceInfos(). | 719 // GetAlternativeServiceInfos(). |
700 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); | 720 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); |
701 alternative_service_info_vector.push_back( | 721 alternative_service_info_vector.push_back(AlternativeServiceInfo( |
702 AlternativeServiceInfo(alternative_service1, now - one_day)); | 722 alternative_service1, now - one_day, |
| 723 HttpNetworkSession::Params().quic_supported_versions)); |
703 | 724 |
704 // Second alterrnative service will expire one day from now, should be | 725 // Second alterrnative service will expire one day from now, should be |
705 // returned by GetAlternativeSerices(). | 726 // returned by GetAlternativeSerices(). |
706 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); | 727 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); |
707 alternative_service_info_vector.push_back( | 728 alternative_service_info_vector.push_back(AlternativeServiceInfo( |
708 AlternativeServiceInfo(alternative_service2, now + one_day)); | 729 alternative_service2, now + one_day, |
| 730 HttpNetworkSession::Params().quic_supported_versions)); |
709 | 731 |
710 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); | 732 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); |
711 impl_.SetAlternativeServices(canonical_server, | 733 impl_.SetAlternativeServices(canonical_server, |
712 alternative_service_info_vector); | 734 alternative_service_info_vector); |
713 | 735 |
714 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443); | 736 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443); |
715 AlternativeServiceInfoVector alternative_service_info_vector2 = | 737 AlternativeServiceInfoVector alternative_service_info_vector2 = |
716 impl_.GetAlternativeServiceInfos(test_server); | 738 impl_.GetAlternativeServiceInfos(test_server); |
717 ASSERT_EQ(1u, alternative_service_info_vector2.size()); | 739 ASSERT_EQ(1u, alternative_service_info_vector2.size()); |
718 EXPECT_EQ(alternative_service2, | 740 EXPECT_EQ(alternative_service2, |
719 alternative_service_info_vector2[0].alternative_service); | 741 alternative_service_info_vector2[0].alternative_service); |
720 } | 742 } |
721 | 743 |
722 TEST_F(AlternateProtocolServerPropertiesTest, AlternativeServiceWithScheme) { | 744 TEST_F(AlternateProtocolServerPropertiesTest, AlternativeServiceWithScheme) { |
723 AlternativeServiceInfoVector alternative_service_info_vector; | 745 AlternativeServiceInfoVector alternative_service_info_vector; |
724 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); | 746 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); |
725 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 747 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
726 alternative_service_info_vector.push_back( | 748 alternative_service_info_vector.push_back(AlternativeServiceInfo( |
727 AlternativeServiceInfo(alternative_service1, expiration)); | 749 alternative_service1, expiration, |
| 750 HttpNetworkSession::Params().quic_supported_versions)); |
728 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); | 751 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); |
729 alternative_service_info_vector.push_back( | 752 alternative_service_info_vector.push_back(AlternativeServiceInfo( |
730 AlternativeServiceInfo(alternative_service2, expiration)); | 753 alternative_service2, expiration, |
| 754 HttpNetworkSession::Params().quic_supported_versions)); |
731 // Set Alt-Svc list for |http_server|. | 755 // Set Alt-Svc list for |http_server|. |
732 url::SchemeHostPort http_server("http", "foo", 80); | 756 url::SchemeHostPort http_server("http", "foo", 80); |
733 impl_.SetAlternativeServices(http_server, alternative_service_info_vector); | 757 impl_.SetAlternativeServices(http_server, alternative_service_info_vector); |
734 | 758 |
735 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); | 759 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); |
736 net::AlternativeServiceMap::const_iterator it = map.begin(); | 760 net::AlternativeServiceMap::const_iterator it = map.begin(); |
737 EXPECT_TRUE(it->first.Equals(http_server)); | 761 EXPECT_TRUE(it->first.Equals(http_server)); |
738 ASSERT_EQ(2u, it->second.size()); | 762 ASSERT_EQ(2u, it->second.size()); |
739 EXPECT_EQ(alternative_service1, it->second[0].alternative_service); | 763 EXPECT_EQ(alternative_service1, it->second[0].alternative_service); |
740 EXPECT_EQ(alternative_service2, it->second[1].alternative_service); | 764 EXPECT_EQ(alternative_service2, it->second[1].alternative_service); |
(...skipping 11 matching lines...) Expand all Loading... |
752 impl_.SetAlternativeServices(http_server, AlternativeServiceInfoVector()); | 776 impl_.SetAlternativeServices(http_server, AlternativeServiceInfoVector()); |
753 | 777 |
754 EXPECT_EQ(0u, impl_.GetAlternativeServiceInfos(http_server).size()); | 778 EXPECT_EQ(0u, impl_.GetAlternativeServiceInfos(http_server).size()); |
755 EXPECT_EQ(2u, impl_.GetAlternativeServiceInfos(https_server).size()); | 779 EXPECT_EQ(2u, impl_.GetAlternativeServiceInfos(https_server).size()); |
756 } | 780 } |
757 | 781 |
758 TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternativeServices) { | 782 TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternativeServices) { |
759 AlternativeServiceInfoVector alternative_service_info_vector; | 783 AlternativeServiceInfoVector alternative_service_info_vector; |
760 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); | 784 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); |
761 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 785 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
762 alternative_service_info_vector.push_back( | 786 alternative_service_info_vector.push_back(AlternativeServiceInfo( |
763 AlternativeServiceInfo(alternative_service1, expiration)); | 787 alternative_service1, expiration, |
| 788 HttpNetworkSession::Params().quic_supported_versions)); |
764 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); | 789 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); |
765 alternative_service_info_vector.push_back( | 790 alternative_service_info_vector.push_back(AlternativeServiceInfo( |
766 AlternativeServiceInfo(alternative_service2, expiration)); | 791 alternative_service2, expiration, |
| 792 HttpNetworkSession::Params().quic_supported_versions)); |
767 url::SchemeHostPort test_server("http", "foo", 80); | 793 url::SchemeHostPort test_server("http", "foo", 80); |
768 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); | 794 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); |
769 | 795 |
770 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); | 796 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); |
771 net::AlternativeServiceMap::const_iterator it = map.begin(); | 797 net::AlternativeServiceMap::const_iterator it = map.begin(); |
772 EXPECT_TRUE(it->first.Equals(test_server)); | 798 EXPECT_TRUE(it->first.Equals(test_server)); |
773 ASSERT_EQ(2u, it->second.size()); | 799 ASSERT_EQ(2u, it->second.size()); |
774 EXPECT_EQ(alternative_service1, it->second[0].alternative_service); | 800 EXPECT_EQ(alternative_service1, it->second[0].alternative_service); |
775 EXPECT_EQ(alternative_service2, it->second[1].alternative_service); | 801 EXPECT_EQ(alternative_service2, it->second[1].alternative_service); |
776 | 802 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
841 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443); | 867 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443); |
842 EXPECT_FALSE(HasAlternativeService(test_server)); | 868 EXPECT_FALSE(HasAlternativeService(test_server)); |
843 | 869 |
844 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); | 870 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); |
845 EXPECT_FALSE(HasAlternativeService(canonical_server)); | 871 EXPECT_FALSE(HasAlternativeService(canonical_server)); |
846 | 872 |
847 AlternativeServiceInfoVector alternative_service_info_vector; | 873 AlternativeServiceInfoVector alternative_service_info_vector; |
848 const AlternativeService canonical_alternative_service1( | 874 const AlternativeService canonical_alternative_service1( |
849 kProtoQUIC, "bar.c.youtube.com", 1234); | 875 kProtoQUIC, "bar.c.youtube.com", 1234); |
850 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 876 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
851 alternative_service_info_vector.push_back( | 877 alternative_service_info_vector.push_back(AlternativeServiceInfo( |
852 AlternativeServiceInfo(canonical_alternative_service1, expiration)); | 878 canonical_alternative_service1, expiration, |
| 879 HttpNetworkSession::Params().quic_supported_versions)); |
853 const AlternativeService canonical_alternative_service2(kProtoHTTP2, "", 443); | 880 const AlternativeService canonical_alternative_service2(kProtoHTTP2, "", 443); |
854 alternative_service_info_vector.push_back( | 881 alternative_service_info_vector.push_back(AlternativeServiceInfo( |
855 AlternativeServiceInfo(canonical_alternative_service2, expiration)); | 882 canonical_alternative_service2, expiration, |
| 883 HttpNetworkSession::Params().quic_supported_versions)); |
856 impl_.SetAlternativeServices(canonical_server, | 884 impl_.SetAlternativeServices(canonical_server, |
857 alternative_service_info_vector); | 885 alternative_service_info_vector); |
858 | 886 |
859 // Since |test_server| does not have an alternative service itself, | 887 // Since |test_server| does not have an alternative service itself, |
860 // GetAlternativeServiceInfos should return those of |canonical_server|. | 888 // GetAlternativeServiceInfos should return those of |canonical_server|. |
861 AlternativeServiceInfoVector alternative_service_info_vector2 = | 889 AlternativeServiceInfoVector alternative_service_info_vector2 = |
862 impl_.GetAlternativeServiceInfos(test_server); | 890 impl_.GetAlternativeServiceInfos(test_server); |
863 ASSERT_EQ(2u, alternative_service_info_vector2.size()); | 891 ASSERT_EQ(2u, alternative_service_info_vector2.size()); |
864 EXPECT_EQ(canonical_alternative_service1, | 892 EXPECT_EQ(canonical_alternative_service1, |
865 alternative_service_info_vector2[0].alternative_service); | 893 alternative_service_info_vector2[0].alternative_service); |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1239 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id))); | 1267 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id))); |
1240 | 1268 |
1241 impl_.Clear(); | 1269 impl_.Clear(); |
1242 EXPECT_EQ(0u, impl_.quic_server_info_map().size()); | 1270 EXPECT_EQ(0u, impl_.quic_server_info_map().size()); |
1243 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id)); | 1271 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id)); |
1244 } | 1272 } |
1245 | 1273 |
1246 } // namespace | 1274 } // namespace |
1247 | 1275 |
1248 } // namespace net | 1276 } // namespace net |
OLD | NEW |