Chromium Code Reviews| Index: ash/wm/power_button_controller.cc |
| diff --git a/ash/wm/power_button_controller.cc b/ash/wm/power_button_controller.cc |
| index 92ca9c12aabcd64eeb6996e10f6ab273b57e803c..1aa363ca748e30b5a78d6c8c5ace622972f1b013 100644 |
| --- a/ash/wm/power_button_controller.cc |
| +++ b/ash/wm/power_button_controller.cc |
| @@ -18,10 +18,10 @@ |
| #include "base/command_line.h" |
| #include "ui/aura/window_event_dispatcher.h" |
| #include "ui/display/types/display_snapshot.h" |
| -#include "ui/events/event_handler.h" |
|
Qiang(Joe) Xu
2016/11/04 23:18:21
it is included in head file.
|
| #include "ui/wm/core/compound_event_filter.h" |
| #if defined(OS_CHROMEOS) |
| +#include "ash/wm/tablet_power_button_controller.h" |
| #include "chromeos/audio/cras_audio_handler.h" |
| #include "chromeos/dbus/dbus_thread_manager.h" |
| #endif |
| @@ -50,6 +50,7 @@ PowerButtonController::PowerButtonController(LockStateController* controller) |
| #if defined(OS_CHROMEOS) |
| chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver( |
| this); |
| + tablet_controller_.reset(new TabletPowerButtonController(controller_)); |
| Shell::GetInstance()->display_configurator()->AddObserver(this); |
| #endif |
| Shell::GetInstance()->PrependPreTargetHandler(this); |
| @@ -59,6 +60,7 @@ PowerButtonController::~PowerButtonController() { |
| Shell::GetInstance()->RemovePreTargetHandler(this); |
| #if defined(OS_CHROMEOS) |
| Shell::GetInstance()->display_configurator()->RemoveObserver(this); |
| + tablet_controller_.reset(); |
| chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver( |
| this); |
| #endif |
| @@ -76,16 +78,27 @@ void PowerButtonController::OnPowerButtonEvent( |
| if (controller_->ShutdownRequested()) |
| return; |
| + bool should_take_screenshot = down && volume_down_pressed_ && |
| + WmShell::Get() |
| + ->maximize_mode_controller() |
| + ->IsMaximizeModeWindowManagerEnabled(); |
|
Qiang(Joe) Xu
2016/11/04 23:18:21
Shall we make IsTabletModeActive and IsTabletModeS
|
| + |
| +#if defined(OS_CHROMEOS) |
| + if (!has_legacy_power_button_ && !should_take_screenshot && |
| + tablet_controller_->ShouldHandlePowerButtonEvents()) { |
| + tablet_controller_->OnPowerButtonEvent(down, timestamp, |
| + brightness_is_zero_); |
| + return; |
| + } |
| +#endif |
| + |
| // Avoid starting the lock/shutdown sequence if the power button is pressed |
| // while the screen is off (http://crbug.com/128451), unless an external |
| // display is still on (http://crosbug.com/p/24912). |
| if (brightness_is_zero_ && !internal_display_off_and_external_display_on_) |
| return; |
| - if (volume_down_pressed_ && down && |
| - WmShell::Get() |
| - ->maximize_mode_controller() |
| - ->IsMaximizeModeWindowManagerEnabled()) { |
| + if (should_take_screenshot) { |
| SystemTray* system_tray = Shell::GetInstance()->GetPrimarySystemTray(); |
| if (system_tray && system_tray->GetTrayAudio()) |
| system_tray->GetTrayAudio()->HideDetailedView(false); |