Index: ash/accelerators/accelerator_controller.cc |
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc |
index bc742c74cb6f419442a9cbb330a5129f90865cf4..2ac4e7eac500a4c44cb95413252b5b814619b1e7 100644 |
--- a/ash/accelerators/accelerator_controller.cc |
+++ b/ash/accelerators/accelerator_controller.cc |
@@ -33,6 +33,7 @@ |
#include "ash/system/tray/system_tray_delegate.h" |
#include "ash/volume_control_delegate.h" |
#include "ash/wm/partial_screenshot_view.h" |
+#include "ash/wm/power_button_controller.h" |
#include "ash/wm/property_util.h" |
#include "ash/wm/window_cycle_controller.h" |
#include "ash/wm/window_util.h" |
@@ -57,6 +58,7 @@ |
#if defined(OS_CHROMEOS) |
#include "ash/display/output_configurator_animation.h" |
#include "base/chromeos/chromeos_version.h" |
+#include "base/time.h" |
#include "chromeos/display/output_configurator.h" |
#endif // defined(OS_CHROMEOS) |
@@ -763,10 +765,35 @@ bool AcceleratorController::PerformAction(int action, |
return HandleMediaPrevTrack(); |
case POWER_PRESSED: // fallthrough |
case POWER_RELEASED: |
- // We don't do anything with these at present, but we consume them to |
- // prevent them from getting passed to apps -- see |
- // http://crbug.com/146609. |
- return true; |
+#if defined(OS_CHROMEOS) |
+ if (!base::chromeos::IsRunningOnChromeOS()) { |
+ // There is no powerd in linux desktop, so call the |
+ // PowerButtonController here. |
+ Shell::GetInstance()->power_button_controller()-> |
+ OnPowerButtonEvent(action == POWER_PRESSED, base::TimeTicks()); |
+ } |
+#endif |
+ // We don't do anything with these at present on the device, |
+ // (power button evets are reported to us from powerm via |
+ // D-BUS), but we consume them to prevent them from getting |
+ // passed to apps -- see http://crbug.com/146609. |
+ return true; |
+ case LOCK_PRESSED: |
+ case LOCK_RELEASED: |
+#if defined(OS_CHROMEOS) |
+ if (!base::chromeos::IsRunningOnChromeOS()) { |
+ // There is no powerd in linux desktop, so call the |
+ // PowerButtonController here. |
+ Shell::GetInstance()->power_button_controller()-> |
+ OnLockButtonEvent(action == LOCK_PRESSED, base::TimeTicks()); |
+ return true; |
+ } |
+#endif |
+ // LOCK_PRESSED/RELEASED in debug only action that is meant for |
+ // testing lock behavior on linux desktop. If we ever reached |
+ // here (when you run a debug build on the device), pass it onto |
+ // apps. |
+ return false; |
#if !defined(NDEBUG) |
case PRINT_LAYER_HIERARCHY: |
return HandlePrintLayerHierarchy(); |