blob: 0c10be0a755b916b2133985f02c0503b54fb341b [file] [log] [blame]
// 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.
#ifndef COMPONENTS_SESSION_MANAGER_SESSION_MANAGER_TYPES_H_
#define COMPONENTS_SESSION_MANAGER_SESSION_MANAGER_TYPES_H_
#include "components/account_id/account_id.h"
namespace session_manager {
// TODO(xiyuan): Get rid/consolidate with chromeos::LoggedInState.
enum class SessionState {
// Default value, when session state hasn't been initialized yet.
UNKNOWN = 0,
// Running out of box UI.
OOBE,
// Running login UI (primary user), including the post login steps such as
// selecting avatar, agreeing to terms of service etc.
LOGIN_PRIMARY,
// A transient state between LOGIN_PRIMARY/LOGIN_SECONDARY and ACTIVE to
// prepare user desktop environment (e.g. launching browser windows) while the
// login screen is still visible.
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,
};
// A type for session id.
using SessionId = int;
// Info about a user session.
struct Session {
SessionId id;
AccountId user_account_id;
};
// Limits the number of logged in users to 5. User-switcher UI was not designed
// around a large number of users. This also helps on memory-constrained
// devices. See b/64593342 for some additional context.
constexpr int kMaximumNumberOfUserSessions = 5;
} // namespace session_manager
#endif // COMPONENTS_SESSION_MANAGER_SESSION_MANAGER_TYPES_H_