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 |