| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "ash/system/chromeos/power/power_event_observer.h" | 5 #include "ash/system/chromeos/power/power_event_observer.h" |
| 6 | 6 |
| 7 #include "ash/session_state_delegate.h" | 7 #include "ash/session_state_delegate.h" |
| 8 #include "ash/shell.h" | 8 #include "ash/shell.h" |
| 9 #include "ash/system/tray/system_tray_notifier.h" | 9 #include "ash/system/tray/system_tray_notifier.h" |
| 10 #include "ash/wm/power_button_controller.h" | 10 #include "ash/wm/power_button_controller.h" |
| 11 #include "base/prefs/pref_service.h" | 11 #include "base/prefs/pref_service.h" |
| 12 #include "chromeos/dbus/dbus_thread_manager.h" | 12 #include "chromeos/dbus/dbus_thread_manager.h" |
| 13 #include "ui/display/chromeos/output_configurator.h" | 13 #include "ui/display/chromeos/display_configurator.h" |
| 14 #include "ui/wm/core/user_activity_detector.h" | 14 #include "ui/wm/core/user_activity_detector.h" |
| 15 | 15 |
| 16 namespace ash { | 16 namespace ash { |
| 17 | 17 |
| 18 PowerEventObserver::PowerEventObserver() | 18 PowerEventObserver::PowerEventObserver() |
| 19 : screen_locked_(false) { | 19 : screen_locked_(false) { |
| 20 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()-> | 20 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()-> |
| 21 AddObserver(this); | 21 AddObserver(this); |
| 22 chromeos::DBusThreadManager::Get()->GetSessionManagerClient()-> | 22 chromeos::DBusThreadManager::Get()->GetSessionManagerClient()-> |
| 23 AddObserver(this); | 23 AddObserver(this); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 44 if (!screen_locked_ && delegate->ShouldLockScreenBeforeSuspending() && | 44 if (!screen_locked_ && delegate->ShouldLockScreenBeforeSuspending() && |
| 45 delegate->CanLockScreen()) { | 45 delegate->CanLockScreen()) { |
| 46 screen_lock_callback_ = chromeos::DBusThreadManager::Get()-> | 46 screen_lock_callback_ = chromeos::DBusThreadManager::Get()-> |
| 47 GetPowerManagerClient()->GetSuspendReadinessCallback(); | 47 GetPowerManagerClient()->GetSuspendReadinessCallback(); |
| 48 VLOG(1) << "Requesting screen lock from PowerEventObserver"; | 48 VLOG(1) << "Requesting screen lock from PowerEventObserver"; |
| 49 chromeos::DBusThreadManager::Get()->GetSessionManagerClient()-> | 49 chromeos::DBusThreadManager::Get()->GetSessionManagerClient()-> |
| 50 RequestLockScreen(); | 50 RequestLockScreen(); |
| 51 } | 51 } |
| 52 | 52 |
| 53 shell->user_activity_detector()->OnDisplayPowerChanging(); | 53 shell->user_activity_detector()->OnDisplayPowerChanging(); |
| 54 shell->output_configurator()->SuspendDisplays(); | 54 shell->display_configurator()->SuspendDisplays(); |
| 55 } | 55 } |
| 56 | 56 |
| 57 void PowerEventObserver::SystemResumed(const base::TimeDelta& sleep_duration) { | 57 void PowerEventObserver::SystemResumed(const base::TimeDelta& sleep_duration) { |
| 58 Shell::GetInstance()->output_configurator()->ResumeDisplays(); | 58 Shell::GetInstance()->display_configurator()->ResumeDisplays(); |
| 59 Shell::GetInstance()->system_tray_notifier()->NotifyRefreshClock(); | 59 Shell::GetInstance()->system_tray_notifier()->NotifyRefreshClock(); |
| 60 } | 60 } |
| 61 | 61 |
| 62 void PowerEventObserver::ScreenIsLocked() { | 62 void PowerEventObserver::ScreenIsLocked() { |
| 63 screen_locked_ = true; | 63 screen_locked_ = true; |
| 64 | 64 |
| 65 // Stop blocking suspend after the screen is locked. | 65 // Stop blocking suspend after the screen is locked. |
| 66 if (!screen_lock_callback_.is_null()) { | 66 if (!screen_lock_callback_.is_null()) { |
| 67 VLOG(1) << "Screen locked due to suspend"; | 67 VLOG(1) << "Screen locked due to suspend"; |
| 68 // Run the callback asynchronously. ScreenIsLocked() is currently | 68 // Run the callback asynchronously. ScreenIsLocked() is currently |
| 69 // called asynchronously after RequestLockScreen(), but this guards | 69 // called asynchronously after RequestLockScreen(), but this guards |
| 70 // against it being made synchronous later. | 70 // against it being made synchronous later. |
| 71 base::MessageLoop::current()->PostTask(FROM_HERE, screen_lock_callback_); | 71 base::MessageLoop::current()->PostTask(FROM_HERE, screen_lock_callback_); |
| 72 screen_lock_callback_.Reset(); | 72 screen_lock_callback_.Reset(); |
| 73 } else { | 73 } else { |
| 74 VLOG(1) << "Screen locked without suspend"; | 74 VLOG(1) << "Screen locked without suspend"; |
| 75 } | 75 } |
| 76 } | 76 } |
| 77 | 77 |
| 78 void PowerEventObserver::ScreenIsUnlocked() { | 78 void PowerEventObserver::ScreenIsUnlocked() { |
| 79 screen_locked_ = false; | 79 screen_locked_ = false; |
| 80 } | 80 } |
| 81 | 81 |
| 82 } // namespace ash | 82 } // namespace ash |
| OLD | NEW |