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