• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 ASH_TEST_TEST_SESSION_STATE_DELEGATE_H_
6 #define ASH_TEST_TEST_SESSION_STATE_DELEGATE_H_
7 
8 #include "ash/session_state_delegate.h"
9 #include "base/basictypes.h"
10 #include "base/compiler_specific.h"
11 #include "ui/gfx/image/image_skia.h"
12 
13 namespace ash {
14 namespace test {
15 
16 class TestSessionStateDelegate : public SessionStateDelegate {
17  public:
18   TestSessionStateDelegate();
19   virtual ~TestSessionStateDelegate();
20 
set_logged_in_users(int users)21   void set_logged_in_users(int users) { logged_in_users_ = users; }
get_activated_user()22   const std::string& get_activated_user() { return activated_user_; }
23 
24   // SessionStateDelegate:
25   virtual int GetMaximumNumberOfLoggedInUsers() const OVERRIDE;
26   virtual int NumberOfLoggedInUsers() const OVERRIDE;
27   virtual bool IsActiveUserSessionStarted() const OVERRIDE;
28   virtual bool CanLockScreen() const OVERRIDE;
29   virtual bool IsScreenLocked() const OVERRIDE;
30   virtual bool ShouldLockScreenBeforeSuspending() const OVERRIDE;
31   virtual void LockScreen() OVERRIDE;
32   virtual void UnlockScreen() OVERRIDE;
33   virtual bool IsUserSessionBlocked() const OVERRIDE;
34   virtual const base::string16 GetUserDisplayName(
35       ash::MultiProfileIndex index) const OVERRIDE;
36   virtual const std::string GetUserEmail(
37       ash::MultiProfileIndex index) const OVERRIDE;
38   virtual const std::string GetUserID(
39       ash::MultiProfileIndex index) const OVERRIDE;
40   virtual const gfx::ImageSkia& GetUserImage(
41       ash::MultiProfileIndex index) const OVERRIDE;
42   virtual void GetLoggedInUsers(UserIdList* users) OVERRIDE;
43   virtual void SwitchActiveUser(const std::string& user_id) OVERRIDE;
44   virtual void CycleActiveUser(CycleUser cycle_user) OVERRIDE;
45   virtual void AddSessionStateObserver(
46       ash::SessionStateObserver* observer) OVERRIDE;
47   virtual void RemoveSessionStateObserver(
48       ash::SessionStateObserver* observer) OVERRIDE;
49   virtual bool TransferWindowToDesktopOfUser(
50       aura::Window* window,
51       ash::MultiProfileIndex index) OVERRIDE;
52 
53   // TODO(oshima): Use state machine instead of using boolean variables.
54 
55   // Updates the internal state that indicates whether a session is in progress
56   // and there is an active user. If |has_active_user| is |false|,
57   // |active_user_session_started_| is reset to |false| as well (see below for
58   // the difference between these two flags).
59   void SetHasActiveUser(bool has_active_user);
60 
61   // Updates the internal state that indicates whether the session has been
62   // fully started for the active user. If |active_user_session_started| is
63   // |true|, |has_active_user_| is set to |true| as well (see below for the
64   // difference between these two flags).
65   void SetActiveUserSessionStarted(bool active_user_session_started);
66 
67   // Updates the internal state that indicates whether the screen can be locked.
68   // Locking will only actually be allowed when this value is |true| and there
69   // is an active user.
70   void SetCanLockScreen(bool can_lock_screen);
71 
72   // Updates |should_lock_screen_before_suspending_|.
73   void SetShouldLockScreenBeforeSuspending(bool should_lock);
74 
75   // Updates the internal state that indicates whether user adding screen is
76   // running now.
77   void SetUserAddingScreenRunning(bool user_adding_screen_running);
78 
79   // Returns the number of calls to TransferWindowToDesktopOfUser.
num_transfer_to_desktop_of_user_calls()80   int num_transfer_to_desktop_of_user_calls() {
81     return num_transfer_to_desktop_of_user_calls_;
82   }
83 
84  private:
85   // Whether a session is in progress and there is an active user.
86   bool has_active_user_;
87 
88   // When a user becomes active, the profile and browser UI are not immediately
89   // available. Only once this flag becomes |true| is the browser startup
90   // complete and both profile and UI are fully available.
91   bool active_user_session_started_;
92 
93   // Whether the screen can be locked. Locking will only actually be allowed
94   // when this is |true| and there is an active user.
95   bool can_lock_screen_;
96 
97   // Return value for ShouldLockScreenBeforeSuspending().
98   bool should_lock_screen_before_suspending_;
99 
100   // Whether the screen is currently locked.
101   bool screen_locked_;
102 
103   // Whether user addding screen is running now.
104   bool user_adding_screen_running_;
105 
106   // The number of users logged in.
107   int logged_in_users_;
108 
109   // The activated user.
110   std::string activated_user_;
111 
112   // A test user image.
113   gfx::ImageSkia null_image_;
114 
115   // The number of calls which happened to TransferWindowToDesktopOfUser.
116   int num_transfer_to_desktop_of_user_calls_;
117 
118   DISALLOW_COPY_AND_ASSIGN(TestSessionStateDelegate);
119 };
120 
121 }  // namespace test
122 }  // namespace ash
123 
124 #endif  // ASH_TEST_TEST_SESSION_STATE_DELEGATE_H_
125