diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 17:15:12 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 17:15:12 +0000 |
commit | 6e50d42bdd5307d76a90fb398774d140f796eace (patch) | |
tree | d27fdbdaf6106a62fa45a48e0543eff70dde6ae4 /ash/session_state_delegate.h | |
parent | 3d48423a74668a7cfd71ba895a2c510ec85447b5 (diff) | |
download | chromium_src-6e50d42bdd5307d76a90fb398774d140f796eace.zip chromium_src-6e50d42bdd5307d76a90fb398774d140f796eace.tar.gz chromium_src-6e50d42bdd5307d76a90fb398774d140f796eace.tar.bz2 |
Revert 267158 "CleanUp: Introduce UserInfo. Move session_state s..."
> CleanUp: Introduce UserInfo. Move session_state stuff to ash/session.
>
> BUG=None
> R=nkostylev@chromium.org
> TBR=sky@chromium.org
>
> Review URL: https://codereview.chromium.org/253063002
TBR=oshima@chromium.org
Review URL: https://codereview.chromium.org/260783002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267250 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/session_state_delegate.h')
-rw-r--r-- | ash/session_state_delegate.h | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/ash/session_state_delegate.h b/ash/session_state_delegate.h new file mode 100644 index 0000000..dcbd7f9 --- /dev/null +++ b/ash/session_state_delegate.h @@ -0,0 +1,155 @@ +// Copyright (c) 2013 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 ASH_SESSION_STATE_DELEGATE_H_ +#define ASH_SESSION_STATE_DELEGATE_H_ + +#include <string> +#include <vector> + +#include "ash/ash_export.h" +#include "base/strings/string16.h" + +namespace aura { +class Window; +} // namespace aura + +namespace content { +class BrowserContext; +} + +namespace gfx { +class ImageSkia; +} // namespace gfx + +namespace ash { + +class SessionStateObserver; + +// The index for the multi-profile item to use. The list is always LRU sorted +// So that the index #0 is the currently active user. +typedef int MultiProfileIndex; + +// A list of user_id. +typedef std::vector<std::string> UserIdList; + +// Delegate for checking and modifying the session state. +// TODO(oshima): Replace MultiProfileIndex with BrowsreContext, bacause +// GetUserXXX are useful for non multi profile scenario in ash_shell. +class ASH_EXPORT SessionStateDelegate { + public: + // Defines the cycle direction for |CycleActiveUser|. + enum CycleUser { + CYCLE_TO_NEXT_USER = 0, // Cycle to the next user. + CYCLE_TO_PREVIOUS_USER, // Cycle to the previous user. + }; + + // Defines session state i.e. whether session is running or not and + // whether user session is blocked by things like multi-profile login. + enum SessionState { + // When primary user login UI is shown i.e. after boot or sign out, + // no active user session exists yet. + SESSION_STATE_LOGIN_PRIMARY = 0, + + // Inside user session (including lock screen), + // no login UI (primary or multi-profiles) is shown. + SESSION_STATE_ACTIVE, + + // When secondary user login UI is shown i.e. other users are + // already logged in and is currently adding another user to the session. + SESSION_STATE_LOGIN_SECONDARY, + }; + + virtual ~SessionStateDelegate() {}; + + // Returns the browser context for the user given by |index|. + virtual content::BrowserContext* GetBrowserContextByIndex( + MultiProfileIndex index) = 0; + + // Returns the browser context associated with the window. + virtual content::BrowserContext* GetBrowserContextForWindow( + aura::Window* window) = 0; + + // Returns the maximum possible number of logged in users. + virtual int GetMaximumNumberOfLoggedInUsers() const = 0; + + // Returns the number of signed in users. If 0 is returned, there is either + // no session in progress or no active user. + virtual int NumberOfLoggedInUsers() const = 0; + + // Returns |true| if the session has been fully started for the active user. + // When a user becomes active, the profile and browser UI are not immediately + // available. Only once this method starts returning |true| is the browser + // startup complete and both profile and UI are fully available. + virtual bool IsActiveUserSessionStarted() const = 0; + + // Returns true if the screen can be locked. + virtual bool CanLockScreen() const = 0; + + // Returns true if the screen is currently locked. + virtual bool IsScreenLocked() const = 0; + + // Returns true if the screen should be locked when the system is about to + // suspend. + virtual bool ShouldLockScreenBeforeSuspending() const = 0; + + // Locks the screen. The locking happens asynchronously. + virtual void LockScreen() = 0; + + // Unlocks the screen. + virtual void UnlockScreen() = 0; + + // Returns |true| if user session blocked by some overlying UI. It can be + // login screen, lock screen or screen for adding users into multi-profile + // session. + virtual bool IsUserSessionBlocked() const = 0; + + // Returns current session state. + virtual SessionState GetSessionState() const = 0; + + // Gets the displayed name for the user with the given |index|. + // Note that |index| can at maximum be |NumberOfLoggedInUsers() - 1|. + virtual const base::string16 GetUserDisplayName( + MultiProfileIndex index) const = 0; + + // Gets the given name of the user with |index|. An empty string can be + // returned if the given name of the user is unknown. + // Note that |index| can at maximum be |NumberOfLoggedInUsers() - 1|. + virtual const base::string16 GetUserGivenName( + MultiProfileIndex index) const = 0; + + // Gets the display email address for the user with the given |index|. + // The display email address might contains some periods in the email name + // as well as capitalized letters. For example: "Foo.Bar@mock.com". + // Note that |index| can at maximum be |NumberOfLoggedInUsers() - 1|. + virtual const std::string GetUserEmail(MultiProfileIndex index) const = 0; + + // Gets the user id (sanitized email address) for the user with the given + // |index|. The function would return something like "foobar@mock.com". + // Note that |index| can at maximum be |NumberOfLoggedInUsers() - 1|. + virtual const std::string GetUserID(MultiProfileIndex index) const = 0; + + // Gets the avatar image for the user associated with the |context|. + virtual const gfx::ImageSkia& GetUserImage( + content::BrowserContext* context) const = 0; + + // Whether or not the window's title should show the avatar. + virtual bool ShouldShowAvatar(aura::Window* window) = 0; + + // Switches to another active user with |user_id| + // (if that user has already signed in). + virtual void SwitchActiveUser(const std::string& user_id) = 0; + + // Switches the active user to the next or previous user, with the same + // ordering as GetLoggedInUsers. + virtual void CycleActiveUser(CycleUser cycle_user) = 0; + + // Adds or removes sessions state observer. + virtual void AddSessionStateObserver(SessionStateObserver* observer) = 0; + virtual void RemoveSessionStateObserver(SessionStateObserver* observer) = 0; +}; + +} // namespace ash + +#endif // ASH_SESSION_STATE_DELEGATE_H_ |