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.
5 #include "chrome/browser/chromeos/login/user_manager.h"
7 #include "base/command_line.h"
8 #include "chrome/browser/chromeos/login/user_manager_impl.h"
9 #include "chrome/common/chrome_switches.h"
14 const char UserManager::kStubUser[] = "stub-user@example.com";
17 const char UserManager::kSignInUser[] = "sign-in-user-id";
20 // Should match cros constant in platform/libchromeos/chromeos/cryptohome.h
21 const char UserManager::kGuestUserName[] = "$guest";
24 const char UserManager::kLocallyManagedUserDomain[] =
25 "locally-managed.localhost";
29 const char UserManager::kRetailModeUserName[] = "demouser@";
30 static UserManager* g_user_manager = NULL;
32 UserManager::Observer::~Observer() {
35 void UserManager::Observer::LocalStateChanged(UserManager* user_manager) {
38 void UserManager::UserSessionStateObserver::ActiveUserChanged(
39 const User* active_user) {
42 void UserManager::UserSessionStateObserver::UserAddedToSession(
43 const User* active_user) {
46 void UserManager::UserSessionStateObserver::ActiveUserHashChanged(
47 const std::string& hash) {
50 void UserManager::UserSessionStateObserver::
51 PendingUserSessionsRestoreFinished() {
54 UserManager::UserSessionStateObserver::~UserSessionStateObserver() {
57 UserManager::UserAccountData::UserAccountData(const base::string16& display_name,
58 const base::string16& given_name,
59 const std::string& locale)
60 : display_name_(display_name),
61 given_name_(given_name),
65 UserManager::UserAccountData::~UserAccountData() {}
68 void UserManager::Initialize() {
69 CHECK(!g_user_manager);
70 g_user_manager = new UserManagerImpl();
74 bool UserManager::IsInitialized() {
75 return g_user_manager;
78 void UserManager::Destroy() {
79 DCHECK(g_user_manager);
80 delete g_user_manager;
81 g_user_manager = NULL;
85 UserManager* UserManager::Get() {
86 CHECK(g_user_manager);
87 return g_user_manager;
91 bool UserManager::IsMultipleProfilesAllowed() {
92 return CommandLine::ForCurrentProcess()->HasSwitch(
93 ::switches::kMultiProfiles);
96 UserManager::~UserManager() {
100 UserManager* UserManager::SetForTesting(UserManager* user_manager) {
101 UserManager* previous_user_manager = g_user_manager;
102 g_user_manager = user_manager;
103 return previous_user_manager;
106 ScopedUserManagerEnabler::ScopedUserManagerEnabler(UserManager* user_manager)
107 : previous_user_manager_(UserManager::SetForTesting(user_manager)) {
110 ScopedUserManagerEnabler::~ScopedUserManagerEnabler() {
111 UserManager::Get()->Shutdown();
112 UserManager::Destroy();
113 UserManager::SetForTesting(previous_user_manager_);
116 ScopedTestUserManager::ScopedTestUserManager() {
117 UserManager::Initialize();
120 ScopedTestUserManager::~ScopedTestUserManager() {
121 UserManager::Get()->Shutdown();
122 UserManager::Destroy();
125 } // namespace chromeos