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/login/webui_screen_locker.h" | 5 #include "chrome/browser/chromeos/login/webui_screen_locker.h" |
6 | 6 |
7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
8 #include "ash/wm/session_state_controller.h" | 8 #include "ash/wm/session_lock_state_controller.h" |
9 #include "ash/wm/session_state_observer.h" | 9 #include "ash/wm/session_lock_state_observer.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/metrics/histogram.h" | 11 #include "base/metrics/histogram.h" |
12 #include "base/utf_string_conversions.h" | 12 #include "base/utf_string_conversions.h" |
13 #include "base/values.h" | 13 #include "base/values.h" |
14 #include "chrome/browser/browser_shutdown.h" | 14 #include "chrome/browser/browser_shutdown.h" |
15 #include "chrome/browser/chromeos/accessibility/accessibility_util.h" | 15 #include "chrome/browser/chromeos/accessibility/accessibility_util.h" |
16 #include "chrome/browser/chromeos/login/helper.h" | 16 #include "chrome/browser/chromeos/login/helper.h" |
17 #include "chrome/browser/chromeos/login/screen_locker.h" | 17 #include "chrome/browser/chromeos/login/screen_locker.h" |
18 #include "chrome/browser/chromeos/login/user_manager.h" | 18 #include "chrome/browser/chromeos/login/user_manager.h" |
19 #include "chrome/browser/chromeos/login/webui_login_display.h" | 19 #include "chrome/browser/chromeos/login/webui_login_display.h" |
(...skipping 23 matching lines...) Expand all Loading... |
43 | 43 |
44 //////////////////////////////////////////////////////////////////////////////// | 44 //////////////////////////////////////////////////////////////////////////////// |
45 // WebUIScreenLocker implementation. | 45 // WebUIScreenLocker implementation. |
46 | 46 |
47 WebUIScreenLocker::WebUIScreenLocker(ScreenLocker* screen_locker) | 47 WebUIScreenLocker::WebUIScreenLocker(ScreenLocker* screen_locker) |
48 : ScreenLockerDelegate(screen_locker), | 48 : ScreenLockerDelegate(screen_locker), |
49 lock_ready_(false), | 49 lock_ready_(false), |
50 webui_ready_(false), | 50 webui_ready_(false), |
51 weak_factory_(this) { | 51 weak_factory_(this) { |
52 set_should_emit_login_prompt_visible(false); | 52 set_should_emit_login_prompt_visible(false); |
53 ash::Shell::GetInstance()->session_state_controller()->AddObserver(this); | 53 ash::Shell::GetInstance()->session_lock_state_controller()->AddObserver(this); |
54 DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(this); | 54 DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(this); |
55 } | 55 } |
56 | 56 |
57 void WebUIScreenLocker::LockScreen(bool unlock_on_input) { | 57 void WebUIScreenLocker::LockScreen(bool unlock_on_input) { |
58 gfx::Rect bounds(ash::Shell::GetScreen()->GetPrimaryDisplay().bounds()); | 58 gfx::Rect bounds(ash::Shell::GetScreen()->GetPrimaryDisplay().bounds()); |
59 | 59 |
60 lock_time_ = base::TimeTicks::Now(); | 60 lock_time_ = base::TimeTicks::Now(); |
61 LockWindow* lock_window = LockWindow::Create(); | 61 LockWindow* lock_window = LockWindow::Create(); |
62 lock_window->set_observer(this); | 62 lock_window->set_observer(this); |
63 lock_window_ = lock_window->GetWidget(); | 63 lock_window_ = lock_window->GetWidget(); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 | 133 |
134 void WebUIScreenLocker::FocusUserPod() { | 134 void WebUIScreenLocker::FocusUserPod() { |
135 if (!webui_ready_) | 135 if (!webui_ready_) |
136 return; | 136 return; |
137 webui_login_->RequestFocus(); | 137 webui_login_->RequestFocus(); |
138 GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.forceLockedUserPodFocus"); | 138 GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.forceLockedUserPodFocus"); |
139 } | 139 } |
140 | 140 |
141 WebUIScreenLocker::~WebUIScreenLocker() { | 141 WebUIScreenLocker::~WebUIScreenLocker() { |
142 DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this); | 142 DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this); |
143 ash::Shell::GetInstance()->session_state_controller()->RemoveObserver(this); | 143 ash::Shell::GetInstance()-> |
| 144 session_lock_state_controller()->RemoveObserver(this); |
144 // In case of shutdown, lock_window_ may be deleted before WebUIScreenLocker. | 145 // In case of shutdown, lock_window_ may be deleted before WebUIScreenLocker. |
145 if (lock_window_) { | 146 if (lock_window_) { |
146 lock_window_->RemoveObserver(this); | 147 lock_window_->RemoveObserver(this); |
147 lock_window_->Close(); | 148 lock_window_->Close(); |
148 } | 149 } |
149 // If LockScreen() was called, we need to clear the signin screen handler | 150 // If LockScreen() was called, we need to clear the signin screen handler |
150 // delegate set in ShowSigninScreen so that it no longer points to us. | 151 // delegate set in ShowSigninScreen so that it no longer points to us. |
151 if (login_display_.get()) { | 152 if (login_display_.get()) { |
152 static_cast<OobeUI*>(GetWebUI()->GetController())-> | 153 static_cast<OobeUI*>(GetWebUI()->GetController())-> |
153 ResetSigninScreenHandlerDelegate(); | 154 ResetSigninScreenHandlerDelegate(); |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 // LockWindow::Observer implementation: | 269 // LockWindow::Observer implementation: |
269 | 270 |
270 void WebUIScreenLocker::OnLockWindowReady() { | 271 void WebUIScreenLocker::OnLockWindowReady() { |
271 VLOG(1) << "Lock window ready; WebUI is " << (webui_ready_ ? "too" : "not"); | 272 VLOG(1) << "Lock window ready; WebUI is " << (webui_ready_ ? "too" : "not"); |
272 lock_ready_ = true; | 273 lock_ready_ = true; |
273 if (webui_ready_) | 274 if (webui_ready_) |
274 ScreenLockReady(); | 275 ScreenLockReady(); |
275 } | 276 } |
276 | 277 |
277 //////////////////////////////////////////////////////////////////////////////// | 278 //////////////////////////////////////////////////////////////////////////////// |
278 // SessionStateObserver override. | 279 // SessionLockStateObserver override. |
279 | 280 |
280 void WebUIScreenLocker::OnSessionStateEvent( | 281 void WebUIScreenLocker::OnSessionLockStateEvent( |
281 ash::SessionStateObserver::EventType event) { | 282 ash::SessionLockStateObserver::EventType event) { |
282 if (event == ash::SessionStateObserver::EVENT_LOCK_ANIMATION_FINISHED) { | 283 if (event == ash::SessionLockStateObserver::EVENT_LOCK_ANIMATION_FINISHED) { |
283 // Release capture if any. | 284 // Release capture if any. |
284 aura::client::GetCaptureClient(GetNativeWindow()->GetRootWindow())-> | 285 aura::client::GetCaptureClient(GetNativeWindow()->GetRootWindow())-> |
285 SetCapture(NULL); | 286 SetCapture(NULL); |
286 GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.animateOnceFullyDisplayed"); | 287 GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.animateOnceFullyDisplayed"); |
287 } | 288 } |
288 } | 289 } |
289 | 290 |
290 //////////////////////////////////////////////////////////////////////////////// | 291 //////////////////////////////////////////////////////////////////////////////// |
291 // WidgetObserver override. | 292 // WidgetObserver override. |
292 | 293 |
(...skipping 22 matching lines...) Expand all Loading... |
315 | 316 |
316 void WebUIScreenLocker::RenderViewGone(base::TerminationStatus status) { | 317 void WebUIScreenLocker::RenderViewGone(base::TerminationStatus status) { |
317 if (browser_shutdown::GetShutdownType() == browser_shutdown::NOT_VALID && | 318 if (browser_shutdown::GetShutdownType() == browser_shutdown::NOT_VALID && |
318 status != base::TERMINATION_STATUS_NORMAL_TERMINATION) { | 319 status != base::TERMINATION_STATUS_NORMAL_TERMINATION) { |
319 LOG(ERROR) << "Renderer crash on lock screen"; | 320 LOG(ERROR) << "Renderer crash on lock screen"; |
320 Signout(); | 321 Signout(); |
321 } | 322 } |
322 } | 323 } |
323 | 324 |
324 } // namespace chromeos | 325 } // namespace chromeos |
OLD | NEW |