Home | History | Annotate | Download | only in login
      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/command_line.h"
      8 #include "chrome/browser/chromeos/login/user_manager_impl.h"
      9 #include "chrome/common/chrome_switches.h"
     10 
     11 namespace chromeos {
     12 
     13 // static
     14 const char UserManager::kStubUser[] = "stub-user (at) example.com";
     15 
     16 // static
     17 // Should match cros constant in platform/libchromeos/chromeos/cryptohome.h
     18 const char UserManager::kGuestUserName[] = "$guest";
     19 
     20 // static
     21 const char UserManager::kLocallyManagedUserDomain[] =
     22     "locally-managed.localhost";
     23 
     24 
     25 // static
     26 const char UserManager::kRetailModeUserName[] = "demouser@";
     27 static UserManager* g_user_manager = NULL;
     28 
     29 UserManager::Observer::~Observer() {
     30 }
     31 
     32 void UserManager::Observer::LocalStateChanged(UserManager* user_manager) {
     33 }
     34 
     35 void UserManager::UserSessionStateObserver::ActiveUserChanged(
     36     const User* active_user) {
     37 }
     38 
     39 void UserManager::UserSessionStateObserver::UserAddedToSession(
     40     const User* active_user) {
     41 }
     42 
     43 void UserManager::UserSessionStateObserver::ActiveUserHashChanged(
     44     const std::string& hash) {
     45 }
     46 
     47 void UserManager::UserSessionStateObserver::
     48 PendingUserSessionsRestoreFinished() {
     49 }
     50 
     51 UserManager::UserSessionStateObserver::~UserSessionStateObserver() {
     52 }
     53 
     54 UserManager::UserAccountData::UserAccountData(const base::string16& display_name,
     55                                               const base::string16& given_name,
     56                                               const std::string& locale)
     57     : display_name_(display_name),
     58       given_name_(given_name),
     59       locale_(locale) {
     60 }
     61 
     62 UserManager::UserAccountData::~UserAccountData() {}
     63 
     64 // static
     65 void UserManager::Initialize() {
     66   CHECK(!g_user_manager);
     67   g_user_manager = new UserManagerImpl();
     68 }
     69 
     70 // static
     71 bool UserManager::IsInitialized() {
     72   return g_user_manager;
     73 }
     74 
     75 void UserManager::Destroy() {
     76   DCHECK(g_user_manager);
     77   delete g_user_manager;
     78   g_user_manager = NULL;
     79 }
     80 
     81 // static
     82 UserManager* UserManager::Get() {
     83   CHECK(g_user_manager);
     84   return g_user_manager;
     85 }
     86 
     87 // static
     88 bool UserManager::IsMultipleProfilesAllowed() {
     89   return CommandLine::ForCurrentProcess()->HasSwitch(
     90       ::switches::kMultiProfiles);
     91 }
     92 
     93 UserManager::~UserManager() {
     94 }
     95 
     96 // static
     97 UserManager* UserManager::SetForTesting(UserManager* user_manager) {
     98   UserManager* previous_user_manager = g_user_manager;
     99   g_user_manager = user_manager;
    100   return previous_user_manager;
    101 }
    102 
    103 ScopedUserManagerEnabler::ScopedUserManagerEnabler(UserManager* user_manager)
    104     : previous_user_manager_(UserManager::SetForTesting(user_manager)) {
    105 }
    106 
    107 ScopedUserManagerEnabler::~ScopedUserManagerEnabler() {
    108   UserManager::Get()->Shutdown();
    109   UserManager::Destroy();
    110   UserManager::SetForTesting(previous_user_manager_);
    111 }
    112 
    113 ScopedTestUserManager::ScopedTestUserManager() {
    114   UserManager::Initialize();
    115 }
    116 
    117 ScopedTestUserManager::~ScopedTestUserManager() {
    118   UserManager::Get()->Shutdown();
    119   UserManager::Destroy();
    120 }
    121 
    122 }  // namespace chromeos
    123