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/chromeos/settings/device_settings_test_helper.h" | 5 #include "chrome/browser/chromeos/settings/device_settings_test_helper.h" |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
9 #include "base/threading/sequenced_worker_pool.h" | 9 #include "base/threading/sequenced_worker_pool.h" |
10 #include "chrome/browser/chromeos/ownership/owner_settings_service.h" | 10 #include "chrome/browser/chromeos/ownership/owner_settings_service.h" |
11 #include "chrome/browser/chromeos/ownership/owner_settings_service_factory.h" | 11 #include "chrome/browser/chromeos/ownership/owner_settings_service_factory.h" |
12 #include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h" | 12 #include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h" |
13 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 13 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
14 #include "chrome/browser/chromeos/settings/device_settings_service.h" | 14 #include "chrome/browser/chromeos/settings/device_settings_service.h" |
15 #include "chrome/test/base/testing_browser_process.h" | 15 #include "chrome/test/base/testing_browser_process.h" |
16 #include "chrome/test/base/testing_profile.h" | 16 #include "chrome/test/base/testing_profile.h" |
17 #include "chromeos/dbus/dbus_thread_manager.h" | 17 #include "chromeos/dbus/dbus_thread_manager.h" |
18 #include "components/ownership/mock_owner_key_util.h" | 18 #include "components/ownership/mock_owner_key_util.h" |
19 #include "content/public/browser/browser_thread.h" | 19 #include "content/public/browser/browser_thread.h" |
| 20 #include "content/public/test/test_utils.h" |
20 | 21 |
21 namespace chromeos { | 22 namespace chromeos { |
22 | 23 |
23 DeviceSettingsTestHelper::DeviceSettingsTestHelper() {} | 24 DeviceSettingsTestHelper::DeviceSettingsTestHelper() {} |
24 | 25 |
25 DeviceSettingsTestHelper::~DeviceSettingsTestHelper() {} | 26 DeviceSettingsTestHelper::~DeviceSettingsTestHelper() {} |
26 | 27 |
27 void DeviceSettingsTestHelper::FlushLoops() { | |
28 // DeviceSettingsService may trigger operations that hop back and forth | |
29 // between the message loop and the blocking pool. 2 iterations are currently | |
30 // sufficient (key loading, signing). | |
31 for (int i = 0; i < 2; ++i) { | |
32 base::MessageLoop::current()->RunUntilIdle(); | |
33 content::BrowserThread::GetBlockingPool()->FlushForTesting(); | |
34 } | |
35 base::MessageLoop::current()->RunUntilIdle(); | |
36 } | |
37 | |
38 void DeviceSettingsTestHelper::FlushStore() { | 28 void DeviceSettingsTestHelper::FlushStore() { |
39 std::vector<StorePolicyCallback> callbacks; | 29 std::vector<StorePolicyCallback> callbacks; |
40 callbacks.swap(device_policy_.store_callbacks_); | 30 callbacks.swap(device_policy_.store_callbacks_); |
41 for (std::vector<StorePolicyCallback>::iterator cb(callbacks.begin()); | 31 for (std::vector<StorePolicyCallback>::iterator cb(callbacks.begin()); |
42 cb != callbacks.end(); ++cb) { | 32 cb != callbacks.end(); ++cb) { |
43 cb->Run(device_policy_.store_result_); | 33 cb->Run(device_policy_.store_result_); |
44 } | 34 } |
45 | 35 |
46 std::map<std::string, PolicyState>::iterator device_local_account_state; | 36 std::map<std::string, PolicyState>::iterator device_local_account_state; |
47 for (device_local_account_state = device_local_account_policy_.begin(); | 37 for (device_local_account_state = device_local_account_policy_.begin(); |
(...skipping 23 matching lines...) Expand all Loading... |
71 callbacks.swap(device_local_account_state->second.retrieve_callbacks_); | 61 callbacks.swap(device_local_account_state->second.retrieve_callbacks_); |
72 for (std::vector<RetrievePolicyCallback>::iterator cb(callbacks.begin()); | 62 for (std::vector<RetrievePolicyCallback>::iterator cb(callbacks.begin()); |
73 cb != callbacks.end(); ++cb) { | 63 cb != callbacks.end(); ++cb) { |
74 cb->Run(device_local_account_state->second.policy_blob_); | 64 cb->Run(device_local_account_state->second.policy_blob_); |
75 } | 65 } |
76 } | 66 } |
77 } | 67 } |
78 | 68 |
79 void DeviceSettingsTestHelper::Flush() { | 69 void DeviceSettingsTestHelper::Flush() { |
80 do { | 70 do { |
81 FlushLoops(); | 71 content::RunAllBlockingPoolTasksUntilIdle(); |
82 FlushStore(); | 72 FlushStore(); |
83 FlushLoops(); | 73 content::RunAllBlockingPoolTasksUntilIdle(); |
84 FlushRetrieve(); | 74 FlushRetrieve(); |
85 FlushLoops(); | 75 content::RunAllBlockingPoolTasksUntilIdle(); |
86 } while (HasPendingOperations()); | 76 } while (HasPendingOperations()); |
87 } | 77 } |
88 | 78 |
89 bool DeviceSettingsTestHelper::HasPendingOperations() const { | 79 bool DeviceSettingsTestHelper::HasPendingOperations() const { |
90 if (device_policy_.HasPendingOperations()) | 80 if (device_policy_.HasPendingOperations()) |
91 return true; | 81 return true; |
92 | 82 |
93 std::map<std::string, PolicyState>::const_iterator device_local_account_state; | 83 std::map<std::string, PolicyState>::const_iterator device_local_account_state; |
94 for (device_local_account_state = device_local_account_policy_.begin(); | 84 for (device_local_account_state = device_local_account_policy_.begin(); |
95 device_local_account_state != device_local_account_policy_.end(); | 85 device_local_account_state != device_local_account_policy_.end(); |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 profile_.get()); | 250 profile_.get()); |
261 } | 251 } |
262 OwnerSettingsService* service = | 252 OwnerSettingsService* service = |
263 OwnerSettingsServiceFactory::GetForProfile(profile_.get()); | 253 OwnerSettingsServiceFactory::GetForProfile(profile_.get()); |
264 CHECK(service); | 254 CHECK(service); |
265 if (tpm_is_ready) | 255 if (tpm_is_ready) |
266 service->OnTPMTokenReady(); | 256 service->OnTPMTokenReady(); |
267 } | 257 } |
268 | 258 |
269 } // namespace chromeos | 259 } // namespace chromeos |
OLD | NEW |