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

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

Issue 2662903002: chromeos: Avoid shutdown for delayed power button events. (Closed)
Patch Set: 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 or has 38 // Returns true if device is a convertible/tablet device or has
33 // kAshEnableTouchViewTesting in test, otherwise false. 39 // kAshEnableTouchViewTesting in test, otherwise false.
34 bool IsTabletModeSupported() { 40 bool IsTabletModeSupported() {
35 MaximizeModeController* maximize_mode_controller = 41 MaximizeModeController* maximize_mode_controller =
36 WmShell::Get()->maximize_mode_controller(); 42 WmShell::Get()->maximize_mode_controller();
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 &TabletPowerButtonController::OnGotInitialBacklightsForcedOff, 221 &TabletPowerButtonController::OnGotInitialBacklightsForcedOff,
216 weak_ptr_factory_.GetWeakPtr())); 222 weak_ptr_factory_.GetWeakPtr()));
217 } 223 }
218 224
219 void TabletPowerButtonController::OnGotInitialBacklightsForcedOff( 225 void TabletPowerButtonController::OnGotInitialBacklightsForcedOff(
220 bool is_forced_off) { 226 bool is_forced_off) {
221 backlights_forced_off_ = is_forced_off; 227 backlights_forced_off_ = is_forced_off;
222 } 228 }
223 229
224 void TabletPowerButtonController::StartShutdownTimer() { 230 void TabletPowerButtonController::StartShutdownTimer() {
225 shutdown_timer_.Start(FROM_HERE, 231 base::TimeDelta timeout = base::TimeDelta::FromMilliseconds(
226 base::TimeDelta::FromMilliseconds(kShutdownTimeoutMs), 232 screen_off_when_power_button_down_ ? kShutdownWhenScreenOffTimeoutMs
227 this, &TabletPowerButtonController::OnShutdownTimeout); 233 : kShutdownWhenScreenOnTimeoutMs);
234 shutdown_timer_.Start(FROM_HERE, timeout, this,
235 &TabletPowerButtonController::OnShutdownTimeout);
228 } 236 }
229 237
230 void TabletPowerButtonController::OnShutdownTimeout() { 238 void TabletPowerButtonController::OnShutdownTimeout() {
231 controller_->StartShutdownAnimation(); 239 controller_->StartShutdownAnimation();
232 } 240 }
233 241
234 void TabletPowerButtonController::LockScreenIfRequired() { 242 void TabletPowerButtonController::LockScreenIfRequired() {
235 SessionStateDelegate* session_state_delegate = 243 SessionStateDelegate* session_state_delegate =
236 WmShell::Get()->GetSessionStateDelegate(); 244 WmShell::Get()->GetSessionStateDelegate();
237 if (session_state_delegate->ShouldLockScreenAutomatically() && 245 if (session_state_delegate->ShouldLockScreenAutomatically() &&
238 session_state_delegate->CanLockScreen() && 246 session_state_delegate->CanLockScreen() &&
239 !session_state_delegate->IsUserSessionBlocked() && 247 !session_state_delegate->IsUserSessionBlocked() &&
240 !controller_->LockRequested()) { 248 !controller_->LockRequested()) {
241 session_state_delegate->LockScreen(); 249 session_state_delegate->LockScreen();
242 } 250 }
243 } 251 }
244 252
245 } // namespace ash 253 } // 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