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 void LockScreen() OVERRIDE; 31 virtual void UnlockScreen() OVERRIDE; 32 virtual bool IsUserSessionBlocked() const OVERRIDE; 33 virtual const base::string16 GetUserDisplayName( 34 ash::MultiProfileIndex index) const OVERRIDE; 35 virtual const std::string GetUserEmail( 36 ash::MultiProfileIndex index) const OVERRIDE; 37 virtual const gfx::ImageSkia& GetUserImage( 38 ash::MultiProfileIndex index) const OVERRIDE; 39 virtual void GetLoggedInUsers(UserIdList* users) OVERRIDE; 40 virtual void SwitchActiveUser(const std::string& email) OVERRIDE; 41 virtual void AddSessionStateObserver( 42 ash::SessionStateObserver* observer) OVERRIDE; 43 virtual void RemoveSessionStateObserver( 44 ash::SessionStateObserver* observer) OVERRIDE; 45 46 // TODO(oshima): Use state machine instead of using boolean variables. 47 48 // Updates the internal state that indicates whether a session is in progress 49 // and there is an active user. If |has_active_user| is |false|, 50 // |active_user_session_started_| is reset to |false| as well (see below for 51 // the difference between these two flags). 52 void SetHasActiveUser(bool has_active_user); 53 54 // Updates the internal state that indicates whether the session has been 55 // fully started for the active user. If |active_user_session_started| is 56 // |true|, |has_active_user_| is set to |true| as well (see below for the 57 // difference between these two flags). 58 void SetActiveUserSessionStarted(bool active_user_session_started); 59 60 // Updates the internal state that indicates whether the screen can be locked. 61 // Locking will only actually be allowed when this value is |true| and there 62 // is an active user. 63 void SetCanLockScreen(bool can_lock_screen); 64 65 // Updates the internal state that indicates whether user adding screen is 66 // running now. 67 void SetUserAddingScreenRunning(bool user_adding_screen_running); 68 69 private: 70 // Whether a session is in progress and there is an active user. 71 bool has_active_user_; 72 73 // When a user becomes active, the profile and browser UI are not immediately 74 // available. Only once this flag becomes |true| is the browser startup 75 // complete and both profile and UI are fully available. 76 bool active_user_session_started_; 77 78 // Whether the screen can be locked. Locking will only actually be allowed 79 // when this is |true| and there is an active user. 80 bool can_lock_screen_; 81 82 // Whether the screen is currently locked. 83 bool screen_locked_; 84 85 // Whether user addding screen is running now. 86 bool user_adding_screen_running_; 87 88 // The number of users logged in. 89 int logged_in_users_; 90 91 // The activated user. 92 std::string activated_user_; 93 94 // A test user image. 95 gfx::ImageSkia null_image_; 96 97 DISALLOW_COPY_AND_ASSIGN(TestSessionStateDelegate); 98 }; 99 100 } // namespace test 101 } // namespace ash 102 103 #endif // ASH_TEST_TEST_SESSION_STATE_DELEGATE_H_ 104