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

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: 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..9100f7e431864f6d8a0a1b168804b5c7464dc5be 100644
--- a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc
+++ b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc
@@ -13,7 +13,9 @@
#include "base/logging.h"
#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h"
#include "chrome/browser/chromeos/login/existing_user_controller.h"
+#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
xiyuan 2012/10/24 22:03:19 nit: sort alphabetically
rkc 2012/10/24 22:05:58 Done.
#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/common/chrome_notification_types.h"
@@ -130,7 +132,6 @@ KioskModeScreensaver::~KioskModeScreensaver() {
if (ash::Shell::GetInstance() &&
ash::Shell::GetInstance()->user_activity_detector())
ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this);
- registrar_.RemoveAll();
}
void KioskModeScreensaver::GetScreensaverCrxPath() {
@@ -178,9 +179,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 +192,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;
@@ -239,6 +232,11 @@ void InitializeKioskModeScreensaver() {
}
void ShutdownKioskModeScreensaver() {
+ if (ash::Shell::GetInstance()->user_activity_detector()->HasObserver(
+ g_kiosk_mode_screensaver))
+ ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(
+ g_kiosk_mode_screensaver);
xiyuan 2012/10/24 22:03:19 There is similar code in KioskModeScreensaver's dt
rkc 2012/10/24 22:05:58 Crap, didn't realize this was already being handle
+
delete g_kiosk_mode_screensaver;
g_kiosk_mode_screensaver = NULL;
}

Powered by Google App Engine
This is Rietveld 408576698