| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/http/http_server_properties_manager.h" | 5 #include "net/http/http_server_properties_manager.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 HttpServerPropertiesManager::PrefDelegate* pref_delegate, | 84 HttpServerPropertiesManager::PrefDelegate* pref_delegate, |
| 85 scoped_refptr<TestMockTimeTaskRunner> pref_task_runner, | 85 scoped_refptr<TestMockTimeTaskRunner> pref_task_runner, |
| 86 scoped_refptr<TestMockTimeTaskRunner> net_task_runner) | 86 scoped_refptr<TestMockTimeTaskRunner> net_task_runner) |
| 87 : HttpServerPropertiesManager(pref_delegate, | 87 : HttpServerPropertiesManager(pref_delegate, |
| 88 pref_task_runner, | 88 pref_task_runner, |
| 89 net_task_runner), | 89 net_task_runner), |
| 90 pref_task_runner_(std::move(pref_task_runner)), | 90 pref_task_runner_(std::move(pref_task_runner)), |
| 91 net_task_runner_(std::move(net_task_runner)) { | 91 net_task_runner_(std::move(net_task_runner)) { |
| 92 // This call must run in the context of |net_task_runner_|. | 92 // This call must run in the context of |net_task_runner_|. |
| 93 TestMockTimeTaskRunner::ScopedContext scoped_context(net_task_runner_); | 93 TestMockTimeTaskRunner::ScopedContext scoped_context(net_task_runner_); |
| 94 HttpServerPropertiesManager::InitializeOnNetworkThread(); | 94 HttpServerPropertiesManager::InitializeOnNetworkSequence(); |
| 95 } | 95 } |
| 96 | 96 |
| 97 ~TestingHttpServerPropertiesManager() override {} | 97 ~TestingHttpServerPropertiesManager() override {} |
| 98 | 98 |
| 99 // Make these methods public for testing. | 99 // Make these methods public for testing. |
| 100 using HttpServerPropertiesManager::ScheduleUpdateCacheOnPrefThread; | 100 using HttpServerPropertiesManager::ScheduleUpdateCacheOnPrefThread; |
| 101 | 101 |
| 102 void UpdateCacheFromPrefsOnUIConcrete() { | 102 void UpdateCacheFromPrefsOnUIConcrete() { |
| 103 TestMockTimeTaskRunner::ScopedContext scoped_context(pref_task_runner_); | 103 TestMockTimeTaskRunner::ScopedContext scoped_context(pref_task_runner_); |
| 104 HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread(); | 104 HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefSequence(); |
| 105 } | 105 } |
| 106 | 106 |
| 107 void UpdatePrefsFromCacheOnNetworkThreadConcrete( | 107 void UpdatePrefsFromCacheOnNetworkSequenceConcrete( |
| 108 const base::Closure& callback) { | 108 const base::Closure& callback) { |
| 109 TestMockTimeTaskRunner::ScopedContext scoped_context(net_task_runner_); | 109 TestMockTimeTaskRunner::ScopedContext scoped_context(net_task_runner_); |
| 110 HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread(callback); | 110 HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkSequence( |
| 111 callback); |
| 111 } | 112 } |
| 112 | 113 |
| 113 void ScheduleUpdatePrefsOnNetworkThreadConcrete(Location location) { | 114 void ScheduleUpdatePrefsOnNetworkSequenceConcrete(Location location) { |
| 114 TestMockTimeTaskRunner::ScopedContext scoped_context(net_task_runner_); | 115 TestMockTimeTaskRunner::ScopedContext scoped_context(net_task_runner_); |
| 115 HttpServerPropertiesManager::ScheduleUpdatePrefsOnNetworkThread(location); | 116 HttpServerPropertiesManager::ScheduleUpdatePrefsOnNetworkSequence(location); |
| 116 } | 117 } |
| 117 | 118 |
| 118 void ScheduleUpdatePrefsOnNetworkThreadDefault() { | 119 void ScheduleUpdatePrefsOnNetworkSequenceDefault() { |
| 119 TestMockTimeTaskRunner::ScopedContext scoped_context(net_task_runner_); | 120 TestMockTimeTaskRunner::ScopedContext scoped_context(net_task_runner_); |
| 120 // Picked a random Location as caller. | 121 // Picked a random Location as caller. |
| 121 HttpServerPropertiesManager::ScheduleUpdatePrefsOnNetworkThread( | 122 HttpServerPropertiesManager::ScheduleUpdatePrefsOnNetworkSequence( |
| 122 DETECTED_CORRUPTED_PREFS); | 123 DETECTED_CORRUPTED_PREFS); |
| 123 } | 124 } |
| 124 | 125 |
| 125 MOCK_METHOD0(UpdateCacheFromPrefsOnPrefThread, void()); | 126 MOCK_METHOD0(UpdateCacheFromPrefsOnPrefSequence, void()); |
| 126 MOCK_METHOD1(UpdatePrefsFromCacheOnNetworkThread, void(const base::Closure&)); | 127 MOCK_METHOD1(UpdatePrefsFromCacheOnNetworkSequence, |
| 127 MOCK_METHOD1(ScheduleUpdatePrefsOnNetworkThread, void(Location location)); | 128 void(const base::Closure&)); |
| 128 MOCK_METHOD6(UpdateCacheFromPrefsOnNetworkThread, | 129 MOCK_METHOD1(ScheduleUpdatePrefsOnNetworkSequence, void(Location location)); |
| 130 MOCK_METHOD6(UpdateCacheFromPrefsOnNetworkSequence, |
| 129 void(std::vector<std::string>* spdy_servers, | 131 void(std::vector<std::string>* spdy_servers, |
| 130 AlternativeServiceMap* alternative_service_map, | 132 AlternativeServiceMap* alternative_service_map, |
| 131 IPAddress* last_quic_address, | 133 IPAddress* last_quic_address, |
| 132 ServerNetworkStatsMap* server_network_stats_map, | 134 ServerNetworkStatsMap* server_network_stats_map, |
| 133 QuicServerInfoMap* quic_server_info_map, | 135 QuicServerInfoMap* quic_server_info_map, |
| 134 bool detected_corrupted_prefs)); | 136 bool detected_corrupted_prefs)); |
| 135 MOCK_METHOD6(UpdatePrefsOnPrefThread, | 137 MOCK_METHOD6(UpdatePrefsOnPrefThread, |
| 136 void(base::ListValue* spdy_server_list, | 138 void(base::ListValue* spdy_server_list, |
| 137 AlternativeServiceMap* alternative_service_map, | 139 AlternativeServiceMap* alternative_service_map, |
| 138 IPAddress* last_quic_address, | 140 IPAddress* last_quic_address, |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 174 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 173 pref_test_task_runner_->RunUntilIdle(); | 175 pref_test_task_runner_->RunUntilIdle(); |
| 174 net_test_task_runner_->RunUntilIdle(); | 176 net_test_task_runner_->RunUntilIdle(); |
| 175 EXPECT_TRUE(http_server_props_manager_->IsInitialized()); | 177 EXPECT_TRUE(http_server_props_manager_->IsInitialized()); |
| 176 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 178 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 177 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 179 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 178 } | 180 } |
| 179 | 181 |
| 180 void TearDown() override { | 182 void TearDown() override { |
| 181 if (http_server_props_manager_.get()) | 183 if (http_server_props_manager_.get()) |
| 182 http_server_props_manager_->ShutdownOnPrefThread(); | 184 http_server_props_manager_->ShutdownOnPrefSequence(); |
| 183 // Run pending non-delayed tasks but don't FastForwardUntilNoTasksRemain() | 185 // Run pending non-delayed tasks but don't FastForwardUntilNoTasksRemain() |
| 184 // as some delayed tasks may forever repost (e.g. because impl doesn't use a | 186 // as some delayed tasks may forever repost (e.g. because impl doesn't use a |
| 185 // mock clock and doesn't see timings as having expired, ref. | 187 // mock clock and doesn't see timings as having expired, ref. |
| 186 // HttpServerPropertiesImpl:: | 188 // HttpServerPropertiesImpl:: |
| 187 // ScheduleBrokenAlternateProtocolMappingsExpiration()). | 189 // ScheduleBrokenAlternateProtocolMappingsExpiration()). |
| 188 pref_test_task_runner_->RunUntilIdle(); | 190 pref_test_task_runner_->RunUntilIdle(); |
| 189 net_test_task_runner_->RunUntilIdle(); | 191 net_test_task_runner_->RunUntilIdle(); |
| 190 http_server_props_manager_.reset(); | 192 http_server_props_manager_.reset(); |
| 191 } | 193 } |
| 192 | 194 |
| 193 void ExpectCacheUpdate() { | 195 void ExpectCacheUpdate() { |
| 194 EXPECT_CALL(*http_server_props_manager_, UpdateCacheFromPrefsOnPrefThread()) | 196 EXPECT_CALL(*http_server_props_manager_, |
| 197 UpdateCacheFromPrefsOnPrefSequence()) |
| 195 .WillOnce(Invoke(http_server_props_manager_.get(), | 198 .WillOnce(Invoke(http_server_props_manager_.get(), |
| 196 &TestingHttpServerPropertiesManager:: | 199 &TestingHttpServerPropertiesManager:: |
| 197 UpdateCacheFromPrefsOnUIConcrete)); | 200 UpdateCacheFromPrefsOnUIConcrete)); |
| 198 } | 201 } |
| 199 | 202 |
| 200 void ExpectScheduleUpdatePrefsOnNetworkThread() { | 203 void ExpectScheduleUpdatePrefsOnNetworkSequence() { |
| 201 EXPECT_CALL(*http_server_props_manager_, | 204 EXPECT_CALL(*http_server_props_manager_, |
| 202 ScheduleUpdatePrefsOnNetworkThread(_)) | 205 ScheduleUpdatePrefsOnNetworkSequence(_)) |
| 203 .WillOnce(Invoke(http_server_props_manager_.get(), | 206 .WillOnce(Invoke(http_server_props_manager_.get(), |
| 204 &TestingHttpServerPropertiesManager:: | 207 &TestingHttpServerPropertiesManager:: |
| 205 ScheduleUpdatePrefsOnNetworkThreadConcrete)); | 208 ScheduleUpdatePrefsOnNetworkSequenceConcrete)); |
| 206 } | 209 } |
| 207 | 210 |
| 208 void ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(int times) { | 211 void ExpectScheduleUpdatePrefsOnNetworkSequenceRepeatedly(int times) { |
| 209 EXPECT_CALL(*http_server_props_manager_, | 212 EXPECT_CALL(*http_server_props_manager_, |
| 210 ScheduleUpdatePrefsOnNetworkThread(_)) | 213 ScheduleUpdatePrefsOnNetworkSequence(_)) |
| 211 .Times(AtLeast(times)) | 214 .Times(AtLeast(times)) |
| 212 .WillRepeatedly(Invoke(http_server_props_manager_.get(), | 215 .WillRepeatedly( |
| 213 &TestingHttpServerPropertiesManager:: | 216 Invoke(http_server_props_manager_.get(), |
| 214 ScheduleUpdatePrefsOnNetworkThreadConcrete)); | 217 &TestingHttpServerPropertiesManager:: |
| 218 ScheduleUpdatePrefsOnNetworkSequenceConcrete)); |
| 215 } | 219 } |
| 216 | 220 |
| 217 void ExpectPrefsUpdate(int times) { | 221 void ExpectPrefsUpdate(int times) { |
| 218 EXPECT_CALL(*http_server_props_manager_, | 222 EXPECT_CALL(*http_server_props_manager_, |
| 219 UpdatePrefsFromCacheOnNetworkThread(_)) | 223 UpdatePrefsFromCacheOnNetworkSequence(_)) |
| 220 .Times(times) | 224 .Times(times) |
| 221 .WillRepeatedly( | 225 .WillRepeatedly( |
| 222 Invoke(http_server_props_manager_.get(), | 226 Invoke(http_server_props_manager_.get(), |
| 223 &TestingHttpServerPropertiesManager:: | 227 &TestingHttpServerPropertiesManager:: |
| 224 UpdatePrefsFromCacheOnNetworkThreadConcrete)); | 228 UpdatePrefsFromCacheOnNetworkSequenceConcrete)); |
| 225 } | 229 } |
| 226 | 230 |
| 227 bool HasAlternativeService(const url::SchemeHostPort& server) { | 231 bool HasAlternativeService(const url::SchemeHostPort& server) { |
| 228 const AlternativeServiceInfoVector alternative_service_info_vector = | 232 const AlternativeServiceInfoVector alternative_service_info_vector = |
| 229 http_server_props_manager_->GetAlternativeServiceInfos(server); | 233 http_server_props_manager_->GetAlternativeServiceInfos(server); |
| 230 return !alternative_service_info_vector.empty(); | 234 return !alternative_service_info_vector.empty(); |
| 231 } | 235 } |
| 232 | 236 |
| 233 MockPrefDelegate* pref_delegate_; // Owned by HttpServerPropertiesManager. | 237 MockPrefDelegate* pref_delegate_; // Owned by HttpServerPropertiesManager. |
| 234 std::unique_ptr<TestingHttpServerPropertiesManager> | 238 std::unique_ptr<TestingHttpServerPropertiesManager> |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 471 EXPECT_EQ(quic_server_info2, *http_server_props_manager_->GetQuicServerInfo( | 475 EXPECT_EQ(quic_server_info2, *http_server_props_manager_->GetQuicServerInfo( |
| 472 mail_quic_server_id)); | 476 mail_quic_server_id)); |
| 473 EXPECT_EQ(quic_server_info3, *http_server_props_manager_->GetQuicServerInfo( | 477 EXPECT_EQ(quic_server_info3, *http_server_props_manager_->GetQuicServerInfo( |
| 474 play_quic_server_id)); | 478 play_quic_server_id)); |
| 475 } | 479 } |
| 476 | 480 |
| 477 TEST_P(HttpServerPropertiesManagerTest, BadCachedHostPortPair) { | 481 TEST_P(HttpServerPropertiesManagerTest, BadCachedHostPortPair) { |
| 478 ExpectCacheUpdate(); | 482 ExpectCacheUpdate(); |
| 479 // The prefs are automatically updated in the case corruption is detected. | 483 // The prefs are automatically updated in the case corruption is detected. |
| 480 ExpectPrefsUpdate(1); | 484 ExpectPrefsUpdate(1); |
| 481 ExpectScheduleUpdatePrefsOnNetworkThread(); | 485 ExpectScheduleUpdatePrefsOnNetworkSequence(); |
| 482 | 486 |
| 483 auto server_pref_dict = base::MakeUnique<base::DictionaryValue>(); | 487 auto server_pref_dict = base::MakeUnique<base::DictionaryValue>(); |
| 484 | 488 |
| 485 // Set supports_spdy for www.google.com:65536. | 489 // Set supports_spdy for www.google.com:65536. |
| 486 server_pref_dict->SetBoolean("supports_spdy", true); | 490 server_pref_dict->SetBoolean("supports_spdy", true); |
| 487 | 491 |
| 488 // Set up alternative_service for www.google.com:65536. | 492 // Set up alternative_service for www.google.com:65536. |
| 489 auto alternative_service_dict = base::MakeUnique<base::DictionaryValue>(); | 493 auto alternative_service_dict = base::MakeUnique<base::DictionaryValue>(); |
| 490 alternative_service_dict->SetString("protocol_str", "h2"); | 494 alternative_service_dict->SetString("protocol_str", "h2"); |
| 491 alternative_service_dict->SetInteger("port", 80); | 495 alternative_service_dict->SetInteger("port", 80); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 560 const ServerNetworkStats* stats1 = | 564 const ServerNetworkStats* stats1 = |
| 561 http_server_props_manager_->GetServerNetworkStats(gooler_server); | 565 http_server_props_manager_->GetServerNetworkStats(gooler_server); |
| 562 EXPECT_EQ(nullptr, stats1); | 566 EXPECT_EQ(nullptr, stats1); |
| 563 EXPECT_EQ(0u, http_server_props_manager_->quic_server_info_map().size()); | 567 EXPECT_EQ(0u, http_server_props_manager_->quic_server_info_map().size()); |
| 564 } | 568 } |
| 565 | 569 |
| 566 TEST_P(HttpServerPropertiesManagerTest, BadCachedAltProtocolPort) { | 570 TEST_P(HttpServerPropertiesManagerTest, BadCachedAltProtocolPort) { |
| 567 ExpectCacheUpdate(); | 571 ExpectCacheUpdate(); |
| 568 // The prefs are automatically updated in the case corruption is detected. | 572 // The prefs are automatically updated in the case corruption is detected. |
| 569 ExpectPrefsUpdate(1); | 573 ExpectPrefsUpdate(1); |
| 570 ExpectScheduleUpdatePrefsOnNetworkThread(); | 574 ExpectScheduleUpdatePrefsOnNetworkSequence(); |
| 571 | 575 |
| 572 auto server_pref_dict = base::MakeUnique<base::DictionaryValue>(); | 576 auto server_pref_dict = base::MakeUnique<base::DictionaryValue>(); |
| 573 | 577 |
| 574 // Set supports_spdy for www.google.com:80. | 578 // Set supports_spdy for www.google.com:80. |
| 575 server_pref_dict->SetBoolean("supports_spdy", true); | 579 server_pref_dict->SetBoolean("supports_spdy", true); |
| 576 | 580 |
| 577 // Set up alternative_service for www.google.com:80. | 581 // Set up alternative_service for www.google.com:80. |
| 578 auto alternative_service_dict = base::MakeUnique<base::DictionaryValue>(); | 582 auto alternative_service_dict = base::MakeUnique<base::DictionaryValue>(); |
| 579 alternative_service_dict->SetString("protocol_str", "h2"); | 583 alternative_service_dict->SetString("protocol_str", "h2"); |
| 580 alternative_service_dict->SetInteger("port", 65536); | 584 alternative_service_dict->SetInteger("port", 65536); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 625 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 622 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 626 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 623 | 627 |
| 624 // Verify alternative service is not set. | 628 // Verify alternative service is not set. |
| 625 EXPECT_FALSE( | 629 EXPECT_FALSE( |
| 626 HasAlternativeService(url::SchemeHostPort("http", "www.google.com", 80))); | 630 HasAlternativeService(url::SchemeHostPort("http", "www.google.com", 80))); |
| 627 } | 631 } |
| 628 | 632 |
| 629 TEST_P(HttpServerPropertiesManagerTest, SupportsSpdy) { | 633 TEST_P(HttpServerPropertiesManagerTest, SupportsSpdy) { |
| 630 ExpectPrefsUpdate(1); | 634 ExpectPrefsUpdate(1); |
| 631 ExpectScheduleUpdatePrefsOnNetworkThread(); | 635 ExpectScheduleUpdatePrefsOnNetworkSequence(); |
| 632 | 636 |
| 633 // Post an update task to the network thread. SetSupportsSpdy calls | 637 // Post an update task to the network thread. SetSupportsSpdy calls |
| 634 // ScheduleUpdatePrefsOnNetworkThread. | 638 // ScheduleUpdatePrefsOnNetworkSequence. |
| 635 | 639 |
| 636 // Add mail.google.com:443 as a supporting spdy server. | 640 // Add mail.google.com:443 as a supporting spdy server. |
| 637 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); | 641 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); |
| 638 EXPECT_FALSE( | 642 EXPECT_FALSE( |
| 639 http_server_props_manager_->SupportsRequestPriority(spdy_server)); | 643 http_server_props_manager_->SupportsRequestPriority(spdy_server)); |
| 640 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); | 644 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); |
| 641 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 645 // ExpectScheduleUpdatePrefsOnNetworkSequence() should be called only once. |
| 642 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); | 646 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); |
| 643 | 647 |
| 644 // Run the task. | 648 // Run the task. |
| 645 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); | 649 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 646 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 650 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 647 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 651 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 648 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 652 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 649 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 653 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 650 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 654 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 651 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 655 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 652 | 656 |
| 653 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server)); | 657 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server)); |
| 654 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 658 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 655 } | 659 } |
| 656 | 660 |
| 657 // Regression test for crbug.com/670519. Test that there is only one pref update | 661 // Regression test for crbug.com/670519. Test that there is only one pref update |
| 658 // scheduled if multiple updates happen in a given time period. Subsequent pref | 662 // scheduled if multiple updates happen in a given time period. Subsequent pref |
| 659 // update could also be scheduled once the previous scheduled update is | 663 // update could also be scheduled once the previous scheduled update is |
| 660 // completed. | 664 // completed. |
| 661 TEST_P(HttpServerPropertiesManagerTest, | 665 TEST_P(HttpServerPropertiesManagerTest, |
| 662 SinglePrefUpdateForTwoSpdyServerCacheChanges) { | 666 SinglePrefUpdateForTwoSpdyServerCacheChanges) { |
| 663 ExpectPrefsUpdate(2); | 667 ExpectPrefsUpdate(2); |
| 664 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(3); | 668 ExpectScheduleUpdatePrefsOnNetworkSequenceRepeatedly(3); |
| 665 | 669 |
| 666 // Post an update task to the network thread. SetSupportsSpdy calls | 670 // Post an update task to the network thread. SetSupportsSpdy calls |
| 667 // ScheduleUpdatePrefsOnNetworkThread with a delay of 60ms. | 671 // ScheduleUpdatePrefsOnNetworkSequence with a delay of 60ms. |
| 668 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); | 672 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); |
| 669 EXPECT_FALSE( | 673 EXPECT_FALSE( |
| 670 http_server_props_manager_->SupportsRequestPriority(spdy_server)); | 674 http_server_props_manager_->SupportsRequestPriority(spdy_server)); |
| 671 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); | 675 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); |
| 672 // The pref update task should be scheduled to network thread. | 676 // The pref update task should be scheduled to network thread. |
| 673 EXPECT_EQ(1u, net_test_task_runner_->GetPendingTaskCount()); | 677 EXPECT_EQ(1u, net_test_task_runner_->GetPendingTaskCount()); |
| 674 | 678 |
| 675 // Move forward the task runner short by 20ms. | 679 // Move forward the task runner short by 20ms. |
| 676 net_test_task_runner_->FastForwardBy( | 680 net_test_task_runner_->FastForwardBy( |
| 677 HttpServerPropertiesManager::GetUpdatePrefsDelayForTesting() - | 681 HttpServerPropertiesManager::GetUpdatePrefsDelayForTesting() - |
| 678 base::TimeDelta::FromMilliseconds(20)); | 682 base::TimeDelta::FromMilliseconds(20)); |
| 679 | 683 |
| 680 // Set another spdy server to trigger another call to | 684 // Set another spdy server to trigger another call to |
| 681 // ScheduleUpdatePrefsOnNetworkThread. There should be no new update posted to | 685 // ScheduleUpdatePrefsOnNetworkSequence. There should be no new update posted |
| 682 // the network thread. | 686 // to the network thread. |
| 683 url::SchemeHostPort spdy_server2("https", "drive.google.com", 443); | 687 url::SchemeHostPort spdy_server2("https", "drive.google.com", 443); |
| 684 http_server_props_manager_->SetSupportsSpdy(spdy_server2, true); | 688 http_server_props_manager_->SetSupportsSpdy(spdy_server2, true); |
| 685 EXPECT_EQ(1u, net_test_task_runner_->GetPendingTaskCount()); | 689 EXPECT_EQ(1u, net_test_task_runner_->GetPendingTaskCount()); |
| 686 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 690 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 687 | 691 |
| 688 // Move forward the extra 20ms. The pref update should be executed. | 692 // Move forward the extra 20ms. The pref update should be executed. |
| 689 net_test_task_runner_->FastForwardBy(base::TimeDelta::FromMilliseconds(20)); | 693 net_test_task_runner_->FastForwardBy(base::TimeDelta::FromMilliseconds(20)); |
| 690 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 694 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 691 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 695 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 692 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 696 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 693 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 697 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 694 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 698 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 695 | 699 |
| 696 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server)); | 700 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server)); |
| 697 EXPECT_TRUE( | 701 EXPECT_TRUE( |
| 698 http_server_props_manager_->SupportsRequestPriority(spdy_server2)); | 702 http_server_props_manager_->SupportsRequestPriority(spdy_server2)); |
| 699 // Set the third spdy server to trigger one more call to | 703 // Set the third spdy server to trigger one more call to |
| 700 // ScheduleUpdatePrefsOnNetworkThread. A new update task should be posted to | 704 // ScheduleUpdatePrefsOnNetworkSequence. A new update task should be posted to |
| 701 // network thread now since the previous one is completed. | 705 // network thread now since the previous one is completed. |
| 702 url::SchemeHostPort spdy_server3("https", "maps.google.com", 443); | 706 url::SchemeHostPort spdy_server3("https", "maps.google.com", 443); |
| 703 http_server_props_manager_->SetSupportsSpdy(spdy_server3, true); | 707 http_server_props_manager_->SetSupportsSpdy(spdy_server3, true); |
| 704 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 708 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 705 EXPECT_EQ(1u, net_test_task_runner_->GetPendingTaskCount()); | 709 EXPECT_EQ(1u, net_test_task_runner_->GetPendingTaskCount()); |
| 706 | 710 |
| 707 // Run the task. | 711 // Run the task. |
| 708 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); | 712 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 709 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 713 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 710 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 714 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 711 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 715 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 712 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 716 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 713 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 717 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 714 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 718 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 715 | 719 |
| 716 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 720 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 717 } | 721 } |
| 718 | 722 |
| 719 TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServiceInfos) { | 723 TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServiceInfos) { |
| 720 ExpectPrefsUpdate(1); | 724 ExpectPrefsUpdate(1); |
| 721 ExpectScheduleUpdatePrefsOnNetworkThread(); | 725 ExpectScheduleUpdatePrefsOnNetworkSequence(); |
| 722 | 726 |
| 723 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); | 727 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); |
| 724 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); | 728 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); |
| 725 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", | 729 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", |
| 726 443); | 730 443); |
| 727 http_server_props_manager_->SetAlternativeService( | 731 http_server_props_manager_->SetAlternativeService( |
| 728 spdy_server_mail, alternative_service, one_day_from_now_); | 732 spdy_server_mail, alternative_service, one_day_from_now_); |
| 729 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 733 // ExpectScheduleUpdatePrefsOnNetworkSequence() should be called only once. |
| 730 http_server_props_manager_->SetAlternativeService( | 734 http_server_props_manager_->SetAlternativeService( |
| 731 spdy_server_mail, alternative_service, one_day_from_now_); | 735 spdy_server_mail, alternative_service, one_day_from_now_); |
| 732 | 736 |
| 733 // Run the task. | 737 // Run the task. |
| 734 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 738 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 735 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); | 739 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 736 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 740 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 737 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 741 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 738 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 742 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 739 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 743 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 740 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 744 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 741 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 745 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 742 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 746 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 743 | 747 |
| 744 AlternativeServiceInfoVector alternative_service_info_vector = | 748 AlternativeServiceInfoVector alternative_service_info_vector = |
| 745 http_server_props_manager_->GetAlternativeServiceInfos(spdy_server_mail); | 749 http_server_props_manager_->GetAlternativeServiceInfos(spdy_server_mail); |
| 746 ASSERT_EQ(1u, alternative_service_info_vector.size()); | 750 ASSERT_EQ(1u, alternative_service_info_vector.size()); |
| 747 EXPECT_EQ(alternative_service, | 751 EXPECT_EQ(alternative_service, |
| 748 alternative_service_info_vector[0].alternative_service); | 752 alternative_service_info_vector[0].alternative_service); |
| 749 } | 753 } |
| 750 | 754 |
| 751 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServices) { | 755 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServices) { |
| 752 ExpectPrefsUpdate(1); | 756 ExpectPrefsUpdate(1); |
| 753 ExpectScheduleUpdatePrefsOnNetworkThread(); | 757 ExpectScheduleUpdatePrefsOnNetworkSequence(); |
| 754 | 758 |
| 755 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); | 759 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); |
| 756 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); | 760 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); |
| 757 AlternativeServiceInfoVector alternative_service_info_vector; | 761 AlternativeServiceInfoVector alternative_service_info_vector; |
| 758 const AlternativeService alternative_service1(kProtoHTTP2, "mail.google.com", | 762 const AlternativeService alternative_service1(kProtoHTTP2, "mail.google.com", |
| 759 443); | 763 443); |
| 760 alternative_service_info_vector.push_back( | 764 alternative_service_info_vector.push_back( |
| 761 AlternativeServiceInfo(alternative_service1, one_day_from_now_)); | 765 AlternativeServiceInfo(alternative_service1, one_day_from_now_)); |
| 762 const AlternativeService alternative_service2(kProtoQUIC, "mail.google.com", | 766 const AlternativeService alternative_service2(kProtoQUIC, "mail.google.com", |
| 763 1234); | 767 1234); |
| 764 alternative_service_info_vector.push_back( | 768 alternative_service_info_vector.push_back( |
| 765 AlternativeServiceInfo(alternative_service2, one_day_from_now_)); | 769 AlternativeServiceInfo(alternative_service2, one_day_from_now_)); |
| 766 http_server_props_manager_->SetAlternativeServices( | 770 http_server_props_manager_->SetAlternativeServices( |
| 767 spdy_server_mail, alternative_service_info_vector); | 771 spdy_server_mail, alternative_service_info_vector); |
| 768 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 772 // ExpectScheduleUpdatePrefsOnNetworkSequence() should be called only once. |
| 769 http_server_props_manager_->SetAlternativeServices( | 773 http_server_props_manager_->SetAlternativeServices( |
| 770 spdy_server_mail, alternative_service_info_vector); | 774 spdy_server_mail, alternative_service_info_vector); |
| 771 | 775 |
| 772 // Run the task. | 776 // Run the task. |
| 773 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 777 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 774 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); | 778 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 775 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 779 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 776 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 780 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 777 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 781 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 778 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 782 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 790 } | 794 } |
| 791 | 795 |
| 792 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServicesEmpty) { | 796 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServicesEmpty) { |
| 793 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); | 797 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); |
| 794 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); | 798 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); |
| 795 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", | 799 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", |
| 796 443); | 800 443); |
| 797 http_server_props_manager_->SetAlternativeServices( | 801 http_server_props_manager_->SetAlternativeServices( |
| 798 spdy_server_mail, AlternativeServiceInfoVector()); | 802 spdy_server_mail, AlternativeServiceInfoVector()); |
| 799 | 803 |
| 800 // ExpectScheduleUpdatePrefsOnNetworkThread() should not be called. | 804 // ExpectScheduleUpdatePrefsOnNetworkSequence() should not be called. |
| 801 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 805 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 802 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 806 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 803 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 807 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 804 | 808 |
| 805 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); | 809 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); |
| 806 } | 810 } |
| 807 | 811 |
| 808 TEST_P(HttpServerPropertiesManagerTest, ConfirmAlternativeService) { | 812 TEST_P(HttpServerPropertiesManagerTest, ConfirmAlternativeService) { |
| 809 ExpectPrefsUpdate(1); | 813 ExpectPrefsUpdate(1); |
| 810 | 814 |
| 811 url::SchemeHostPort spdy_server_mail; | 815 url::SchemeHostPort spdy_server_mail; |
| 812 AlternativeService alternative_service; | 816 AlternativeService alternative_service; |
| 813 | 817 |
| 814 { | 818 { |
| 815 TestMockTimeTaskRunner::ScopedContext scoped_context(net_test_task_runner_); | 819 TestMockTimeTaskRunner::ScopedContext scoped_context(net_test_task_runner_); |
| 816 | 820 |
| 817 spdy_server_mail = url::SchemeHostPort("http", "mail.google.com", 80); | 821 spdy_server_mail = url::SchemeHostPort("http", "mail.google.com", 80); |
| 818 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); | 822 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); |
| 819 alternative_service = | 823 alternative_service = |
| 820 AlternativeService(kProtoHTTP2, "mail.google.com", 443); | 824 AlternativeService(kProtoHTTP2, "mail.google.com", 443); |
| 821 | 825 |
| 822 ExpectScheduleUpdatePrefsOnNetworkThread(); | 826 ExpectScheduleUpdatePrefsOnNetworkSequence(); |
| 823 http_server_props_manager_->SetAlternativeService( | 827 http_server_props_manager_->SetAlternativeService( |
| 824 spdy_server_mail, alternative_service, one_day_from_now_); | 828 spdy_server_mail, alternative_service, one_day_from_now_); |
| 825 | 829 |
| 826 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( | 830 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( |
| 827 alternative_service)); | 831 alternative_service)); |
| 828 EXPECT_FALSE( | 832 EXPECT_FALSE( |
| 829 http_server_props_manager_->WasAlternativeServiceRecentlyBroken( | 833 http_server_props_manager_->WasAlternativeServiceRecentlyBroken( |
| 830 alternative_service)); | 834 alternative_service)); |
| 831 | 835 |
| 832 ExpectScheduleUpdatePrefsOnNetworkThread(); | 836 ExpectScheduleUpdatePrefsOnNetworkSequence(); |
| 833 http_server_props_manager_->MarkAlternativeServiceBroken( | 837 http_server_props_manager_->MarkAlternativeServiceBroken( |
| 834 alternative_service); | 838 alternative_service); |
| 835 EXPECT_TRUE(http_server_props_manager_->IsAlternativeServiceBroken( | 839 EXPECT_TRUE(http_server_props_manager_->IsAlternativeServiceBroken( |
| 836 alternative_service)); | 840 alternative_service)); |
| 837 EXPECT_TRUE(http_server_props_manager_->WasAlternativeServiceRecentlyBroken( | 841 EXPECT_TRUE(http_server_props_manager_->WasAlternativeServiceRecentlyBroken( |
| 838 alternative_service)); | 842 alternative_service)); |
| 839 | 843 |
| 840 ExpectScheduleUpdatePrefsOnNetworkThread(); | 844 ExpectScheduleUpdatePrefsOnNetworkSequence(); |
| 841 http_server_props_manager_->ConfirmAlternativeService(alternative_service); | 845 http_server_props_manager_->ConfirmAlternativeService(alternative_service); |
| 842 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( | 846 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( |
| 843 alternative_service)); | 847 alternative_service)); |
| 844 EXPECT_FALSE( | 848 EXPECT_FALSE( |
| 845 http_server_props_manager_->WasAlternativeServiceRecentlyBroken( | 849 http_server_props_manager_->WasAlternativeServiceRecentlyBroken( |
| 846 alternative_service)); | 850 alternative_service)); |
| 847 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 851 // ExpectScheduleUpdatePrefsOnNetworkSequence() should be called only once. |
| 848 http_server_props_manager_->ConfirmAlternativeService(alternative_service); | 852 http_server_props_manager_->ConfirmAlternativeService(alternative_service); |
| 849 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( | 853 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( |
| 850 alternative_service)); | 854 alternative_service)); |
| 851 EXPECT_FALSE( | 855 EXPECT_FALSE( |
| 852 http_server_props_manager_->WasAlternativeServiceRecentlyBroken( | 856 http_server_props_manager_->WasAlternativeServiceRecentlyBroken( |
| 853 alternative_service)); | 857 alternative_service)); |
| 854 } | 858 } |
| 855 | 859 |
| 856 // Run the task. | 860 // Run the task. |
| 857 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 861 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 869 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( | 873 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( |
| 870 alternative_service)); | 874 alternative_service)); |
| 871 EXPECT_FALSE( | 875 EXPECT_FALSE( |
| 872 http_server_props_manager_->WasAlternativeServiceRecentlyBroken( | 876 http_server_props_manager_->WasAlternativeServiceRecentlyBroken( |
| 873 alternative_service)); | 877 alternative_service)); |
| 874 } | 878 } |
| 875 } | 879 } |
| 876 | 880 |
| 877 TEST_P(HttpServerPropertiesManagerTest, SupportsQuic) { | 881 TEST_P(HttpServerPropertiesManagerTest, SupportsQuic) { |
| 878 ExpectPrefsUpdate(1); | 882 ExpectPrefsUpdate(1); |
| 879 ExpectScheduleUpdatePrefsOnNetworkThread(); | 883 ExpectScheduleUpdatePrefsOnNetworkSequence(); |
| 880 | 884 |
| 881 IPAddress address; | 885 IPAddress address; |
| 882 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address)); | 886 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address)); |
| 883 | 887 |
| 884 IPAddress actual_address(127, 0, 0, 1); | 888 IPAddress actual_address(127, 0, 0, 1); |
| 885 http_server_props_manager_->SetSupportsQuic(true, actual_address); | 889 http_server_props_manager_->SetSupportsQuic(true, actual_address); |
| 886 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 890 // ExpectScheduleUpdatePrefsOnNetworkSequence() should be called only once. |
| 887 http_server_props_manager_->SetSupportsQuic(true, actual_address); | 891 http_server_props_manager_->SetSupportsQuic(true, actual_address); |
| 888 | 892 |
| 889 // Run the task. | 893 // Run the task. |
| 890 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 894 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 891 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); | 895 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 892 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 896 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 893 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 897 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 894 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 898 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 895 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 899 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 896 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 900 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 897 | 901 |
| 898 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 902 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 899 | 903 |
| 900 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); | 904 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); |
| 901 EXPECT_EQ(actual_address, address); | 905 EXPECT_EQ(actual_address, address); |
| 902 } | 906 } |
| 903 | 907 |
| 904 TEST_P(HttpServerPropertiesManagerTest, ServerNetworkStats) { | 908 TEST_P(HttpServerPropertiesManagerTest, ServerNetworkStats) { |
| 905 ExpectPrefsUpdate(1); | 909 ExpectPrefsUpdate(1); |
| 906 ExpectScheduleUpdatePrefsOnNetworkThread(); | 910 ExpectScheduleUpdatePrefsOnNetworkSequence(); |
| 907 | 911 |
| 908 url::SchemeHostPort mail_server("http", "mail.google.com", 80); | 912 url::SchemeHostPort mail_server("http", "mail.google.com", 80); |
| 909 const ServerNetworkStats* stats = | 913 const ServerNetworkStats* stats = |
| 910 http_server_props_manager_->GetServerNetworkStats(mail_server); | 914 http_server_props_manager_->GetServerNetworkStats(mail_server); |
| 911 EXPECT_EQ(nullptr, stats); | 915 EXPECT_EQ(nullptr, stats); |
| 912 ServerNetworkStats stats1; | 916 ServerNetworkStats stats1; |
| 913 stats1.srtt = base::TimeDelta::FromMicroseconds(10); | 917 stats1.srtt = base::TimeDelta::FromMicroseconds(10); |
| 914 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1); | 918 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1); |
| 915 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 919 // ExpectScheduleUpdatePrefsOnNetworkSequence() should be called only once. |
| 916 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1); | 920 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1); |
| 917 | 921 |
| 918 // Run the task. | 922 // Run the task. |
| 919 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 923 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 920 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); | 924 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 921 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 925 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 922 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 926 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 923 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 927 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 924 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 928 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 925 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 929 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 926 | 930 |
| 927 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 931 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 928 | 932 |
| 929 const ServerNetworkStats* stats2 = | 933 const ServerNetworkStats* stats2 = |
| 930 http_server_props_manager_->GetServerNetworkStats(mail_server); | 934 http_server_props_manager_->GetServerNetworkStats(mail_server); |
| 931 EXPECT_EQ(10, stats2->srtt.ToInternalValue()); | 935 EXPECT_EQ(10, stats2->srtt.ToInternalValue()); |
| 932 | 936 |
| 933 ExpectPrefsUpdate(1); | 937 ExpectPrefsUpdate(1); |
| 934 ExpectScheduleUpdatePrefsOnNetworkThread(); | 938 ExpectScheduleUpdatePrefsOnNetworkSequence(); |
| 935 | 939 |
| 936 http_server_props_manager_->ClearServerNetworkStats(mail_server); | 940 http_server_props_manager_->ClearServerNetworkStats(mail_server); |
| 937 | 941 |
| 938 // Run the task. | 942 // Run the task. |
| 939 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 943 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 940 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); | 944 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 941 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 945 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 942 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 946 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 943 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 947 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 944 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 948 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 945 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 949 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 946 | 950 |
| 947 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 951 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 948 EXPECT_EQ(nullptr, | 952 EXPECT_EQ(nullptr, |
| 949 http_server_props_manager_->GetServerNetworkStats(mail_server)); | 953 http_server_props_manager_->GetServerNetworkStats(mail_server)); |
| 950 } | 954 } |
| 951 | 955 |
| 952 TEST_P(HttpServerPropertiesManagerTest, QuicServerInfo) { | 956 TEST_P(HttpServerPropertiesManagerTest, QuicServerInfo) { |
| 953 ExpectPrefsUpdate(1); | 957 ExpectPrefsUpdate(1); |
| 954 ExpectScheduleUpdatePrefsOnNetworkThread(); | 958 ExpectScheduleUpdatePrefsOnNetworkSequence(); |
| 955 | 959 |
| 956 QuicServerId mail_quic_server_id("mail.google.com", 80); | 960 QuicServerId mail_quic_server_id("mail.google.com", 80); |
| 957 EXPECT_EQ(nullptr, | 961 EXPECT_EQ(nullptr, |
| 958 http_server_props_manager_->GetQuicServerInfo(mail_quic_server_id)); | 962 http_server_props_manager_->GetQuicServerInfo(mail_quic_server_id)); |
| 959 std::string quic_server_info1("quic_server_info1"); | 963 std::string quic_server_info1("quic_server_info1"); |
| 960 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, | 964 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, |
| 961 quic_server_info1); | 965 quic_server_info1); |
| 962 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. | 966 // ExpectScheduleUpdatePrefsOnNetworkSequence() should be called only once. |
| 963 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, | 967 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, |
| 964 quic_server_info1); | 968 quic_server_info1); |
| 965 | 969 |
| 966 // Run the task. | 970 // Run the task. |
| 967 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 971 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 968 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); | 972 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 969 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 973 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 970 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 974 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 971 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 975 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 972 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 976 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 973 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 977 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 974 | 978 |
| 975 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 979 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 976 | 980 |
| 977 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo( | 981 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo( |
| 978 mail_quic_server_id)); | 982 mail_quic_server_id)); |
| 979 } | 983 } |
| 980 | 984 |
| 981 TEST_P(HttpServerPropertiesManagerTest, Clear) { | 985 TEST_P(HttpServerPropertiesManagerTest, Clear) { |
| 982 ExpectPrefsUpdate(1); | 986 ExpectPrefsUpdate(1); |
| 983 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(5); | 987 ExpectScheduleUpdatePrefsOnNetworkSequenceRepeatedly(5); |
| 984 | 988 |
| 985 const url::SchemeHostPort spdy_server("https", "mail.google.com", 443); | 989 const url::SchemeHostPort spdy_server("https", "mail.google.com", 443); |
| 986 const IPAddress actual_address(127, 0, 0, 1); | 990 const IPAddress actual_address(127, 0, 0, 1); |
| 987 const QuicServerId mail_quic_server_id("mail.google.com", 80); | 991 const QuicServerId mail_quic_server_id("mail.google.com", 80); |
| 988 const std::string quic_server_info1("quic_server_info1"); | 992 const std::string quic_server_info1("quic_server_info1"); |
| 989 | 993 |
| 990 { | 994 { |
| 991 TestMockTimeTaskRunner::ScopedContext scoped_context(net_test_task_runner_); | 995 TestMockTimeTaskRunner::ScopedContext scoped_context(net_test_task_runner_); |
| 992 | 996 |
| 993 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); | 997 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1146 EXPECT_EQ(i, alternative_service_info_vector[0].alternative_service.port); | 1150 EXPECT_EQ(i, alternative_service_info_vector[0].alternative_service.port); |
| 1147 } | 1151 } |
| 1148 | 1152 |
| 1149 // Verify SupportsQuic. | 1153 // Verify SupportsQuic. |
| 1150 IPAddress address; | 1154 IPAddress address; |
| 1151 ASSERT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); | 1155 ASSERT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); |
| 1152 EXPECT_EQ("127.0.0.1", address.ToString()); | 1156 EXPECT_EQ("127.0.0.1", address.ToString()); |
| 1153 } | 1157 } |
| 1154 | 1158 |
| 1155 TEST_P(HttpServerPropertiesManagerTest, UpdatePrefsWithCache) { | 1159 TEST_P(HttpServerPropertiesManagerTest, UpdatePrefsWithCache) { |
| 1156 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(5); | 1160 ExpectScheduleUpdatePrefsOnNetworkSequenceRepeatedly(5); |
| 1157 | 1161 |
| 1158 const url::SchemeHostPort server_www("https", "www.google.com", 80); | 1162 const url::SchemeHostPort server_www("https", "www.google.com", 80); |
| 1159 const url::SchemeHostPort server_mail("https", "mail.google.com", 80); | 1163 const url::SchemeHostPort server_mail("https", "mail.google.com", 80); |
| 1160 | 1164 |
| 1161 // #1 & #2: Set alternate protocol. | 1165 // #1 & #2: Set alternate protocol. |
| 1162 AlternativeServiceInfoVector alternative_service_info_vector; | 1166 AlternativeServiceInfoVector alternative_service_info_vector; |
| 1163 AlternativeService www_alternative_service1(kProtoHTTP2, "", 443); | 1167 AlternativeService www_alternative_service1(kProtoHTTP2, "", 443); |
| 1164 base::Time expiration1; | 1168 base::Time expiration1; |
| 1165 ASSERT_TRUE(base::Time::FromUTCString("2036-12-01 10:00:00", &expiration1)); | 1169 ASSERT_TRUE(base::Time::FromUTCString("2036-12-01 10:00:00", &expiration1)); |
| 1166 alternative_service_info_vector.push_back( | 1170 alternative_service_info_vector.push_back( |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1331 EXPECT_FALSE(http_server_props_manager_->AddToAlternativeServiceMap( | 1335 EXPECT_FALSE(http_server_props_manager_->AddToAlternativeServiceMap( |
| 1332 server, *server_dict, &alternative_service_map)); | 1336 server, *server_dict, &alternative_service_map)); |
| 1333 | 1337 |
| 1334 AlternativeServiceMap::iterator it = alternative_service_map.Get(server); | 1338 AlternativeServiceMap::iterator it = alternative_service_map.Get(server); |
| 1335 EXPECT_EQ(alternative_service_map.end(), it); | 1339 EXPECT_EQ(alternative_service_map.end(), it); |
| 1336 } | 1340 } |
| 1337 | 1341 |
| 1338 // Do not persist expired or broken alternative service entries to disk. | 1342 // Do not persist expired or broken alternative service entries to disk. |
| 1339 TEST_P(HttpServerPropertiesManagerTest, | 1343 TEST_P(HttpServerPropertiesManagerTest, |
| 1340 DoNotPersistExpiredOrBrokenAlternativeService) { | 1344 DoNotPersistExpiredOrBrokenAlternativeService) { |
| 1341 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(2); | 1345 ExpectScheduleUpdatePrefsOnNetworkSequenceRepeatedly(2); |
| 1342 | 1346 |
| 1343 { | 1347 { |
| 1344 TestMockTimeTaskRunner::ScopedContext scoped_context(net_test_task_runner_); | 1348 TestMockTimeTaskRunner::ScopedContext scoped_context(net_test_task_runner_); |
| 1345 | 1349 |
| 1346 AlternativeServiceInfoVector alternative_service_info_vector; | 1350 AlternativeServiceInfoVector alternative_service_info_vector; |
| 1347 | 1351 |
| 1348 const AlternativeService broken_alternative_service( | 1352 const AlternativeService broken_alternative_service( |
| 1349 kProtoHTTP2, "broken.example.com", 443); | 1353 kProtoHTTP2, "broken.example.com", 443); |
| 1350 const base::Time time_one_day_later = | 1354 const base::Time time_one_day_later = |
| 1351 base::Time::Now() + base::TimeDelta::FromDays(1); | 1355 base::Time::Now() + base::TimeDelta::FromDays(1); |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1459 EXPECT_EQ("valid.example.com", | 1463 EXPECT_EQ("valid.example.com", |
| 1460 alternative_service_info_vector[0].alternative_service.host); | 1464 alternative_service_info_vector[0].alternative_service.host); |
| 1461 EXPECT_EQ(443, alternative_service_info_vector[0].alternative_service.port); | 1465 EXPECT_EQ(443, alternative_service_info_vector[0].alternative_service.port); |
| 1462 EXPECT_EQ(one_day_from_now_, alternative_service_info_vector[0].expiration); | 1466 EXPECT_EQ(one_day_from_now_, alternative_service_info_vector[0].expiration); |
| 1463 } | 1467 } |
| 1464 | 1468 |
| 1465 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache0) { | 1469 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache0) { |
| 1466 // Post an update task to the UI thread. | 1470 // Post an update task to the UI thread. |
| 1467 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); | 1471 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); |
| 1468 // Shutdown comes before the task is executed. | 1472 // Shutdown comes before the task is executed. |
| 1469 http_server_props_manager_->ShutdownOnPrefThread(); | 1473 http_server_props_manager_->ShutdownOnPrefSequence(); |
| 1470 http_server_props_manager_.reset(); | 1474 http_server_props_manager_.reset(); |
| 1471 // Run the task after shutdown and deletion. | 1475 // Run the task after shutdown and deletion. |
| 1472 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1476 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1473 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 1477 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 1474 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 1478 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1475 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1479 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1476 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1480 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1477 } | 1481 } |
| 1478 | 1482 |
| 1479 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache1) { | 1483 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache1) { |
| 1480 // Post an update task. | 1484 // Post an update task. |
| 1481 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); | 1485 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); |
| 1482 // Shutdown comes before the task is executed. | 1486 // Shutdown comes before the task is executed. |
| 1483 http_server_props_manager_->ShutdownOnPrefThread(); | 1487 http_server_props_manager_->ShutdownOnPrefSequence(); |
| 1484 // Run the task after shutdown, but before deletion. | 1488 // Run the task after shutdown, but before deletion. |
| 1485 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1489 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1486 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 1490 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 1487 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 1491 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1488 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1492 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1489 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1493 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1490 | 1494 |
| 1491 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 1495 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 1492 http_server_props_manager_.reset(); | 1496 http_server_props_manager_.reset(); |
| 1493 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1497 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1494 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1498 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1495 } | 1499 } |
| 1496 | 1500 |
| 1497 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache2) { | 1501 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache2) { |
| 1498 http_server_props_manager_->UpdateCacheFromPrefsOnUIConcrete(); | 1502 http_server_props_manager_->UpdateCacheFromPrefsOnUIConcrete(); |
| 1499 // Shutdown comes before the task is executed. | 1503 // Shutdown comes before the task is executed. |
| 1500 http_server_props_manager_->ShutdownOnPrefThread(); | 1504 http_server_props_manager_->ShutdownOnPrefSequence(); |
| 1501 // There should be no tasks to run. | 1505 // There should be no tasks to run. |
| 1502 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1506 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1503 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1507 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1504 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 1508 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 1505 http_server_props_manager_.reset(); | 1509 http_server_props_manager_.reset(); |
| 1506 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1510 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1507 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1511 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1508 } | 1512 } |
| 1509 | 1513 |
| 1510 // | 1514 // |
| 1511 // Tests for shutdown when updating prefs. | 1515 // Tests for shutdown when updating prefs. |
| 1512 // | 1516 // |
| 1513 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs0) { | 1517 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs0) { |
| 1514 // Post an update task to the IO thread. | 1518 // Post an update task to the IO thread. |
| 1515 http_server_props_manager_->ScheduleUpdatePrefsOnNetworkThreadDefault(); | 1519 http_server_props_manager_->ScheduleUpdatePrefsOnNetworkSequenceDefault(); |
| 1516 // Shutdown comes before the task is executed. | 1520 // Shutdown comes before the task is executed. |
| 1517 http_server_props_manager_->ShutdownOnPrefThread(); | 1521 http_server_props_manager_->ShutdownOnPrefSequence(); |
| 1518 http_server_props_manager_.reset(); | 1522 http_server_props_manager_.reset(); |
| 1519 // Run the task after shutdown and deletion. | 1523 // Run the task after shutdown and deletion. |
| 1520 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); | 1524 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 1521 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1525 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1522 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 1526 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1523 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1527 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1524 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1528 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1525 } | 1529 } |
| 1526 | 1530 |
| 1527 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs1) { | 1531 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs1) { |
| 1528 ExpectPrefsUpdate(1); | 1532 ExpectPrefsUpdate(1); |
| 1529 // Post an update task. | 1533 // Post an update task. |
| 1530 http_server_props_manager_->ScheduleUpdatePrefsOnNetworkThreadDefault(); | 1534 http_server_props_manager_->ScheduleUpdatePrefsOnNetworkSequenceDefault(); |
| 1531 // Shutdown comes before the task is executed. | 1535 // Shutdown comes before the task is executed. |
| 1532 http_server_props_manager_->ShutdownOnPrefThread(); | 1536 http_server_props_manager_->ShutdownOnPrefSequence(); |
| 1533 // Run the task after shutdown, but before deletion. | 1537 // Run the task after shutdown, but before deletion. |
| 1534 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); | 1538 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); |
| 1535 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1539 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1536 net_test_task_runner_->FastForwardUntilNoTasksRemain(); | 1540 net_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1537 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 1541 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 1538 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 1542 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1539 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1543 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1540 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1544 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1541 | 1545 |
| 1542 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 1546 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 1543 http_server_props_manager_.reset(); | 1547 http_server_props_manager_.reset(); |
| 1544 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1548 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1545 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1549 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1546 } | 1550 } |
| 1547 | 1551 |
| 1548 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs2) { | 1552 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs2) { |
| 1549 // This posts a task to the UI thread. | 1553 // This posts a task to the UI thread. |
| 1550 http_server_props_manager_->UpdatePrefsFromCacheOnNetworkThreadConcrete( | 1554 http_server_props_manager_->UpdatePrefsFromCacheOnNetworkSequenceConcrete( |
| 1551 base::Closure()); | 1555 base::Closure()); |
| 1552 // Shutdown comes before the task is executed. | 1556 // Shutdown comes before the task is executed. |
| 1553 http_server_props_manager_->ShutdownOnPrefThread(); | 1557 http_server_props_manager_->ShutdownOnPrefSequence(); |
| 1554 // Run the task after shutdown, but before deletion. | 1558 // Run the task after shutdown, but before deletion. |
| 1555 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1559 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1556 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); | 1560 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); |
| 1557 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); | 1561 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); |
| 1558 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1562 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1559 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1563 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1560 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 1564 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
| 1561 http_server_props_manager_.reset(); | 1565 http_server_props_manager_.reset(); |
| 1562 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); | 1566 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); |
| 1563 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); | 1567 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); |
| 1564 } | 1568 } |
| 1565 | 1569 |
| 1566 } // namespace net | 1570 } // namespace net |
| OLD | NEW |