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