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
3// found in the LICENSE file.
4
5#include "chrome/browser/chromeos/login/user_manager.h"
6
7#include "base/logging.h"
8#include "chrome/browser/chromeos/login/user_manager_impl.h"
9
10namespace chromeos {
11
12// static
13const char UserManager::kStubUser[] = "stub-user@example.com";
14
15// static
16// Should match cros constant in platform/libchromeos/chromeos/cryptohome.h
17const char UserManager::kGuestUserName[] = "$guest";
18
19// static
20const char UserManager::kLocallyManagedUserDomain[] =
21    "locally-managed.localhost";
22
23
24// static
25const char UserManager::kRetailModeUserName[] = "demouser@";
26static UserManager* g_user_manager = NULL;
27
28UserManager::Observer::~Observer() {
29}
30
31void UserManager::Observer::LocalStateChanged(UserManager* user_manager) {
32}
33
34void UserManager::Observer::MergeSessionStateChanged(MergeSessionState state) {
35}
36
37void UserManager::UserSessionStateObserver::ActiveUserChanged(
38    const User* active_user) {
39}
40
41void UserManager::UserSessionStateObserver::ActiveUserHashChanged(
42    const std::string& hash) {
43}
44
45void UserManager::UserSessionStateObserver::
46PendingUserSessionsRestoreFinished() {
47}
48
49UserManager::UserSessionStateObserver::~UserSessionStateObserver() {
50}
51
52// static
53void UserManager::Initialize() {
54  CHECK(!g_user_manager);
55  g_user_manager = new UserManagerImpl();
56}
57
58// static
59bool UserManager::IsInitialized() {
60  return g_user_manager;
61}
62
63void UserManager::Destroy() {
64  DCHECK(g_user_manager);
65  delete g_user_manager;
66  g_user_manager = NULL;
67}
68
69// static
70UserManager* UserManager::Get() {
71  CHECK(g_user_manager);
72  return g_user_manager;
73}
74
75UserManager::~UserManager() {
76}
77
78// static
79UserManager* UserManager::SetForTesting(UserManager* user_manager) {
80  UserManager* previous_user_manager = g_user_manager;
81  g_user_manager = user_manager;
82  return previous_user_manager;
83}
84
85ScopedUserManagerEnabler::ScopedUserManagerEnabler(UserManager* user_manager)
86    : previous_user_manager_(UserManager::SetForTesting(user_manager)) {
87}
88
89ScopedUserManagerEnabler::~ScopedUserManagerEnabler() {
90  UserManager::Get()->Shutdown();
91  UserManager::Destroy();
92  UserManager::SetForTesting(previous_user_manager_);
93}
94
95ScopedTestUserManager::ScopedTestUserManager() {
96  UserManager::Initialize();
97}
98
99ScopedTestUserManager::~ScopedTestUserManager() {
100  UserManager::Get()->Shutdown();
101  UserManager::Destroy();
102}
103
104}  // namespace chromeos
105