#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/string_util.h"
+#include "chrome/browser/chromeos/login/users/fake_user_manager.h"
+#include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h"
#include "chrome/browser/chromeos/policy/device_policy_builder.h"
#include "chrome/browser/chromeos/settings/device_settings_service.h"
#include "chrome/browser/chromeos/settings/device_settings_test_helper.h"
-#include "chrome/browser/chromeos/settings/mock_owner_key_util.h"
#include "chromeos/dbus/session_manager_client.h"
-#include "content/public/test/test_browser_thread.h"
+#include "components/ownership/mock_owner_key_util.h"
+#include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gtest/include/gtest/gtest.h"
+class TestingProfile;
+
namespace chromeos {
+class DBusThreadManagerSetter;
+
// A helper class for tests mocking out session_manager's device settings
// interface. The pattern is to initialize DeviceSettingsService with the helper
// for the SessionManagerClient pointer. The helper records calls made by
DeviceSettingsTestHelper();
virtual ~DeviceSettingsTestHelper();
- // Flushes operations on the current message loop and the blocking pool.
- void FlushLoops();
-
// Runs all pending store callbacks.
void FlushStore();
const std::map<std::string, PolicyState>::const_iterator entry =
device_local_account_policy_.find(id);
return entry == device_local_account_policy_.end() ?
- EmptyString() : entry->second.policy_blob_;
+ base::EmptyString() : entry->second.policy_blob_;
}
void set_device_local_account_policy_blob(const std::string& id,
}
// SessionManagerClient:
- virtual void Init(dbus::Bus* bus) OVERRIDE;
- virtual void AddObserver(Observer* observer) OVERRIDE;
- virtual void RemoveObserver(Observer* observer) OVERRIDE;
- virtual bool HasObserver(Observer* observer) OVERRIDE;
- virtual void EmitLoginPromptReady() OVERRIDE;
- virtual void EmitLoginPromptVisible() OVERRIDE;
- virtual void RestartJob(int pid, const std::string& command_line) OVERRIDE;
- virtual void StartSession(const std::string& user_email) OVERRIDE;
- virtual void StopSession() OVERRIDE;
- virtual void StartDeviceWipe() OVERRIDE;
- virtual void RequestLockScreen() OVERRIDE;
- virtual void NotifyLockScreenShown() OVERRIDE;
- virtual void NotifyLockScreenDismissed() OVERRIDE;
+ virtual void Init(dbus::Bus* bus) override;
+ virtual void SetStubDelegate(SessionManagerClient::StubDelegate* delegate)
+ override;
+ virtual void AddObserver(Observer* observer) override;
+ virtual void RemoveObserver(Observer* observer) override;
+ virtual bool HasObserver(Observer* observer) override;
+ virtual void EmitLoginPromptVisible() override;
+ virtual void RestartJob(int pid, const std::string& command_line) override;
+ virtual void StartSession(const std::string& user_email) override;
+ virtual void StopSession() override;
+ virtual void NotifySupervisedUserCreationStarted() override;
+ virtual void NotifySupervisedUserCreationFinished() override;
+ virtual void StartDeviceWipe() override;
+ virtual void RequestLockScreen() override;
+ virtual void NotifyLockScreenShown() override;
+ virtual void NotifyLockScreenDismissed() override;
virtual void RetrieveActiveSessions(
- const ActiveSessionsCallback& callback) OVERRIDE;
+ const ActiveSessionsCallback& callback) override;
virtual void RetrieveDevicePolicy(
- const RetrievePolicyCallback& callback) OVERRIDE;
+ const RetrievePolicyCallback& callback) override;
virtual void RetrievePolicyForUser(
const std::string& username,
- const RetrievePolicyCallback& callback) OVERRIDE;
+ const RetrievePolicyCallback& callback) override;
virtual std::string BlockingRetrievePolicyForUser(
- const std::string& username) OVERRIDE;
+ const std::string& username) override;
virtual void RetrieveDeviceLocalAccountPolicy(
const std::string& account_id,
- const RetrievePolicyCallback& callback) OVERRIDE;
+ const RetrievePolicyCallback& callback) override;
virtual void StoreDevicePolicy(const std::string& policy_blob,
- const StorePolicyCallback& callback) OVERRIDE;
+ const StorePolicyCallback& callback) override;
virtual void StorePolicyForUser(const std::string& username,
const std::string& policy_blob,
- const std::string& policy_key,
- const StorePolicyCallback& callback) OVERRIDE;
+ const StorePolicyCallback& callback) override;
virtual void StoreDeviceLocalAccountPolicy(
const std::string& account_id,
const std::string& policy_blob,
- const StorePolicyCallback& callback) OVERRIDE;
+ const StorePolicyCallback& callback) override;
virtual void SetFlagsForUser(
const std::string& account_id,
- const std::vector<std::string>& flags) OVERRIDE;
+ const std::vector<std::string>& flags) override;
+ virtual void GetServerBackedStateKeys(
+ const StateKeysCallback& callback) override;
private:
struct PolicyState {
DeviceSettingsTestBase();
virtual ~DeviceSettingsTestBase();
- virtual void SetUp() OVERRIDE;
- virtual void TearDown() OVERRIDE;
+ virtual void SetUp() override;
+ virtual void TearDown() override;
// Flushes any pending device settings operations.
void FlushDeviceSettings();
// |device_settings_service_| and flushes the resulting load operation.
void ReloadDeviceSettings();
- base::MessageLoop loop_;
- content::TestBrowserThread ui_thread_;
- content::TestBrowserThread file_thread_;
+ void InitOwner(const std::string& user_id, bool tpm_is_ready);
+
+ content::TestBrowserThreadBundle thread_bundle_;
policy::DevicePolicyBuilder device_policy_;
DeviceSettingsTestHelper device_settings_test_helper_;
- scoped_refptr<MockOwnerKeyUtil> owner_key_util_;
+ // Note that FakeUserManager is used by ProfileHelper, which some of the
+ // tested classes depend on implicitly.
+ FakeUserManager* user_manager_;
+ ScopedUserManagerEnabler user_manager_enabler_;
+ scoped_refptr<ownership::MockOwnerKeyUtil> owner_key_util_;
// Local DeviceSettingsService instance for tests. Avoid using in combination
// with the global instance (DeviceSettingsService::Get()).
DeviceSettingsService device_settings_service_;
+ scoped_ptr<TestingProfile> profile_;
+
+ scoped_ptr<DBusThreadManagerSetter> dbus_setter_;
private:
DISALLOW_COPY_AND_ASSIGN(DeviceSettingsTestBase);