summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/DEPS1
-rw-r--r--chrome/browser/browser_process_platform_part_chromeos.cc22
-rw-r--r--chrome/browser/browser_process_platform_part_chromeos.h24
-rw-r--r--chrome/browser/chromeos/chrome_browser_main_chromeos.cc104
-rw-r--r--chrome/browser/chromeos/chrome_browser_main_chromeos.h6
-rw-r--r--chrome/browser/chromeos/login/login_utils_browsertest.cc8
-rw-r--r--chrome/browser/chromeos/login/session/chrome_session_manager.cc86
-rw-r--r--chrome/browser/chromeos/login/session/chrome_session_manager.h36
-rw-r--r--chrome/browser/chromeos/login/session/kiosk_auto_launcher_session_manager_delegate.cc35
-rw-r--r--chrome/browser/chromeos/login/session/kiosk_auto_launcher_session_manager_delegate.h29
-rw-r--r--chrome/browser/chromeos/login/session/login_oobe_session_manager_delegate.cc40
-rw-r--r--chrome/browser/chromeos/login/session/login_oobe_session_manager_delegate.h29
-rw-r--r--chrome/browser/chromeos/login/session/restore_after_crash_session_manager_delegate.cc71
-rw-r--r--chrome/browser/chromeos/login/session/restore_after_crash_session_manager_delegate.h41
-rw-r--r--chrome/browser/chromeos/login/session/stub_login_session_manager_delegate.cc32
-rw-r--r--chrome/browser/chromeos/login/session/stub_login_session_manager_delegate.h36
-rw-r--r--chrome/browser/chromeos/login/session/user_session_manager.cc10
-rw-r--r--chrome/browser/chromeos/login/ui/login_display_host_impl.cc33
-rw-r--r--chrome/browser/chromeos/login/ui/user_adding_screen.cc8
-rw-r--r--chrome/browser/chromeos/login/users/user_manager_impl.cc5
-rw-r--r--chrome/chrome_browser_chromeos.gypi11
21 files changed, 556 insertions, 111 deletions
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index 9d07346..525407e 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -48,6 +48,7 @@ include_rules = [
"+components/rappor",
"+components/search_engines",
"+components/search_provider_logos",
+ "+components/session_manager",
"+components/sessions",
"+components/signin",
"+components/startup_metric_utils",
diff --git a/chrome/browser/browser_process_platform_part_chromeos.cc b/chrome/browser/browser_process_platform_part_chromeos.cc
index 0b77afd..c6ce937 100644
--- a/chrome/browser/browser_process_platform_part_chromeos.cc
+++ b/chrome/browser/browser_process_platform_part_chromeos.cc
@@ -4,14 +4,18 @@
#include "chrome/browser/browser_process_platform_part_chromeos.h"
+#include "base/command_line.h"
#include "base/logging.h"
#include "base/time/default_tick_clock.h"
#include "base/time/tick_clock.h"
#include "chrome/browser/browser_process.h"
+#include "chrome/browser/chromeos/login/session/chrome_session_manager.h"
#include "chrome/browser/chromeos/memory/oom_priority_manager.h"
#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/chromeos/system/automatic_reboot_manager.h"
+#include "chrome/browser/profiles/profile.h"
+#include "components/session_manager/core/session_manager.h"
BrowserProcessPlatformPart::BrowserProcessPlatformPart()
: created_profile_helper_(false) {
@@ -31,6 +35,24 @@ void BrowserProcessPlatformPart::ShutdownAutomaticRebootManager() {
automatic_reboot_manager_.reset();
}
+void BrowserProcessPlatformPart::InitializeSessionManager(
+ const base::CommandLine& parsed_command_line,
+ Profile* profile,
+ bool is_running_test) {
+ DCHECK(!session_manager_);
+ session_manager_ = chromeos::ChromeSessionManager::CreateSessionManager(
+ parsed_command_line, profile, is_running_test);
+}
+
+void BrowserProcessPlatformPart::ShutdownSessionManager() {
+ session_manager_.reset();
+}
+
+session_manager::SessionManager* BrowserProcessPlatformPart::SessionManager() {
+ DCHECK(CalledOnValidThread());
+ return session_manager_.get();
+}
+
chromeos::OomPriorityManager*
BrowserProcessPlatformPart::oom_priority_manager() {
DCHECK(CalledOnValidThread());
diff --git a/chrome/browser/browser_process_platform_part_chromeos.h b/chrome/browser/browser_process_platform_part_chromeos.h
index e5c4b46..8fe87aa 100644
--- a/chrome/browser/browser_process_platform_part_chromeos.h
+++ b/chrome/browser/browser_process_platform_part_chromeos.h
@@ -10,6 +10,10 @@
#include "base/threading/non_thread_safe.h"
#include "chrome/browser/browser_process_platform_part_base.h"
+namespace base {
+class CommandLine;
+}
+
namespace chromeos {
class OomPriorityManager;
class ProfileHelper;
@@ -26,6 +30,12 @@ class BrowserPolicyConnector;
class BrowserPolicyConnectorChromeOS;
}
+namespace session_manager {
+class SessionManager;
+}
+
+class Profile;
+
class BrowserProcessPlatformPart : public BrowserProcessPlatformPartBase,
public base::NonThreadSafe {
public:
@@ -35,6 +45,16 @@ class BrowserProcessPlatformPart : public BrowserProcessPlatformPartBase,
void InitializeAutomaticRebootManager();
void ShutdownAutomaticRebootManager();
+ void InitializeSessionManager(const base::CommandLine& parsed_command_line,
+ Profile* profile,
+ bool is_running_test);
+ void ShutdownSessionManager();
+
+ // Returns the SessionManager instance that is used to initialize and
+ // start user sessions as well as responsible on launching pre-session UI like
+ // out-of-box or login.
+ virtual session_manager::SessionManager* SessionManager();
+
// Returns the out-of-memory priority manager.
// Virtual for testing (see TestingBrowserProcessPlatformPart).
virtual chromeos::OomPriorityManager* oom_priority_manager();
@@ -50,7 +70,7 @@ class BrowserProcessPlatformPart : public BrowserProcessPlatformPartBase,
policy::BrowserPolicyConnectorChromeOS* browser_policy_connector_chromeos();
// Overridden from BrowserProcessPlatformPartBase:
- virtual void StartTearDown() OVERRIDE;
+ virtual void StartTearDown() OVERRIDE;
virtual scoped_ptr<policy::BrowserPolicyConnector>
CreateBrowserPolicyConnector() OVERRIDE;
@@ -58,6 +78,8 @@ class BrowserProcessPlatformPart : public BrowserProcessPlatformPartBase,
private:
void CreateProfileHelper();
+ scoped_ptr<session_manager::SessionManager> session_manager_;
+
bool created_profile_helper_;
scoped_ptr<chromeos::ProfileHelper> profile_helper_;
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
index 04b7613..88028bc 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -103,6 +103,7 @@
#include "chromeos/system/statistics_provider.h"
#include "chromeos/tpm_token_loader.h"
#include "components/metrics/metrics_service.h"
+#include "components/session_manager/core/session_manager.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/power_save_blocker.h"
@@ -130,9 +131,7 @@ void ChromeOSVersionCallback(const std::string& version) {
base::SetLinuxDistro(std::string("CrOS ") + version);
}
-// Login -----------------------------------------------------------------------
-
-bool ShouldAutoLaunchKioskApp(const CommandLine& command_line) {
+bool ShouldAutoLaunchKioskApp(const base::CommandLine& command_line) {
KioskAppManager* app_manager = KioskAppManager::Get();
return command_line.HasSwitch(switches::kLoginManager) &&
!command_line.HasSwitch(switches::kForceLoginManagerInTests) &&
@@ -140,52 +139,6 @@ bool ShouldAutoLaunchKioskApp(const CommandLine& command_line) {
KioskAppLaunchError::Get() == KioskAppLaunchError::NONE;
}
-void RunAutoLaunchKioskApp() {
- ShowLoginWizard(chromeos::WizardController::kAppLaunchSplashScreenName);
-
- // Login screen is skipped but 'login-prompt-visible' signal is still needed.
- VLOG(1) << "Kiosk app auto launch >> login-prompt-visible";
- DBusThreadManager::Get()->GetSessionManagerClient()->
- EmitLoginPromptVisible();
-}
-
-void OptionallyRunChromeOSLoginManager(const CommandLine& parsed_command_line,
- Profile* profile) {
- std::string login_user = parsed_command_line.
- GetSwitchValueASCII(chromeos::switches::kLoginUser);
- if (!base::SysInfo::IsRunningOnChromeOS() &&
- login_user == chromeos::login::kStubUser) {
- return;
- }
-
- if (ShouldAutoLaunchKioskApp(parsed_command_line)) {
- RunAutoLaunchKioskApp();
- } else if (parsed_command_line.HasSwitch(switches::kLoginManager)) {
- ShowLoginWizard(std::string());
-
- if (KioskModeSettings::Get()->IsKioskModeEnabled())
- InitializeKioskModeScreensaver();
-
- // Reset reboot after update flag when login screen is shown.
- policy::BrowserPolicyConnectorChromeOS* connector =
- g_browser_process->platform_part()->browser_policy_connector_chromeos();
- if (!connector->IsEnterpriseManaged()) {
- PrefService* local_state = g_browser_process->local_state();
- local_state->ClearPref(prefs::kRebootAfterUpdate);
- }
- } else {
- if (!parsed_command_line.HasSwitch(::switches::kTestName)) {
- // Enable CrasAudioHandler logging when chrome restarts after crashing.
- if (chromeos::CrasAudioHandler::IsInitialized())
- chromeos::CrasAudioHandler::Get()->LogErrors();
-
- // We did not log in (we crashed or are debugging), so we need to
- // restore Sync.
- UserSessionManager::GetInstance()->RestoreAuthenticationSession(profile);
- }
- }
-}
-
} // namespace
namespace internal {
@@ -557,48 +510,11 @@ void ChromeBrowserMainPartsChromeos::PostProfileInit() {
BootTimesLoader::Get()->OnChromeProcessStart();
- // Restarting Chrome inside existing user session. Possible cases:
- // 1. Chrome is restarted after crash.
- // 2. Chrome is started in browser_tests skipping the login flow.
- // 3. Chrome is started on dev machine i.e. not on Chrome OS device w/o
- // login flow. In that case --login-user=[chromeos::login::kStubUser] is
- // added.
- // See PreEarlyInitialization().
- if (parsed_command_line().HasSwitch(switches::kLoginUser)) {
- std::string login_user = login::CanonicalizeUserID(
- parsed_command_line().GetSwitchValueASCII(
- chromeos::switches::kLoginUser));
- if (!base::SysInfo::IsRunningOnChromeOS() &&
- login_user == chromeos::login::kStubUser) {
- // For dev machines and stub user emulate as if sync has been initialized.
- profile()->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
- login_user);
- }
-
- // This is done in SessionManager::OnProfileCreated during normal login.
- UserSessionManager::GetInstance()->InitRlz(profile());
-
- // Send the PROFILE_PREPARED notification and call SessionStarted()
- // so that the Launcher and other Profile dependent classes are created.
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED,
- content::NotificationService::AllSources(),
- content::Details<Profile>(profile()));
- UserManager::Get()->SessionStarted();
-
- // Now is the good time to retrieve other logged in users for this session.
- // First user has been already marked as logged in and active in
- // PreProfileInit(). Chrome should tread other user in a session as active
- // in the background.
- UserSessionManager::GetInstance()->RestoreActiveSessions();
- }
-
// Initialize the network portal detector for Chrome OS. The network
// portal detector starts to listen for notifications from
// NetworkStateHandler and initiates captive portal detection for
- // active networks. Shoule be called before call to
- // OptionallyRunChromeOSLoginManager, because it depends on
- // NetworkPortalDetector.
+ // active networks. Should be called before call to CreateSessionManager,
+ // because it depends on NetworkPortalDetector.
NetworkPortalDetectorImpl::Initialize(
g_browser_process->system_request_context());
{
@@ -614,12 +530,10 @@ void ChromeBrowserMainPartsChromeos::PostProfileInit() {
detector->Enable(true);
}
- // Tests should be able to tune login manager before showing it.
- // Thus only show login manager in normal (non-testing) mode.
- if (!parameters().ui_task ||
- parsed_command_line().HasSwitch(switches::kForceLoginManagerInTests)) {
- OptionallyRunChromeOSLoginManager(parsed_command_line(), profile());
- }
+ bool is_running_test = parameters().ui_task != NULL;
+ g_browser_process->platform_part()->InitializeSessionManager(
+ parsed_command_line(), profile(), is_running_test);
+ g_browser_process->platform_part()->SessionManager()->Start();
// Guest user profile is never initialized with locale settings,
// so we need special handling for Guest session.
@@ -810,6 +724,8 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() {
NetworkPortalDetector::Shutdown();
UserManager::Destroy();
+
+ g_browser_process->platform_part()->ShutdownSessionManager();
}
void ChromeBrowserMainPartsChromeos::PostDestroyThreads() {
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.h b/chrome/browser/chromeos/chrome_browser_main_chromeos.h
index cd3b367..4693d2b 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.h
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.h
@@ -15,6 +15,10 @@ namespace content {
class PowerSaveBlocker;
}
+namespace session_manager {
+class SessionManager;
+}
+
namespace chromeos {
class DataPromoNotification;
@@ -70,6 +74,8 @@ class ChromeBrowserMainPartsChromeos : public ChromeBrowserMainPartsLinux {
scoped_ptr<internal::DBusServices> dbus_services_;
+ scoped_ptr<session_manager::SessionManager> session_manager_;
+
scoped_ptr<EventRewriterController> keyboard_event_rewriters_;
scoped_refptr<chromeos::ExternalMetrics> external_metrics_;
diff --git a/chrome/browser/chromeos/login/login_utils_browsertest.cc b/chrome/browser/chromeos/login/login_utils_browsertest.cc
index fb2db6e..f87579d 100644
--- a/chrome/browser/chromeos/login/login_utils_browsertest.cc
+++ b/chrome/browser/chromeos/login/login_utils_browsertest.cc
@@ -18,6 +18,7 @@
#include "base/threading/thread.h"
#include "chrome/browser/chrome_content_browser_client.h"
#include "chrome/browser/chrome_notification_types.h"
+#include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
#include "chrome/browser/chromeos/input_method/input_method_configuration.h"
#include "chrome/browser/chromeos/input_method/mock_input_method_manager.h"
#include "chrome/browser/chromeos/login/auth/authenticator.h"
@@ -258,6 +259,9 @@ class LoginUtilsTest : public testing::Test,
NULL, NULL));
browser_process_->SetIOThread(io_thread_state_.get());
+ browser_process_->platform_part()->InitializeSessionManager(
+ *CommandLine::ForCurrentProcess(), NULL, true);
+
#if defined(ENABLE_RLZ)
rlz_initialized_cb_ = base::Bind(&base::DoNothing);
rlz_lib::testing::SetRlzStoreDirectory(scoped_temp_dir_.path());
@@ -276,11 +280,13 @@ class LoginUtilsTest : public testing::Test,
message_center::MessageCenter::Shutdown();
- test_user_manager_.reset();
+ KioskAppManager::Shutdown();
InvokeOnIO(
base::Bind(&LoginUtilsTest::TearDownOnIO, base::Unretained(this)));
+ test_user_manager_.reset();
+
// LoginUtils instance must not outlive Profile instances.
LoginUtils::Set(NULL);
diff --git a/chrome/browser/chromeos/login/session/chrome_session_manager.cc b/chrome/browser/chromeos/login/session/chrome_session_manager.cc
new file mode 100644
index 0000000..73f1720
--- /dev/null
+++ b/chrome/browser/chromeos/login/session/chrome_session_manager.cc
@@ -0,0 +1,86 @@
+// Copyright 2014 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.
+
+#include "chrome/browser/chromeos/login/session/chrome_session_manager.h"
+
+#include "base/command_line.h"
+#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/sys_info.h"
+#include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h"
+#include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
+#include "chrome/browser/chromeos/login/session/kiosk_auto_launcher_session_manager_delegate.h"
+#include "chrome/browser/chromeos/login/session/login_oobe_session_manager_delegate.h"
+#include "chrome/browser/chromeos/login/session/restore_after_crash_session_manager_delegate.h"
+#include "chrome/browser/chromeos/login/session/stub_login_session_manager_delegate.h"
+#include "chrome/browser/chromeos/login/users/user_manager.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chromeos/chromeos_switches.h"
+#include "chromeos/login/user_names.h"
+
+namespace chromeos {
+
+namespace {
+
+bool ShouldAutoLaunchKioskApp(const base::CommandLine& command_line) {
+ KioskAppManager* app_manager = KioskAppManager::Get();
+ return command_line.HasSwitch(switches::kLoginManager) &&
+ !command_line.HasSwitch(switches::kForceLoginManagerInTests) &&
+ app_manager->IsAutoLaunchEnabled() &&
+ KioskAppLaunchError::Get() == KioskAppLaunchError::NONE;
+}
+
+} // namespace
+
+// static
+scoped_ptr<session_manager::SessionManager>
+ChromeSessionManager::CreateSessionManager(
+ const base::CommandLine& parsed_command_line,
+ Profile* profile,
+ bool is_running_test) {
+ // Tests should be able to tune login manager before showing it. Thus only
+ // show login UI (login and out-of-box) in normal (non-testing) mode with
+ // --login-manager switch and if test passed --force-login-manager-in-tests.
+ bool force_login_screen_in_test =
+ parsed_command_line.HasSwitch(switches::kForceLoginManagerInTests);
+
+ std::string login_user_id =
+ parsed_command_line.GetSwitchValueASCII(switches::kLoginUser);
+
+ if (ShouldAutoLaunchKioskApp(parsed_command_line)) {
+ VLOG(1) << "Starting Chrome with KioskAutoLauncherSessionManagerDelegate";
+ return scoped_ptr<session_manager::SessionManager>(new ChromeSessionManager(
+ new KioskAutoLauncherSessionManagerDelegate()));
+ } else if (parsed_command_line.HasSwitch(switches::kLoginManager) &&
+ (!is_running_test || force_login_screen_in_test)) {
+ VLOG(1) << "Starting Chrome with LoginOobeSessionManagerDelegate";
+ return scoped_ptr<session_manager::SessionManager>(
+ new ChromeSessionManager(new LoginOobeSessionManagerDelegate()));
+ } else if (!base::SysInfo::IsRunningOnChromeOS() &&
+ login_user_id == login::kStubUser) {
+ VLOG(1) << "Starting Chrome with StubLoginSessionManagerDelegate";
+ return scoped_ptr<session_manager::SessionManager>(new ChromeSessionManager(
+ new StubLoginSessionManagerDelegate(profile, login_user_id)));
+ } else {
+ VLOG(1) << "Starting Chrome with RestoreAfterCrashSessionManagerDelegate";
+ // Restarting Chrome inside existing user session. Possible cases:
+ // 1. Chrome is restarted after crash.
+ // 2. Chrome is started in browser_tests skipping the login flow.
+ // 3. Chrome is started on dev machine i.e. not on Chrome OS device w/o
+ // login flow. In that case --login-user=[chromeos::login::kStubUser] is
+ // added. See PreEarlyInitialization().
+ return scoped_ptr<session_manager::SessionManager>(new ChromeSessionManager(
+ new RestoreAfterCrashSessionManagerDelegate(profile, login_user_id)));
+ }
+}
+
+ChromeSessionManager::ChromeSessionManager(
+ session_manager::SessionManagerDelegate* delegate) {
+ Initialize(delegate);
+}
+
+ChromeSessionManager::~ChromeSessionManager() {
+}
+
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/session/chrome_session_manager.h b/chrome/browser/chromeos/login/session/chrome_session_manager.h
new file mode 100644
index 0000000..6fb5e59
--- /dev/null
+++ b/chrome/browser/chromeos/login/session/chrome_session_manager.h
@@ -0,0 +1,36 @@
+// Copyright 2014 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 CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_CHROME_SESSION_MANAGER_H_
+#define CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_CHROME_SESSION_MANAGER_H_
+
+#include "base/basictypes.h"
+#include "components/session_manager/core/session_manager.h"
+
+namespace base {
+class CommandLine;
+}
+
+class Profile;
+
+namespace chromeos {
+
+class ChromeSessionManager : public session_manager::SessionManager {
+ public:
+ static scoped_ptr<session_manager::SessionManager> CreateSessionManager(
+ const base::CommandLine& parsed_command_line,
+ Profile* profile,
+ bool is_running_test);
+
+ private:
+ explicit ChromeSessionManager(
+ session_manager::SessionManagerDelegate* delegate);
+ virtual ~ChromeSessionManager();
+
+ DISALLOW_COPY_AND_ASSIGN(ChromeSessionManager);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_CHROME_SESSION_MANAGER_H_
diff --git a/chrome/browser/chromeos/login/session/kiosk_auto_launcher_session_manager_delegate.cc b/chrome/browser/chromeos/login/session/kiosk_auto_launcher_session_manager_delegate.cc
new file mode 100644
index 0000000..e9e4a68
--- /dev/null
+++ b/chrome/browser/chromeos/login/session/kiosk_auto_launcher_session_manager_delegate.cc
@@ -0,0 +1,35 @@
+// Copyright 2014 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.
+
+#include "chrome/browser/chromeos/login/session/kiosk_auto_launcher_session_manager_delegate.h"
+
+#include "base/logging.h"
+#include "chrome/browser/chromeos/login/login_wizard.h"
+#include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chromeos/dbus/dbus_thread_manager.h"
+#include "chromeos/dbus/session_manager_client.h"
+
+namespace chromeos {
+
+KioskAutoLauncherSessionManagerDelegate::
+ KioskAutoLauncherSessionManagerDelegate() {
+}
+
+KioskAutoLauncherSessionManagerDelegate::
+ ~KioskAutoLauncherSessionManagerDelegate() {
+}
+
+void KioskAutoLauncherSessionManagerDelegate::Start() {
+ // Kiosk app launcher starts with login state.
+ session_manager_->SetSessionState(
+ session_manager::SESSION_STATE_LOGIN_PRIMARY);
+
+ ShowLoginWizard(chromeos::WizardController::kAppLaunchSplashScreenName);
+
+ // Login screen is skipped but 'login-prompt-visible' signal is still needed.
+ VLOG(1) << "Kiosk app auto launch >> login-prompt-visible";
+ DBusThreadManager::Get()->GetSessionManagerClient()->EmitLoginPromptVisible();
+}
+
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/session/kiosk_auto_launcher_session_manager_delegate.h b/chrome/browser/chromeos/login/session/kiosk_auto_launcher_session_manager_delegate.h
new file mode 100644
index 0000000..df6bfec
--- /dev/null
+++ b/chrome/browser/chromeos/login/session/kiosk_auto_launcher_session_manager_delegate.h
@@ -0,0 +1,29 @@
+// Copyright 2014 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 CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_KIOSK_AUTO_LAUNCHER_SESSION_MANAGER_DELEGATE_H_
+#define CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_KIOSK_AUTO_LAUNCHER_SESSION_MANAGER_DELEGATE_H_
+
+#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
+#include "components/session_manager/core/session_manager.h"
+
+namespace chromeos {
+
+class KioskAutoLauncherSessionManagerDelegate
+ : public session_manager::SessionManagerDelegate {
+ public:
+ KioskAutoLauncherSessionManagerDelegate();
+ virtual ~KioskAutoLauncherSessionManagerDelegate();
+
+ private:
+ // session_manager::SessionManagerDelegate implementation:
+ virtual void Start() OVERRIDE;
+
+ DISALLOW_COPY_AND_ASSIGN(KioskAutoLauncherSessionManagerDelegate);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_KIOSK_AUTO_LAUNCHER_SESSION_MANAGER_DELEGATE_H_
diff --git a/chrome/browser/chromeos/login/session/login_oobe_session_manager_delegate.cc b/chrome/browser/chromeos/login/session/login_oobe_session_manager_delegate.cc
new file mode 100644
index 0000000..733a8a9
--- /dev/null
+++ b/chrome/browser/chromeos/login/session/login_oobe_session_manager_delegate.cc
@@ -0,0 +1,40 @@
+// Copyright 2014 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.
+
+#include "chrome/browser/chromeos/login/session/login_oobe_session_manager_delegate.h"
+
+#include "base/prefs/pref_service.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/browser_process_platform_part_chromeos.h"
+#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h"
+#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h"
+#include "chrome/browser/chromeos/login/login_wizard.h"
+#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
+#include "chrome/common/pref_names.h"
+
+namespace chromeos {
+
+LoginOobeSessionManagerDelegate::LoginOobeSessionManagerDelegate() {
+}
+
+LoginOobeSessionManagerDelegate::~LoginOobeSessionManagerDelegate() {
+}
+
+void LoginOobeSessionManagerDelegate::Start() {
+ // State will be defined once out-of-box/login branching is complete.
+ ShowLoginWizard(std::string());
+
+ if (KioskModeSettings::Get()->IsKioskModeEnabled())
+ InitializeKioskModeScreensaver();
+
+ // Reset reboot after update flag when login screen is shown.
+ policy::BrowserPolicyConnectorChromeOS* connector =
+ g_browser_process->platform_part()->browser_policy_connector_chromeos();
+ if (!connector->IsEnterpriseManaged()) {
+ PrefService* local_state = g_browser_process->local_state();
+ local_state->ClearPref(prefs::kRebootAfterUpdate);
+ }
+}
+
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/session/login_oobe_session_manager_delegate.h b/chrome/browser/chromeos/login/session/login_oobe_session_manager_delegate.h
new file mode 100644
index 0000000..20d6058
--- /dev/null
+++ b/chrome/browser/chromeos/login/session/login_oobe_session_manager_delegate.h
@@ -0,0 +1,29 @@
+// Copyright 2014 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 CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_LOGIN_OOBE_SESSION_MANAGER_DELEGATE_H_
+#define CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_LOGIN_OOBE_SESSION_MANAGER_DELEGATE_H_
+
+#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
+#include "components/session_manager/core/session_manager.h"
+
+namespace chromeos {
+
+class LoginOobeSessionManagerDelegate
+ : public session_manager::SessionManagerDelegate {
+ public:
+ LoginOobeSessionManagerDelegate();
+ virtual ~LoginOobeSessionManagerDelegate();
+
+ private:
+ // session_manager::SessionManagerDelegate implementation:
+ virtual void Start() OVERRIDE;
+
+ DISALLOW_COPY_AND_ASSIGN(LoginOobeSessionManagerDelegate);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_LOGIN_OOBE_SESSION_MANAGER_DELEGATE_H_
diff --git a/chrome/browser/chromeos/login/session/restore_after_crash_session_manager_delegate.cc b/chrome/browser/chromeos/login/session/restore_after_crash_session_manager_delegate.cc
new file mode 100644
index 0000000..53cfe9f
--- /dev/null
+++ b/chrome/browser/chromeos/login/session/restore_after_crash_session_manager_delegate.cc
@@ -0,0 +1,71 @@
+// Copyright 2014 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.
+
+#include "chrome/browser/chromeos/login/session/restore_after_crash_session_manager_delegate.h"
+
+#include "base/command_line.h"
+#include "chrome/browser/chrome_notification_types.h"
+#include "chrome/browser/chromeos/login/session/user_session_manager.h"
+#include "chrome/browser/chromeos/login/users/user_manager.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/common/chrome_switches.h"
+#include "chromeos/audio/cras_audio_handler.h"
+#include "chromeos/chromeos_switches.h"
+#include "content/public/browser/notification_service.h"
+
+namespace chromeos {
+
+RestoreAfterCrashSessionManagerDelegate::
+ RestoreAfterCrashSessionManagerDelegate(Profile* profile,
+ const std::string& login_user_id)
+ : profile_(profile), login_user_id_(login_user_id) {
+}
+
+RestoreAfterCrashSessionManagerDelegate::
+ ~RestoreAfterCrashSessionManagerDelegate() {
+}
+
+void RestoreAfterCrashSessionManagerDelegate::Start() {
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+
+ session_manager_->SetSessionState(session_manager::SESSION_STATE_ACTIVE);
+
+ // TODO(nkostylev): Identify tests that do not set this kLoginUser flag but
+ // still rely on "stub user" session. Keeping existing behavior to avoid
+ // breaking tests.
+ if (command_line->HasSwitch(chromeos::switches::kLoginUser)) {
+ // This is done in SessionManager::OnProfileCreated during normal login.
+ UserSessionManager::GetInstance()->InitRlz(profile());
+
+ // Send the PROFILE_PREPARED notification and call SessionStarted()
+ // so that the Launcher and other Profile dependent classes are created.
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED,
+ content::NotificationService::AllSources(),
+ content::Details<Profile>(profile()));
+
+ // This call will set session state to SESSION_STATE_ACTIVE (same one).
+ UserManager::Get()->SessionStarted();
+
+ // Now is the good time to retrieve other logged in users for this session.
+ // First user has been already marked as logged in and active in
+ // PreProfileInit(). Restore sessions for other users in the background.
+ UserSessionManager::GetInstance()->RestoreActiveSessions();
+ }
+
+ bool is_running_test = command_line->HasSwitch(::switches::kTestName) ||
+ command_line->HasSwitch(::switches::kTestType);
+
+ if (!is_running_test) {
+ // Enable CrasAudioHandler logging when chrome restarts after crashing.
+ if (chromeos::CrasAudioHandler::IsInitialized())
+ chromeos::CrasAudioHandler::Get()->LogErrors();
+
+ // We did not log in (we crashed or are debugging), so we need to
+ // restore Sync.
+ UserSessionManager::GetInstance()->RestoreAuthenticationSession(profile());
+ }
+}
+
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/session/restore_after_crash_session_manager_delegate.h b/chrome/browser/chromeos/login/session/restore_after_crash_session_manager_delegate.h
new file mode 100644
index 0000000..397840f
--- /dev/null
+++ b/chrome/browser/chromeos/login/session/restore_after_crash_session_manager_delegate.h
@@ -0,0 +1,41 @@
+// Copyright 2014 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 CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_RESTORE_AFTER_CRASH_SESSION_MANAGER_DELEGATE_H_
+#define CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_RESTORE_AFTER_CRASH_SESSION_MANAGER_DELEGATE_H_
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
+#include "components/session_manager/core/session_manager.h"
+
+class Profile;
+
+namespace chromeos {
+
+class RestoreAfterCrashSessionManagerDelegate
+ : public session_manager::SessionManagerDelegate {
+ public:
+ RestoreAfterCrashSessionManagerDelegate(Profile* profile,
+ const std::string& login_user_id);
+ virtual ~RestoreAfterCrashSessionManagerDelegate();
+
+ protected:
+ // session_manager::SessionManagerDelegate implementation:
+ virtual void Start() OVERRIDE;
+
+ Profile* profile() { return profile_; }
+ const std::string& login_user_id() const { return login_user_id_; }
+
+ private:
+ Profile* profile_;
+ const std::string login_user_id_;
+
+ DISALLOW_COPY_AND_ASSIGN(RestoreAfterCrashSessionManagerDelegate);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_RESTORE_AFTER_CRASH_SESSION_MANAGER_DELEGATE_H_
diff --git a/chrome/browser/chromeos/login/session/stub_login_session_manager_delegate.cc b/chrome/browser/chromeos/login/session/stub_login_session_manager_delegate.cc
new file mode 100644
index 0000000..8fdd05d
--- /dev/null
+++ b/chrome/browser/chromeos/login/session/stub_login_session_manager_delegate.cc
@@ -0,0 +1,32 @@
+// Copyright 2014 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.
+
+#include "chrome/browser/chromeos/login/session/stub_login_session_manager_delegate.h"
+
+#include "base/prefs/pref_service.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/common/pref_names.h"
+
+namespace chromeos {
+
+StubLoginSessionManagerDelegate::StubLoginSessionManagerDelegate(
+ Profile* profile,
+ const std::string& login_user_id)
+ : RestoreAfterCrashSessionManagerDelegate(profile, login_user_id) {
+}
+
+StubLoginSessionManagerDelegate::~StubLoginSessionManagerDelegate() {
+}
+
+void StubLoginSessionManagerDelegate::Start() {
+ session_manager_->SetSessionState(session_manager::SESSION_STATE_ACTIVE);
+
+ // For dev machines and stub user emulate as if sync has been initialized.
+ profile()->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
+ login_user_id());
+
+ RestoreAfterCrashSessionManagerDelegate::Start();
+}
+
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/session/stub_login_session_manager_delegate.h b/chrome/browser/chromeos/login/session/stub_login_session_manager_delegate.h
new file mode 100644
index 0000000..080d032
--- /dev/null
+++ b/chrome/browser/chromeos/login/session/stub_login_session_manager_delegate.h
@@ -0,0 +1,36 @@
+// Copyright 2014 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 CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_STUB_LOGIN_SESSION_MANAGER_DELEGATE_H_
+#define CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_STUB_LOGIN_SESSION_MANAGER_DELEGATE_H_
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
+#include "chrome/browser/chromeos/login/session/restore_after_crash_session_manager_delegate.h"
+
+class Profile;
+
+namespace chromeos {
+
+class StubLoginSessionManagerDelegate
+ : public RestoreAfterCrashSessionManagerDelegate {
+ public:
+ StubLoginSessionManagerDelegate(Profile* profile,
+ const std::string& login_user_id);
+ virtual ~StubLoginSessionManagerDelegate();
+
+ private:
+ // session_manager::SessionManagerDelegate implementation:
+ virtual void Start() OVERRIDE;
+
+ Profile* profile_;
+
+ DISALLOW_COPY_AND_ASSIGN(StubLoginSessionManagerDelegate);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SESSION_STUB_LOGIN_SESSION_MANAGER_DELEGATE_H_
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc
index 07bfdbd..f829bdb 100644
--- a/chrome/browser/chromeos/login/session/user_session_manager.cc
+++ b/chrome/browser/chromeos/login/session/user_session_manager.cc
@@ -55,6 +55,7 @@
#include "chromeos/ime/input_method_manager.h"
#include "chromeos/network/portal_detector/network_portal_detector.h"
#include "chromeos/network/portal_detector/network_portal_detector_strategy.h"
+#include "components/session_manager/core/session_manager.h"
#include "components/signin/core/browser/signin_manager_base.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_service.h"
@@ -466,11 +467,15 @@ void UserSessionManager::OnNewRefreshTokenAvaiable(Profile* user_profile) {
void UserSessionManager::OnConnectionTypeChanged(
net::NetworkChangeNotifier::ConnectionType type) {
+ bool is_running_test =
+ base::CommandLine::ForCurrentProcess()->HasSwitch(
+ ::switches::kTestName) ||
+ base::CommandLine::ForCurrentProcess()->HasSwitch(::switches::kTestType);
UserManager* user_manager = UserManager::Get();
if (type == net::NetworkChangeNotifier::CONNECTION_NONE ||
!user_manager->IsUserLoggedIn() ||
!user_manager->IsLoggedInAsRegularUser() ||
- user_manager->IsLoggedInAsStub()) {
+ user_manager->IsLoggedInAsStub() || is_running_test) {
return;
}
@@ -682,6 +687,9 @@ void UserSessionManager::FinalizePrepareProfile(Profile* profile) {
profile->OnLogin();
+ g_browser_process->platform_part()->SessionManager()->SetSessionState(
+ session_manager::SESSION_STATE_LOGGED_IN_NOT_ACTIVE);
+
// Send the notification before creating the browser so additional objects
// that need the profile (e.g. the launcher) can be created first.
content::NotificationService::current()->Notify(
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc
index 5fdd828..d3567e5 100644
--- a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc
+++ b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc
@@ -68,6 +68,7 @@
#include "chromeos/ime/input_method_manager.h"
#include "chromeos/login/login_state.h"
#include "chromeos/settings/timezone_settings.h"
+#include "components/session_manager/core/session_manager.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_types.h"
#include "content/public/browser/render_frame_host.h"
@@ -1182,32 +1183,36 @@ void ShowLoginWizard(const std::string& first_screen_name) {
gfx::Rect screen_bounds(chromeos::CalculateScreenBounds(gfx::Size()));
+ g_browser_process->platform_part()->SessionManager()->SetSessionState(
+ StartupUtils::IsOobeCompleted()
+ ? session_manager::SESSION_STATE_LOGIN_PRIMARY
+ : session_manager::SESSION_STATE_OOBE);
+
LoginDisplayHost* display_host = new LoginDisplayHostImpl(screen_bounds);
- bool show_app_launch_splash_screen = (first_screen_name ==
- chromeos::WizardController::kAppLaunchSplashScreenName);
+ bool show_app_launch_splash_screen =
+ (first_screen_name == WizardController::kAppLaunchSplashScreenName);
if (show_app_launch_splash_screen) {
const std::string& auto_launch_app_id =
- chromeos::KioskAppManager::Get()->GetAutoLaunchApp();
+ KioskAppManager::Get()->GetAutoLaunchApp();
display_host->StartAppLaunch(auto_launch_app_id,
false /* diagnostic_mode */);
return;
}
- // Check whether we need to execute OOBE process.
- bool oobe_complete = chromeos::StartupUtils::IsOobeCompleted();
+ // Check whether we need to execute OOBE flow.
+ bool oobe_complete = StartupUtils::IsOobeCompleted();
policy::BrowserPolicyConnectorChromeOS* connector =
g_browser_process->platform_part()->browser_policy_connector_chromeos();
bool enrollment_screen_wanted =
- chromeos::WizardController::ShouldRecoverEnrollment() ||
- (chromeos::WizardController::ShouldAutoStartEnrollment() &&
- oobe_complete &&
+ WizardController::ShouldRecoverEnrollment() ||
+ (WizardController::ShouldAutoStartEnrollment() && oobe_complete &&
!connector->IsEnterpriseManaged());
if (enrollment_screen_wanted && first_screen_name.empty()) {
// Shows networks screen instead of enrollment screen to resume the
// interrupted auto start enrollment flow because enrollment screen does
// not handle flaky network. See http://crbug.com/332572
- display_host->StartWizard(chromeos::WizardController::kNetworkScreenName,
+ display_host->StartWizard(WizardController::kNetworkScreenName,
scoped_ptr<base::DictionaryValue>());
return;
}
@@ -1221,7 +1226,7 @@ void ShowLoginWizard(const std::string& first_screen_name) {
bool show_login_screen =
(first_screen_name.empty() && oobe_complete) ||
- first_screen_name == chromeos::WizardController::kLoginScreenName;
+ first_screen_name == WizardController::kLoginScreenName;
if (show_login_screen) {
display_host->StartSignInScreen(LoginScreenContext());
@@ -1229,12 +1234,12 @@ void ShowLoginWizard(const std::string& first_screen_name) {
}
// Load startup manifest.
- const chromeos::StartupCustomizationDocument* startup_manifest =
- chromeos::StartupCustomizationDocument::GetInstance();
+ const StartupCustomizationDocument* startup_manifest =
+ StartupCustomizationDocument::GetInstance();
// Switch to initial locale if specified by customization
// and has not been set yet. We cannot call
- // chromeos::LanguageSwitchMenu::SwitchLanguage here before
+ // LanguageSwitchMenu::SwitchLanguage here before
// EmitLoginPromptReady.
PrefService* prefs = g_browser_process->local_state();
const std::string& current_locale =
@@ -1259,7 +1264,7 @@ void ShowLoginWizard(const std::string& first_screen_name) {
// Don't need to schedule pref save because setting initial local
// will enforce preference saving.
prefs->SetString(prefs::kApplicationLocale, locale);
- chromeos::StartupUtils::SetInitialLocale(locale);
+ StartupUtils::SetInitialLocale(locale);
scoped_ptr<ShowLoginWizardSwitchLanguageCallbackData> data(
new ShowLoginWizardSwitchLanguageCallbackData(
diff --git a/chrome/browser/chromeos/login/ui/user_adding_screen.cc b/chrome/browser/chromeos/login/ui/user_adding_screen.cc
index 172417d..ecbc463 100644
--- a/chrome/browser/chromeos/login/ui/user_adding_screen.cc
+++ b/chrome/browser/chromeos/login/ui/user_adding_screen.cc
@@ -9,8 +9,10 @@
#include "base/bind.h"
#include "base/memory/singleton.h"
#include "base/observer_list.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/login/helper.h"
#include "chrome/browser/chromeos/login/ui/login_display_host_impl.h"
+#include "components/session_manager/core/session_manager.h"
#include "ui/gfx/rect.h"
#include "ui/gfx/size.h"
@@ -47,6 +49,9 @@ void UserAddingScreenImpl::Start() {
display_host_->StartUserAdding(
base::Bind(&UserAddingScreenImpl::OnDisplayHostCompletion,
base::Unretained(this)));
+
+ g_browser_process->platform_part()->SessionManager()->SetSessionState(
+ session_manager::SESSION_STATE_LOGIN_SECONDARY);
FOR_EACH_OBSERVER(Observer, observers_, OnUserAddingStarted());
}
@@ -73,6 +78,9 @@ void UserAddingScreenImpl::RemoveObserver(Observer* observer) {
void UserAddingScreenImpl::OnDisplayHostCompletion() {
CHECK(IsRunning());
display_host_ = NULL;
+
+ g_browser_process->platform_part()->SessionManager()->SetSessionState(
+ session_manager::SESSION_STATE_ACTIVE);
FOR_EACH_OBSERVER(Observer, observers_, OnUserAddingFinished());
}
diff --git a/chrome/browser/chromeos/login/users/user_manager_impl.cc b/chrome/browser/chromeos/login/users/user_manager_impl.cc
index c1bf048..0d23f42 100644
--- a/chrome/browser/chromeos/login/users/user_manager_impl.cc
+++ b/chrome/browser/chromeos/login/users/user_manager_impl.cc
@@ -58,6 +58,7 @@
#include "chromeos/login/login_state.h"
#include "chromeos/login/user_names.h"
#include "chromeos/settings/cros_settings_names.h"
+#include "components/session_manager/core/session_manager.h"
#include "components/user_manager/user_type.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_service.h"
@@ -493,7 +494,11 @@ void UserManagerImpl::SwitchActiveUser(const std::string& user_id) {
void UserManagerImpl::SessionStarted() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
session_started_ = true;
+
UpdateLoginState();
+ g_browser_process->platform_part()->SessionManager()->SetSessionState(
+ session_manager::SESSION_STATE_ACTIVE);
+
content::NotificationService::current()->Notify(
chrome::NOTIFICATION_SESSION_STARTED,
content::Source<UserManager>(this),
diff --git a/chrome/chrome_browser_chromeos.gypi b/chrome/chrome_browser_chromeos.gypi
index 31a6a05..4ede722 100644
--- a/chrome/chrome_browser_chromeos.gypi
+++ b/chrome/chrome_browser_chromeos.gypi
@@ -52,6 +52,7 @@
'../components/components.gyp:cloud_policy_proto',
'../components/components.gyp:onc_component',
'../components/components.gyp:policy',
+ '../components/components.gyp:session_manager_component',
'../components/components.gyp:user_manager',
# This depends directly on the variations target, rather than just
# transitively via the common target because the proto sources need to
@@ -647,6 +648,16 @@
'browser/chromeos/login/screens/wrong_hwid_screen.cc',
'browser/chromeos/login/screens/wrong_hwid_screen.h',
'browser/chromeos/login/screens/wrong_hwid_screen_actor.h',
+ 'browser/chromeos/login/session/chrome_session_manager.cc',
+ 'browser/chromeos/login/session/chrome_session_manager.h',
+ 'browser/chromeos/login/session/kiosk_auto_launcher_session_manager_delegate.cc',
+ 'browser/chromeos/login/session/kiosk_auto_launcher_session_manager_delegate.h',
+ 'browser/chromeos/login/session/login_oobe_session_manager_delegate.cc',
+ 'browser/chromeos/login/session/login_oobe_session_manager_delegate.h',
+ 'browser/chromeos/login/session/restore_after_crash_session_manager_delegate.cc',
+ 'browser/chromeos/login/session/restore_after_crash_session_manager_delegate.h',
+ 'browser/chromeos/login/session/stub_login_session_manager_delegate.cc',
+ 'browser/chromeos/login/session/stub_login_session_manager_delegate.h',
'browser/chromeos/login/session/user_session_manager.cc',
'browser/chromeos/login/session/user_session_manager.h',
'browser/chromeos/login/signin/auth_sync_observer.cc',