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/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 | 148 |
149 } // namespace | 149 } // namespace |
150 | 150 |
151 // TODO(rtenneti): After we stop supporting version 3 and everyone has migrated | 151 // TODO(rtenneti): After we stop supporting version 3 and everyone has migrated |
152 // to version 4, delete the following code. | 152 // to version 4, delete the following code. |
153 static const int kHttpServerPropertiesVersions[] = {3, 4, 5}; | 153 static const int kHttpServerPropertiesVersions[] = {3, 4, 5}; |
154 | 154 |
155 class HttpServerPropertiesManagerTest : public testing::TestWithParam<int> { | 155 class HttpServerPropertiesManagerTest : public testing::TestWithParam<int> { |
156 protected: | 156 protected: |
157 HttpServerPropertiesManagerTest() | 157 HttpServerPropertiesManagerTest() |
158 : net_test_task_runner_(new TestMockTimeTaskRunner()) {} | 158 : pref_test_task_runner_(new TestMockTimeTaskRunner()), |
| 159 net_test_task_runner_(new TestMockTimeTaskRunner()) {} |
159 | 160 |
160 void SetUp() override { | 161 void SetUp() override { |
161 one_day_from_now_ = base::Time::Now() + base::TimeDelta::FromDays(1); | 162 one_day_from_now_ = base::Time::Now() + base::TimeDelta::FromDays(1); |
162 pref_delegate_ = new MockPrefDelegate; | 163 pref_delegate_ = new MockPrefDelegate; |
163 http_server_props_manager_.reset( | 164 http_server_props_manager_.reset( |
164 new StrictMock<TestingHttpServerPropertiesManager>( | 165 new StrictMock<TestingHttpServerPropertiesManager>( |
| 166 pref_delegate_, pref_test_task_runner_, net_test_task_runner_)); |
| 167 |
| 168 ExpectCacheUpdate(); |
| 169 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 170 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 171 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 172 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 173 } |
| 174 |
| 175 void SetUpWithNonTaskRunner() { |
| 176 pref_delegate_ = new MockPrefDelegate; |
| 177 http_server_props_manager_.reset( |
| 178 new StrictMock<TestingHttpServerPropertiesManager>( |
165 pref_delegate_, base::ThreadTaskRunnerHandle::Get(), | 179 pref_delegate_, base::ThreadTaskRunnerHandle::Get(), |
166 net_test_task_runner_)); | 180 net_test_task_runner_)); |
167 | 181 |
168 ExpectCacheUpdate(); | 182 ExpectCacheUpdate(); |
169 base::RunLoop().RunUntilIdle(); | 183 base::RunLoop().RunUntilIdle(); |
170 } | 184 } |
171 | 185 |
172 void TearDown() override { | 186 void TearDown() override { |
173 if (http_server_props_manager_.get()) | 187 if (http_server_props_manager_.get()) |
174 http_server_props_manager_->ShutdownOnPrefThread(); | 188 http_server_props_manager_->ShutdownOnPrefThread(); |
175 base::RunLoop().RunUntilIdle(); | 189 base::RunLoop().RunUntilIdle(); |
| 190 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 191 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
176 http_server_props_manager_.reset(); | 192 http_server_props_manager_.reset(); |
177 } | 193 } |
178 | 194 |
179 void ExpectCacheUpdate() { | 195 void ExpectCacheUpdate() { |
180 EXPECT_CALL(*http_server_props_manager_, UpdateCacheFromPrefsOnPrefThread()) | 196 EXPECT_CALL(*http_server_props_manager_, UpdateCacheFromPrefsOnPrefThread()) |
181 .WillOnce(Invoke(http_server_props_manager_.get(), | 197 .WillOnce(Invoke(http_server_props_manager_.get(), |
182 &TestingHttpServerPropertiesManager:: | 198 &TestingHttpServerPropertiesManager:: |
183 UpdateCacheFromPrefsOnUIConcrete)); | 199 UpdateCacheFromPrefsOnUIConcrete)); |
184 } | 200 } |
185 | 201 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 bool HasAlternativeService(const url::SchemeHostPort& server) { | 235 bool HasAlternativeService(const url::SchemeHostPort& server) { |
220 const AlternativeServiceVector alternative_service_vector = | 236 const AlternativeServiceVector alternative_service_vector = |
221 http_server_props_manager_->GetAlternativeServices(server); | 237 http_server_props_manager_->GetAlternativeServices(server); |
222 return !alternative_service_vector.empty(); | 238 return !alternative_service_vector.empty(); |
223 } | 239 } |
224 | 240 |
225 MockPrefDelegate* pref_delegate_; // Owned by HttpServerPropertiesManager. | 241 MockPrefDelegate* pref_delegate_; // Owned by HttpServerPropertiesManager. |
226 std::unique_ptr<TestingHttpServerPropertiesManager> | 242 std::unique_ptr<TestingHttpServerPropertiesManager> |
227 http_server_props_manager_; | 243 http_server_props_manager_; |
228 base::Time one_day_from_now_; | 244 base::Time one_day_from_now_; |
| 245 scoped_refptr<TestMockTimeTaskRunner> pref_test_task_runner_; |
229 scoped_refptr<TestMockTimeTaskRunner> net_test_task_runner_; | 246 scoped_refptr<TestMockTimeTaskRunner> net_test_task_runner_; |
230 | 247 |
231 private: | 248 private: |
232 DISALLOW_COPY_AND_ASSIGN(HttpServerPropertiesManagerTest); | 249 DISALLOW_COPY_AND_ASSIGN(HttpServerPropertiesManagerTest); |
233 }; | 250 }; |
234 | 251 |
235 INSTANTIATE_TEST_CASE_P(Tests, | 252 INSTANTIATE_TEST_CASE_P(Tests, |
236 HttpServerPropertiesManagerTest, | 253 HttpServerPropertiesManagerTest, |
237 ::testing::ValuesIn(kHttpServerPropertiesVersions)); | 254 ::testing::ValuesIn(kHttpServerPropertiesVersions)); |
238 | 255 |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 QuicServerId play_quic_server_id("play.google.com", 443); | 375 QuicServerId play_quic_server_id("play.google.com", 443); |
359 quic_servers_dict->SetWithoutPathExpansion(play_quic_server_id.ToString(), | 376 quic_servers_dict->SetWithoutPathExpansion(play_quic_server_id.ToString(), |
360 quic_server_pref_dict3); | 377 quic_server_pref_dict3); |
361 http_server_properties_dict.SetWithoutPathExpansion("quic_servers", | 378 http_server_properties_dict.SetWithoutPathExpansion("quic_servers", |
362 quic_servers_dict); | 379 quic_servers_dict); |
363 | 380 |
364 // Set the same value for kHttpServerProperties multiple times. | 381 // Set the same value for kHttpServerProperties multiple times. |
365 pref_delegate_->SetPrefs(http_server_properties_dict); | 382 pref_delegate_->SetPrefs(http_server_properties_dict); |
366 pref_delegate_->SetPrefs(http_server_properties_dict); | 383 pref_delegate_->SetPrefs(http_server_properties_dict); |
367 | 384 |
368 base::RunLoop().RunUntilIdle(); | 385 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 386 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 387 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 388 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
369 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 389 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 390 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 391 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
370 | 392 |
371 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 393 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
372 | 394 |
373 // Verify SupportsSpdy. | 395 // Verify SupportsSpdy. |
374 EXPECT_TRUE( | 396 EXPECT_TRUE( |
375 http_server_props_manager_->SupportsRequestPriority(google_server)); | 397 http_server_props_manager_->SupportsRequestPriority(google_server)); |
376 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(mail_server)); | 398 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(mail_server)); |
377 HostPortPair foo_host_port_pair = | 399 HostPortPair foo_host_port_pair = |
378 HostPortPair::FromString("foo.google.com:1337"); | 400 HostPortPair::FromString("foo.google.com:1337"); |
379 url::SchemeHostPort foo_server("http", foo_host_port_pair.host(), | 401 url::SchemeHostPort foo_server("http", foo_host_port_pair.host(), |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
512 "quic_server_info1"); | 534 "quic_server_info1"); |
513 quic_servers_dict->SetWithoutPathExpansion("http://mail.google.com:65536", | 535 quic_servers_dict->SetWithoutPathExpansion("http://mail.google.com:65536", |
514 quic_server_pref_dict1); | 536 quic_server_pref_dict1); |
515 | 537 |
516 http_server_properties_dict.SetWithoutPathExpansion("quic_servers", | 538 http_server_properties_dict.SetWithoutPathExpansion("quic_servers", |
517 quic_servers_dict); | 539 quic_servers_dict); |
518 | 540 |
519 // Set up the pref. | 541 // Set up the pref. |
520 pref_delegate_->SetPrefs(http_server_properties_dict); | 542 pref_delegate_->SetPrefs(http_server_properties_dict); |
521 | 543 |
522 base::RunLoop().RunUntilIdle(); | 544 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 545 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 546 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 547 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 548 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
523 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 549 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
524 | 550 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 551 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 552 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 553 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
525 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 554 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
526 | 555 |
527 // Verify that nothing is set. | 556 // Verify that nothing is set. |
528 HostPortPair google_host_port_pair = | 557 HostPortPair google_host_port_pair = |
529 HostPortPair::FromString("www.google.com:65536"); | 558 HostPortPair::FromString("www.google.com:65536"); |
530 url::SchemeHostPort gooler_server("http", google_host_port_pair.host(), | 559 url::SchemeHostPort gooler_server("http", google_host_port_pair.host(), |
531 google_host_port_pair.port()); | 560 google_host_port_pair.port()); |
532 | 561 |
533 EXPECT_FALSE( | 562 EXPECT_FALSE( |
534 http_server_props_manager_->SupportsRequestPriority(gooler_server)); | 563 http_server_props_manager_->SupportsRequestPriority(gooler_server)); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 } else { | 607 } else { |
579 HttpServerPropertiesManager::SetVersion(&http_server_properties_dict, | 608 HttpServerPropertiesManager::SetVersion(&http_server_properties_dict, |
580 GetParam()); | 609 GetParam()); |
581 http_server_properties_dict.SetWithoutPathExpansion( | 610 http_server_properties_dict.SetWithoutPathExpansion( |
582 "servers", std::move(servers_dict)); | 611 "servers", std::move(servers_dict)); |
583 } | 612 } |
584 | 613 |
585 // Set up the pref. | 614 // Set up the pref. |
586 pref_delegate_->SetPrefs(http_server_properties_dict); | 615 pref_delegate_->SetPrefs(http_server_properties_dict); |
587 | 616 |
588 base::RunLoop().RunUntilIdle(); | 617 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 618 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 619 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 620 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 621 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
589 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 622 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
590 | 623 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 624 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 625 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 626 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
591 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 627 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
592 | 628 |
593 // Verify alternative service is not set. | 629 // Verify alternative service is not set. |
594 EXPECT_FALSE( | 630 EXPECT_FALSE( |
595 HasAlternativeService(url::SchemeHostPort("http", "www.google.com", 80))); | 631 HasAlternativeService(url::SchemeHostPort("http", "www.google.com", 80))); |
596 } | 632 } |
597 | 633 |
598 TEST_P(HttpServerPropertiesManagerTest, SupportsSpdy) { | 634 TEST_P(HttpServerPropertiesManagerTest, SupportsSpdy) { |
599 ExpectPrefsUpdate(); | 635 ExpectPrefsUpdate(); |
600 ExpectScheduleUpdatePrefsOnNetworkThread(); | 636 ExpectScheduleUpdatePrefsOnNetworkThread(); |
601 | 637 |
602 // Post an update task to the network thread. SetSupportsSpdy calls | 638 // Post an update task to the network thread. SetSupportsSpdy calls |
603 // ScheduleUpdatePrefsOnNetworkThread. | 639 // ScheduleUpdatePrefsOnNetworkThread. |
604 | 640 |
605 // Add mail.google.com:443 as a supporting spdy server. | 641 // Add mail.google.com:443 as a supporting spdy server. |
606 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); | 642 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); |
607 EXPECT_FALSE( | 643 EXPECT_FALSE( |
608 http_server_props_manager_->SupportsRequestPriority(spdy_server)); | 644 http_server_props_manager_->SupportsRequestPriority(spdy_server)); |
609 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); | 645 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); |
610 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 646 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. |
611 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); | 647 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); |
612 | 648 |
613 // Run the task. | 649 // Run the task. |
614 base::RunLoop().RunUntilIdle(); | 650 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 651 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
615 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 652 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 653 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 654 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 655 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 656 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
616 | 657 |
617 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server)); | 658 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server)); |
618 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 659 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
619 } | 660 } |
620 | 661 |
621 TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServices) { | 662 TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServices) { |
622 ExpectPrefsUpdate(); | 663 ExpectPrefsUpdate(); |
623 ExpectScheduleUpdatePrefsOnNetworkThread(); | 664 ExpectScheduleUpdatePrefsOnNetworkThread(); |
624 | 665 |
625 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); | 666 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); |
626 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); | 667 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); |
627 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", | 668 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", |
628 443); | 669 443); |
629 http_server_props_manager_->SetAlternativeService( | 670 http_server_props_manager_->SetAlternativeService( |
630 spdy_server_mail, alternative_service, one_day_from_now_); | 671 spdy_server_mail, alternative_service, one_day_from_now_); |
631 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 672 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. |
632 http_server_props_manager_->SetAlternativeService( | 673 http_server_props_manager_->SetAlternativeService( |
633 spdy_server_mail, alternative_service, one_day_from_now_); | 674 spdy_server_mail, alternative_service, one_day_from_now_); |
634 | 675 |
635 // Run the task. | 676 // Run the task. |
636 base::RunLoop().RunUntilIdle(); | 677 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 678 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
637 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 679 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
638 | 680 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 681 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 682 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 683 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 684 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
639 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 685 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
640 | 686 |
641 AlternativeServiceVector alternative_service_vector = | 687 AlternativeServiceVector alternative_service_vector = |
642 http_server_props_manager_->GetAlternativeServices(spdy_server_mail); | 688 http_server_props_manager_->GetAlternativeServices(spdy_server_mail); |
643 ASSERT_EQ(1u, alternative_service_vector.size()); | 689 ASSERT_EQ(1u, alternative_service_vector.size()); |
644 EXPECT_EQ(alternative_service, alternative_service_vector[0]); | 690 EXPECT_EQ(alternative_service, alternative_service_vector[0]); |
645 } | 691 } |
646 | 692 |
647 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServices) { | 693 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServices) { |
648 ExpectPrefsUpdate(); | 694 ExpectPrefsUpdate(); |
(...skipping 10 matching lines...) Expand all Loading... |
659 1234); | 705 1234); |
660 alternative_service_info_vector.push_back( | 706 alternative_service_info_vector.push_back( |
661 AlternativeServiceInfo(alternative_service2, one_day_from_now_)); | 707 AlternativeServiceInfo(alternative_service2, one_day_from_now_)); |
662 http_server_props_manager_->SetAlternativeServices( | 708 http_server_props_manager_->SetAlternativeServices( |
663 spdy_server_mail, alternative_service_info_vector); | 709 spdy_server_mail, alternative_service_info_vector); |
664 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 710 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. |
665 http_server_props_manager_->SetAlternativeServices( | 711 http_server_props_manager_->SetAlternativeServices( |
666 spdy_server_mail, alternative_service_info_vector); | 712 spdy_server_mail, alternative_service_info_vector); |
667 | 713 |
668 // Run the task. | 714 // Run the task. |
669 base::RunLoop().RunUntilIdle(); | 715 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 716 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
670 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 717 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
671 | 718 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 719 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 720 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 721 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 722 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
672 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 723 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
673 | 724 |
674 AlternativeServiceVector alternative_service_vector = | 725 AlternativeServiceVector alternative_service_vector = |
675 http_server_props_manager_->GetAlternativeServices(spdy_server_mail); | 726 http_server_props_manager_->GetAlternativeServices(spdy_server_mail); |
676 ASSERT_EQ(2u, alternative_service_vector.size()); | 727 ASSERT_EQ(2u, alternative_service_vector.size()); |
677 EXPECT_EQ(alternative_service1, alternative_service_vector[0]); | 728 EXPECT_EQ(alternative_service1, alternative_service_vector[0]); |
678 EXPECT_EQ(alternative_service2, alternative_service_vector[1]); | 729 EXPECT_EQ(alternative_service2, alternative_service_vector[1]); |
679 } | 730 } |
680 | 731 |
681 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServicesEmpty) { | 732 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServicesEmpty) { |
682 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); | 733 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); |
683 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); | 734 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); |
684 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", | 735 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", |
685 443); | 736 443); |
686 http_server_props_manager_->SetAlternativeServices( | 737 http_server_props_manager_->SetAlternativeServices( |
687 spdy_server_mail, AlternativeServiceInfoVector()); | 738 spdy_server_mail, AlternativeServiceInfoVector()); |
| 739 |
688 // ExpectScheduleUpdatePrefsOnNetworkThread() should not be called. | 740 // ExpectScheduleUpdatePrefsOnNetworkThread() should not be called. |
689 | 741 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
690 // Run the task. | 742 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
691 base::RunLoop().RunUntilIdle(); | |
692 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 743 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
693 | 744 |
694 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); | 745 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); |
695 } | 746 } |
696 | 747 |
697 TEST_P(HttpServerPropertiesManagerTest, ConfirmAlternativeService) { | 748 TEST_P(HttpServerPropertiesManagerTest, ConfirmAlternativeService) { |
698 ExpectPrefsUpdate(); | 749 ExpectPrefsUpdate(); |
699 | 750 |
700 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); | 751 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); |
701 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); | 752 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); |
(...skipping 22 matching lines...) Expand all Loading... |
724 EXPECT_FALSE(http_server_props_manager_->WasAlternativeServiceRecentlyBroken( | 775 EXPECT_FALSE(http_server_props_manager_->WasAlternativeServiceRecentlyBroken( |
725 alternative_service)); | 776 alternative_service)); |
726 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 777 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. |
727 http_server_props_manager_->ConfirmAlternativeService(alternative_service); | 778 http_server_props_manager_->ConfirmAlternativeService(alternative_service); |
728 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( | 779 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( |
729 alternative_service)); | 780 alternative_service)); |
730 EXPECT_FALSE(http_server_props_manager_->WasAlternativeServiceRecentlyBroken( | 781 EXPECT_FALSE(http_server_props_manager_->WasAlternativeServiceRecentlyBroken( |
731 alternative_service)); | 782 alternative_service)); |
732 | 783 |
733 // Run the task. | 784 // Run the task. |
734 base::RunLoop().RunUntilIdle(); | 785 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 786 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
735 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 787 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 788 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 789 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 790 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 791 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
736 | 792 |
737 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 793 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
738 | 794 |
739 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( | 795 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( |
740 alternative_service)); | 796 alternative_service)); |
741 EXPECT_FALSE(http_server_props_manager_->WasAlternativeServiceRecentlyBroken( | 797 EXPECT_FALSE(http_server_props_manager_->WasAlternativeServiceRecentlyBroken( |
742 alternative_service)); | 798 alternative_service)); |
743 } | 799 } |
744 | 800 |
745 TEST_P(HttpServerPropertiesManagerTest, SupportsQuic) { | 801 TEST_P(HttpServerPropertiesManagerTest, SupportsQuic) { |
746 ExpectPrefsUpdate(); | 802 ExpectPrefsUpdate(); |
747 ExpectScheduleUpdatePrefsOnNetworkThread(); | 803 ExpectScheduleUpdatePrefsOnNetworkThread(); |
748 | 804 |
749 IPAddress address; | 805 IPAddress address; |
750 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address)); | 806 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address)); |
751 | 807 |
752 IPAddress actual_address(127, 0, 0, 1); | 808 IPAddress actual_address(127, 0, 0, 1); |
753 http_server_props_manager_->SetSupportsQuic(true, actual_address); | 809 http_server_props_manager_->SetSupportsQuic(true, actual_address); |
754 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 810 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. |
755 http_server_props_manager_->SetSupportsQuic(true, actual_address); | 811 http_server_props_manager_->SetSupportsQuic(true, actual_address); |
756 | 812 |
757 // Run the task. | 813 // Run the task. |
758 base::RunLoop().RunUntilIdle(); | 814 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 815 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
759 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 816 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 817 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 818 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 819 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 820 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
760 | 821 |
761 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 822 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
762 | 823 |
763 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); | 824 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); |
764 EXPECT_EQ(actual_address, address); | 825 EXPECT_EQ(actual_address, address); |
765 } | 826 } |
766 | 827 |
767 TEST_P(HttpServerPropertiesManagerTest, ServerNetworkStats) { | 828 TEST_P(HttpServerPropertiesManagerTest, ServerNetworkStats) { |
768 ExpectPrefsUpdate(); | 829 ExpectPrefsUpdate(); |
769 ExpectScheduleUpdatePrefsOnNetworkThread(); | 830 ExpectScheduleUpdatePrefsOnNetworkThread(); |
770 | 831 |
771 url::SchemeHostPort mail_server("http", "mail.google.com", 80); | 832 url::SchemeHostPort mail_server("http", "mail.google.com", 80); |
772 const ServerNetworkStats* stats = | 833 const ServerNetworkStats* stats = |
773 http_server_props_manager_->GetServerNetworkStats(mail_server); | 834 http_server_props_manager_->GetServerNetworkStats(mail_server); |
774 EXPECT_EQ(nullptr, stats); | 835 EXPECT_EQ(nullptr, stats); |
775 ServerNetworkStats stats1; | 836 ServerNetworkStats stats1; |
776 stats1.srtt = base::TimeDelta::FromMicroseconds(10); | 837 stats1.srtt = base::TimeDelta::FromMicroseconds(10); |
777 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1); | 838 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1); |
778 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 839 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. |
779 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1); | 840 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1); |
780 | 841 |
781 // Run the task. | 842 // Run the task. |
782 base::RunLoop().RunUntilIdle(); | 843 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 844 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
783 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 845 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 846 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 847 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 848 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 849 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
784 | 850 |
785 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 851 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
786 | 852 |
787 const ServerNetworkStats* stats2 = | 853 const ServerNetworkStats* stats2 = |
788 http_server_props_manager_->GetServerNetworkStats(mail_server); | 854 http_server_props_manager_->GetServerNetworkStats(mail_server); |
789 EXPECT_EQ(10, stats2->srtt.ToInternalValue()); | 855 EXPECT_EQ(10, stats2->srtt.ToInternalValue()); |
790 } | 856 } |
791 | 857 |
792 TEST_P(HttpServerPropertiesManagerTest, QuicServerInfo) { | 858 TEST_P(HttpServerPropertiesManagerTest, QuicServerInfo) { |
793 ExpectPrefsUpdate(); | 859 ExpectPrefsUpdate(); |
794 ExpectScheduleUpdatePrefsOnNetworkThread(); | 860 ExpectScheduleUpdatePrefsOnNetworkThread(); |
795 | 861 |
796 QuicServerId mail_quic_server_id("mail.google.com", 80); | 862 QuicServerId mail_quic_server_id("mail.google.com", 80); |
797 EXPECT_EQ(nullptr, | 863 EXPECT_EQ(nullptr, |
798 http_server_props_manager_->GetQuicServerInfo(mail_quic_server_id)); | 864 http_server_props_manager_->GetQuicServerInfo(mail_quic_server_id)); |
799 std::string quic_server_info1("quic_server_info1"); | 865 std::string quic_server_info1("quic_server_info1"); |
800 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, | 866 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, |
801 quic_server_info1); | 867 quic_server_info1); |
802 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 868 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. |
803 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, | 869 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, |
804 quic_server_info1); | 870 quic_server_info1); |
805 | 871 |
806 // Run the task. | 872 // Run the task. |
807 base::RunLoop().RunUntilIdle(); | 873 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 874 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
808 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 875 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 876 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 877 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 878 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 879 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
809 | 880 |
810 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 881 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
811 | 882 |
812 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo( | 883 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo( |
813 mail_quic_server_id)); | 884 mail_quic_server_id)); |
814 } | 885 } |
815 | 886 |
816 TEST_P(HttpServerPropertiesManagerTest, Clear) { | 887 TEST_P(HttpServerPropertiesManagerTest, Clear) { |
| 888 // This task expect to run the QuitWhenIdleClosure in the current thread, |
| 889 // thus can not mock the pref task runner. |
| 890 SetUpWithNonTaskRunner(); |
| 891 |
817 ExpectPrefsUpdate(); | 892 ExpectPrefsUpdate(); |
818 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); | 893 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); |
819 | 894 |
820 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); | 895 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); |
821 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); | 896 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); |
822 AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", 1234); | 897 AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", 1234); |
823 http_server_props_manager_->SetAlternativeService( | 898 http_server_props_manager_->SetAlternativeService( |
824 spdy_server, alternative_service, one_day_from_now_); | 899 spdy_server, alternative_service, one_day_from_now_); |
825 IPAddress actual_address(127, 0, 0, 1); | 900 IPAddress actual_address(127, 0, 0, 1); |
826 http_server_props_manager_->SetSupportsQuic(true, actual_address); | 901 http_server_props_manager_->SetSupportsQuic(true, actual_address); |
827 ServerNetworkStats stats; | 902 ServerNetworkStats stats; |
828 stats.srtt = base::TimeDelta::FromMicroseconds(10); | 903 stats.srtt = base::TimeDelta::FromMicroseconds(10); |
829 http_server_props_manager_->SetServerNetworkStats(spdy_server, stats); | 904 http_server_props_manager_->SetServerNetworkStats(spdy_server, stats); |
830 | 905 |
831 QuicServerId mail_quic_server_id("mail.google.com", 80); | 906 QuicServerId mail_quic_server_id("mail.google.com", 80); |
832 std::string quic_server_info1("quic_server_info1"); | 907 std::string quic_server_info1("quic_server_info1"); |
833 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, | 908 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, |
834 quic_server_info1); | 909 quic_server_info1); |
835 | 910 |
836 // Run the task. | 911 // Run the task. |
837 base::RunLoop().RunUntilIdle(); | 912 base::RunLoop().RunUntilIdle(); |
| 913 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
838 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 914 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 915 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
839 | 916 |
840 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server)); | 917 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server)); |
841 EXPECT_TRUE(HasAlternativeService(spdy_server)); | 918 EXPECT_TRUE(HasAlternativeService(spdy_server)); |
842 IPAddress address; | 919 IPAddress address; |
843 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); | 920 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); |
844 EXPECT_EQ(actual_address, address); | 921 EXPECT_EQ(actual_address, address); |
845 const ServerNetworkStats* stats1 = | 922 const ServerNetworkStats* stats1 = |
846 http_server_props_manager_->GetServerNetworkStats(spdy_server); | 923 http_server_props_manager_->GetServerNetworkStats(spdy_server); |
847 EXPECT_EQ(10, stats1->srtt.ToInternalValue()); | 924 EXPECT_EQ(10, stats1->srtt.ToInternalValue()); |
848 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo( | 925 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo( |
849 mail_quic_server_id)); | 926 mail_quic_server_id)); |
850 | 927 |
851 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 928 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
852 | 929 |
853 ExpectPrefsUpdate(); | 930 ExpectPrefsUpdate(); |
854 | 931 |
855 // Clear http server data, time out if we do not get a completion callback. | 932 // Clear http server data, time out if we do not get a completion callback. |
856 http_server_props_manager_->Clear(base::MessageLoop::QuitWhenIdleClosure()); | 933 http_server_props_manager_->Clear(base::MessageLoop::QuitWhenIdleClosure()); |
| 934 |
857 base::RunLoop().Run(); | 935 base::RunLoop().Run(); |
| 936 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
858 | 937 |
859 EXPECT_FALSE( | 938 EXPECT_FALSE( |
860 http_server_props_manager_->SupportsRequestPriority(spdy_server)); | 939 http_server_props_manager_->SupportsRequestPriority(spdy_server)); |
861 EXPECT_FALSE(HasAlternativeService(spdy_server)); | 940 EXPECT_FALSE(HasAlternativeService(spdy_server)); |
862 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address)); | 941 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address)); |
863 const ServerNetworkStats* stats2 = | 942 const ServerNetworkStats* stats2 = |
864 http_server_props_manager_->GetServerNetworkStats(spdy_server); | 943 http_server_props_manager_->GetServerNetworkStats(spdy_server); |
865 EXPECT_EQ(nullptr, stats2); | 944 EXPECT_EQ(nullptr, stats2); |
866 EXPECT_EQ(nullptr, | 945 EXPECT_EQ(nullptr, |
867 http_server_props_manager_->GetQuicServerInfo(mail_quic_server_id)); | 946 http_server_props_manager_->GetQuicServerInfo(mail_quic_server_id)); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
933 // Set up SupportsQuic for 127.0.0.1 | 1012 // Set up SupportsQuic for 127.0.0.1 |
934 base::DictionaryValue* supports_quic = new base::DictionaryValue; | 1013 base::DictionaryValue* supports_quic = new base::DictionaryValue; |
935 supports_quic->SetBoolean("used_quic", true); | 1014 supports_quic->SetBoolean("used_quic", true); |
936 supports_quic->SetString("address", "127.0.0.1"); | 1015 supports_quic->SetString("address", "127.0.0.1"); |
937 http_server_properties_dict.SetWithoutPathExpansion("supports_quic", | 1016 http_server_properties_dict.SetWithoutPathExpansion("supports_quic", |
938 supports_quic); | 1017 supports_quic); |
939 | 1018 |
940 // Set up the pref. | 1019 // Set up the pref. |
941 pref_delegate_->SetPrefs(http_server_properties_dict); | 1020 pref_delegate_->SetPrefs(http_server_properties_dict); |
942 | 1021 |
943 base::RunLoop().RunUntilIdle(); | 1022 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1023 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 1024 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1025 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
944 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 1026 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1027 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1028 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
945 | 1029 |
946 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 1030 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
947 | 1031 |
948 // Verify alternative service. | 1032 // Verify alternative service. |
949 for (int i = 1; i <= 200; ++i) { | 1033 for (int i = 1; i <= 200; ++i) { |
950 GURL server_gurl; | 1034 GURL server_gurl; |
951 if (GetParam() >= 5) { | 1035 if (GetParam() >= 5) { |
952 server_gurl = GURL(StringPrintf("https://www.google.com:%d", i)); | 1036 server_gurl = GURL(StringPrintf("https://www.google.com:%d", i)); |
953 } else { | 1037 } else { |
954 server_gurl = GURL(StringPrintf("https://www.google.com:%d", i)); | 1038 server_gurl = GURL(StringPrintf("https://www.google.com:%d", i)); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1008 | 1092 |
1009 // Set SupportsQuic. | 1093 // Set SupportsQuic. |
1010 IPAddress actual_address(127, 0, 0, 1); | 1094 IPAddress actual_address(127, 0, 0, 1); |
1011 http_server_props_manager_->SetSupportsQuic(true, actual_address); | 1095 http_server_props_manager_->SetSupportsQuic(true, actual_address); |
1012 | 1096 |
1013 // Update cache. | 1097 // Update cache. |
1014 ExpectPrefsUpdate(); | 1098 ExpectPrefsUpdate(); |
1015 ExpectCacheUpdate(); | 1099 ExpectCacheUpdate(); |
1016 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); | 1100 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); |
1017 | 1101 |
| 1102 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 1103 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
1018 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 1104 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
1019 base::RunLoop().RunUntilIdle(); | 1105 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1106 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1107 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
1020 | 1108 |
1021 // Verify preferences. | 1109 // Verify preferences. |
1022 const char expected_json[] = | 1110 const char expected_json[] = |
1023 "{\"quic_servers\":{\"https://" | 1111 "{\"quic_servers\":{\"https://" |
1024 "mail.google.com:80\":{\"server_info\":\"quic_server_info1\"}}," | 1112 "mail.google.com:80\":{\"server_info\":\"quic_server_info1\"}}," |
1025 "\"servers\":[" | 1113 "\"servers\":[" |
1026 "{\"http://www.google.com\":{" | 1114 "{\"http://www.google.com\":{" |
1027 "\"alternative_service\":[{\"expiration\":\"13756212000000000\"," | 1115 "\"alternative_service\":[{\"expiration\":\"13756212000000000\"," |
1028 "\"port\":443,\"protocol_str\":\"h2\"}," | 1116 "\"port\":443,\"protocol_str\":\"h2\"}," |
1029 "{\"expiration\":\"13758804000000000\",\"host\":\"www.google.com\"," | 1117 "{\"expiration\":\"13758804000000000\",\"host\":\"www.google.com\"," |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1141 | 1229 |
1142 const url::SchemeHostPort server("https", "www.example.com", 443); | 1230 const url::SchemeHostPort server("https", "www.example.com", 443); |
1143 http_server_props_manager_->SetAlternativeServices( | 1231 http_server_props_manager_->SetAlternativeServices( |
1144 server, alternative_service_info_vector); | 1232 server, alternative_service_info_vector); |
1145 | 1233 |
1146 // Update cache. | 1234 // Update cache. |
1147 ExpectPrefsUpdate(); | 1235 ExpectPrefsUpdate(); |
1148 ExpectCacheUpdate(); | 1236 ExpectCacheUpdate(); |
1149 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); | 1237 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); |
1150 | 1238 |
| 1239 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 1240 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
1151 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 1241 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
1152 base::RunLoop().RunUntilIdle(); | 1242 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1243 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1244 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
1153 | 1245 |
1154 const base::DictionaryValue& pref_dict = | 1246 const base::DictionaryValue& pref_dict = |
1155 pref_delegate_->GetServerProperties(); | 1247 pref_delegate_->GetServerProperties(); |
1156 | 1248 |
1157 const base::ListValue* servers_list = nullptr; | 1249 const base::ListValue* servers_list = nullptr; |
1158 ASSERT_TRUE(pref_dict.GetListWithoutPathExpansion("servers", &servers_list)); | 1250 ASSERT_TRUE(pref_dict.GetListWithoutPathExpansion("servers", &servers_list)); |
1159 base::ListValue::const_iterator it = servers_list->begin(); | 1251 base::ListValue::const_iterator it = servers_list->begin(); |
1160 const base::DictionaryValue* server_pref_dict; | 1252 const base::DictionaryValue* server_pref_dict; |
1161 ASSERT_TRUE((*it)->GetAsDictionary(&server_pref_dict)); | 1253 ASSERT_TRUE((*it)->GetAsDictionary(&server_pref_dict)); |
1162 | 1254 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1223 EXPECT_EQ(one_day_from_now_, alternative_service_info_vector[0].expiration); | 1315 EXPECT_EQ(one_day_from_now_, alternative_service_info_vector[0].expiration); |
1224 } | 1316 } |
1225 | 1317 |
1226 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache0) { | 1318 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache0) { |
1227 // Post an update task to the UI thread. | 1319 // Post an update task to the UI thread. |
1228 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); | 1320 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); |
1229 // Shutdown comes before the task is executed. | 1321 // Shutdown comes before the task is executed. |
1230 http_server_props_manager_->ShutdownOnPrefThread(); | 1322 http_server_props_manager_->ShutdownOnPrefThread(); |
1231 http_server_props_manager_.reset(); | 1323 http_server_props_manager_.reset(); |
1232 // Run the task after shutdown and deletion. | 1324 // Run the task after shutdown and deletion. |
1233 base::RunLoop().RunUntilIdle(); | 1325 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1326 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 1327 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1328 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1329 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
1234 } | 1330 } |
1235 | 1331 |
1236 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache1) { | 1332 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache1) { |
1237 // Post an update task. | 1333 // Post an update task. |
1238 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); | 1334 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); |
1239 // Shutdown comes before the task is executed. | 1335 // Shutdown comes before the task is executed. |
1240 http_server_props_manager_->ShutdownOnPrefThread(); | 1336 http_server_props_manager_->ShutdownOnPrefThread(); |
1241 // Run the task after shutdown, but before deletion. | 1337 // Run the task after shutdown, but before deletion. |
1242 base::RunLoop().RunUntilIdle(); | 1338 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1339 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 1340 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1341 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1342 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1343 |
1243 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 1344 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
1244 http_server_props_manager_.reset(); | 1345 http_server_props_manager_.reset(); |
1245 base::RunLoop().RunUntilIdle(); | 1346 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1347 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
1246 } | 1348 } |
1247 | 1349 |
1248 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache2) { | 1350 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache2) { |
1249 http_server_props_manager_->UpdateCacheFromPrefsOnUIConcrete(); | 1351 http_server_props_manager_->UpdateCacheFromPrefsOnUIConcrete(); |
1250 // Shutdown comes before the task is executed. | 1352 // Shutdown comes before the task is executed. |
1251 http_server_props_manager_->ShutdownOnPrefThread(); | 1353 http_server_props_manager_->ShutdownOnPrefThread(); |
1252 // Run the task after shutdown, but before deletion. | 1354 // There should be no tasks to run. |
1253 base::RunLoop().RunUntilIdle(); | 1355 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1356 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
1254 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 1357 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
1255 http_server_props_manager_.reset(); | 1358 http_server_props_manager_.reset(); |
1256 base::RunLoop().RunUntilIdle(); | 1359 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1360 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
1257 } | 1361 } |
1258 | 1362 |
1259 // | 1363 // |
1260 // Tests for shutdown when updating prefs. | 1364 // Tests for shutdown when updating prefs. |
1261 // | 1365 // |
1262 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs0) { | 1366 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs0) { |
1263 // Post an update task to the IO thread. | 1367 // Post an update task to the IO thread. |
1264 http_server_props_manager_->ScheduleUpdatePrefsOnNetworkThread(); | 1368 http_server_props_manager_->ScheduleUpdatePrefsOnNetworkThread(); |
1265 // Shutdown comes before the task is executed. | 1369 // Shutdown comes before the task is executed. |
1266 http_server_props_manager_->ShutdownOnPrefThread(); | 1370 http_server_props_manager_->ShutdownOnPrefThread(); |
1267 http_server_props_manager_.reset(); | 1371 http_server_props_manager_.reset(); |
1268 // Run the task after shutdown and deletion. | 1372 // Run the task after shutdown and deletion. |
1269 base::RunLoop().RunUntilIdle(); | 1373 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 1374 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1375 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1376 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1377 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
1270 } | 1378 } |
1271 | 1379 |
1272 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs1) { | 1380 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs1) { |
1273 ExpectPrefsUpdate(); | 1381 ExpectPrefsUpdate(); |
1274 // Post an update task. | 1382 // Post an update task. |
1275 http_server_props_manager_->ScheduleUpdatePrefsOnNetworkThread(); | 1383 http_server_props_manager_->ScheduleUpdatePrefsOnNetworkThread(); |
1276 // Shutdown comes before the task is executed. | 1384 // Shutdown comes before the task is executed. |
1277 http_server_props_manager_->ShutdownOnPrefThread(); | 1385 http_server_props_manager_->ShutdownOnPrefThread(); |
1278 // Run the task after shutdown, but before deletion. | 1386 // Run the task after shutdown, but before deletion. |
| 1387 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 1388 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
1279 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 1389 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
1280 base::RunLoop().RunUntilIdle(); | 1390 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 1391 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1392 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1393 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
1281 | 1394 |
1282 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 1395 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
1283 http_server_props_manager_.reset(); | 1396 http_server_props_manager_.reset(); |
1284 base::RunLoop().RunUntilIdle(); | 1397 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1398 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
1285 } | 1399 } |
1286 | 1400 |
1287 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs2) { | 1401 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs2) { |
1288 // This posts a task to the UI thread. | 1402 // This posts a task to the UI thread. |
1289 http_server_props_manager_->UpdatePrefsFromCacheOnNetworkThreadConcrete( | 1403 http_server_props_manager_->UpdatePrefsFromCacheOnNetworkThreadConcrete( |
1290 base::Closure()); | 1404 base::Closure()); |
1291 // Shutdown comes before the task is executed. | 1405 // Shutdown comes before the task is executed. |
1292 http_server_props_manager_->ShutdownOnPrefThread(); | 1406 http_server_props_manager_->ShutdownOnPrefThread(); |
1293 // Run the task after shutdown, but before deletion. | 1407 // Run the task after shutdown, but before deletion. |
1294 base::RunLoop().RunUntilIdle(); | 1408 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1409 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 1410 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1411 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1412 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
1295 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 1413 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
1296 http_server_props_manager_.reset(); | 1414 http_server_props_manager_.reset(); |
1297 base::RunLoop().RunUntilIdle(); | 1415 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1416 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
1298 } | 1417 } |
1299 | 1418 |
1300 } // namespace net | 1419 } // namespace net |
OLD | NEW |