| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_manager.h" | 5 #include "net/http/http_server_properties_manager.h" |
| 6 | 6 |
| 7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
| 8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 582 | 582 |
| 583 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server)); | 583 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server)); |
| 584 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 584 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 585 } | 585 } |
| 586 | 586 |
| 587 TEST_P(HttpServerPropertiesManagerTest, SetSpdySetting) { | 587 TEST_P(HttpServerPropertiesManagerTest, SetSpdySetting) { |
| 588 ExpectPrefsUpdate(); | 588 ExpectPrefsUpdate(); |
| 589 ExpectScheduleUpdatePrefsOnNetworkThread(); | 589 ExpectScheduleUpdatePrefsOnNetworkThread(); |
| 590 | 590 |
| 591 // Add SpdySetting for mail.google.com:443. | 591 // Add SpdySetting for mail.google.com:443. |
| 592 HostPortPair spdy_server_mail("mail.google.com", 443); | 592 url::SchemeHostPort spdy_server_mail("https", "mail.google.com", 443); |
| 593 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; | 593 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; |
| 594 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; | 594 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; |
| 595 const uint32_t value1 = 31337; | 595 const uint32_t value1 = 31337; |
| 596 http_server_props_manager_->SetSpdySetting( | 596 http_server_props_manager_->SetSpdySetting( |
| 597 spdy_server_mail, id1, flags1, value1); | 597 spdy_server_mail, id1, flags1, value1); |
| 598 | 598 |
| 599 // Run the task. | 599 // Run the task. |
| 600 base::RunLoop().RunUntilIdle(); | 600 base::RunLoop().RunUntilIdle(); |
| 601 | 601 |
| 602 const SettingsMap& settings_map1_ret = | 602 const SettingsMap& settings_map1_ret = |
| 603 http_server_props_manager_->GetSpdySettings(spdy_server_mail); | 603 http_server_props_manager_->GetSpdySettings(spdy_server_mail); |
| 604 ASSERT_EQ(1U, settings_map1_ret.size()); | 604 ASSERT_EQ(1U, settings_map1_ret.size()); |
| 605 SettingsMap::const_iterator it1_ret = settings_map1_ret.find(id1); | 605 SettingsMap::const_iterator it1_ret = settings_map1_ret.find(id1); |
| 606 EXPECT_TRUE(it1_ret != settings_map1_ret.end()); | 606 EXPECT_TRUE(it1_ret != settings_map1_ret.end()); |
| 607 SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second; | 607 SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second; |
| 608 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first); | 608 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first); |
| 609 EXPECT_EQ(value1, flags_and_value1_ret.second); | 609 EXPECT_EQ(value1, flags_and_value1_ret.second); |
| 610 | 610 |
| 611 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 611 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 612 } | 612 } |
| 613 | 613 |
| 614 TEST_P(HttpServerPropertiesManagerTest, ClearSpdySetting) { | 614 TEST_P(HttpServerPropertiesManagerTest, ClearSpdySetting) { |
| 615 ExpectPrefsUpdateRepeatedly(); | 615 ExpectPrefsUpdateRepeatedly(); |
| 616 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); | 616 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); |
| 617 | 617 |
| 618 // Add SpdySetting for mail.google.com:443. | 618 // Add SpdySetting for mail.google.com:443. |
| 619 HostPortPair spdy_server_mail("mail.google.com", 443); | 619 url::SchemeHostPort spdy_server_mail("https", "mail.google.com", 443); |
| 620 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; | 620 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; |
| 621 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; | 621 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; |
| 622 const uint32_t value1 = 31337; | 622 const uint32_t value1 = 31337; |
| 623 http_server_props_manager_->SetSpdySetting( | 623 http_server_props_manager_->SetSpdySetting( |
| 624 spdy_server_mail, id1, flags1, value1); | 624 spdy_server_mail, id1, flags1, value1); |
| 625 | 625 |
| 626 // Run the task. | 626 // Run the task. |
| 627 base::RunLoop().RunUntilIdle(); | 627 base::RunLoop().RunUntilIdle(); |
| 628 | 628 |
| 629 const SettingsMap& settings_map1_ret = | 629 const SettingsMap& settings_map1_ret = |
| (...skipping 18 matching lines...) Expand all Loading... |
| 648 ASSERT_EQ(0U, settings_map2_ret.size()); | 648 ASSERT_EQ(0U, settings_map2_ret.size()); |
| 649 | 649 |
| 650 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 650 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 651 } | 651 } |
| 652 | 652 |
| 653 TEST_P(HttpServerPropertiesManagerTest, ClearAllSpdySetting) { | 653 TEST_P(HttpServerPropertiesManagerTest, ClearAllSpdySetting) { |
| 654 ExpectPrefsUpdateRepeatedly(); | 654 ExpectPrefsUpdateRepeatedly(); |
| 655 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); | 655 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); |
| 656 | 656 |
| 657 // Add SpdySetting for mail.google.com:443. | 657 // Add SpdySetting for mail.google.com:443. |
| 658 HostPortPair spdy_server_mail("mail.google.com", 443); | 658 url::SchemeHostPort spdy_server_mail("https", "mail.google.com", 443); |
| 659 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; | 659 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; |
| 660 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; | 660 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; |
| 661 const uint32_t value1 = 31337; | 661 const uint32_t value1 = 31337; |
| 662 http_server_props_manager_->SetSpdySetting( | 662 http_server_props_manager_->SetSpdySetting( |
| 663 spdy_server_mail, id1, flags1, value1); | 663 spdy_server_mail, id1, flags1, value1); |
| 664 | 664 |
| 665 // Run the task. | 665 // Run the task. |
| 666 base::RunLoop().RunUntilIdle(); | 666 base::RunLoop().RunUntilIdle(); |
| 667 | 667 |
| 668 const SettingsMap& settings_map1_ret = | 668 const SettingsMap& settings_map1_ret = |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 908 http_server_props_manager_->SetServerNetworkStats(spdy_server_mail, stats); | 908 http_server_props_manager_->SetServerNetworkStats(spdy_server_mail, stats); |
| 909 | 909 |
| 910 QuicServerId mail_quic_server_id("mail.google.com", 80); | 910 QuicServerId mail_quic_server_id("mail.google.com", 80); |
| 911 std::string quic_server_info1("quic_server_info1"); | 911 std::string quic_server_info1("quic_server_info1"); |
| 912 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, | 912 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, |
| 913 quic_server_info1); | 913 quic_server_info1); |
| 914 | 914 |
| 915 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; | 915 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; |
| 916 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; | 916 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; |
| 917 const uint32_t value1 = 31337; | 917 const uint32_t value1 = 31337; |
| 918 http_server_props_manager_->SetSpdySetting(spdy_server_mail, id1, flags1, | 918 http_server_props_manager_->SetSpdySetting(spdy_server, id1, flags1, value1); |
| 919 value1); | |
| 920 | 919 |
| 921 // Run the task. | 920 // Run the task. |
| 922 base::RunLoop().RunUntilIdle(); | 921 base::RunLoop().RunUntilIdle(); |
| 923 | 922 |
| 924 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server)); | 923 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server)); |
| 925 EXPECT_TRUE(HasAlternativeService(spdy_server_mail)); | 924 EXPECT_TRUE(HasAlternativeService(spdy_server_mail)); |
| 926 IPAddress address; | 925 IPAddress address; |
| 927 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); | 926 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); |
| 928 EXPECT_EQ(actual_address, address); | 927 EXPECT_EQ(actual_address, address); |
| 929 const ServerNetworkStats* stats1 = | 928 const ServerNetworkStats* stats1 = |
| 930 http_server_props_manager_->GetServerNetworkStats(spdy_server_mail); | 929 http_server_props_manager_->GetServerNetworkStats(spdy_server_mail); |
| 931 EXPECT_EQ(10, stats1->srtt.ToInternalValue()); | 930 EXPECT_EQ(10, stats1->srtt.ToInternalValue()); |
| 932 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo( | 931 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo( |
| 933 mail_quic_server_id)); | 932 mail_quic_server_id)); |
| 934 | 933 |
| 935 // Check SPDY settings values. | 934 // Check SPDY settings values. |
| 936 const SettingsMap& settings_map1_ret = | 935 const SettingsMap& settings_map1_ret = |
| 937 http_server_props_manager_->GetSpdySettings(spdy_server_mail); | 936 http_server_props_manager_->GetSpdySettings(spdy_server); |
| 938 ASSERT_EQ(1U, settings_map1_ret.size()); | 937 ASSERT_EQ(1U, settings_map1_ret.size()); |
| 939 SettingsMap::const_iterator it1_ret = settings_map1_ret.find(id1); | 938 SettingsMap::const_iterator it1_ret = settings_map1_ret.find(id1); |
| 940 EXPECT_TRUE(it1_ret != settings_map1_ret.end()); | 939 EXPECT_TRUE(it1_ret != settings_map1_ret.end()); |
| 941 SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second; | 940 SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second; |
| 942 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first); | 941 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first); |
| 943 EXPECT_EQ(value1, flags_and_value1_ret.second); | 942 EXPECT_EQ(value1, flags_and_value1_ret.second); |
| 944 | 943 |
| 945 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 944 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 946 | 945 |
| 947 ExpectPrefsUpdate(); | 946 ExpectPrefsUpdate(); |
| 948 | 947 |
| 949 // Clear http server data, time out if we do not get a completion callback. | 948 // Clear http server data, time out if we do not get a completion callback. |
| 950 http_server_props_manager_->Clear(base::MessageLoop::QuitWhenIdleClosure()); | 949 http_server_props_manager_->Clear(base::MessageLoop::QuitWhenIdleClosure()); |
| 951 base::RunLoop().Run(); | 950 base::RunLoop().Run(); |
| 952 | 951 |
| 953 EXPECT_FALSE( | 952 EXPECT_FALSE( |
| 954 http_server_props_manager_->SupportsRequestPriority(spdy_server)); | 953 http_server_props_manager_->SupportsRequestPriority(spdy_server)); |
| 955 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); | 954 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); |
| 956 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address)); | 955 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address)); |
| 957 const ServerNetworkStats* stats2 = | 956 const ServerNetworkStats* stats2 = |
| 958 http_server_props_manager_->GetServerNetworkStats(spdy_server_mail); | 957 http_server_props_manager_->GetServerNetworkStats(spdy_server_mail); |
| 959 EXPECT_EQ(nullptr, stats2); | 958 EXPECT_EQ(nullptr, stats2); |
| 960 EXPECT_EQ(nullptr, | 959 EXPECT_EQ(nullptr, |
| 961 http_server_props_manager_->GetQuicServerInfo(mail_quic_server_id)); | 960 http_server_props_manager_->GetQuicServerInfo(mail_quic_server_id)); |
| 962 | 961 |
| 963 const SettingsMap& settings_map2_ret = | 962 const SettingsMap& settings_map2_ret = |
| 964 http_server_props_manager_->GetSpdySettings(spdy_server_mail); | 963 http_server_props_manager_->GetSpdySettings(spdy_server); |
| 965 EXPECT_EQ(0U, settings_map2_ret.size()); | 964 EXPECT_EQ(0U, settings_map2_ret.size()); |
| 966 | 965 |
| 967 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 966 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 968 } | 967 } |
| 969 | 968 |
| 970 // https://crbug.com/444956: Add 200 alternative_service servers followed by | 969 // https://crbug.com/444956: Add 200 alternative_service servers followed by |
| 971 // supports_quic and verify we have read supports_quic from prefs. | 970 // supports_quic and verify we have read supports_quic from prefs. |
| 972 TEST_P(HttpServerPropertiesManagerTest, BadSupportsQuic) { | 971 TEST_P(HttpServerPropertiesManagerTest, BadSupportsQuic) { |
| 973 ExpectCacheUpdate(); | 972 ExpectCacheUpdate(); |
| 974 | 973 |
| (...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1349 // Shutdown comes before the task is executed. | 1348 // Shutdown comes before the task is executed. |
| 1350 http_server_props_manager_->ShutdownOnPrefThread(); | 1349 http_server_props_manager_->ShutdownOnPrefThread(); |
| 1351 // Run the task after shutdown, but before deletion. | 1350 // Run the task after shutdown, but before deletion. |
| 1352 base::RunLoop().RunUntilIdle(); | 1351 base::RunLoop().RunUntilIdle(); |
| 1353 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 1352 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 1354 http_server_props_manager_.reset(); | 1353 http_server_props_manager_.reset(); |
| 1355 base::RunLoop().RunUntilIdle(); | 1354 base::RunLoop().RunUntilIdle(); |
| 1356 } | 1355 } |
| 1357 | 1356 |
| 1358 } // namespace net | 1357 } // namespace net |
| OLD | NEW |