Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(353)

Side by Side Diff: ash/session/session_controller.h

Issue 2734733002: Revert "chromeos: Move files in //ash/common to //ash, part 3" (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ash/screen_util_unittest.cc ('k') | ash/session/session_controller.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 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_SESSION_SESSION_CONTROLLER_H_
6 #define ASH_SESSION_SESSION_CONTROLLER_H_
7
8 #include <stdint.h>
9
10 #include <vector>
11
12 #include "ash/ash_export.h"
13 #include "ash/public/cpp/session_types.h"
14 #include "ash/public/interfaces/session_controller.mojom.h"
15 #include "base/macros.h"
16 #include "base/observer_list.h"
17 #include "mojo/public/cpp/bindings/binding_set.h"
18
19 class AccountId;
20
21 namespace ash {
22
23 class SessionStateObserver;
24
25 // Implements mojom::SessionController to cache session related info such as
26 // session state, meta data about user sessions to support synchronous
27 // queries for ash. It is targeted as a replacement for SessionStateDelegate.
28 class ASH_EXPORT SessionController
29 : NON_EXPORTED_BASE(public mojom::SessionController) {
30 public:
31 SessionController();
32 ~SessionController() override;
33
34 // Binds the mojom::SessionControllerRequest to this object.
35 void BindRequest(mojom::SessionControllerRequest request);
36
37 // Returns the maximum possible number of logged in users.
38 int GetMaximumNumberOfLoggedInUsers() const;
39
40 // Returns the number of signed in users. If 0 is returned, there is either
41 // no session in progress or no active user.
42 int NumberOfLoggedInUsers() const;
43
44 // Gets the policy of adding a user session to ash.
45 AddUserSessionPolicy GetAddUserPolicy() const;
46
47 // Returns |true| if the session has been fully started for the active user.
48 // When a user becomes active, the profile and browser UI are not immediately
49 // available. Only once this method starts returning |true| is the browser
50 // startup complete and both profile and UI are fully available.
51 bool IsActiveUserSessionStarted() const;
52
53 // Returns true if the screen can be locked.
54 bool CanLockScreen() const;
55
56 // Returns true if the screen is currently locked.
57 bool IsScreenLocked() const;
58
59 // Returns true if the screen should be locked automatically when the screen
60 // is turned off or the system is suspended.
61 bool ShouldLockScreenAutomatically() const;
62
63 // Returns |true| if user session blocked by some overlying UI. It can be
64 // login screen, lock screen or screen for adding users into multi-profile
65 // session.
66 bool IsUserSessionBlocked() const;
67
68 // Gets the ash session state.
69 session_manager::SessionState GetSessionState() const;
70
71 // Gets the user sessions in LRU order with the active session being first.
72 const std::vector<mojom::UserSessionPtr>& GetUserSessions() const;
73
74 // Locks the screen. The locking happens asynchronously.
75 void LockScreen();
76
77 // Switches to another active user with |account_id| (if that user has
78 // already signed in).
79 void SwitchActiveUser(const AccountId& account_id);
80
81 // Switches the active user to the next or previous user, with the same
82 // ordering as user sessions are created.
83 void CycleActiveUser(CycleUserDirection direction);
84
85 void AddSessionStateObserver(SessionStateObserver* observer);
86 void RemoveSessionStateObserver(SessionStateObserver* observer);
87
88 // mojom::SessionController
89 void SetClient(mojom::SessionControllerClientPtr client) override;
90 void SetSessionInfo(mojom::SessionInfoPtr info) override;
91 void UpdateUserSession(mojom::UserSessionPtr user_session) override;
92 void SetUserSessionOrder(
93 const std::vector<uint32_t>& user_session_order) override;
94
95 private:
96 void SetSessionState(session_manager::SessionState state);
97 void AddUserSession(mojom::UserSessionPtr user_session);
98
99 // Bindings for mojom::SessionController interface.
100 mojo::BindingSet<mojom::SessionController> bindings_;
101
102 // Client interface to session manager code (chrome).
103 mojom::SessionControllerClientPtr client_;
104
105 // Cached session info.
106 bool can_lock_ = false;
107 bool should_lock_screen_automatically_ = false;
108 AddUserSessionPolicy add_user_session_policy_ = AddUserSessionPolicy::ALLOWED;
109 session_manager::SessionState state_ = session_manager::SessionState::UNKNOWN;
110
111 // Cached user session info sorted by the order from SetUserSessionOrder.
112 // Currently the session manager code (chrome) sets a LRU order with the
113 // active session being the first.
114 std::vector<mojom::UserSessionPtr> user_sessions_;
115
116 // The user session id of the current active user session. User session id
117 // is managed by session manager code, starting at 1. 0u is an invalid id
118 // to detect first active user session.
119 uint32_t active_session_id_ = 0u;
120
121 base::ObserverList<ash::SessionStateObserver> observers_;
122
123 DISALLOW_COPY_AND_ASSIGN(SessionController);
124 };
125
126 } // namespace ash
127
128 #endif // ASH_SESSION_SESSION_CONTROLLER_H_
OLDNEW
« no previous file with comments | « ash/screen_util_unittest.cc ('k') | ash/session/session_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698