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