| 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 |