| 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 <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 EXPECT_CALL(*http_server_props_manager_, | 218 EXPECT_CALL(*http_server_props_manager_, |
| 219 UpdatePrefsFromCacheOnNetworkThread(_)) | 219 UpdatePrefsFromCacheOnNetworkThread(_)) |
| 220 .Times(times) | 220 .Times(times) |
| 221 .WillRepeatedly( | 221 .WillRepeatedly( |
| 222 Invoke(http_server_props_manager_.get(), | 222 Invoke(http_server_props_manager_.get(), |
| 223 &TestingHttpServerPropertiesManager:: | 223 &TestingHttpServerPropertiesManager:: |
| 224 UpdatePrefsFromCacheOnNetworkThreadConcrete)); | 224 UpdatePrefsFromCacheOnNetworkThreadConcrete)); |
| 225 } | 225 } |
| 226 | 226 |
| 227 bool HasAlternativeService(const url::SchemeHostPort& server) { | 227 bool HasAlternativeService(const url::SchemeHostPort& server) { |
| 228 const AlternativeServiceVector alternative_service_vector = | 228 const AlternativeServiceInfoVector alternative_service_info_vector = |
| 229 http_server_props_manager_->GetAlternativeServices(server); | 229 http_server_props_manager_->GetAlternativeServiceInfos(server); |
| 230 return !alternative_service_vector.empty(); | 230 return !alternative_service_info_vector.empty(); |
| 231 } | 231 } |
| 232 | 232 |
| 233 MockPrefDelegate* pref_delegate_; // Owned by HttpServerPropertiesManager. | 233 MockPrefDelegate* pref_delegate_; // Owned by HttpServerPropertiesManager. |
| 234 std::unique_ptr<TestingHttpServerPropertiesManager> | 234 std::unique_ptr<TestingHttpServerPropertiesManager> |
| 235 http_server_props_manager_; | 235 http_server_props_manager_; |
| 236 base::Time one_day_from_now_; | 236 base::Time one_day_from_now_; |
| 237 | 237 |
| 238 // Overrides the main thread's message loop with a mock tick clock. Making the | 238 // Overrides the main thread's message loop with a mock tick clock. Making the |
| 239 // main thread the |pref_test_task_runner_| matches expectations better than | 239 // main thread the |pref_test_task_runner_| matches expectations better than |
| 240 // having an independent TestMockTimeTaskRunner and makes tests easier to | 240 // having an independent TestMockTimeTaskRunner and makes tests easier to |
| (...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 712 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 713 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 713 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 714 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 714 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 715 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 715 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 716 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 716 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 717 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 717 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 718 | 718 |
| 719 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 719 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 720 } | 720 } |
| 721 | 721 |
| 722 TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServices) { | 722 TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServiceInfos) { |
| 723 ExpectPrefsUpdate(1); | 723 ExpectPrefsUpdate(1); |
| 724 ExpectScheduleUpdatePrefsOnNetworkThread(); | 724 ExpectScheduleUpdatePrefsOnNetworkThread(); |
| 725 | 725 |
| 726 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); | 726 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); |
| 727 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); | 727 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); |
| 728 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", | 728 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", |
| 729 443); | 729 443); |
| 730 http_server_props_manager_->SetAlternativeService( | 730 http_server_props_manager_->SetAlternativeService( |
| 731 spdy_server_mail, alternative_service, one_day_from_now_); | 731 spdy_server_mail, alternative_service, one_day_from_now_); |
| 732 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 732 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. |
| 733 http_server_props_manager_->SetAlternativeService( | 733 http_server_props_manager_->SetAlternativeService( |
| 734 spdy_server_mail, alternative_service, one_day_from_now_); | 734 spdy_server_mail, alternative_service, one_day_from_now_); |
| 735 | 735 |
| 736 // Run the task. | 736 // Run the task. |
| 737 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 737 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 738 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); | 738 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 739 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 739 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 740 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 740 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 741 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 741 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 742 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 742 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 743 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 743 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 744 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 744 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 745 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 745 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 746 | 746 |
| 747 AlternativeServiceVector alternative_service_vector = | 747 AlternativeServiceInfoVector alternative_service_info_vector = |
| 748 http_server_props_manager_->GetAlternativeServices(spdy_server_mail); | 748 http_server_props_manager_->GetAlternativeServiceInfos(spdy_server_mail); |
| 749 ASSERT_EQ(1u, alternative_service_vector.size()); | 749 ASSERT_EQ(1u, alternative_service_info_vector.size()); |
| 750 EXPECT_EQ(alternative_service, alternative_service_vector[0]); | 750 EXPECT_EQ(alternative_service, |
| 751 alternative_service_info_vector[0].alternative_service); |
| 751 } | 752 } |
| 752 | 753 |
| 753 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServices) { | 754 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServices) { |
| 754 ExpectPrefsUpdate(1); | 755 ExpectPrefsUpdate(1); |
| 755 ExpectScheduleUpdatePrefsOnNetworkThread(); | 756 ExpectScheduleUpdatePrefsOnNetworkThread(); |
| 756 | 757 |
| 757 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); | 758 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); |
| 758 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); | 759 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); |
| 759 AlternativeServiceInfoVector alternative_service_info_vector; | 760 AlternativeServiceInfoVector alternative_service_info_vector; |
| 760 const AlternativeService alternative_service1(kProtoHTTP2, "mail.google.com", | 761 const AlternativeService alternative_service1(kProtoHTTP2, "mail.google.com", |
| (...skipping 14 matching lines...) Expand all Loading... |
| 775 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 776 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 776 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); | 777 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 777 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 778 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 778 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 779 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 779 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 780 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 780 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 781 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 781 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 782 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 782 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 783 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 783 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 784 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 784 | 785 |
| 785 AlternativeServiceVector alternative_service_vector = | 786 AlternativeServiceInfoVector alternative_service_info_vector2 = |
| 786 http_server_props_manager_->GetAlternativeServices(spdy_server_mail); | 787 http_server_props_manager_->GetAlternativeServiceInfos(spdy_server_mail); |
| 787 ASSERT_EQ(2u, alternative_service_vector.size()); | 788 ASSERT_EQ(2u, alternative_service_info_vector2.size()); |
| 788 EXPECT_EQ(alternative_service1, alternative_service_vector[0]); | 789 EXPECT_EQ(alternative_service1, |
| 789 EXPECT_EQ(alternative_service2, alternative_service_vector[1]); | 790 alternative_service_info_vector2[0].alternative_service); |
| 791 EXPECT_EQ(alternative_service2, |
| 792 alternative_service_info_vector2[1].alternative_service); |
| 790 } | 793 } |
| 791 | 794 |
| 792 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServicesEmpty) { | 795 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServicesEmpty) { |
| 793 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); | 796 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); |
| 794 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); | 797 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); |
| 795 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", | 798 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", |
| 796 443); | 799 443); |
| 797 http_server_props_manager_->SetAlternativeServices( | 800 http_server_props_manager_->SetAlternativeServices( |
| 798 spdy_server_mail, AlternativeServiceInfoVector()); | 801 spdy_server_mail, AlternativeServiceInfoVector()); |
| 799 | 802 |
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1131 | 1134 |
| 1132 // Verify alternative service. | 1135 // Verify alternative service. |
| 1133 for (int i = 1; i <= 200; ++i) { | 1136 for (int i = 1; i <= 200; ++i) { |
| 1134 GURL server_gurl; | 1137 GURL server_gurl; |
| 1135 if (GetParam() >= 5) { | 1138 if (GetParam() >= 5) { |
| 1136 server_gurl = GURL(StringPrintf("https://www.google.com:%d", i)); | 1139 server_gurl = GURL(StringPrintf("https://www.google.com:%d", i)); |
| 1137 } else { | 1140 } else { |
| 1138 server_gurl = GURL(StringPrintf("https://www.google.com:%d", i)); | 1141 server_gurl = GURL(StringPrintf("https://www.google.com:%d", i)); |
| 1139 } | 1142 } |
| 1140 url::SchemeHostPort server(server_gurl); | 1143 url::SchemeHostPort server(server_gurl); |
| 1141 AlternativeServiceVector alternative_service_vector = | 1144 AlternativeServiceInfoVector alternative_service_info_vector = |
| 1142 http_server_props_manager_->GetAlternativeServices(server); | 1145 http_server_props_manager_->GetAlternativeServiceInfos(server); |
| 1143 ASSERT_EQ(1u, alternative_service_vector.size()); | 1146 ASSERT_EQ(1u, alternative_service_info_vector.size()); |
| 1144 EXPECT_EQ(kProtoQUIC, alternative_service_vector[0].protocol); | 1147 EXPECT_EQ(kProtoQUIC, |
| 1145 EXPECT_EQ(i, alternative_service_vector[0].port); | 1148 alternative_service_info_vector[0].alternative_service.protocol); |
| 1149 EXPECT_EQ(i, alternative_service_info_vector[0].alternative_service.port); |
| 1146 } | 1150 } |
| 1147 | 1151 |
| 1148 // Verify SupportsQuic. | 1152 // Verify SupportsQuic. |
| 1149 IPAddress address; | 1153 IPAddress address; |
| 1150 ASSERT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); | 1154 ASSERT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); |
| 1151 EXPECT_EQ("127.0.0.1", address.ToString()); | 1155 EXPECT_EQ("127.0.0.1", address.ToString()); |
| 1152 } | 1156 } |
| 1153 | 1157 |
| 1154 TEST_P(HttpServerPropertiesManagerTest, UpdatePrefsWithCache) { | 1158 TEST_P(HttpServerPropertiesManagerTest, UpdatePrefsWithCache) { |
| 1155 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(5); | 1159 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(5); |
| (...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1558 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 1562 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1559 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1563 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1560 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1564 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1561 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 1565 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 1562 http_server_props_manager_.reset(); | 1566 http_server_props_manager_.reset(); |
| 1563 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1567 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1564 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1568 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1565 } | 1569 } |
| 1566 | 1570 |
| 1567 } // namespace net | 1571 } // namespace net |
| OLD | NEW |