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 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