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

Unified Diff: ash/wm/power_button_controller.cc

Issue 2474913004: Tablet-like power button behavior on Convertible/Tablet ChromeOS devices (Closed)
Patch Set: extract TabletPowerButtonController Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698