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

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

Issue 651843003: [cros-login-refactor] Move CompleteOffTheRecordLogin to UserSessionManager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comment Created 6 years, 2 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 #include "chrome/browser/chromeos/login/session/user_session_manager.h" 5 #include "chrome/browser/chromeos/login/session/user_session_manager.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/base_paths.h" 9 #include "base/base_paths.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/path_service.h" 13 #include "base/path_service.h"
14 #include "base/prefs/pref_member.h" 14 #include "base/prefs/pref_member.h"
15 #include "base/prefs/pref_registry_simple.h" 15 #include "base/prefs/pref_registry_simple.h"
16 #include "base/prefs/pref_service.h" 16 #include "base/prefs/pref_service.h"
17 #include "base/strings/string16.h" 17 #include "base/strings/string16.h"
18 #include "base/sys_info.h" 18 #include "base/sys_info.h"
19 #include "base/task_runner_util.h" 19 #include "base/task_runner_util.h"
20 #include "base/threading/worker_pool.h" 20 #include "base/threading/worker_pool.h"
21 #include "chrome/browser/about_flags.h"
21 #include "chrome/browser/app_mode/app_mode_utils.h" 22 #include "chrome/browser/app_mode/app_mode_utils.h"
22 #include "chrome/browser/browser_process.h" 23 #include "chrome/browser/browser_process.h"
23 #include "chrome/browser/browser_process_platform_part_chromeos.h" 24 #include "chrome/browser/browser_process_platform_part_chromeos.h"
24 #include "chrome/browser/chrome_notification_types.h" 25 #include "chrome/browser/chrome_notification_types.h"
25 #include "chrome/browser/chromeos/base/locale_util.h" 26 #include "chrome/browser/chromeos/base/locale_util.h"
26 #include "chrome/browser/chromeos/boot_times_loader.h" 27 #include "chrome/browser/chromeos/boot_times_loader.h"
27 #include "chrome/browser/chromeos/input_method/input_method_util.h" 28 #include "chrome/browser/chromeos/input_method/input_method_util.h"
29 #include "chrome/browser/chromeos/login/chrome_restart_request.h"
28 #include "chrome/browser/chromeos/login/demo_mode/demo_app_launcher.h" 30 #include "chrome/browser/chromeos/login/demo_mode/demo_app_launcher.h"
29 #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.h" 31 #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.h"
30 #include "chrome/browser/chromeos/login/profile_auth_data.h" 32 #include "chrome/browser/chromeos/login/profile_auth_data.h"
31 #include "chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.h" 33 #include "chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.h"
32 #include "chrome/browser/chromeos/login/saml/saml_offline_signin_limiter_factory .h" 34 #include "chrome/browser/chromeos/login/saml/saml_offline_signin_limiter_factory .h"
33 #include "chrome/browser/chromeos/login/signin/oauth2_login_manager.h" 35 #include "chrome/browser/chromeos/login/signin/oauth2_login_manager.h"
34 #include "chrome/browser/chromeos/login/signin/oauth2_login_manager_factory.h" 36 #include "chrome/browser/chromeos/login/signin/oauth2_login_manager_factory.h"
37 #include "chrome/browser/chromeos/login/startup_utils.h"
35 #include "chrome/browser/chromeos/login/users/chrome_user_manager.h" 38 #include "chrome/browser/chromeos/login/users/chrome_user_manager.h"
36 #include "chrome/browser/chromeos/login/users/supervised_user_manager.h" 39 #include "chrome/browser/chromeos/login/users/supervised_user_manager.h"
37 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" 40 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
38 #include "chrome/browser/chromeos/profiles/profile_helper.h" 41 #include "chrome/browser/chromeos/profiles/profile_helper.h"
39 #include "chrome/browser/chromeos/settings/cros_settings.h" 42 #include "chrome/browser/chromeos/settings/cros_settings.h"
40 #include "chrome/browser/first_run/first_run.h" 43 #include "chrome/browser/first_run/first_run.h"
41 #include "chrome/browser/google/google_brand_chromeos.h" 44 #include "chrome/browser/google/google_brand_chromeos.h"
42 #include "chrome/browser/lifetime/application_lifetime.h" 45 #include "chrome/browser/lifetime/application_lifetime.h"
43 #include "chrome/browser/net/crl_set_fetcher.h" 46 #include "chrome/browser/net/crl_set_fetcher.h"
44 #include "chrome/browser/net/nss_context.h" 47 #include "chrome/browser/net/nss_context.h"
45 #include "chrome/browser/profiles/profile.h" 48 #include "chrome/browser/profiles/profile.h"
46 #include "chrome/browser/profiles/profile_manager.h" 49 #include "chrome/browser/profiles/profile_manager.h"
47 #include "chrome/browser/rlz/rlz.h" 50 #include "chrome/browser/rlz/rlz.h"
48 #include "chrome/browser/signin/easy_unlock_service.h" 51 #include "chrome/browser/signin/easy_unlock_service.h"
49 #include "chrome/browser/signin/signin_manager_factory.h" 52 #include "chrome/browser/signin/signin_manager_factory.h"
50 #include "chrome/common/chrome_switches.h" 53 #include "chrome/common/chrome_switches.h"
51 #include "chrome/common/logging_chrome.h" 54 #include "chrome/common/logging_chrome.h"
52 #include "chrome/common/pref_names.h" 55 #include "chrome/common/pref_names.h"
53 #include "chromeos/cert_loader.h" 56 #include "chromeos/cert_loader.h"
54 #include "chromeos/chromeos_switches.h" 57 #include "chromeos/chromeos_switches.h"
55 #include "chromeos/cryptohome/cryptohome_util.h" 58 #include "chromeos/cryptohome/cryptohome_util.h"
56 #include "chromeos/dbus/cryptohome_client.h" 59 #include "chromeos/dbus/cryptohome_client.h"
57 #include "chromeos/dbus/dbus_thread_manager.h" 60 #include "chromeos/dbus/dbus_thread_manager.h"
58 #include "chromeos/dbus/session_manager_client.h" 61 #include "chromeos/dbus/session_manager_client.h"
59 #include "chromeos/ime/input_method_manager.h" 62 #include "chromeos/ime/input_method_manager.h"
63 #include "chromeos/login/user_names.h"
60 #include "chromeos/network/portal_detector/network_portal_detector.h" 64 #include "chromeos/network/portal_detector/network_portal_detector.h"
61 #include "chromeos/network/portal_detector/network_portal_detector_strategy.h" 65 #include "chromeos/network/portal_detector/network_portal_detector_strategy.h"
62 #include "chromeos/settings/cros_settings_names.h" 66 #include "chromeos/settings/cros_settings_names.h"
63 #include "components/component_updater/component_updater_service.h" 67 #include "components/component_updater/component_updater_service.h"
64 #include "components/policy/core/common/cloud/cloud_policy_constants.h" 68 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
65 #include "components/session_manager/core/session_manager.h" 69 #include "components/session_manager/core/session_manager.h"
66 #include "components/signin/core/browser/signin_manager_base.h" 70 #include "components/signin/core/browser/signin_manager_base.h"
67 #include "components/user_manager/user.h" 71 #include "components/user_manager/user.h"
68 #include "components/user_manager/user_manager.h" 72 #include "components/user_manager/user_manager.h"
69 #include "components/user_manager/user_type.h" 73 #include "components/user_manager/user_type.h"
70 #include "content/public/browser/browser_thread.h" 74 #include "content/public/browser/browser_thread.h"
71 #include "content/public/browser/notification_service.h" 75 #include "content/public/browser/notification_service.h"
76 #include "url/gurl.h"
72 77
73 namespace chromeos { 78 namespace chromeos {
74 79
75 namespace { 80 namespace {
76 81
77 void InitLocaleAndInputMethodsForNewUser( 82 void InitLocaleAndInputMethodsForNewUser(
78 UserSessionManager* session_manager, 83 UserSessionManager* session_manager,
79 Profile* profile, 84 Profile* profile,
80 const std::string& public_session_locale, 85 const std::string& public_session_locale,
81 const std::string& public_session_input_method) { 86 const std::string& public_session_input_method) {
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 UserSessionManager::~UserSessionManager() { 237 UserSessionManager::~UserSessionManager() {
233 // UserManager is destroyed before singletons, so we need to check if it 238 // UserManager is destroyed before singletons, so we need to check if it
234 // still exists. 239 // still exists.
235 // TODO(nkostylev): fix order of destruction of UserManager 240 // TODO(nkostylev): fix order of destruction of UserManager
236 // / UserSessionManager objects. 241 // / UserSessionManager objects.
237 if (user_manager::UserManager::IsInitialized()) 242 if (user_manager::UserManager::IsInitialized())
238 user_manager::UserManager::Get()->RemoveSessionStateObserver(this); 243 user_manager::UserManager::Get()->RemoveSessionStateObserver(this);
239 net::NetworkChangeNotifier::RemoveConnectionTypeObserver(this); 244 net::NetworkChangeNotifier::RemoveConnectionTypeObserver(this);
240 } 245 }
241 246
247 void UserSessionManager::CompleteGuestSessionLogin(const GURL& start_url) {
248 VLOG(1) << "Completing guest session login";
249
250 // For guest session we ask session_manager to restart Chrome with --bwsi
251 // flag. We keep only some of the arguments of this process.
252 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess();
253 CommandLine command_line(browser_command_line.GetProgram());
254 std::string cmd_line_str =
255 GetOffTheRecordCommandLine(start_url,
256 StartupUtils::IsOobeCompleted(),
257 browser_command_line,
258 &command_line);
259
260 // This makes sure that Chrome restarts with no per-session flags. The guest
261 // profile will always have empty set of per-session flags. If this is not
262 // done and device owner has some per-session flags, when Chrome is relaunched
263 // the guest profile session flags will not match the current command line and
264 // another restart will be attempted in order to reset the user flags for the
265 // guest user.
266 const CommandLine user_flags(CommandLine::NO_PROGRAM);
267 if (!about_flags::AreSwitchesIdenticalToCurrentCommandLine(
268 user_flags,
269 *CommandLine::ForCurrentProcess(),
270 NULL)) {
271 DBusThreadManager::Get()->GetSessionManagerClient()->SetFlagsForUser(
272 chromeos::login::kGuestUserName,
273 CommandLine::StringVector());
274 }
275
276 RestartChrome(cmd_line_str);
277 }
278
242 void UserSessionManager::StartSession( 279 void UserSessionManager::StartSession(
243 const UserContext& user_context, 280 const UserContext& user_context,
244 scoped_refptr<Authenticator> authenticator, 281 scoped_refptr<Authenticator> authenticator,
245 bool has_auth_cookies, 282 bool has_auth_cookies,
246 bool has_active_session, 283 bool has_active_session,
247 UserSessionManagerDelegate* delegate) { 284 UserSessionManagerDelegate* delegate) {
248 authenticator_ = authenticator; 285 authenticator_ = authenticator;
249 delegate_ = delegate; 286 delegate_ = delegate;
250 287
251 VLOG(1) << "Starting session for " << user_context.GetUserID(); 288 VLOG(1) << "Starting session for " << user_context.GetUserID();
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after
1109 } 1146 }
1110 1147
1111 EasyUnlockKeyManager* UserSessionManager::GetEasyUnlockKeyManager() { 1148 EasyUnlockKeyManager* UserSessionManager::GetEasyUnlockKeyManager() {
1112 if (!easy_unlock_key_manager_) 1149 if (!easy_unlock_key_manager_)
1113 easy_unlock_key_manager_.reset(new EasyUnlockKeyManager); 1150 easy_unlock_key_manager_.reset(new EasyUnlockKeyManager);
1114 1151
1115 return easy_unlock_key_manager_.get(); 1152 return easy_unlock_key_manager_.get();
1116 } 1153 }
1117 1154
1118 } // namespace chromeos 1155 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698