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

Side by Side Diff: chrome/browser/chromeos/login/session/user_session_manager.h

Issue 419293002: IME refactoring: ChromeOS introduce input methods State. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Unit test fixed. Re-sorted methods of StateImpl and IMM. Created 6 years, 4 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_USER_SESSION_MANAGER_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_USER_SESSION_MANAGER_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_USER_SESSION_MANAGER_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_USER_SESSION_MANAGER_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/memory/singleton.h" 11 #include "base/memory/singleton.h"
12 #include "base/memory/weak_ptr.h" 12 #include "base/memory/weak_ptr.h"
13 #include "base/observer_list.h" 13 #include "base/observer_list.h"
14 #include "chrome/browser/chromeos/base/locale_util.h" 14 #include "chrome/browser/chromeos/base/locale_util.h"
15 #include "chrome/browser/chromeos/login/signin/oauth2_login_manager.h" 15 #include "chrome/browser/chromeos/login/signin/oauth2_login_manager.h"
16 #include "chromeos/dbus/session_manager_client.h" 16 #include "chromeos/dbus/session_manager_client.h"
17 #include "chromeos/ime/input_method_manager.h"
17 #include "chromeos/login/auth/authenticator.h" 18 #include "chromeos/login/auth/authenticator.h"
18 #include "chromeos/login/auth/user_context.h" 19 #include "chromeos/login/auth/user_context.h"
19 #include "components/user_manager/user.h" 20 #include "components/user_manager/user.h"
21 #include "components/user_manager/user_manager.h"
20 #include "net/base/network_change_notifier.h" 22 #include "net/base/network_change_notifier.h"
21 23
22 class PrefRegistrySimple; 24 class PrefRegistrySimple;
23 class PrefService; 25 class PrefService;
24 class Profile; 26 class Profile;
25 27
28 namespace user_manager {
29
30 class User;
31
32 } // namespace user_manager
33
26 namespace chromeos { 34 namespace chromeos {
27 35
28 class UserSessionManagerDelegate { 36 class UserSessionManagerDelegate {
29 public: 37 public:
30 // Called after profile is loaded and prepared for the session. 38 // Called after profile is loaded and prepared for the session.
31 virtual void OnProfilePrepared(Profile* profile) = 0; 39 virtual void OnProfilePrepared(Profile* profile) = 0;
32 40
33 #if defined(ENABLE_RLZ) 41 #if defined(ENABLE_RLZ)
34 // Called after post-profile RLZ initialization. 42 // Called after post-profile RLZ initialization.
35 virtual void OnRlzInitialized(); 43 virtual void OnRlzInitialized();
(...skipping 15 matching lines...) Expand all
51 // load and initialize Profile (including custom Profile preferences), 59 // load and initialize Profile (including custom Profile preferences),
52 // mark user as logged in and notify observers, 60 // mark user as logged in and notify observers,
53 // initialize OAuth2 authentication session, 61 // initialize OAuth2 authentication session,
54 // initialize and launch user session based on the user type. 62 // initialize and launch user session based on the user type.
55 // Also supports restoring active user sessions after browser crash: 63 // Also supports restoring active user sessions after browser crash:
56 // load profile, restore OAuth authentication session etc. 64 // load profile, restore OAuth authentication session etc.
57 class UserSessionManager 65 class UserSessionManager
58 : public OAuth2LoginManager::Observer, 66 : public OAuth2LoginManager::Observer,
59 public net::NetworkChangeNotifier::ConnectionTypeObserver, 67 public net::NetworkChangeNotifier::ConnectionTypeObserver,
60 public base::SupportsWeakPtr<UserSessionManager>, 68 public base::SupportsWeakPtr<UserSessionManager>,
61 public UserSessionManagerDelegate { 69 public UserSessionManagerDelegate,
70 public user_manager::UserManager::UserSessionStateObserver {
62 public: 71 public:
63 // Returns UserSessionManager instance. 72 // Returns UserSessionManager instance.
64 static UserSessionManager* GetInstance(); 73 static UserSessionManager* GetInstance();
65 74
66 // Called when user is logged in to override base::DIR_HOME path. 75 // Called when user is logged in to override base::DIR_HOME path.
67 static void OverrideHomedir(); 76 static void OverrideHomedir();
68 77
69 // Registers session related preferences. 78 // Registers session related preferences.
70 static void RegisterPrefs(PrefRegistrySimple* registry); 79 static void RegisterPrefs(PrefRegistrySimple* registry);
71 80
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 // TODO(nkostylev): Drop these methods once LoginUtilsImpl::AttemptRestart() 114 // TODO(nkostylev): Drop these methods once LoginUtilsImpl::AttemptRestart()
106 // is migrated. 115 // is migrated.
107 OAuth2LoginManager::SessionRestoreStrategy GetSigninSessionRestoreStrategy(); 116 OAuth2LoginManager::SessionRestoreStrategy GetSigninSessionRestoreStrategy();
108 bool exit_after_session_restore() { return exit_after_session_restore_; } 117 bool exit_after_session_restore() { return exit_after_session_restore_; }
109 void set_exit_after_session_restore(bool value) { 118 void set_exit_after_session_restore(bool value) {
110 exit_after_session_restore_ = value; 119 exit_after_session_restore_ = value;
111 } 120 }
112 121
113 // Invoked when the user is logging in for the first time, or is logging in to 122 // Invoked when the user is logging in for the first time, or is logging in to
114 // an ephemeral session type, such as guest or a public session. 123 // an ephemeral session type, such as guest or a public session.
115 static void SetFirstLoginPrefs( 124 void SetFirstLoginPrefs(Profile* profile,
116 PrefService* prefs, 125 const std::string& public_session_locale,
117 const std::string& public_session_locale, 126 const std::string& public_session_input_method);
118 const std::string& public_session_input_method);
119 127
120 // Gets/sets Chrome OAuth client id and secret for kiosk app mode. The default 128 // Gets/sets Chrome OAuth client id and secret for kiosk app mode. The default
121 // values can be overridden with kiosk auth file. 129 // values can be overridden with kiosk auth file.
122 bool GetAppModeChromeClientOAuthInfo( 130 bool GetAppModeChromeClientOAuthInfo(
123 std::string* chrome_client_id, 131 std::string* chrome_client_id,
124 std::string* chrome_client_secret); 132 std::string* chrome_client_secret);
125 void SetAppModeChromeClientOAuthInfo( 133 void SetAppModeChromeClientOAuthInfo(
126 const std::string& chrome_client_id, 134 const std::string& chrome_client_id,
127 const std::string& chrome_client_secret); 135 const std::string& chrome_client_secret);
128 136
129 // Changes browser locale (selects best suitable locale from different 137 // Changes browser locale (selects best suitable locale from different
130 // user settings). Returns true if callback will be called. 138 // user settings). Returns true if callback will be called.
131 // Returns true if callback will be called. 139 // Returns true if callback will be called.
132 bool RespectLocalePreference( 140 bool RespectLocalePreference(
133 Profile* profile, 141 Profile* profile,
134 const user_manager::User* user, 142 const user_manager::User* user,
135 scoped_ptr<locale_util::SwitchLanguageCallback> callback) const; 143 scoped_ptr<locale_util::SwitchLanguageCallback> callback) const;
136 144
137 void AddSessionStateObserver(UserSessionStateObserver* observer); 145 void AddSessionStateObserver(chromeos::UserSessionStateObserver* observer);
138 void RemoveSessionStateObserver(UserSessionStateObserver* observer); 146 void RemoveSessionStateObserver(chromeos::UserSessionStateObserver* observer);
147
148 virtual void ActiveUserChanged(
149 const user_manager::User* active_user) OVERRIDE;
150
151 // Returns default IME state for user session.
152 scoped_refptr<input_method::InputMethodManager::State> GetDefaultIMEState(
153 Profile* profile);
139 154
140 private: 155 private:
141 friend struct DefaultSingletonTraits<UserSessionManager>; 156 friend struct DefaultSingletonTraits<UserSessionManager>;
142 157
143 typedef std::set<std::string> SigninSessionRestoreStateSet; 158 typedef std::set<std::string> SigninSessionRestoreStateSet;
144 159
145 UserSessionManager(); 160 UserSessionManager();
146 virtual ~UserSessionManager(); 161 virtual ~UserSessionManager();
147 162
148 // OAuth2LoginManager::Observer overrides: 163 // OAuth2LoginManager::Observer overrides:
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 // Active user session restoration related members. 248 // Active user session restoration related members.
234 249
235 // True is user sessions has been restored after crash. 250 // True is user sessions has been restored after crash.
236 // On a normal boot then login into user sessions this will be false. 251 // On a normal boot then login into user sessions this will be false.
237 bool user_sessions_restored_; 252 bool user_sessions_restored_;
238 253
239 // User sessions that have to be restored after browser crash. 254 // User sessions that have to be restored after browser crash.
240 // [user_id] > [user_id_hash] 255 // [user_id] > [user_id_hash]
241 SessionManagerClient::ActiveSessionsMap pending_user_sessions_; 256 SessionManagerClient::ActiveSessionsMap pending_user_sessions_;
242 257
243 ObserverList<UserSessionStateObserver> session_state_observer_list_; 258 ObserverList<chromeos::UserSessionStateObserver> session_state_observer_list_;
244 259
245 // OAuth2 session related members. 260 // OAuth2 session related members.
246 261
247 // True if we should restart chrome right after session restore. 262 // True if we should restart chrome right after session restore.
248 bool exit_after_session_restore_; 263 bool exit_after_session_restore_;
249 264
250 // Sesion restore strategy. 265 // Sesion restore strategy.
251 OAuth2LoginManager::SessionRestoreStrategy session_restore_strategy_; 266 OAuth2LoginManager::SessionRestoreStrategy session_restore_strategy_;
252 267
253 // OAuth2 refresh token for session restore. 268 // OAuth2 refresh token for session restore.
254 std::string oauth2_refresh_token_; 269 std::string oauth2_refresh_token_;
255 270
256 // Set of user_id for those users that we should restore authentication 271 // Set of user_id for those users that we should restore authentication
257 // session when notified about online state change. 272 // session when notified about online state change.
258 SigninSessionRestoreStateSet pending_signin_restore_sessions_; 273 SigninSessionRestoreStateSet pending_signin_restore_sessions_;
259 274
260 // Kiosk mode related members. 275 // Kiosk mode related members.
261 // Chrome oauth client id and secret - override values for kiosk mode. 276 // Chrome oauth client id and secret - override values for kiosk mode.
262 std::string chrome_client_id_; 277 std::string chrome_client_id_;
263 std::string chrome_client_secret_; 278 std::string chrome_client_secret_;
264 279
280 // Per-user-session Input Methods states.
281 std::map<Profile*, scoped_refptr<input_method::InputMethodManager::State> >
282 default_ime_states_;
283
265 DISALLOW_COPY_AND_ASSIGN(UserSessionManager); 284 DISALLOW_COPY_AND_ASSIGN(UserSessionManager);
266 }; 285 };
267 286
268 } // namespace chromeos 287 } // namespace chromeos
269 288
270 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_USER_SESSION_MANAGER_H_ 289 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_USER_SESSION_MANAGER_H_
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/lock/screen_locker.cc ('k') | chrome/browser/chromeos/login/session/user_session_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698