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

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

Issue 9538002: Create Login UI for Demo User. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: image removed. 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h" 5 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h"
6 6
7 #include "base/bind.h"
7 #include "base/lazy_instance.h" 8 #include "base/lazy_instance.h"
8 #include "base/logging.h" 9 #include "base/logging.h"
9 #include "chrome/browser/chromeos/dbus/dbus_thread_manager.h" 10 #include "chrome/browser/chromeos/dbus/dbus_thread_manager.h"
11 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.h"
10 #include "chrome/browser/chromeos/login/user_manager.h" 12 #include "chrome/browser/chromeos/login/user_manager.h"
11 #include "chrome/browser/chromeos/ui/screensaver_extension_dialog.h" 13 #include "chrome/browser/chromeos/ui/screensaver_extension_dialog.h"
12 #include "chrome/common/chrome_notification_types.h" 14 #include "chrome/common/chrome_notification_types.h"
13 #include "content/public/browser/notification_service.h" 15 #include "content/public/browser/notification_service.h"
14 16
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 { 17 namespace chromeos {
24 18
25 KioskModeScreensaver::KioskModeScreensaver() { 19 KioskModeScreensaver::KioskModeScreensaver() {
20 if (chromeos::KioskModeHelper::Get()->is_initialized())
21 Setup();
22 else
pastarmovj 2012/03/05 15:22:25 curlies here because and above.
rkc 2012/03/16 00:17:33 Done.
23 chromeos::KioskModeHelper::Get()->Initialize(
24 base::Bind(&KioskModeScreensaver::Setup,
25 base::Unretained(this)));
26
27 }
28
29 KioskModeScreensaver::~KioskModeScreensaver() {
30 chromeos::PowerManagerClient* power_manager =
31 chromeos::DBusThreadManager::Get()->GetPowerManagerClient();
32 if (power_manager->HasObserver(this))
33 power_manager->RemoveObserver(this);
34 }
35
36 void KioskModeScreensaver::Setup() {
37
26 // We should NOT be created if already logged in. 38 // We should NOT be created if already logged in.
27 CHECK(!chromeos::UserManager::Get()->user_is_logged_in()); 39 CHECK(!chromeos::UserManager::Get()->user_is_logged_in());
28 40
29 registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_CHANGED, 41 registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_CHANGED,
30 content::NotificationService::AllSources()); 42 content::NotificationService::AllSources());
31 43
32 // We will register ourselves now and unregister if a user logs in. 44 // We will register ourselves now and unregister if a user logs in.
33 chromeos::PowerManagerClient* power_manager = 45 chromeos::PowerManagerClient* power_manager =
34 chromeos::DBusThreadManager::Get()->GetPowerManagerClient(); 46 chromeos::DBusThreadManager::Get()->GetPowerManagerClient();
35 if (!power_manager->HasObserver(this)) 47 if (!power_manager->HasObserver(this))
36 power_manager->AddObserver(this); 48 power_manager->AddObserver(this);
37 49
38 // Register for the next Idle for kScreensaverIdleTimeout event. 50 // Register for the next Idle for kScreensaverIdleTimeout event.
39 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()-> 51 chromeos::DBusThreadManager::Get()->
40 RequestIdleNotification(kScreensaverIdleTimeout * 1000); 52 GetPowerManagerClient()->RequestIdleNotification(
41 } 53 chromeos::KioskModeHelper::Get()->GetScreensaverTimeout() * 1000);
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 } 54 }
49 55
50 // NotificationObserver overrides: 56 // NotificationObserver overrides:
51 void KioskModeScreensaver::Observe( 57 void KioskModeScreensaver::Observe(
52 int type, 58 int type,
53 const content::NotificationSource& source, 59 const content::NotificationSource& source,
54 const content::NotificationDetails& details) { 60 const content::NotificationDetails& details) {
55 DCHECK_EQ(type, chrome::NOTIFICATION_LOGIN_USER_CHANGED); 61 DCHECK_EQ(type, chrome::NOTIFICATION_LOGIN_USER_CHANGED);
56 // User logged in, remove our observers, screensaver will be deactivated. 62 // User logged in, remove our observers, screensaver will be deactivated.
57 chromeos::PowerManagerClient* power_manager = 63 chromeos::PowerManagerClient* power_manager =
58 chromeos::DBusThreadManager::Get()->GetPowerManagerClient(); 64 chromeos::DBusThreadManager::Get()->GetPowerManagerClient();
59 if (power_manager->HasObserver(this)) 65 if (power_manager->HasObserver(this))
60 power_manager->RemoveObserver(this); 66 power_manager->RemoveObserver(this);
61 67
62 ShutdownKioskModeScreensaver(); 68 ShutdownKioskModeScreensaver();
63 } 69 }
64 70
65 void KioskModeScreensaver::IdleNotify(int64 threshold) { 71 void KioskModeScreensaver::IdleNotify(int64 threshold) {
66 // We're idle, next time we go active, we need to know so we can remove 72 // We're idle; close screensaver when we go active.
67 // the logout dialog if it's still up. 73 chromeos::DBusThreadManager::Get()->
68 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()-> 74 GetPowerManagerClient()->RequestActiveNotification();
69 RequestActiveNotification();
70 75
71 browser::ShowScreensaverDialog(); 76 browser::ShowScreensaverDialog();
72 } 77 }
73 78
74 void KioskModeScreensaver::ActiveNotify() { 79 void KioskModeScreensaver::ActiveNotify() {
75 // Before anything else, close the logout dialog to prevent restart
76 browser::CloseScreensaverDialog(); 80 browser::CloseScreensaverDialog();
77 81
78 // Now that we're active, register a request for notification for 82 // Request notification for Idle so we can start up the screensaver.
79 // the next time we go idle for kScreensaverIdleTimeout seconds. 83 chromeos::DBusThreadManager::Get()->
80 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()-> 84 GetPowerManagerClient()->RequestIdleNotification(
81 RequestIdleNotification(kScreensaverIdleTimeout * 1000); 85 chromeos::KioskModeHelper::Get()->GetScreensaverTimeout() * 1000);}
pastarmovj 2012/03/05 15:22:25 Please put the } on a new line.
rkc 2012/03/16 00:17:33 Code doesn't exist anymore. Done.
82 }
83 86
84 static KioskModeScreensaver* g_kiosk_mode_screensaver = NULL; 87 static KioskModeScreensaver* g_kiosk_mode_screensaver = NULL;
85 88
86 void InitializeKioskModeScreensaver() { 89 void InitializeKioskModeScreensaver() {
87 if (g_kiosk_mode_screensaver) { 90 if (g_kiosk_mode_screensaver) {
88 LOG(WARNING) << "Screensaver was already initialized"; 91 LOG(WARNING) << "Screensaver was already initialized";
89 return; 92 return;
90 } 93 }
91 94
92 g_kiosk_mode_screensaver = new KioskModeScreensaver(); 95 g_kiosk_mode_screensaver = new KioskModeScreensaver();
93 } 96 }
94 97
95 void ShutdownKioskModeScreensaver() { 98 void ShutdownKioskModeScreensaver() {
96 if (g_kiosk_mode_screensaver) { 99 if (!g_kiosk_mode_screensaver) {
97 LOG(WARNING) << "Screensaver shutdown called when uninitialized."; 100 LOG(WARNING) << "Screensaver shutdown called when uninitialized.";
98 return; 101 return;
99 } 102 }
100 103
101 delete g_kiosk_mode_screensaver; 104 delete g_kiosk_mode_screensaver;
102 g_kiosk_mode_screensaver = NULL; 105 g_kiosk_mode_screensaver = NULL;
103 } 106 }
104 107
105 } // namespace chromeos 108 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698