Home | History | Annotate | Download | only in test
      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