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

Side by Side Diff: ash/wm/maximize_mode/maximize_mode_controller.cc

Issue 1588883005: Make sure the event blocker is destroyed when we leave maximize mode. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 | ash/wm/maximize_mode/maximize_mode_controller_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/wm/maximize_mode/maximize_mode_controller.h" 5 #include "ash/wm/maximize_mode/maximize_mode_controller.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "ash/accelerators/accelerator_controller.h" 9 #include "ash/accelerators/accelerator_controller.h"
10 #include "ash/accelerators/accelerator_table.h" 10 #include "ash/accelerators/accelerator_table.h"
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 // Clear the last_lid_open_time_ for a stable reading so that there is less 283 // Clear the last_lid_open_time_ for a stable reading so that there is less
284 // chance of a delay if the lid is moved from the close state to the fully 284 // chance of a delay if the lid is moved from the close state to the fully
285 // open state very quickly. 285 // open state very quickly.
286 if (is_angle_stable) 286 if (is_angle_stable)
287 last_lid_open_time_ = base::TimeTicks(); 287 last_lid_open_time_ = base::TimeTicks();
288 288
289 // Toggle maximize mode on or off when corresponding thresholds are passed. 289 // Toggle maximize mode on or off when corresponding thresholds are passed.
290 if (lid_open_past_180_ && is_angle_stable && 290 if (lid_open_past_180_ && is_angle_stable &&
291 lid_angle <= kExitMaximizeModeAngle) { 291 lid_angle <= kExitMaximizeModeAngle) {
292 lid_open_past_180_ = false; 292 lid_open_past_180_ = false;
293 if (!base::CommandLine::ForCurrentProcess()-> 293 LeaveMaximizeMode();
294 HasSwitch(switches::kAshEnableTouchViewTesting)) {
295 LeaveMaximizeMode();
296 }
297 event_blocker_.reset();
298 } else if (!lid_open_past_180_ && !lid_is_closed_ && 294 } else if (!lid_open_past_180_ && !lid_is_closed_ &&
299 lid_angle >= kEnterMaximizeModeAngle && 295 lid_angle >= kEnterMaximizeModeAngle &&
300 (is_angle_stable || !WasLidOpenedRecently())) { 296 (is_angle_stable || !WasLidOpenedRecently())) {
301 lid_open_past_180_ = true; 297 lid_open_past_180_ = true;
302 if (!base::CommandLine::ForCurrentProcess()-> 298 EnterMaximizeMode();
303 HasSwitch(switches::kAshEnableTouchViewTesting)) {
304 EnterMaximizeMode();
305 }
306 // Always reset first to avoid creation before destruction of a previous
307 // object.
308 event_blocker_.reset();
309 #if defined(USE_X11)
310 event_blocker_.reset(new ScopedDisableInternalMouseAndKeyboardX11);
311 #elif defined(USE_OZONE)
312 event_blocker_.reset(new ScopedDisableInternalMouseAndKeyboardOzone);
313 #endif
314 } 299 }
315 } 300 }
316 #endif // OS_CHROMEOS 301 #endif // OS_CHROMEOS
317 302
318 void MaximizeModeController::EnterMaximizeMode() { 303 void MaximizeModeController::EnterMaximizeMode() {
304 // Always reset first to avoid creation before destruction of a previous
305 // object.
306 event_blocker_.reset();
307 #if defined(USE_X11)
308 event_blocker_.reset(new ScopedDisableInternalMouseAndKeyboardX11);
309 #elif defined(USE_OZONE)
310 event_blocker_.reset(new ScopedDisableInternalMouseAndKeyboardOzone);
311 #endif
312
313 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
314 switches::kAshEnableTouchViewTesting)) {
315 // We don't let accelerometer updates interfere with the maximize mode
316 // status as set by the touch-view-testing keyboard shortcut.
317 return;
318 }
319
319 if (IsMaximizeModeWindowManagerEnabled()) 320 if (IsMaximizeModeWindowManagerEnabled())
320 return; 321 return;
321 EnableMaximizeModeWindowManager(true); 322 EnableMaximizeModeWindowManager(true);
322 } 323 }
323 324
324 void MaximizeModeController::LeaveMaximizeMode() { 325 void MaximizeModeController::LeaveMaximizeMode() {
326 event_blocker_.reset();
327
328 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
329 switches::kAshEnableTouchViewTesting)) {
330 // We don't let accelerometer updates interfere with the maximize mode
331 // status as set by the touch-view-testing keyboard shortcut.
332 return;
333 }
334
325 if (!IsMaximizeModeWindowManagerEnabled()) 335 if (!IsMaximizeModeWindowManagerEnabled())
326 return; 336 return;
327 EnableMaximizeModeWindowManager(false); 337 EnableMaximizeModeWindowManager(false);
328 } 338 }
329 339
330 // Called after maximize mode has started, windows might still animate though. 340 // Called after maximize mode has started, windows might still animate though.
331 void MaximizeModeController::OnMaximizeModeStarted() { 341 void MaximizeModeController::OnMaximizeModeStarted() {
332 RecordTouchViewUsageInterval(TOUCH_VIEW_INTERVAL_INACTIVE); 342 RecordTouchViewUsageInterval(TOUCH_VIEW_INTERVAL_INACTIVE);
333 } 343 }
334 344
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 return elapsed_time.InSeconds() <= kLidRecentlyOpenedDurationSeconds; 415 return elapsed_time.InSeconds() <= kLidRecentlyOpenedDurationSeconds;
406 } 416 }
407 417
408 void MaximizeModeController::SetTickClockForTest( 418 void MaximizeModeController::SetTickClockForTest(
409 scoped_ptr<base::TickClock> tick_clock) { 419 scoped_ptr<base::TickClock> tick_clock) {
410 DCHECK(tick_clock_); 420 DCHECK(tick_clock_);
411 tick_clock_ = std::move(tick_clock); 421 tick_clock_ = std::move(tick_clock);
412 } 422 }
413 423
414 } // namespace ash 424 } // namespace ash
OLDNEW
« no previous file with comments | « no previous file | ash/wm/maximize_mode/maximize_mode_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698