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

Side by Side Diff: chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc

Issue 9455038: Screensaver at login screen. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 8 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h"
6
7 #include "base/lazy_instance.h"
8 #include "base/logging.h"
9 #include "chrome/browser/chromeos/dbus/dbus_thread_manager.h"
10 #include "chrome/browser/chromeos/login/user_manager.h"
11 #include "chrome/browser/chromeos/ui/screensaver_extension_dialog.h"
12 #include "chrome/common/chrome_notification_types.h"
13 #include "content/public/browser/notification_service.h"
14
15 namespace {
16
17 // This (along with screensaver location) will change once we have the
18 // retail mode enterprise policy set up.
19 const int64 kScreensaverIdleTimeout = 60;
20
21 } // namespace
22
23 namespace chromeos {
24
25 KioskModeScreensaver::KioskModeScreensaver() {
26 // We should NOT be created if already logged in.
27 CHECK(!chromeos::UserManager::Get()->user_is_logged_in());
28
29 registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_CHANGED,
30 content::NotificationService::AllSources());
31
32 // We will register ourselves now and unregister if a user logs in.
33 chromeos::PowerManagerClient* power_manager =
34 chromeos::DBusThreadManager::Get()->GetPowerManagerClient();
35 if (!power_manager->HasObserver(this))
36 power_manager->AddObserver(this);
37
38 // Register for the next Idle for kScreensaverIdleTimeout event.
39 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->
40 RequestIdleNotification(kScreensaverIdleTimeout * 1000);
41 }
42
43 KioskModeScreensaver::~KioskModeScreensaver() {
44 chromeos::PowerManagerClient* power_manager =
45 chromeos::DBusThreadManager::Get()->GetPowerManagerClient();
46 if (power_manager->HasObserver(this))
47 power_manager->RemoveObserver(this);
48 }
49
50 // NotificationObserver overrides:
51 void KioskModeScreensaver::Observe(
52 int type,
53 const content::NotificationSource& source,
54 const content::NotificationDetails& details) {
55 DCHECK_EQ(type, chrome::NOTIFICATION_LOGIN_USER_CHANGED);
56 // User logged in, remove our observers, screensaver will be deactivated.
57 chromeos::PowerManagerClient* power_manager =
58 chromeos::DBusThreadManager::Get()->GetPowerManagerClient();
59 if (power_manager->HasObserver(this))
60 power_manager->RemoveObserver(this);
61
62 ShutdownKioskModeScreensaver();
63 }
64
65 void KioskModeScreensaver::IdleNotify(int64 threshold) {
66 // We're idle, next time we go active, we need to know so we can remove
67 // the logout dialog if it's still up.
68 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->
69 RequestActiveNotification();
70
71 browser::ShowScreensaverDialog();
72 }
73
74 void KioskModeScreensaver::ActiveNotify() {
75 // Before anything else, close the logout dialog to prevent restart
76 browser::CloseScreensaverDialog();
77
78 // Now that we're active, register a request for notification for
79 // the next time we go idle for kScreensaverIdleTimeout seconds.
80 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->
81 RequestIdleNotification(kScreensaverIdleTimeout * 1000);
82 }
83
84 static KioskModeScreensaver* g_kiosk_mode_screensaver = NULL;
85
86 void InitializeKioskModeScreensaver() {
87 if (g_kiosk_mode_screensaver) {
88 LOG(WARNING) << "Screensaver was already initialized";
89 return;
90 }
91
92 g_kiosk_mode_screensaver = new KioskModeScreensaver();
93 }
94
95 void ShutdownKioskModeScreensaver() {
96 if (g_kiosk_mode_screensaver) {
97 LOG(WARNING) << "Screensaver shutdown called when uninitialized.";
Nikita (slow) 2012/02/28 12:10:59 When kiosk mode is not enabled, you'll be calling
rkc 2012/02/29 04:43:27 Fixed in a follow-on CL (http://codereview.chromiu
98 return;
99 }
100
101 delete g_kiosk_mode_screensaver;
102 g_kiosk_mode_screensaver = NULL;
103 }
104
105 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698