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 <vector> 9 10#include "ash/session/session_state_delegate.h" 11#include "base/basictypes.h" 12#include "base/compiler_specific.h" 13#include "ui/gfx/image/image_skia.h" 14 15namespace ash { 16namespace test { 17 18class MockUserInfo; 19 20class TestSessionStateDelegate : public SessionStateDelegate { 21 public: 22 TestSessionStateDelegate(); 23 virtual ~TestSessionStateDelegate(); 24 25 void set_logged_in_users(int users) { logged_in_users_ = users; } 26 void AddUser(const std::string user_id); 27 const user_manager::UserInfo* GetActiveUserInfo() const; 28 29 // SessionStateDelegate: 30 virtual content::BrowserContext* GetBrowserContextByIndex( 31 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 user_manager::UserInfo* GetUserInfo( 45 ash::MultiProfileIndex index) const OVERRIDE; 46 virtual const user_manager::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 bool IsMultiProfileAllowedByPrimaryUserPolicy() const OVERRIDE; 52 virtual void AddSessionStateObserver( 53 ash::SessionStateObserver* observer) OVERRIDE; 54 virtual void RemoveSessionStateObserver( 55 ash::SessionStateObserver* observer) OVERRIDE; 56 57 // TODO(oshima): Use state machine instead of using boolean variables. 58 59 // Updates the internal state that indicates whether a session is in progress 60 // and there is an active user. If |has_active_user| is |false|, 61 // |active_user_session_started_| is reset to |false| as well (see below for 62 // the difference between these two flags). 63 void SetHasActiveUser(bool has_active_user); 64 65 // Updates the internal state that indicates whether the session has been 66 // fully started for the active user. If |active_user_session_started| is 67 // |true|, |has_active_user_| is set to |true| as well (see below for the 68 // difference between these two flags). 69 void SetActiveUserSessionStarted(bool active_user_session_started); 70 71 // Updates the internal state that indicates whether the screen can be locked. 72 // Locking will only actually be allowed when this value is |true| and there 73 // is an active user. 74 void SetCanLockScreen(bool can_lock_screen); 75 76 // Updates |should_lock_screen_before_suspending_|. 77 void SetShouldLockScreenBeforeSuspending(bool should_lock); 78 79 // Updates the internal state that indicates whether user adding screen is 80 // running now. 81 void SetUserAddingScreenRunning(bool user_adding_screen_running); 82 83 // Setting non NULL image enables avatar icon. 84 void SetUserImage(const gfx::ImageSkia& user_image); 85 86 private: 87 // Whether a session is in progress and there is an active user. 88 bool has_active_user_; 89 90 // When a user becomes active, the profile and browser UI are not immediately 91 // available. Only once this flag becomes |true| is the browser startup 92 // complete and both profile and UI are fully available. 93 bool active_user_session_started_; 94 95 // Whether the screen can be locked. Locking will only actually be allowed 96 // when this is |true| and there is an active user. 97 bool can_lock_screen_; 98 99 // Return value for ShouldLockScreenBeforeSuspending(). 100 bool should_lock_screen_before_suspending_; 101 102 // Whether the screen is currently locked. 103 bool screen_locked_; 104 105 // Whether user addding screen is running now. 106 bool user_adding_screen_running_; 107 108 // The number of users logged in. 109 int logged_in_users_; 110 111 // The index for the activated user. 112 int active_user_index_; 113 114 std::vector<MockUserInfo*> user_list_; 115 116 DISALLOW_COPY_AND_ASSIGN(TestSessionStateDelegate); 117}; 118 119} // namespace test 120} // namespace ash 121 122#endif // ASH_TEST_TEST_SESSION_STATE_DELEGATE_H_ 123