|  | // Copyright 2019 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef CHROME_BROWSER_UI_ASH_TEST_SESSION_CONTROLLER_H_ | 
|  | #define CHROME_BROWSER_UI_ASH_TEST_SESSION_CONTROLLER_H_ | 
|  |  | 
|  | #include <string> | 
|  | #include <vector> | 
|  |  | 
|  | #include "ash/public/cpp/session/session_controller.h" | 
|  | #include "base/macros.h" | 
|  | #include "base/observer_list.h" | 
|  | #include "base/optional.h" | 
|  |  | 
|  | // Test implementation of ash's SessionController interface. | 
|  | class TestSessionController : public ash::SessionController { | 
|  | public: | 
|  | TestSessionController(); | 
|  | ~TestSessionController() override; | 
|  |  | 
|  | const base::Optional<ash::SessionInfo>& last_session_info() const { | 
|  | return last_session_info_; | 
|  | } | 
|  |  | 
|  | base::TimeDelta last_session_length_limit() const { | 
|  | return last_session_length_limit_; | 
|  | } | 
|  |  | 
|  | base::Time last_session_start_time() const { | 
|  | return last_session_start_time_; | 
|  | } | 
|  |  | 
|  | const base::Optional<ash::UserSession>& last_user_session() const { | 
|  | return last_user_session_; | 
|  | } | 
|  |  | 
|  | int update_user_session_count() const { return update_user_session_count_; } | 
|  |  | 
|  | int lock_animation_complete_call_count() const { | 
|  | return lock_animation_complete_call_count_; | 
|  | } | 
|  |  | 
|  | int set_user_session_order_count() const { | 
|  | return set_user_session_order_count_; | 
|  | } | 
|  |  | 
|  | void SetScreenLocked(bool locked); | 
|  |  | 
|  | // ash::SessionController: | 
|  | void SetClient(ash::SessionControllerClient* client) override; | 
|  | void SetSessionInfo(const ash::SessionInfo& info) override; | 
|  | void UpdateUserSession(const ash::UserSession& user_session) override; | 
|  | void SetUserSessionOrder( | 
|  | const std::vector<uint32_t>& user_session_order) override; | 
|  | void PrepareForLock(PrepareForLockCallback callback) override; | 
|  | void StartLock(StartLockCallback callback) override; | 
|  | void NotifyChromeLockAnimationsComplete() override; | 
|  | void RunUnlockAnimation(RunUnlockAnimationCallback callback) override; | 
|  | void NotifyChromeTerminating() override; | 
|  | void SetSessionLengthLimit(base::TimeDelta length_limit, | 
|  | base::Time start_time) override; | 
|  | void CanSwitchActiveUser(CanSwitchActiveUserCallback callback) override; | 
|  | void ShowMultiprofilesIntroDialog( | 
|  | ShowMultiprofilesIntroDialogCallback callback) override; | 
|  | void ShowTeleportWarningDialog( | 
|  | ShowTeleportWarningDialogCallback callback) override; | 
|  | void ShowMultiprofilesSessionAbortedDialog( | 
|  | const std::string& user_email) override; | 
|  | void AddSessionActivationObserverForAccountId( | 
|  | const AccountId& account_id, | 
|  | ash::SessionActivationObserver* observer) override; | 
|  | void RemoveSessionActivationObserverForAccountId( | 
|  | const AccountId& account_id, | 
|  | ash::SessionActivationObserver* observer) override; | 
|  | void AddObserver(ash::SessionObserver* observer) override; | 
|  | void RemoveObserver(ash::SessionObserver* observer) override; | 
|  | bool IsScreenLocked() const override; | 
|  |  | 
|  | private: | 
|  | base::Optional<ash::SessionInfo> last_session_info_; | 
|  | base::Optional<ash::UserSession> last_user_session_; | 
|  | base::TimeDelta last_session_length_limit_; | 
|  | base::Time last_session_start_time_; | 
|  | int update_user_session_count_ = 0; | 
|  | int lock_animation_complete_call_count_ = 0; | 
|  | int set_user_session_order_count_ = 0; | 
|  | bool is_screen_locked_ = false; | 
|  | base::ObserverList<ash::SessionObserver> observers_; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(TestSessionController); | 
|  | }; | 
|  |  | 
|  | #endif  // CHROME_BROWSER_UI_ASH_TEST_SESSION_CONTROLLER_H_ |