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

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

Issue 10191010: Re-implement the screensaver to use WebView instead of ExtensionDialogHost. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 7 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 "ash/screensaver/screensaver_view.h"
7 #include "base/bind.h" 8 #include "base/bind.h"
8 #include "base/callback.h" 9 #include "base/callback.h"
9 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
10 #include "base/logging.h" 11 #include "base/logging.h"
11 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h" 12 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h"
12 #include "chrome/browser/chromeos/login/existing_user_controller.h" 13 #include "chrome/browser/chromeos/login/existing_user_controller.h"
13 #include "chrome/browser/chromeos/login/user_manager.h" 14 #include "chrome/browser/chromeos/login/user_manager.h"
14 #include "chrome/browser/chromeos/ui/screensaver_extension_dialog.h" 15 #include "chrome/browser/extensions/extension_service.h"
15 #include "chrome/browser/extensions/sandboxed_extension_unpacker.h" 16 #include "chrome/browser/extensions/sandboxed_extension_unpacker.h"
16 #include "chrome/common/chrome_notification_types.h" 17 #include "chrome/common/chrome_notification_types.h"
17 #include "chrome/common/extensions/extension.h" 18 #include "chrome/common/extensions/extension.h"
18 #include "chrome/common/extensions/extension_file_util.h" 19 #include "chrome/common/extensions/extension_file_util.h"
19 #include "chromeos/dbus/dbus_thread_manager.h" 20 #include "chromeos/dbus/dbus_thread_manager.h"
20 #include "content/public/browser/browser_thread.h" 21 #include "content/public/browser/browser_thread.h"
21 #include "content/public/browser/notification_service.h" 22 #include "content/public/browser/notification_service.h"
22 23
23 namespace chromeos { 24 namespace chromeos {
24 25
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 // We will register ourselves now and unregister if a user logs in. 167 // We will register ourselves now and unregister if a user logs in.
167 chromeos::PowerManagerClient* power_manager = 168 chromeos::PowerManagerClient* power_manager =
168 chromeos::DBusThreadManager::Get()->GetPowerManagerClient(); 169 chromeos::DBusThreadManager::Get()->GetPowerManagerClient();
169 if (!power_manager->HasObserver(this)) 170 if (!power_manager->HasObserver(this))
170 power_manager->AddObserver(this); 171 power_manager->AddObserver(this);
171 172
172 // We need to disappear and login the demo user if we go active. 173 // We need to disappear and login the demo user if we go active.
173 chromeos::DBusThreadManager::Get()-> 174 chromeos::DBusThreadManager::Get()->
174 GetPowerManagerClient()->RequestActiveNotification(); 175 GetPowerManagerClient()->RequestActiveNotification();
175 176
176 browser::ShowScreensaverDialog(extension); 177 // Add the extension to the extension service and display the screensaver.
178 Profile* default_profile = ProfileManager::GetDefaultProfile();
179 if (!default_profile->GetExtensionService()->AddExtension(extension)) {
180 LOG(ERROR) << "Couldn't add screensaver extension to profile.";
181 return;
182 }
183
184 ash::ShowScreensaver(extension->GetFullLaunchURL());
177 } 185 }
178 186
179 // NotificationObserver overrides: 187 // NotificationObserver overrides:
180 void KioskModeScreensaver::Observe( 188 void KioskModeScreensaver::Observe(
181 int type, 189 int type,
182 const content::NotificationSource& source, 190 const content::NotificationSource& source,
183 const content::NotificationDetails& details) { 191 const content::NotificationDetails& details) {
184 DCHECK_EQ(type, chrome::NOTIFICATION_SESSION_STARTED); 192 DCHECK_EQ(type, chrome::NOTIFICATION_SESSION_STARTED);
185 // User logged in, remove our observers, screensaver will be deactivated. 193 // User logged in, remove our observers, screensaver will be deactivated.
186 chromeos::PowerManagerClient* power_manager = 194 chromeos::PowerManagerClient* power_manager =
187 chromeos::DBusThreadManager::Get()->GetPowerManagerClient(); 195 chromeos::DBusThreadManager::Get()->GetPowerManagerClient();
188 if (power_manager->HasObserver(this)) 196 if (power_manager->HasObserver(this))
189 power_manager->RemoveObserver(this); 197 power_manager->RemoveObserver(this);
190 198
191 browser::CloseScreensaverDialog(); 199 ash::CloseScreensaver();
192 ShutdownKioskModeScreensaver(); 200 ShutdownKioskModeScreensaver();
193 } 201 }
194 202
195 void KioskModeScreensaver::ActiveNotify() { 203 void KioskModeScreensaver::ActiveNotify() {
196 // User is active, log us in. 204 // User is active, log us in.
197 ExistingUserController* controller = 205 ExistingUserController* controller =
198 ExistingUserController::current_controller(); 206 ExistingUserController::current_controller();
199 207
200 if (controller) { 208 if (controller) {
201 // Logging in will shut us down, removing the screen saver. 209 // Logging in will shut us down, removing the screen saver.
202 controller->LoginAsDemoUser(); 210 controller->LoginAsDemoUser();
203 } else { 211 } else {
204 // Remove the screensaver so the user can at least use the underlying 212 // Remove the screensaver so the user can at least use the underlying
205 // login screen to be able to log in. 213 // login screen to be able to log in.
206 browser::CloseScreensaverDialog(); 214 ash::CloseScreensaver();
207 } 215 }
208 } 216 }
209 217
210 static KioskModeScreensaver* g_kiosk_mode_screensaver = NULL; 218 static KioskModeScreensaver* g_kiosk_mode_screensaver = NULL;
211 219
212 void InitializeKioskModeScreensaver() { 220 void InitializeKioskModeScreensaver() {
213 if (g_kiosk_mode_screensaver) { 221 if (g_kiosk_mode_screensaver) {
214 LOG(WARNING) << "Screensaver was already initialized"; 222 LOG(WARNING) << "Screensaver was already initialized";
215 return; 223 return;
216 } 224 }
217 225
218 g_kiosk_mode_screensaver = new KioskModeScreensaver(); 226 g_kiosk_mode_screensaver = new KioskModeScreensaver();
219 } 227 }
220 228
221 void ShutdownKioskModeScreensaver() { 229 void ShutdownKioskModeScreensaver() {
222 delete g_kiosk_mode_screensaver; 230 delete g_kiosk_mode_screensaver;
223 g_kiosk_mode_screensaver = NULL; 231 g_kiosk_mode_screensaver = NULL;
224 } 232 }
225 233
226 } // namespace chromeos 234 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698