Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "ash/screensaver/screensaver_view.h" |
| 8 #include "ash/shell.h" | 8 #include "ash/shell.h" |
| 9 #include "ash/wm/user_activity_detector.h" | 9 #include "ash/wm/user_activity_detector.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 170 &SandboxedUnpacker::Start, screensaver_unpacker.get())); | 170 &SandboxedUnpacker::Start, screensaver_unpacker.get())); |
| 171 } | 171 } |
| 172 | 172 |
| 173 void KioskModeScreensaver::SetupScreensaver( | 173 void KioskModeScreensaver::SetupScreensaver( |
| 174 scoped_refptr<Extension> extension, | 174 scoped_refptr<Extension> extension, |
| 175 const FilePath& extension_base_path) { | 175 const FilePath& extension_base_path) { |
| 176 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 176 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 177 extension_base_path_ = extension_base_path; | 177 extension_base_path_ = extension_base_path; |
| 178 | 178 |
| 179 // If the user is already logged in, don't need to display the screensaver. | 179 // If the user is already logged in, don't need to display the screensaver. |
| 180 if (chromeos::UserManager::Get()->IsUserLoggedIn()) | 180 if (chromeos::UserManager::Get()->IsSessionStarted()) |
|
Nikita (slow)
2012/11/07 10:51:37
Difference between these two is that IsSessionStar
rkc
2012/11/07 20:25:02
IsSessionStarted seemed more appropriate (since it
| |
| 181 return; | 181 return; |
| 182 | 182 |
| 183 ash::Shell::GetInstance()->user_activity_detector()->AddObserver(this); | 183 ash::Shell::GetInstance()->user_activity_detector()->AddObserver(this); |
| 184 | 184 |
| 185 Profile* default_profile = ProfileManager::GetDefaultProfile(); | 185 Profile* default_profile = ProfileManager::GetDefaultProfile(); |
| 186 // Add the extension to the extension service and display the screensaver. | 186 // Add the extension to the extension service and display the screensaver. |
| 187 if (default_profile) { | 187 if (default_profile) { |
| 188 default_profile->GetExtensionService()->AddExtension(extension); | 188 default_profile->GetExtensionService()->AddExtension(extension); |
| 189 ash::ShowScreensaver(extension->GetFullLaunchURL()); | 189 ash::ShowScreensaver(extension->GetFullLaunchURL()); |
| 190 } else { | 190 } else { |
| 191 LOG(ERROR) << "Couldn't get default profile. Unable to load screensaver!"; | 191 LOG(ERROR) << "Couldn't get default profile. Unable to load screensaver!"; |
| 192 ShutdownKioskModeScreensaver(); | 192 ShutdownKioskModeScreensaver(); |
| 193 } | 193 } |
| 194 } | 194 } |
| 195 | 195 |
| 196 void KioskModeScreensaver::OnUserActivity() { | 196 void KioskModeScreensaver::OnUserActivity() { |
| 197 // We don't want to handle further user notifications; we'll either login | 197 // We don't want to handle further user notifications; we'll either login |
| 198 // the user and close out or or at least close the screensaver. | 198 // the user and close out or or at least close the screensaver. |
| 199 ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this); | 199 ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this); |
| 200 | 200 |
| 201 // Find the retail mode login page. | 201 // Find the retail mode login page. |
| 202 CHECK(WebUILoginDisplayHost::default_host()); | 202 if (WebUILoginDisplayHost::default_host()) { |
|
Nikita (slow)
2012/11/07 10:51:37
If default_host is gone now I believe login alread
rkc
2012/11/07 20:25:02
If you're certain that is the only case that the d
| |
| 203 WebUILoginDisplayHost* webui_host = | 203 WebUILoginDisplayHost* webui_host = |
| 204 static_cast<WebUILoginDisplayHost*>( | 204 static_cast<WebUILoginDisplayHost*>( |
| 205 WebUILoginDisplayHost::default_host()); | 205 WebUILoginDisplayHost::default_host()); |
| 206 OobeUI* oobe_ui = webui_host->GetOobeUI(); | 206 OobeUI* oobe_ui = webui_host->GetOobeUI(); |
| 207 | 207 |
| 208 // Show the login spinner. | 208 // Show the login spinner. |
| 209 CHECK(oobe_ui); | 209 if (oobe_ui) |
| 210 oobe_ui->ShowRetailModeLoginSpinner(); | 210 oobe_ui->ShowRetailModeLoginSpinner(); |
| 211 } | |
| 211 | 212 |
| 212 // Close the screensaver, our login spinner is already showing. | 213 // Close the screensaver, our login spinner is already showing. |
| 213 ash::CloseScreensaver(); | 214 ash::CloseScreensaver(); |
| 214 | 215 |
| 215 // Log us in. | 216 // Log us in. |
| 216 ExistingUserController* controller = | 217 ExistingUserController* controller = |
| 217 ExistingUserController::current_controller(); | 218 ExistingUserController::current_controller(); |
| 218 CHECK(controller); | 219 if (controller && !chromeos::UserManager::Get()->IsSessionStarted()) |
| 219 controller->LoginAsDemoUser(); | 220 controller->LoginAsDemoUser(); |
| 220 | 221 |
| 221 ShutdownKioskModeScreensaver(); | 222 ShutdownKioskModeScreensaver(); |
| 222 } | 223 } |
| 223 | 224 |
| 224 static KioskModeScreensaver* g_kiosk_mode_screensaver = NULL; | 225 static KioskModeScreensaver* g_kiosk_mode_screensaver = NULL; |
| 225 | 226 |
| 226 void InitializeKioskModeScreensaver() { | 227 void InitializeKioskModeScreensaver() { |
| 227 if (g_kiosk_mode_screensaver) { | 228 if (g_kiosk_mode_screensaver) { |
| 228 LOG(WARNING) << "Screensaver was already initialized"; | 229 LOG(WARNING) << "Screensaver was already initialized"; |
| 229 return; | 230 return; |
| 230 } | 231 } |
| 231 | 232 |
| 232 g_kiosk_mode_screensaver = new KioskModeScreensaver(); | 233 g_kiosk_mode_screensaver = new KioskModeScreensaver(); |
| 233 } | 234 } |
| 234 | 235 |
| 235 void ShutdownKioskModeScreensaver() { | 236 void ShutdownKioskModeScreensaver() { |
| 236 delete g_kiosk_mode_screensaver; | 237 delete g_kiosk_mode_screensaver; |
| 237 g_kiosk_mode_screensaver = NULL; | 238 g_kiosk_mode_screensaver = NULL; |
| 238 } | 239 } |
| 239 | 240 |
| 240 } // namespace chromeos | 241 } // namespace chromeos |
| OLD | NEW |