OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/net/http_server_properties_manager.h" | 5 #include "chrome/browser/net/http_server_properties_manager.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/test/mock_callback.h" |
9 #include "base/values.h" | 10 #include "base/values.h" |
10 #include "chrome/common/pref_names.h" | 11 #include "chrome/common/pref_names.h" |
11 #include "chrome/test/base/testing_pref_service.h" | 12 #include "chrome/test/base/testing_pref_service.h" |
12 #include "content/public/test/test_browser_thread.h" | 13 #include "content/public/test/test_browser_thread.h" |
13 #include "googleurl/src/gurl.h" | 14 #include "googleurl/src/gurl.h" |
14 #include "testing/gmock/include/gmock/gmock.h" | 15 #include "testing/gmock/include/gmock/gmock.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
16 | 17 |
17 namespace chrome_browser_net { | 18 namespace chrome_browser_net { |
18 | 19 |
(...skipping 28 matching lines...) Expand all Loading... |
47 void UpdateCacheFromPrefsOnUIConcrete() { | 48 void UpdateCacheFromPrefsOnUIConcrete() { |
48 HttpServerPropertiesManager::UpdateCacheFromPrefsOnUI(); | 49 HttpServerPropertiesManager::UpdateCacheFromPrefsOnUI(); |
49 } | 50 } |
50 | 51 |
51 // Post tasks without a delay during tests. | 52 // Post tasks without a delay during tests. |
52 virtual void StartCacheUpdateTimerOnUI(base::TimeDelta delay) OVERRIDE { | 53 virtual void StartCacheUpdateTimerOnUI(base::TimeDelta delay) OVERRIDE { |
53 HttpServerPropertiesManager::StartCacheUpdateTimerOnUI( | 54 HttpServerPropertiesManager::StartCacheUpdateTimerOnUI( |
54 base::TimeDelta()); | 55 base::TimeDelta()); |
55 } | 56 } |
56 | 57 |
57 void UpdatePrefsFromCacheOnIOConcrete() { | 58 void UpdatePrefsFromCacheOnIOConcrete(const base::Closure& callback) { |
58 HttpServerPropertiesManager::UpdatePrefsFromCacheOnIO(); | 59 HttpServerPropertiesManager::UpdatePrefsFromCacheOnIO(callback); |
59 } | 60 } |
60 | 61 |
61 MOCK_METHOD0(UpdateCacheFromPrefsOnUI, void()); | 62 MOCK_METHOD0(UpdateCacheFromPrefsOnUI, void()); |
62 MOCK_METHOD0(UpdatePrefsFromCacheOnIO, void()); | 63 MOCK_METHOD1(UpdatePrefsFromCacheOnIO, void(const base::Closure&)); |
63 MOCK_METHOD5(UpdateCacheFromPrefsOnIO, | 64 MOCK_METHOD5(UpdateCacheFromPrefsOnIO, |
64 void(std::vector<std::string>* spdy_servers, | 65 void(std::vector<std::string>* spdy_servers, |
65 net::SpdySettingsMap* spdy_settings_map, | 66 net::SpdySettingsMap* spdy_settings_map, |
66 net::AlternateProtocolMap* alternate_protocol_map, | 67 net::AlternateProtocolMap* alternate_protocol_map, |
67 net::PipelineCapabilityMap* pipeline_capability_map, | 68 net::PipelineCapabilityMap* pipeline_capability_map, |
68 bool detected_corrupted_prefs)); | 69 bool detected_corrupted_prefs)); |
69 MOCK_METHOD4(UpdatePrefsOnUI, | 70 MOCK_METHOD4(UpdatePrefsOnUI, |
70 void(base::ListValue* spdy_server_list, | 71 void(base::ListValue* spdy_server_list, |
71 net::SpdySettingsMap* spdy_settings_map, | 72 net::SpdySettingsMap* spdy_settings_map, |
72 net::AlternateProtocolMap* alternate_protocol_map, | 73 net::AlternateProtocolMap* alternate_protocol_map, |
(...skipping 29 matching lines...) Expand all Loading... |
102 | 103 |
103 void ExpectCacheUpdate() { | 104 void ExpectCacheUpdate() { |
104 EXPECT_CALL(*http_server_props_manager_, UpdateCacheFromPrefsOnUI()) | 105 EXPECT_CALL(*http_server_props_manager_, UpdateCacheFromPrefsOnUI()) |
105 .WillOnce( | 106 .WillOnce( |
106 Invoke(http_server_props_manager_.get(), | 107 Invoke(http_server_props_manager_.get(), |
107 &TestingHttpServerPropertiesManager:: | 108 &TestingHttpServerPropertiesManager:: |
108 UpdateCacheFromPrefsOnUIConcrete)); | 109 UpdateCacheFromPrefsOnUIConcrete)); |
109 } | 110 } |
110 | 111 |
111 void ExpectPrefsUpdate() { | 112 void ExpectPrefsUpdate() { |
112 EXPECT_CALL(*http_server_props_manager_, UpdatePrefsFromCacheOnIO()) | 113 EXPECT_CALL(*http_server_props_manager_, UpdatePrefsFromCacheOnIO(_)) |
113 .WillOnce( | 114 .WillOnce( |
114 Invoke(http_server_props_manager_.get(), | 115 Invoke(http_server_props_manager_.get(), |
115 &TestingHttpServerPropertiesManager:: | 116 &TestingHttpServerPropertiesManager:: |
116 UpdatePrefsFromCacheOnIOConcrete)); | 117 UpdatePrefsFromCacheOnIOConcrete)); |
117 } | 118 } |
118 | 119 |
119 MessageLoop loop_; | 120 MessageLoop loop_; |
120 TestingPrefService pref_service_; | 121 TestingPrefService pref_service_; |
121 scoped_ptr<TestingHttpServerPropertiesManager> http_server_props_manager_; | 122 scoped_ptr<TestingHttpServerPropertiesManager> http_server_props_manager_; |
122 | 123 |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 net::SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second; | 347 net::SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second; |
347 EXPECT_EQ(net::SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first); | 348 EXPECT_EQ(net::SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first); |
348 EXPECT_EQ(value1, flags_and_value1_ret.second); | 349 EXPECT_EQ(value1, flags_and_value1_ret.second); |
349 | 350 |
350 EXPECT_EQ(net::PIPELINE_CAPABLE, | 351 EXPECT_EQ(net::PIPELINE_CAPABLE, |
351 http_server_props_manager_->GetPipelineCapability(known_pipeliner)); | 352 http_server_props_manager_->GetPipelineCapability(known_pipeliner)); |
352 | 353 |
353 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 354 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
354 | 355 |
355 ExpectPrefsUpdate(); | 356 ExpectPrefsUpdate(); |
| 357 |
356 // Clear http server data. | 358 // Clear http server data. |
357 http_server_props_manager_->Clear(); | 359 http_server_props_manager_->Clear(base::NewExpectedClosure()); |
358 | 360 |
359 // Run the task. | 361 // Run the task. |
360 loop_.RunAllPending(); | 362 loop_.RunAllPending(); |
361 | 363 |
362 EXPECT_FALSE(http_server_props_manager_->SupportsSpdy(spdy_server_mail)); | 364 EXPECT_FALSE(http_server_props_manager_->SupportsSpdy(spdy_server_mail)); |
363 EXPECT_FALSE( | 365 EXPECT_FALSE( |
364 http_server_props_manager_->HasAlternateProtocol(spdy_server_mail)); | 366 http_server_props_manager_->HasAlternateProtocol(spdy_server_mail)); |
365 | 367 |
366 const net::SettingsMap& settings_map2_ret = | 368 const net::SettingsMap& settings_map2_ret = |
367 http_server_props_manager_->GetSpdySettings(spdy_server_mail); | 369 http_server_props_manager_->GetSpdySettings(spdy_server_mail); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 http_server_props_manager_->ShutdownOnUIThread(); | 429 http_server_props_manager_->ShutdownOnUIThread(); |
428 // Run the task after shutdown, but before deletion. | 430 // Run the task after shutdown, but before deletion. |
429 loop_.RunAllPending(); | 431 loop_.RunAllPending(); |
430 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 432 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
431 http_server_props_manager_.reset(); | 433 http_server_props_manager_.reset(); |
432 loop_.RunAllPending(); | 434 loop_.RunAllPending(); |
433 } | 435 } |
434 | 436 |
435 TEST_F(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs2) { | 437 TEST_F(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs2) { |
436 // This posts a task to the UI thread. | 438 // This posts a task to the UI thread. |
437 http_server_props_manager_->UpdatePrefsFromCacheOnIOConcrete(); | 439 http_server_props_manager_->UpdatePrefsFromCacheOnIOConcrete(base::Closure()); |
438 // Shutdown comes before the task is executed. | 440 // Shutdown comes before the task is executed. |
439 http_server_props_manager_->ShutdownOnUIThread(); | 441 http_server_props_manager_->ShutdownOnUIThread(); |
440 // Run the task after shutdown, but before deletion. | 442 // Run the task after shutdown, but before deletion. |
441 loop_.RunAllPending(); | 443 loop_.RunAllPending(); |
442 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 444 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
443 http_server_props_manager_.reset(); | 445 http_server_props_manager_.reset(); |
444 loop_.RunAllPending(); | 446 loop_.RunAllPending(); |
445 } | 447 } |
446 | 448 |
447 } // namespace | 449 } // namespace |
448 | 450 |
449 } // namespace chrome_browser_net | 451 } // namespace chrome_browser_net |
OLD | NEW |