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 21 void set_logged_in_users(int users) { logged_in_users_ = users; } 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. 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