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

Unified Diff: chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc

Issue 11264017: On active, dismiss the retail mode screensaver immidiately. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed irrelevant test. Created 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc
diff --git a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc
index 282e696c41bf90ec795f6f6f5121706f96faf0da..b8af080d9695ef9fc214f227832bee6448916d8f 100644
--- a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc
+++ b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc
@@ -14,8 +14,10 @@
#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h"
#include "chrome/browser/chromeos/login/existing_user_controller.h"
#include "chrome/browser/chromeos/login/user_manager.h"
+#include "chrome/browser/chromeos/login/webui_login_display_host.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/sandboxed_unpacker.h"
+#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_file_util.h"
@@ -128,9 +130,9 @@ KioskModeScreensaver::~KioskModeScreensaver() {
// In case we're shutting down without ever triggering the active
// notification and/or logging in.
if (ash::Shell::GetInstance() &&
- ash::Shell::GetInstance()->user_activity_detector())
+ ash::Shell::GetInstance()->user_activity_detector() &&
+ ash::Shell::GetInstance()->user_activity_detector()->HasObserver(this))
ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this);
- registrar_.RemoveAll();
}
void KioskModeScreensaver::GetScreensaverCrxPath() {
@@ -178,9 +180,6 @@ void KioskModeScreensaver::SetupScreensaver(
if (chromeos::UserManager::Get()->IsUserLoggedIn())
return;
- // Add our observers for login and user active.
- registrar_.Add(this, chrome::NOTIFICATION_SESSION_STARTED,
- content::NotificationService::AllSources());
ash::Shell::GetInstance()->user_activity_detector()->AddObserver(this);
Profile* default_profile = ProfileManager::GetDefaultProfile();
@@ -194,37 +193,32 @@ void KioskModeScreensaver::SetupScreensaver(
}
}
-// NotificationObserver overrides:
-void KioskModeScreensaver::Observe(
- int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- DCHECK_EQ(type, chrome::NOTIFICATION_SESSION_STARTED);
-
- registrar_.RemoveAll();
-
- ash::CloseScreensaver();
- ShutdownKioskModeScreensaver();
-}
-
void KioskModeScreensaver::OnUserActivity() {
// We don't want to handle further user notifications; we'll either login
// the user and close out or or at least close the screensaver.
ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this);
- // User is active, log us in.
+ // Find the retail mode login page.
+ CHECK(WebUILoginDisplayHost::default_host());
+ WebUILoginDisplayHost* webui_host =
+ static_cast<WebUILoginDisplayHost*>(
+ WebUILoginDisplayHost::default_host());
+ OobeUI* oobe_ui = webui_host->GetOobeUI();
+
+ // Show the login spinner.
+ CHECK(oobe_ui);
+ oobe_ui->ShowRetailModeLoginSpinner();
+
+ // Close the screensaver, our login spinner is already showing.
+ ash::CloseScreensaver();
+
+ // Log us in.
ExistingUserController* controller =
ExistingUserController::current_controller();
+ CHECK(controller);
+ controller->LoginAsDemoUser();
- if (controller) {
- // Logging in will shut us down and remove the screen saver.
- controller->LoginAsDemoUser();
- } else {
- // Remove the screensaver so the user can at least use the underlying
- // login screen to be able to log in.
- ash::CloseScreensaver();
- ShutdownKioskModeScreensaver();
- }
+ ShutdownKioskModeScreensaver();
}
static KioskModeScreensaver* g_kiosk_mode_screensaver = NULL;

Powered by Google App Engine
This is Rietveld 408576698