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

Side by Side Diff: ash/system/chromeos/power/tablet_power_button_controller.cc

Issue 2651313004: chromeos: Avoid shutdown for delayed power button events. (Closed)
Patch Set: switch to two seconds Created 3 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 | « no previous file | 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/tablet_power_button_controller.h" 5 #include "ash/system/chromeos/power/tablet_power_button_controller.h"
6 6
7 #include "ash/common/accessibility_delegate.h" 7 #include "ash/common/accessibility_delegate.h"
8 #include "ash/common/session/session_state_delegate.h" 8 #include "ash/common/session/session_state_delegate.h"
9 #include "ash/common/shell_delegate.h" 9 #include "ash/common/shell_delegate.h"
10 #include "ash/common/wm/maximize_mode/maximize_mode_controller.h" 10 #include "ash/common/wm/maximize_mode/maximize_mode_controller.h"
11 #include "ash/common/wm_shell.h" 11 #include "ash/common/wm_shell.h"
12 #include "ash/shell.h" 12 #include "ash/shell.h"
13 #include "ash/wm/lock_state_controller.h" 13 #include "ash/wm/lock_state_controller.h"
14 #include "base/time/default_tick_clock.h" 14 #include "base/time/default_tick_clock.h"
15 #include "chromeos/dbus/dbus_thread_manager.h" 15 #include "chromeos/dbus/dbus_thread_manager.h"
16 #include "ui/events/devices/input_device_manager.h" 16 #include "ui/events/devices/input_device_manager.h"
17 #include "ui/events/devices/stylus_state.h" 17 #include "ui/events/devices/stylus_state.h"
18 #include "ui/events/event.h" 18 #include "ui/events/event.h"
19 19
20 namespace ash { 20 namespace ash {
21 21
22 namespace { 22 namespace {
23 23
24 // Amount of time the power button must be held to start the pre-shutdown 24 // Amount of time the power button must be held to start the pre-shutdown
25 // animation when in tablet mode. 25 // animation when in tablet mode. This differs depending on whether the screen
26 constexpr int kShutdownTimeoutMs = 500; 26 // is on or off when the power button is initially pressed.
27 constexpr int kShutdownWhenScreenOnTimeoutMs = 500;
28 // TODO(derat): This is currently set to a high value to work around delays in
29 // powerd's reports of button-up events when the preceding button-down event
30 // turns the display on. Set it to a lower value once powerd no longer blocks on
31 // asking Chrome to turn the display on: http://crbug.com/685734
32 constexpr int kShutdownWhenScreenOffTimeoutMs = 2000;
27 33
28 // Amount of time since last SuspendDone() that power button event needs to be 34 // Amount of time since last SuspendDone() that power button event needs to be
29 // ignored. 35 // ignored.
30 constexpr int kIgnorePowerButtonAfterResumeMs = 2000; 36 constexpr int kIgnorePowerButtonAfterResumeMs = 2000;
31 37
32 // Returns true if device is a convertible/tablet device, otherwise false. 38 // Returns true if device is a convertible/tablet device, otherwise false.
33 bool IsTabletModeSupported() { 39 bool IsTabletModeSupported() {
34 MaximizeModeController* maximize_mode_controller = 40 MaximizeModeController* maximize_mode_controller =
35 WmShell::Get()->maximize_mode_controller(); 41 WmShell::Get()->maximize_mode_controller();
36 return maximize_mode_controller && 42 return maximize_mode_controller &&
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 &TabletPowerButtonController::OnGotInitialBacklightsForcedOff, 220 &TabletPowerButtonController::OnGotInitialBacklightsForcedOff,
215 weak_ptr_factory_.GetWeakPtr())); 221 weak_ptr_factory_.GetWeakPtr()));
216 } 222 }
217 223
218 void TabletPowerButtonController::OnGotInitialBacklightsForcedOff( 224 void TabletPowerButtonController::OnGotInitialBacklightsForcedOff(
219 bool is_forced_off) { 225 bool is_forced_off) {
220 backlights_forced_off_ = is_forced_off; 226 backlights_forced_off_ = is_forced_off;
221 } 227 }
222 228
223 void TabletPowerButtonController::StartShutdownTimer() { 229 void TabletPowerButtonController::StartShutdownTimer() {
224 shutdown_timer_.Start(FROM_HERE, 230 base::TimeDelta timeout = base::TimeDelta::FromMilliseconds(
225 base::TimeDelta::FromMilliseconds(kShutdownTimeoutMs), 231 screen_off_when_power_button_down_ ? kShutdownWhenScreenOffTimeoutMs
226 this, &TabletPowerButtonController::OnShutdownTimeout); 232 : kShutdownWhenScreenOnTimeoutMs);
233 shutdown_timer_.Start(FROM_HERE, timeout, this,
234 &TabletPowerButtonController::OnShutdownTimeout);
227 } 235 }
228 236
229 void TabletPowerButtonController::OnShutdownTimeout() { 237 void TabletPowerButtonController::OnShutdownTimeout() {
230 controller_->StartShutdownAnimation(); 238 controller_->StartShutdownAnimation();
231 } 239 }
232 240
233 void TabletPowerButtonController::LockScreenIfRequired() { 241 void TabletPowerButtonController::LockScreenIfRequired() {
234 SessionStateDelegate* session_state_delegate = 242 SessionStateDelegate* session_state_delegate =
235 WmShell::Get()->GetSessionStateDelegate(); 243 WmShell::Get()->GetSessionStateDelegate();
236 if (session_state_delegate->ShouldLockScreenAutomatically() && 244 if (session_state_delegate->ShouldLockScreenAutomatically() &&
237 session_state_delegate->CanLockScreen() && 245 session_state_delegate->CanLockScreen() &&
238 !session_state_delegate->IsUserSessionBlocked() && 246 !session_state_delegate->IsUserSessionBlocked() &&
239 !controller_->LockRequested()) { 247 !controller_->LockRequested()) {
240 session_state_delegate->LockScreen(); 248 session_state_delegate->LockScreen();
241 } 249 }
242 } 250 }
243 251
244 } // namespace ash 252 } // namespace ash
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698