15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/settings/device_settings_test_helper.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/run_loop.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/threading/sequenced_worker_pool.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos_factory.h" 12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/chromeos/profiles/profile_helper.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/settings/device_settings_service.h" 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/test/base/testing_browser_process.h" 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chromeos/dbus/dbus_thread_manager.h" 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/ownership/mock_owner_key_util.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/browser_thread.h" 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/test/test_utils.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DeviceSettingsTestHelper::DeviceSettingsTestHelper() {} 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DeviceSettingsTestHelper::~DeviceSettingsTestHelper() {} 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::FlushStore() { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<StorePolicyCallback> callbacks; 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) callbacks.swap(device_policy_.store_callbacks_); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (std::vector<StorePolicyCallback>::iterator cb(callbacks.begin()); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cb != callbacks.end(); ++cb) { 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cb->Run(device_policy_.store_result_); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::map<std::string, PolicyState>::iterator device_local_account_state; 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (device_local_account_state = device_local_account_policy_.begin(); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_local_account_state != device_local_account_policy_.end(); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ++device_local_account_state) { 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) callbacks.swap(device_local_account_state->second.store_callbacks_); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (std::vector<StorePolicyCallback>::iterator cb(callbacks.begin()); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cb != callbacks.end(); ++cb) { 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cb->Run(device_local_account_state->second.store_result_); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::FlushRetrieve() { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<RetrievePolicyCallback> callbacks; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) callbacks.swap(device_policy_.retrieve_callbacks_); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (std::vector<RetrievePolicyCallback>::iterator cb(callbacks.begin()); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cb != callbacks.end(); ++cb) { 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cb->Run(device_policy_.policy_blob_); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::map<std::string, PolicyState>::iterator device_local_account_state; 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (device_local_account_state = device_local_account_policy_.begin(); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_local_account_state != device_local_account_policy_.end(); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ++device_local_account_state) { 608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) std::vector<RetrievePolicyCallback> callbacks; 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) callbacks.swap(device_local_account_state->second.retrieve_callbacks_); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (std::vector<RetrievePolicyCallback>::iterator cb(callbacks.begin()); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cb != callbacks.end(); ++cb) { 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cb->Run(device_local_account_state->second.policy_blob_); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::Flush() { 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do { 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::RunAllBlockingPoolTasksUntilIdle(); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FlushStore(); 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::RunAllBlockingPoolTasksUntilIdle(); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FlushRetrieve(); 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::RunAllBlockingPoolTasksUntilIdle(); 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } while (HasPendingOperations()); 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool DeviceSettingsTestHelper::HasPendingOperations() const { 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (device_policy_.HasPendingOperations()) 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return true; 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::map<std::string, PolicyState>::const_iterator device_local_account_state; 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (device_local_account_state = device_local_account_policy_.begin(); 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_local_account_state != device_local_account_policy_.end(); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ++device_local_account_state) { 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (device_local_account_state->second.HasPendingOperations()) 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return true; 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 94424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)void DeviceSettingsTestHelper::Init(dbus::Bus* bus) {} 95424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 96a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void DeviceSettingsTestHelper::SetStubDelegate( 97a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SessionManagerClient::StubDelegate* delegate) {} 98a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::AddObserver(Observer* observer) {} 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::RemoveObserver(Observer* observer) {} 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool DeviceSettingsTestHelper::HasObserver(Observer* observer) { 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::EmitLoginPromptVisible() {} 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::RestartJob(int pid, 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& command_line) {} 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 112010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void DeviceSettingsTestHelper::StartSession(const std::string& user_email) {} 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::StopSession() {} 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::StartDeviceWipe() {} 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::RequestLockScreen() {} 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::NotifyLockScreenShown() {} 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::NotifyLockScreenDismissed() {} 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void DeviceSettingsTestHelper::RetrieveActiveSessions( 12590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const ActiveSessionsCallback& callback) {} 12690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::RetrieveDevicePolicy( 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const RetrievePolicyCallback& callback) { 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_policy_.retrieve_callbacks_.push_back(callback); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 132a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)void DeviceSettingsTestHelper::RetrievePolicyForUser( 133a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) const std::string& username, 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const RetrievePolicyCallback& callback) { 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 137bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochstd::string DeviceSettingsTestHelper::BlockingRetrievePolicyForUser( 138bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch const std::string& username) { 139bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return ""; 140bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 141bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DeviceSettingsTestHelper::RetrieveDeviceLocalAccountPolicy( 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& account_id, 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const RetrievePolicyCallback& callback) { 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_local_account_policy_[account_id].retrieve_callbacks_.push_back( 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) callback); 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeviceSettingsTestHelper::StoreDevicePolicy( 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& policy_blob, 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const StorePolicyCallback& callback) { 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_policy_.policy_blob_ = policy_blob; 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_policy_.store_callbacks_.push_back(callback); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 156a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)void DeviceSettingsTestHelper::StorePolicyForUser( 157a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) const std::string& username, 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& policy_blob, 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const StorePolicyCallback& callback) { 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DeviceSettingsTestHelper::StoreDeviceLocalAccountPolicy( 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& account_id, 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& policy_blob, 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const StorePolicyCallback& callback) { 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_local_account_policy_[account_id].policy_blob_ = policy_blob; 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_local_account_policy_[account_id].store_callbacks_.push_back(callback); 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)void DeviceSettingsTestHelper::SetFlagsForUser( 1717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const std::string& account_id, 1727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const std::vector<std::string>& flags) {} 1737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 174010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void DeviceSettingsTestHelper::GetServerBackedStateKeys( 175010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const StateKeysCallback& callback) {} 176010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DeviceSettingsTestHelper::PolicyState::PolicyState() 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : store_result_(true) {} 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DeviceSettingsTestHelper::PolicyState::~PolicyState() {} 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ScopedDeviceSettingsTestHelper::ScopedDeviceSettingsTestHelper() { 183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DeviceSettingsService::Initialize(); 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DeviceSettingsService::Get()->SetSessionManager( 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this, new ownership::MockOwnerKeyUtil()); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DeviceSettingsService::Get()->Load(); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Flush(); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ScopedDeviceSettingsTestHelper::~ScopedDeviceSettingsTestHelper() { 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Flush(); 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DeviceSettingsService::Get()->UnsetSessionManager(); 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DeviceSettingsService::Shutdown(); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DeviceSettingsTestBase::DeviceSettingsTestBase() 1976d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) : user_manager_(new FakeUserManager()), 198f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) user_manager_enabler_(user_manager_), 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci owner_key_util_(new ownership::MockOwnerKeyUtil()) { 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci OwnerSettingsServiceChromeOSFactory::GetInstance()->SetOwnerKeyUtilForTesting( 2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci owner_key_util_); 202a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DeviceSettingsTestBase::~DeviceSettingsTestBase() { 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::RunLoop().RunUntilIdle(); 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DeviceSettingsTestBase::SetUp() { 209a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // Initialize DBusThreadManager with a stub implementation. 2101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci dbus_setter_ = chromeos::DBusThreadManager::GetSetterForTesting(); 211a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 2126d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) base::RunLoop().RunUntilIdle(); 213a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_policy_.payload().mutable_metrics_enabled()->set_metrics_enabled( 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) false); 2162385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch owner_key_util_->SetPublicKeyFromPrivateKey(*device_policy_.GetSigningKey()); 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_policy_.Build(); 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); 219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) device_settings_service_.SetSessionManager(&device_settings_test_helper_, 220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) owner_key_util_); 2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci OwnerSettingsServiceChromeOS::SetDeviceSettingsServiceForTesting( 222f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) &device_settings_service_); 223f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) profile_.reset(new TestingProfile()); 2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DeviceSettingsTestBase::TearDown() { 2271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci OwnerSettingsServiceChromeOS::SetDeviceSettingsServiceForTesting(NULL); 2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FlushDeviceSettings(); 229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) device_settings_service_.UnsetSessionManager(); 230a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) DBusThreadManager::Shutdown(); 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DeviceSettingsTestBase::FlushDeviceSettings() { 2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_settings_test_helper_.Flush(); 2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DeviceSettingsTestBase::ReloadDeviceSettings() { 2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_settings_service_.OwnerKeySet(true); 2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FlushDeviceSettings(); 2402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void DeviceSettingsTestBase::InitOwner(const std::string& user_id, 243f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool tpm_is_ready) { 2445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const user_manager::User* user = user_manager_->FindUser(user_id); 245f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (!user) { 246f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) user = user_manager_->AddUser(user_id); 247f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) profile_->set_profile_name(user_id); 248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ProfileHelper::Get()->SetUserToProfileMappingForTesting(user, 250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch profile_.get()); 251f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 2521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci OwnerSettingsServiceChromeOS* service = 2531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci OwnerSettingsServiceChromeOSFactory::GetForProfile(profile_.get()); 254f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) CHECK(service); 255f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (tpm_is_ready) 2561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci service->OnTPMTokenReady(true /* token is enabled */); 257f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 258f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 260