| Index: chrome/browser/chromeos/login/session/user_session_manager.cc
|
| diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc
|
| index 236c38aeabbec729c613752c2783c748a978451b..6e2159ce976722978eeef9d85aeaec204eca2838 100644
|
| --- a/chrome/browser/chromeos/login/session/user_session_manager.cc
|
| +++ b/chrome/browser/chromeos/login/session/user_session_manager.cc
|
| @@ -18,6 +18,7 @@
|
| #include "base/sys_info.h"
|
| #include "base/task_runner_util.h"
|
| #include "base/threading/worker_pool.h"
|
| +#include "chrome/browser/about_flags.h"
|
| #include "chrome/browser/app_mode/app_mode_utils.h"
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/browser_process_platform_part_chromeos.h"
|
| @@ -25,6 +26,7 @@
|
| #include "chrome/browser/chromeos/base/locale_util.h"
|
| #include "chrome/browser/chromeos/boot_times_loader.h"
|
| #include "chrome/browser/chromeos/input_method/input_method_util.h"
|
| +#include "chrome/browser/chromeos/login/chrome_restart_request.h"
|
| #include "chrome/browser/chromeos/login/demo_mode/demo_app_launcher.h"
|
| #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.h"
|
| #include "chrome/browser/chromeos/login/profile_auth_data.h"
|
| @@ -32,6 +34,7 @@
|
| #include "chrome/browser/chromeos/login/saml/saml_offline_signin_limiter_factory.h"
|
| #include "chrome/browser/chromeos/login/signin/oauth2_login_manager.h"
|
| #include "chrome/browser/chromeos/login/signin/oauth2_login_manager_factory.h"
|
| +#include "chrome/browser/chromeos/login/startup_utils.h"
|
| #include "chrome/browser/chromeos/login/users/chrome_user_manager.h"
|
| #include "chrome/browser/chromeos/login/users/supervised_user_manager.h"
|
| #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
|
| @@ -57,6 +60,7 @@
|
| #include "chromeos/dbus/dbus_thread_manager.h"
|
| #include "chromeos/dbus/session_manager_client.h"
|
| #include "chromeos/ime/input_method_manager.h"
|
| +#include "chromeos/login/user_names.h"
|
| #include "chromeos/network/portal_detector/network_portal_detector.h"
|
| #include "chromeos/network/portal_detector/network_portal_detector_strategy.h"
|
| #include "chromeos/settings/cros_settings_names.h"
|
| @@ -69,6 +73,7 @@
|
| #include "components/user_manager/user_type.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/notification_service.h"
|
| +#include "url/gurl.h"
|
|
|
| namespace chromeos {
|
|
|
| @@ -239,6 +244,38 @@ UserSessionManager::~UserSessionManager() {
|
| net::NetworkChangeNotifier::RemoveConnectionTypeObserver(this);
|
| }
|
|
|
| +void UserSessionManager::CompleteGuestSessionLogin(const GURL& start_url) {
|
| + VLOG(1) << "Completing guest session login";
|
| +
|
| + // For guest session we ask session_manager to restart Chrome with --bwsi
|
| + // flag. We keep only some of the arguments of this process.
|
| + const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess();
|
| + CommandLine command_line(browser_command_line.GetProgram());
|
| + std::string cmd_line_str =
|
| + GetOffTheRecordCommandLine(start_url,
|
| + StartupUtils::IsOobeCompleted(),
|
| + browser_command_line,
|
| + &command_line);
|
| +
|
| + // This makes sure that Chrome restarts with no per-session flags. The guest
|
| + // profile will always have empty set of per-session flags. If this is not
|
| + // done and device owner has some per-session flags, when Chrome is relaunched
|
| + // the guest profile session flags will not match the current command line and
|
| + // another restart will be attempted in order to reset the user flags for the
|
| + // guest user.
|
| + const CommandLine user_flags(CommandLine::NO_PROGRAM);
|
| + if (!about_flags::AreSwitchesIdenticalToCurrentCommandLine(
|
| + user_flags,
|
| + *CommandLine::ForCurrentProcess(),
|
| + NULL)) {
|
| + DBusThreadManager::Get()->GetSessionManagerClient()->SetFlagsForUser(
|
| + chromeos::login::kGuestUserName,
|
| + CommandLine::StringVector());
|
| + }
|
| +
|
| + RestartChrome(cmd_line_str);
|
| +}
|
| +
|
| void UserSessionManager::StartSession(
|
| const UserContext& user_context,
|
| scoped_refptr<Authenticator> authenticator,
|
|
|