diff options
18 files changed, 305 insertions, 35 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index dd533e3..c3a6d0a 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -12037,6 +12037,9 @@ Some features may be unavailable. Please check that the profile exists and you <message name="IDS_LOGIN_REMOVE"> Remove </message> + <message name="IDS_KIOSK_MODE_LOGIN_MESSAGE"> + Click anywhere to start your experience + </message> <message name="IDS_LOGIN_CHANGE_PHOTO"> Change picture </message> diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd index e056ee4..def9d05 100644 --- a/chrome/browser/browser_resources.grd +++ b/chrome/browser/browser_resources.grd @@ -156,6 +156,7 @@ <include name="IDR_KEYBOARD_OVERLAY_HTML" file="resources\chromeos\keyboard_overlay.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" /> <include name="IDR_KEYBOARD_OVERLAY_JS" file="resources\chromeos\keyboard_overlay.js" flattenhtml="true" type="BINDATA" /> <include name="IDR_LOGIN_HTML" file="resources\chromeos\login\login.html" flattenhtml="true" type="BINDATA" /> + <include name="IDR_DEMO_USER_LOGIN_HTML" file="resources\chromeos\login\demo_user_login.html" flattenhtml="true" type="BINDATA" /> <include name="IDR_MENU_HTML" file="resources\chromeos\menu.html" flattenhtml="true" type="BINDATA" /> <include name="IDR_MOBILE_MANIFEST" file="resources\chromeos\mobile_app\manifest.json" type="BINDATA" /> <include name="IDR_MOBILE_SETUP_PAGE_HTML" file="resources\chromeos\mobile_setup.html" flattenhtml="true" type="BINDATA" /> diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc index d710a69..579f7bc 100644 --- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc +++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc @@ -25,6 +25,7 @@ #include "chrome/browser/chromeos/imageburner/burn_manager.h" #include "chrome/browser/chromeos/input_method/input_method_manager.h" #include "chrome/browser/chromeos/input_method/xkeyboard.h" +#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.h" #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h" #include "chrome/browser/chromeos/login/authenticator.h" #include "chrome/browser/chromeos/login/login_utils.h" @@ -201,7 +202,7 @@ void OptionallyRunChromeOSLoginManager(const CommandLine& parsed_command_line, browser::ShowLoginWizard(first_screen, size); - if (parsed_command_line.HasSwitch(switches::kEnableKioskMode)) + if (chromeos::KioskModeHelper::IsKioskModeEnabled()) chromeos::InitializeKioskModeScreensaver(); } else if (parsed_command_line.HasSwitch(switches::kLoginUser) && parsed_command_line.HasSwitch(switches::kLoginPassword)) { @@ -226,7 +227,8 @@ ChromeBrowserMainPartsChromeos::ChromeBrowserMainPartsChromeos( } ChromeBrowserMainPartsChromeos::~ChromeBrowserMainPartsChromeos() { - chromeos::ShutdownKioskModeScreensaver(); + if (chromeos::KioskModeHelper::IsKioskModeEnabled()) + chromeos::ShutdownKioskModeScreensaver(); cryptohome::AsyncMethodCaller::Shutdown(); chromeos::imageburner::BurnManager::Shutdown(); chromeos::disks::DiskMountManager::Shutdown(); diff --git a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.cc b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.cc new file mode 100644 index 0000000..7d01028 --- /dev/null +++ b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.cc @@ -0,0 +1,70 @@ +// Copyright (c) 2012 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/kiosk_mode/kiosk_mode_helper.h" + +#include "base/bind.h" +#include "base/command_line.h" +#include "base/lazy_instance.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h" +#include "chrome/browser/policy/cloud_policy_constants.h" +#include "chrome/browser/policy/browser_policy_connector.h" +#include "chrome/common/chrome_switches.h" + +namespace { + +const int64 kScreensaverIdleTimeout = 60; + +} // namespace + +namespace chromeos { + +static base::LazyInstance<KioskModeHelper> g_kiosk_mode_helper = + LAZY_INSTANCE_INITIALIZER; + +// static +bool KioskModeHelper::IsKioskModeEnabled() { + if (g_browser_process) { + policy::BrowserPolicyConnector* bpc = + g_browser_process->browser_policy_connector(); + if (bpc && policy::DEVICE_MODE_KIOSK == bpc->GetDeviceMode()) + return true; + } + // In case we've force-enabled kiosk mode. + if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableKioskMode)) + return true; + + return false; +} + +// static +KioskModeHelper* KioskModeHelper::Get() { + return g_kiosk_mode_helper.Pointer(); +} + +void KioskModeHelper::Initialize(const base::Closure& notify_initialized) { + is_initialized_ = true; + notify_initialized.Run(); +} + +std::string KioskModeHelper::GetScreensaverPath() const { + if (!is_initialized_) + return std::string(); + + return CommandLine::ForCurrentProcess()-> + GetSwitchValueASCII(switches::kKioskModeScreensaverPath); +} + +int64 KioskModeHelper::GetScreensaverTimeout() const { + if (!is_initialized_) + return -1; + + return kScreensaverIdleTimeout; +} + +KioskModeHelper::KioskModeHelper() : is_initialized_(false) { +} + +} // namespace chromeos diff --git a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.h b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.h new file mode 100644 index 0000000..ee64927 --- /dev/null +++ b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.h @@ -0,0 +1,59 @@ +// Copyright (c) 2012 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_KIOSK_MODE_KIOSK_MODE_HELPER_H_ +#define CHROME_BROWSER_CHROMEOS_KIOSK_MODE_KIOSK_MODE_HELPER_H_ +#pragma once + +#include <string> + +#include "base/basictypes.h" +#include "base/callback_forward.h" + +namespace base { +template <typename T> struct DefaultLazyInstanceTraits; +} + +// This class centralizes all our code to get KioskMode settings; since +// KioskMode interferes with normal operations all over Chrome, having all +// data about it pulled from a central location would make future +// refactorings easier. This class also handles getting trust for the policies +// via it's init method. +// +// Note: If Initialize is not called before the various Getters, we'll return +// invalid values. +// +// TODO(rkc): Once the enterprise policy side of this code is checked in, add +// code to pull from the enterprise policy instead of flags and constants. +namespace chromeos { + +class KioskModeHelper { + public: + // This method checks if Kiosk Mode is enabled or not. + static bool IsKioskModeEnabled(); + + static KioskModeHelper* Get(); + + // Initialize the settings helper; this will wait till trust is established + // for the enterprise policies then call the callback to notify the caller. + void Initialize(const base::Closure& notify_initialized); + bool is_initialized() const { return is_initialized_; } + + // Getters for various Kiosk Mode values. + std::string GetScreensaverPath() const; + int64 GetScreensaverTimeout() const; + + private: + friend struct base::DefaultLazyInstanceTraits<KioskModeHelper>; + KioskModeHelper(); + + bool is_initialized_; + + DISALLOW_COPY_AND_ASSIGN(KioskModeHelper); +}; + + +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_KIOSK_MODE_KIOSK_MODE_HELPER_H_ diff --git a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc index bd943f4..cd84f96 100644 --- a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc +++ b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc @@ -4,25 +4,37 @@ #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h" +#include "base/bind.h" #include "base/lazy_instance.h" #include "base/logging.h" #include "chrome/browser/chromeos/dbus/dbus_thread_manager.h" +#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.h" #include "chrome/browser/chromeos/login/user_manager.h" #include "chrome/browser/chromeos/ui/screensaver_extension_dialog.h" #include "chrome/common/chrome_notification_types.h" #include "content/public/browser/notification_service.h" -namespace { +namespace chromeos { -// This (along with screensaver location) will change once we have the -// retail mode enterprise policy set up. -const int64 kScreensaverIdleTimeout = 60; +KioskModeScreensaver::KioskModeScreensaver() { + if (chromeos::KioskModeHelper::Get()->is_initialized()) + Setup(); + else + chromeos::KioskModeHelper::Get()->Initialize( + base::Bind(&KioskModeScreensaver::Setup, + base::Unretained(this))); -} // namespace +} -namespace chromeos { +KioskModeScreensaver::~KioskModeScreensaver() { + chromeos::PowerManagerClient* power_manager = + chromeos::DBusThreadManager::Get()->GetPowerManagerClient(); + if (power_manager->HasObserver(this)) + power_manager->RemoveObserver(this); +} + +void KioskModeScreensaver::Setup() { -KioskModeScreensaver::KioskModeScreensaver() { // We should NOT be created if already logged in. CHECK(!chromeos::UserManager::Get()->user_is_logged_in()); @@ -36,15 +48,9 @@ KioskModeScreensaver::KioskModeScreensaver() { power_manager->AddObserver(this); // Register for the next Idle for kScreensaverIdleTimeout event. - chromeos::DBusThreadManager::Get()->GetPowerManagerClient()-> - RequestIdleNotification(kScreensaverIdleTimeout * 1000); -} - -KioskModeScreensaver::~KioskModeScreensaver() { - chromeos::PowerManagerClient* power_manager = - chromeos::DBusThreadManager::Get()->GetPowerManagerClient(); - if (power_manager->HasObserver(this)) - power_manager->RemoveObserver(this); + chromeos::DBusThreadManager::Get()-> + GetPowerManagerClient()->RequestIdleNotification( + chromeos::KioskModeHelper::Get()->GetScreensaverTimeout() * 1000); } // NotificationObserver overrides: @@ -63,23 +69,20 @@ void KioskModeScreensaver::Observe( } void KioskModeScreensaver::IdleNotify(int64 threshold) { - // We're idle, next time we go active, we need to know so we can remove - // the logout dialog if it's still up. - chromeos::DBusThreadManager::Get()->GetPowerManagerClient()-> - RequestActiveNotification(); + // We're idle; close screensaver when we go active. + chromeos::DBusThreadManager::Get()-> + GetPowerManagerClient()->RequestActiveNotification(); browser::ShowScreensaverDialog(); } void KioskModeScreensaver::ActiveNotify() { - // Before anything else, close the logout dialog to prevent restart browser::CloseScreensaverDialog(); - // Now that we're active, register a request for notification for - // the next time we go idle for kScreensaverIdleTimeout seconds. - chromeos::DBusThreadManager::Get()->GetPowerManagerClient()-> - RequestIdleNotification(kScreensaverIdleTimeout * 1000); -} + // Request notification for Idle so we can start up the screensaver. + chromeos::DBusThreadManager::Get()-> + GetPowerManagerClient()->RequestIdleNotification( + chromeos::KioskModeHelper::Get()->GetScreensaverTimeout() * 1000);} static KioskModeScreensaver* g_kiosk_mode_screensaver = NULL; @@ -93,7 +96,7 @@ void InitializeKioskModeScreensaver() { } void ShutdownKioskModeScreensaver() { - if (g_kiosk_mode_screensaver) { + if (!g_kiosk_mode_screensaver) { LOG(WARNING) << "Screensaver shutdown called when uninitialized."; return; } diff --git a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h index 9daeec0..2847f32 100644 --- a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h +++ b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h @@ -19,6 +19,9 @@ class KioskModeScreensaver : public PowerManagerClient::Observer, KioskModeScreensaver(); virtual ~KioskModeScreensaver(); + // Really initialize screensaver when KioskModeHelper is initialized. + void Setup(); + // NotificationObserver overrides: virtual void Observe(int type, const content::NotificationSource& source, diff --git a/chrome/browser/chromeos/login/webui_login_display.cc b/chrome/browser/chromeos/login/webui_login_display.cc index 5e5b3c9..cabf1b3 100644 --- a/chrome/browser/chromeos/login/webui_login_display.cc +++ b/chrome/browser/chromeos/login/webui_login_display.cc @@ -168,6 +168,12 @@ void WebUILoginDisplay::Login(const std::string& username, delegate_->Login(username, password); } +void WebUILoginDisplay::LoginAsDemoUser() { + DCHECK(delegate_); + if (delegate_) + delegate_->LoginAsDemoUser(); +} + void WebUILoginDisplay::LoginAsGuest() { DCHECK(delegate_); if (delegate_) diff --git a/chrome/browser/chromeos/login/webui_login_display.h b/chrome/browser/chromeos/login/webui_login_display.h index 3607d39..3d72420 100644 --- a/chrome/browser/chromeos/login/webui_login_display.h +++ b/chrome/browser/chromeos/login/webui_login_display.h @@ -49,6 +49,7 @@ class WebUILoginDisplay : public LoginDisplay, const std::string& password) OVERRIDE; virtual void Login(const std::string& username, const std::string& password) OVERRIDE; + virtual void LoginAsDemoUser() OVERRIDE; virtual void LoginAsGuest() OVERRIDE; virtual void Signout() OVERRIDE; virtual void FixCaptivePortal() OVERRIDE; diff --git a/chrome/browser/chromeos/login/webui_login_display_host.cc b/chrome/browser/chromeos/login/webui_login_display_host.cc index b0a1b3a..16ed212 100644 --- a/chrome/browser/chromeos/login/webui_login_display_host.cc +++ b/chrome/browser/chromeos/login/webui_login_display_host.cc @@ -7,6 +7,7 @@ #include "base/command_line.h" #include "base/memory/scoped_ptr.h" #include "base/time.h" +#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.h" #include "chrome/browser/chromeos/login/oobe_display.h" #include "chrome/browser/chromeos/login/webui_login_display.h" #include "chrome/browser/chromeos/login/webui_login_view.h" @@ -127,6 +128,8 @@ void WebUILoginDisplayHost::StartSignInScreen() { BaseLoginDisplayHost::StartSignInScreen(); CHECK(webui_login_display_); GetOobeUI()->ShowSigninScreen(webui_login_display_); + if (chromeos::KioskModeHelper::IsKioskModeEnabled()) + SetStatusAreaVisible(false); } void WebUILoginDisplayHost::OnBrowserCreated() { diff --git a/chrome/browser/chromeos/ui/screensaver_extension_dialog.cc b/chrome/browser/chromeos/ui/screensaver_extension_dialog.cc index 8eb2879..b8e02a6 100644 --- a/chrome/browser/chromeos/ui/screensaver_extension_dialog.cc +++ b/chrome/browser/chromeos/ui/screensaver_extension_dialog.cc @@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/logging.h" #include "base/memory/ref_counted.h" +#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" @@ -55,21 +56,28 @@ ScreensaverExtensionDialog::ScreensaverExtensionDialog() } void ScreensaverExtensionDialog::LoadExtension() { + // If the helper is not initialized, call us again when it is. + // We can't get the screensaver path till the helper is ready. + if (!chromeos::KioskModeHelper::Get()->is_initialized()) { + chromeos::KioskModeHelper::Get()->Initialize( + base::Bind(&ScreensaverExtensionDialog::LoadExtension, + base::Unretained(this))); + return; + } + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); std::string error; - std::string extension_path = CommandLine::ForCurrentProcess()-> - GetSwitchValueASCII(switches::kKioskModeScreensaverPath); scoped_refptr<Extension> screensaver_extension = extension_file_util::LoadExtension( - FilePath(extension_path), + FilePath(chromeos::KioskModeHelper::Get()->GetScreensaverPath()), Extension::COMPONENT, Extension::NO_FLAGS, &error); if (!screensaver_extension) { LOG(ERROR) << "Could not load screensaver extension from: " << - extension_path; + chromeos::KioskModeHelper::Get()->GetScreensaverPath(); return; } diff --git a/chrome/browser/resources/chromeos/login/demo_user_login.css b/chrome/browser/resources/chromeos/login/demo_user_login.css new file mode 100644 index 0000000..07fc214 --- /dev/null +++ b/chrome/browser/resources/chromeos/login/demo_user_login.css @@ -0,0 +1,41 @@ +/* Copyright (c) 2012 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. + */ + +html, +body { + height: 100%; + width: 100%; +} + +body { + margin: 0; + overflow: hidden; + padding: 0; +} + +#page { + -webkit-box-align: center; + -webkit-box-pack: center; + background: -webkit-linear-gradient(top, #dadada, white); + display: -webkit-box; + height: 100%; + position: absolute; + width: 100%; +} + +#logo-container { + text-align: center; +} + +#logo { + width: 150px; +} + +#demo-login-text { + font-family: 'Open Sans'; + font-size: 18px; + font-weight: bold; + padding-top: 80px; +} diff --git a/chrome/browser/resources/chromeos/login/demo_user_login.html b/chrome/browser/resources/chromeos/login/demo_user_login.html new file mode 100644 index 0000000..2bdd6bf --- /dev/null +++ b/chrome/browser/resources/chromeos/login/demo_user_login.html @@ -0,0 +1,19 @@ +<!DOCTYPE HTML> +<html i18n-values="dir:textdirection"> +<head> +<link rel="stylesheet" href="demo_user_login.css"> +<script src="chrome://resources/js/util.js"></script> +<script src="demo_user_login.js"></script> +</head> +<body> + <div id="page"> + <div id="logo-container"> + <div> + <img id="logo" src="images/chrome_center_logo.gif"> + </div> + <div id="demo-login-text" i18n-content="demoLoginMessage"> + </div> + </div> + </div> +</body> +</html> diff --git a/chrome/browser/resources/chromeos/login/demo_user_login.js b/chrome/browser/resources/chromeos/login/demo_user_login.js new file mode 100644 index 0000000..974762e --- /dev/null +++ b/chrome/browser/resources/chromeos/login/demo_user_login.js @@ -0,0 +1,25 @@ +// Copyright (c) 2012 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. + +/** + * @fileoverview Demo login UI. + */ + +/** + * Handles a user clicking anywhere on the screen. This will log the demo user + * in. Yes, this actually _is the intention. + */ +onClick = function() { + chrome.send('launchDemoUser'); +}; + +/** + * Initializes the click handler. + */ +initialize = function() { + document.addEventListener('click', onClick); +}; + +disableTextSelectAndDrag(); +document.addEventListener('DOMContentLoaded', initialize); diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc index 6aeb354..a109251 100644 --- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc +++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -11,6 +11,7 @@ #include "base/memory/ref_counted_memory.h" #include "base/values.h" #include "chrome/browser/browser_about_handler.h" +#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.h" #include "chrome/browser/chromeos/login/enrollment/enterprise_enrollment_screen_actor.h" #include "chrome/browser/chromeos/login/screen_locker.h" #include "chrome/browser/chromeos/login/user_manager.h" @@ -90,7 +91,9 @@ void OobeUIHTMLSource::StartDataRequest(const std::string& path, } std::string response; - if (path.empty()) + if (chromeos::KioskModeHelper::Get()->IsKioskModeEnabled()) + response = GetDataResource(IDR_DEMO_USER_LOGIN_HTML); + else if (path.empty()) response = GetDataResource(IDR_OOBE_HTML); else if (path == kLoginPath) response = GetDataResource(IDR_LOGIN_HTML); diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc index da1c798..7e23bf7 100644 --- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc @@ -20,6 +20,7 @@ #include "chrome/browser/chromeos/dbus/power_manager_client.h" #include "chrome/browser/chromeos/input_method/input_method_manager.h" #include "chrome/browser/chromeos/input_method/xkeyboard.h" +#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.h" #include "chrome/browser/chromeos/login/screen_locker.h" #include "chrome/browser/chromeos/login/user.h" #include "chrome/browser/chromeos/login/webui_login_display.h" @@ -327,6 +328,11 @@ void SigninScreenHandler::GetLocalizedStrings( l10n_util::GetStringUTF16(IDS_OFFLINE_LOGIN_HTML)); localized_strings->SetString("removeUser", l10n_util::GetStringUTF16(IDS_LOGIN_REMOVE)); + + if (chromeos::KioskModeHelper::Get()->IsKioskModeEnabled()) { + localized_strings->SetString("demoLoginMessage", + l10n_util::GetStringUTF16(IDS_KIOSK_MODE_LOGIN_MESSAGE)); + } } void SigninScreenHandler::Show(bool oobe_ui) { @@ -391,6 +397,9 @@ void SigninScreenHandler::RegisterMessages() { web_ui()->RegisterMessageCallback("getUsers", base::Bind(&SigninScreenHandler::HandleGetUsers, base::Unretained(this))); + web_ui()->RegisterMessageCallback("launchDemoUser", + base::Bind(&SigninScreenHandler::HandleLaunchDemoUser, + base::Unretained(this))); web_ui()->RegisterMessageCallback("launchIncognito", base::Bind(&SigninScreenHandler::HandleLaunchIncognito, base::Unretained(this))); @@ -651,6 +660,12 @@ void SigninScreenHandler::HandleAuthenticateUser(const base::ListValue* args) { delegate_->Login(username, password); } +void SigninScreenHandler::HandleLaunchDemoUser(const base::ListValue* args) { + if (!delegate_) + return; + delegate_->LoginAsDemoUser(); +} + void SigninScreenHandler::HandleLaunchIncognito(const base::ListValue* args) { if (!delegate_) return; diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h index 4f589db..271f935 100644 --- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h @@ -63,6 +63,9 @@ class SigninScreenHandlerDelegate { virtual void Login(const std::string& username, const std::string& password) = 0; + // Sign in into a demo user session. + virtual void LoginAsDemoUser() = 0; + // Sign in into Guest session. virtual void LoginAsGuest() = 0; @@ -183,6 +186,9 @@ class SigninScreenHandler : public BaseScreenHandler, // Handles authentication request when signing in an existing user. void HandleAuthenticateUser(const base::ListValue* args); + // Handles entering as the demo user. + void HandleLaunchDemoUser(const base::ListValue* args); + // Handles entering bwsi mode request. void HandleLaunchIncognito(const base::ListValue* args); diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 961f7b3..02241d4 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -558,6 +558,8 @@ 'browser/chromeos/input_method/xkeyboard.cc', 'browser/chromeos/input_method/xkeyboard.h', 'browser/chromeos/input_method/xkeyboard_data.h', + 'browser/chromeos/kiosk_mode/kiosk_mode_helper.cc', + 'browser/chromeos/kiosk_mode/kiosk_mode_helper.h', 'browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc', 'browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h', 'browser/chromeos/language_preferences.cc', |