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

Side by Side Diff: chrome/browser/chromeos/login/lock/webui_screen_locker.cc

Issue 882423002: Listen OnDisplayMetricsChanged on lock screen (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments fixed Created 5 years, 10 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
« no previous file with comments | « chrome/browser/chromeos/login/lock/webui_screen_locker.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/lock/webui_screen_locker.h" 5 #include "chrome/browser/chromeos/login/lock/webui_screen_locker.h"
6 6
7 #include "ash/wm/lock_state_controller.h" 7 #include "ash/wm/lock_state_controller.h"
8 #include "ash/wm/lock_state_observer.h" 8 #include "ash/wm/lock_state_observer.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 WebUIScreenLocker::WebUIScreenLocker(ScreenLocker* screen_locker) 61 WebUIScreenLocker::WebUIScreenLocker(ScreenLocker* screen_locker)
62 : ScreenLockerDelegate(screen_locker), 62 : ScreenLockerDelegate(screen_locker),
63 lock_ready_(false), 63 lock_ready_(false),
64 webui_ready_(false), 64 webui_ready_(false),
65 network_state_helper_(new login::NetworkStateHelper), 65 network_state_helper_(new login::NetworkStateHelper),
66 is_observing_keyboard_(false), 66 is_observing_keyboard_(false),
67 weak_factory_(this) { 67 weak_factory_(this) {
68 set_should_emit_login_prompt_visible(false); 68 set_should_emit_login_prompt_visible(false);
69 ash::Shell::GetInstance()->lock_state_controller()->AddObserver(this); 69 ash::Shell::GetInstance()->lock_state_controller()->AddObserver(this);
70 ash::Shell::GetInstance()->delegate()->AddVirtualKeyboardStateObserver(this); 70 ash::Shell::GetInstance()->delegate()->AddVirtualKeyboardStateObserver(this);
71 ash::Shell::GetScreen()->AddObserver(this);
71 DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(this); 72 DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(this);
72 73
73 if (keyboard::KeyboardController::GetInstance()) { 74 if (keyboard::KeyboardController::GetInstance()) {
74 keyboard::KeyboardController::GetInstance()->AddObserver(this); 75 keyboard::KeyboardController::GetInstance()->AddObserver(this);
75 is_observing_keyboard_ = true; 76 is_observing_keyboard_ = true;
76 } 77 }
77 } 78 }
78 79
79 void WebUIScreenLocker::LockScreen() { 80 void WebUIScreenLocker::LockScreen() {
80 gfx::Rect bounds = 81 gfx::Rect bounds =
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 149
149 void WebUIScreenLocker::FocusUserPod() { 150 void WebUIScreenLocker::FocusUserPod() {
150 if (!webui_ready_) 151 if (!webui_ready_)
151 return; 152 return;
152 webui_login_->RequestFocus(); 153 webui_login_->RequestFocus();
153 GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.forceLockedUserPodFocus"); 154 GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.forceLockedUserPodFocus");
154 } 155 }
155 156
156 WebUIScreenLocker::~WebUIScreenLocker() { 157 WebUIScreenLocker::~WebUIScreenLocker() {
157 DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this); 158 DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this);
159 ash::Shell::GetScreen()->RemoveObserver(this);
158 ash::Shell::GetInstance()-> 160 ash::Shell::GetInstance()->
159 lock_state_controller()->RemoveObserver(this); 161 lock_state_controller()->RemoveObserver(this);
160 162
161 ash::Shell::GetInstance()->delegate()-> 163 ash::Shell::GetInstance()->delegate()->
162 RemoveVirtualKeyboardStateObserver(this); 164 RemoveVirtualKeyboardStateObserver(this);
163 // In case of shutdown, lock_window_ may be deleted before WebUIScreenLocker. 165 // In case of shutdown, lock_window_ may be deleted before WebUIScreenLocker.
164 if (lock_window_) { 166 if (lock_window_) {
165 lock_window_->RemoveObserver(this); 167 lock_window_->RemoveObserver(this);
166 lock_window_->Close(); 168 lock_window_->Close();
167 } 169 }
(...skipping 24 matching lines...) Expand all
192 void WebUIScreenLocker::OnLockBackgroundDisplayed() { 194 void WebUIScreenLocker::OnLockBackgroundDisplayed() {
193 UMA_HISTOGRAM_TIMES("LockScreen.BackgroundReady", 195 UMA_HISTOGRAM_TIMES("LockScreen.BackgroundReady",
194 base::TimeTicks::Now() - lock_time_); 196 base::TimeTicks::Now() - lock_time_);
195 } 197 }
196 198
197 OobeUI* WebUIScreenLocker::GetOobeUI() { 199 OobeUI* WebUIScreenLocker::GetOobeUI() {
198 return static_cast<OobeUI*>(GetWebUI()->GetController()); 200 return static_cast<OobeUI*>(GetWebUI()->GetController());
199 } 201 }
200 202
201 //////////////////////////////////////////////////////////////////////////////// 203 ////////////////////////////////////////////////////////////////////////////////
202 // WebUIScreenLocker, LoginDisplay::Delegate implementation: 204 // WebUIScreenLocker, LoginDisplay::Delegate:
203 205
204 void WebUIScreenLocker::CancelPasswordChangedFlow() { 206 void WebUIScreenLocker::CancelPasswordChangedFlow() {
205 NOTREACHED(); 207 NOTREACHED();
206 } 208 }
207 209
208 void WebUIScreenLocker::CreateAccount() { 210 void WebUIScreenLocker::CreateAccount() {
209 NOTREACHED(); 211 NOTREACHED();
210 } 212 }
211 213
212 void WebUIScreenLocker::CompleteLogin(const UserContext& user_context) { 214 void WebUIScreenLocker::CompleteLogin(const UserContext& user_context) {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 266
265 void WebUIScreenLocker::SetDisplayEmail(const std::string& email) { 267 void WebUIScreenLocker::SetDisplayEmail(const std::string& email) {
266 NOTREACHED(); 268 NOTREACHED();
267 } 269 }
268 270
269 void WebUIScreenLocker::Signout() { 271 void WebUIScreenLocker::Signout() {
270 chromeos::ScreenLocker::default_screen_locker()->Signout(); 272 chromeos::ScreenLocker::default_screen_locker()->Signout();
271 } 273 }
272 274
273 //////////////////////////////////////////////////////////////////////////////// 275 ////////////////////////////////////////////////////////////////////////////////
274 // LockWindow::Observer implementation: 276 // LockWindow::Observer:
275 277
276 void WebUIScreenLocker::OnLockWindowReady() { 278 void WebUIScreenLocker::OnLockWindowReady() {
277 VLOG(1) << "Lock window ready; WebUI is " << (webui_ready_ ? "too" : "not"); 279 VLOG(1) << "Lock window ready; WebUI is " << (webui_ready_ ? "too" : "not");
278 lock_ready_ = true; 280 lock_ready_ = true;
279 if (webui_ready_) 281 if (webui_ready_)
280 ScreenLockReady(); 282 ScreenLockReady();
281 } 283 }
282 284
283 //////////////////////////////////////////////////////////////////////////////// 285 ////////////////////////////////////////////////////////////////////////////////
284 // SessionLockStateObserver override. 286 // SessionLockStateObserver:
285 287
286 void WebUIScreenLocker::OnLockStateEvent( 288 void WebUIScreenLocker::OnLockStateEvent(
287 ash::LockStateObserver::EventType event) { 289 ash::LockStateObserver::EventType event) {
288 if (event == ash::LockStateObserver::EVENT_LOCK_ANIMATION_FINISHED) { 290 if (event == ash::LockStateObserver::EVENT_LOCK_ANIMATION_FINISHED) {
289 // Release capture if any. 291 // Release capture if any.
290 aura::client::GetCaptureClient(GetNativeWindow()->GetRootWindow())-> 292 aura::client::GetCaptureClient(GetNativeWindow()->GetRootWindow())->
291 SetCapture(NULL); 293 SetCapture(NULL);
292 GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.animateOnceFullyDisplayed"); 294 GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.animateOnceFullyDisplayed");
293 } 295 }
294 } 296 }
295 297
296 //////////////////////////////////////////////////////////////////////////////// 298 ////////////////////////////////////////////////////////////////////////////////
297 // WidgetObserver override. 299 // WidgetObserver:
298 300
299 void WebUIScreenLocker::OnWidgetDestroying(views::Widget* widget) { 301 void WebUIScreenLocker::OnWidgetDestroying(views::Widget* widget) {
300 lock_window_->RemoveObserver(this); 302 lock_window_->RemoveObserver(this);
301 lock_window_ = NULL; 303 lock_window_ = NULL;
302 } 304 }
303 305
304 //////////////////////////////////////////////////////////////////////////////// 306 ////////////////////////////////////////////////////////////////////////////////
305 // PowerManagerClient::Observer overrides. 307 // PowerManagerClient::Observer:
306 308
307 void WebUIScreenLocker::LidEventReceived(bool open, 309 void WebUIScreenLocker::LidEventReceived(bool open,
308 const base::TimeTicks& time) { 310 const base::TimeTicks& time) {
309 content::BrowserThread::PostTask( 311 content::BrowserThread::PostTask(
310 content::BrowserThread::UI, 312 content::BrowserThread::UI,
311 FROM_HERE, 313 FROM_HERE,
312 base::Bind(&WebUIScreenLocker::FocusUserPod, weak_factory_.GetWeakPtr())); 314 base::Bind(&WebUIScreenLocker::FocusUserPod, weak_factory_.GetWeakPtr()));
313 } 315 }
314 316
315 void WebUIScreenLocker::SuspendDone(const base::TimeDelta& sleep_duration) { 317 void WebUIScreenLocker::SuspendDone(const base::TimeDelta& sleep_duration) {
(...skipping 22 matching lines...) Expand all
338 is_observing_keyboard_ = true; 340 is_observing_keyboard_ = true;
339 } 341 }
340 } else { 342 } else {
341 keyboard::KeyboardController::GetInstance()->RemoveObserver(this); 343 keyboard::KeyboardController::GetInstance()->RemoveObserver(this);
342 is_observing_keyboard_ = false; 344 is_observing_keyboard_ = false;
343 } 345 }
344 } 346 }
345 } 347 }
346 348
347 //////////////////////////////////////////////////////////////////////////////// 349 ////////////////////////////////////////////////////////////////////////////////
348 // keyboard::KeyboardControllerObserver overrides. 350 // keyboard::KeyboardControllerObserver:
349 351
350 void WebUIScreenLocker::OnKeyboardBoundsChanging( 352 void WebUIScreenLocker::OnKeyboardBoundsChanging(
351 const gfx::Rect& new_bounds) { 353 const gfx::Rect& new_bounds) {
352 if (new_bounds.IsEmpty() && !keyboard_bounds_.IsEmpty()) { 354 if (new_bounds.IsEmpty() && !keyboard_bounds_.IsEmpty()) {
353 // Keyboard has been hidden. 355 // Keyboard has been hidden.
354 if (GetOobeUI()) { 356 if (GetOobeUI()) {
355 GetOobeUI()->GetCoreOobeActor()->ShowControlBar(true); 357 GetOobeUI()->GetCoreOobeActor()->ShowControlBar(true);
356 if (login::LoginScrollIntoViewEnabled()) 358 if (login::LoginScrollIntoViewEnabled())
357 GetOobeUI()->GetCoreOobeActor()->SetKeyboardState(false, new_bounds); 359 GetOobeUI()->GetCoreOobeActor()->SetKeyboardState(false, new_bounds);
358 } 360 }
359 } else if (!new_bounds.IsEmpty() && keyboard_bounds_.IsEmpty()) { 361 } else if (!new_bounds.IsEmpty() && keyboard_bounds_.IsEmpty()) {
360 // Keyboard has been shown. 362 // Keyboard has been shown.
361 if (GetOobeUI()) { 363 if (GetOobeUI()) {
362 GetOobeUI()->GetCoreOobeActor()->ShowControlBar(false); 364 GetOobeUI()->GetCoreOobeActor()->ShowControlBar(false);
363 if (login::LoginScrollIntoViewEnabled()) 365 if (login::LoginScrollIntoViewEnabled())
364 GetOobeUI()->GetCoreOobeActor()->SetKeyboardState(true, new_bounds); 366 GetOobeUI()->GetCoreOobeActor()->SetKeyboardState(true, new_bounds);
365 } 367 }
366 } 368 }
367 369
368 keyboard_bounds_ = new_bounds; 370 keyboard_bounds_ = new_bounds;
369 } 371 }
370 372
373 ////////////////////////////////////////////////////////////////////////////////
374 // gfx::DisplayObserver:
375
376 void WebUIScreenLocker::OnDisplayAdded(const gfx::Display& new_display) {
377 }
378
379 void WebUIScreenLocker::OnDisplayRemoved(const gfx::Display& old_display) {
380 }
381
382 void WebUIScreenLocker::OnDisplayMetricsChanged(const gfx::Display& display,
383 uint32_t changed_metrics) {
384 gfx::Display primary_display =
385 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay();
386 if (display.id() != primary_display.id() ||
387 !(changed_metrics & DISPLAY_METRIC_BOUNDS)) {
388 return;
389 }
390
391 if (GetOobeUI()) {
392 const gfx::Size& size = primary_display.size();
393 GetOobeUI()->GetCoreOobeActor()->SetClientAreaSize(size.width(),
394 size.height());
395 }
396 }
397
371 } // namespace chromeos 398 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/lock/webui_screen_locker.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698