session_state_delegate_chromeos.h revision 5c02ac1a9c1b504631c0a3d2b6e737b5d738bae1
1// Copyright (c) 2013 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#ifndef CHROME_BROWSER_UI_ASH_SESSION_STATE_DELEGATE_CHROMEOS_H_ 6#define CHROME_BROWSER_UI_ASH_SESSION_STATE_DELEGATE_CHROMEOS_H_ 7 8#include "ash/session/session_state_delegate.h" 9#include "base/basictypes.h" 10#include "base/compiler_specific.h" 11#include "base/observer_list.h" 12#include "chrome/browser/chromeos/login/user_adding_screen.h" 13#include "chrome/browser/chromeos/login/user_manager.h" 14#include "chromeos/login/login_state.h" 15 16namespace ash { 17class SessionStateObserver; 18} // namespace ash 19 20class SessionStateDelegateChromeos 21 : public ash::SessionStateDelegate, 22 public chromeos::LoginState::Observer, 23 public chromeos::UserManager::UserSessionStateObserver, 24 public chromeos::UserAddingScreen::Observer { 25 public: 26 SessionStateDelegateChromeos(); 27 virtual ~SessionStateDelegateChromeos(); 28 29 // ash::SessionStateDelegate: 30 virtual content::BrowserContext* GetBrowserContextByIndex( 31 ash::MultiProfileIndex index) OVERRIDE; 32 virtual content::BrowserContext* GetBrowserContextForWindow( 33 aura::Window* window) OVERRIDE; 34 virtual int GetMaximumNumberOfLoggedInUsers() const OVERRIDE; 35 virtual int NumberOfLoggedInUsers() const OVERRIDE; 36 virtual bool IsActiveUserSessionStarted() const OVERRIDE; 37 virtual bool CanLockScreen() const OVERRIDE; 38 virtual bool IsScreenLocked() const OVERRIDE; 39 virtual bool ShouldLockScreenBeforeSuspending() const OVERRIDE; 40 virtual void LockScreen() OVERRIDE; 41 virtual void UnlockScreen() OVERRIDE; 42 virtual bool IsUserSessionBlocked() const OVERRIDE; 43 virtual SessionState GetSessionState() const OVERRIDE; 44 virtual const ash::UserInfo* GetUserInfo( 45 ash::MultiProfileIndex index) const OVERRIDE; 46 virtual const ash::UserInfo* GetUserInfo( 47 content::BrowserContext* context) const OVERRIDE; 48 virtual bool ShouldShowAvatar(aura::Window* window) const OVERRIDE; 49 virtual void SwitchActiveUser(const std::string& user_id) OVERRIDE; 50 virtual void CycleActiveUser(CycleUser cycle_user) OVERRIDE; 51 virtual void AddSessionStateObserver( 52 ash::SessionStateObserver* observer) OVERRIDE; 53 virtual void RemoveSessionStateObserver( 54 ash::SessionStateObserver* observer) OVERRIDE; 55 56 // chromeos::LoginState::Observer overrides. 57 virtual void LoggedInStateChanged() OVERRIDE; 58 59 // chromeos::UserManager::UserSessionStateObserver: 60 virtual void ActiveUserChanged(const chromeos::User* active_user) OVERRIDE; 61 virtual void UserAddedToSession(const chromeos::User* added_user) OVERRIDE; 62 63 // chromeos::UserAddingScreen::Observer: 64 virtual void OnUserAddingStarted() OVERRIDE; 65 virtual void OnUserAddingFinished() OVERRIDE; 66 67 private: 68 // Sets session state to |new_state|. 69 // If |force| is true then |new_state| is set even if existing session 70 // state is the same (used for explicit initialization). 71 void SetSessionState(SessionState new_state, bool force); 72 73 // Notify observers about session state change. 74 void NotifySessionStateChanged(); 75 76 // List of observers is only used on Chrome OS for now. 77 ObserverList<ash::SessionStateObserver> session_state_observer_list_; 78 79 // Session state (e.g. login screen vs. user session). 80 SessionState session_state_; 81 82 DISALLOW_COPY_AND_ASSIGN(SessionStateDelegateChromeos); 83}; 84 85#endif // CHROME_BROWSER_UI_ASH_SESSION_STATE_DELEGATE_CHROMEOS_H_ 86