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

Unified Diff: ash/public/interfaces/session_controller.mojom

Issue 2545723003: ash: Add SessionController/Client mojo interfaces (Closed)
Patch Set: rebase, use ash_util::GetAshServiceName Created 4 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/public/interfaces/BUILD.gn ('k') | ash/public/interfaces/session_controller.typemap » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/public/interfaces/session_controller.mojom
diff --git a/ash/public/interfaces/session_controller.mojom b/ash/public/interfaces/session_controller.mojom
new file mode 100644
index 0000000000000000000000000000000000000000..3d8f6032d2ed5c351282f8fd5ffc2e67bbfbacf7
--- /dev/null
+++ b/ash/public/interfaces/session_controller.mojom
@@ -0,0 +1,143 @@
+// Copyright 2016 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.
+
+module ash.mojom;
+
+import "skia/public/interfaces/bitmap.mojom";
+
+// Matches session_manager::SessionState.
+enum SessionState {
+ // Default value, when session state hasn't been initialized yet.
+ UNKNOWN,
+
+ // Running out of box UI.
+ OOBE,
+
+ // Running login UI (primary user) but user sign in hasn't completed yet.
+ LOGIN_PRIMARY,
+
+ // Running login UI (primary or secondary user), user sign in has been
+ // completed but login UI hasn't been hidden yet. This means that either
+ // some session initialization is happening or user has to go through some
+ // UI flow on the same login UI like select avatar, agree to terms of
+ // service etc.
+ LOGGED_IN_NOT_ACTIVE,
+
+ // A user(s) has logged in *and* login UI is hidden i.e. user session is
+ // not blocked.
+ ACTIVE,
+
+ // The session screen is locked.
+ LOCKED,
+
+ // Same as SESSION_STATE_LOGIN_PRIMARY but for multi-profiles sign in i.e.
+ // when there's at least one user already active in the session.
+ LOGIN_SECONDARY,
+};
+
+// Matches user_manager::UserType.
+enum UserType {
+ // Regular user, has a user name and password.
+ REGULAR,
+
+ // Guest user, logs in without authentication.
+ GUEST,
+
+ // Public account user, logs in without authentication. Available only if
+ // enabled through policy.
+ PUBLIC_ACCOUNT,
+
+ // Supervised user, logs in only with local authentication.
+ SUPERVISED,
+
+ // Kiosk app robot, logs in without authentication.
+ KIOSK,
+
+ // Child user, with supervised options.
+ CHILD,
+
+ // Android app in kiosk mode, logs in without authentication.
+ ARC_KIOSK,
+};
+
+// Info about a user session in ash.
+struct UserSession {
+ // A user session id for the user session. It is generated by session manager
+ // (chrome) when a user session starts and never changes during the lifetime
+ // of the session manager. The number starts at 1 for the first user session
+ // and incremented by one for each subsequent user session.
+ uint32 session_id;
+
+ UserType type;
+ string serialized_account_id; // TODO(xiyuan): Use typemapping for AccountId.
+ string display_name;
+ string display_email;
+ skia.mojom.Bitmap avatar;
+};
+
+// Matches ash::AddUserSessionPolicy.
+enum AddUserSessionPolicy {
+ // Adding a user session is allowed.
+ ALLOWED,
+
+ // Disallowed due to primary user's policy.
+ ERROR_NOT_ALLOWED_PRIMARY_USER,
+
+ // Disallowed due to no eligible users.
+ ERROR_NO_ELIGIBLE_USERS,
+
+ // Disallowed due to reaching maximum supported user.
+ ERROR_MAXIMUM_USERS_REACHED,
+};
+
+// Info about an ash session.
+struct SessionInfo {
+ // Maximum possible number of logged in users in ash.
+ uint32 max_users;
+
+ // Whether the screen can be locked.
+ bool can_lock_screen;
+
+ // Whether the screen should be locked automatically before suspending.
+ bool should_lock_screen_automatically;
+
+ // Sets whether adding a user session to ash is allowed.
+ AddUserSessionPolicy add_user_session_policy;
+
+ // Current state of the ash session.
+ SessionState state;
+};
+
+// Interface for ash client (e.g. Chrome) to set session info for ash.
+interface SessionController {
+ // Sets the client interface.
+ SetClient(SessionControllerClient client);
+
+ // Sets the ash session info.
+ SetSessionInfo(SessionInfo info);
+
+ // Updates a user session. This is called when a user session is added or
+ // its meta data (e.g. name, avatar) is changed. There is no method to remove
+ // a user session because ash/chrome does not support that. All users are
+ // logged out at the same time.
+ UpdateUserSession(UserSession user_session);
+
+ // Sets the order of user sessions. The order is keyed by the session id.
+ // Currently, session manager set a LRU order with the first one being the
+ // active user session.
+ SetUserSessionOrder(array<uint32> user_session_ids);
+};
+
+// Interface for ash to request session service from its client (e.g. Chrome).
+interface SessionControllerClient {
+ // Requests to lock screen.
+ RequestLockScreen();
+
+ // Switch to the active user with |account_id| (if the user has already signed
+ // in).
+ SwitchActiveUser(string account_id);
+
+ // Switch the active user to the next or previous user.
+ CycleActiveUser(bool next_user);
+};
« no previous file with comments | « ash/public/interfaces/BUILD.gn ('k') | ash/public/interfaces/session_controller.typemap » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698