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

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

Issue 2579703003: Using ShellObserver instead of creating MaximizeModeController::Observer (Closed)
Patch Set: Created 4 years 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
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/common/wm/maximize_mode/maximize_mode_controller.h" 5 #include "ash/common/wm/maximize_mode/maximize_mode_controller.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "ash/common/ash_switches.h" 9 #include "ash/common/ash_switches.h"
10 #include "ash/common/wm/maximize_mode/maximize_mode_window_manager.h" 10 #include "ash/common/wm/maximize_mode/maximize_mode_window_manager.h"
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 WmShell::Get()->RemoveDisplayObserver(this); 126 WmShell::Get()->RemoveDisplayObserver(this);
127 127
128 #if defined(OS_CHROMEOS) 128 #if defined(OS_CHROMEOS)
129 if (is_enabled) 129 if (is_enabled)
130 chromeos::AccelerometerReader::GetInstance()->RemoveObserver(this); 130 chromeos::AccelerometerReader::GetInstance()->RemoveObserver(this);
131 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver( 131 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(
132 this); 132 this);
133 #endif // OS_CHROMEOS 133 #endif // OS_CHROMEOS
134 } 134 }
135 135
136 void MaximizeModeController::AddObserver(Observer* observer) {
137 observers_.AddObserver(observer);
138 }
139
140 void MaximizeModeController::RemoveObserver(Observer* observer) {
141 observers_.RemoveObserver(observer);
142 }
143
144 bool MaximizeModeController::CanEnterMaximizeMode() { 136 bool MaximizeModeController::CanEnterMaximizeMode() {
145 // If we have ever seen accelerometer data, then HandleHingeRotation may 137 // If we have ever seen accelerometer data, then HandleHingeRotation may
146 // trigger maximize mode at some point in the future. 138 // trigger maximize mode at some point in the future.
147 // The --enable-touch-view-testing switch can also mean that we may enter 139 // The --enable-touch-view-testing switch can also mean that we may enter
148 // maximize mode. 140 // maximize mode.
149 // TODO(mgiuca): This can result in false positives, as it returns true for 141 // TODO(mgiuca): This can result in false positives, as it returns true for
150 // any device with an accelerometer. Have TouchView-enabled devices explicitly 142 // any device with an accelerometer. Have TouchView-enabled devices explicitly
151 // set a flag, and change this implementation to simply return true iff the 143 // set a flag, and change this implementation to simply return true iff the
152 // flag is present (http://crbug.com/457445). 144 // flag is present (http://crbug.com/457445).
153 return have_seen_accelerometer_data_ || 145 return have_seen_accelerometer_data_ ||
(...skipping 11 matching lines...) Expand all
165 157
166 WmShell* shell = WmShell::Get(); 158 WmShell* shell = WmShell::Get();
167 159
168 if (should_enable) { 160 if (should_enable) {
169 maximize_mode_window_manager_.reset(new MaximizeModeWindowManager()); 161 maximize_mode_window_manager_.reset(new MaximizeModeWindowManager());
170 // TODO(jonross): Move the maximize mode notifications from ShellObserver 162 // TODO(jonross): Move the maximize mode notifications from ShellObserver
171 // to MaximizeModeController::Observer 163 // to MaximizeModeController::Observer
172 shell->RecordUserMetricsAction(UMA_MAXIMIZE_MODE_ENABLED); 164 shell->RecordUserMetricsAction(UMA_MAXIMIZE_MODE_ENABLED);
173 shell->OnMaximizeModeStarted(); 165 shell->OnMaximizeModeStarted();
174 166
175 touchview_observers_.ForAllPtrs([](mojom::TouchViewObserver* observer) { 167 observers_.ForAllPtrs([](mojom::TouchViewObserver* observer) {
176 observer->OnTouchViewToggled(true); 168 observer->OnTouchViewToggled(true);
177 }); 169 });
178 170
179 } else { 171 } else {
180 maximize_mode_window_manager_.reset(); 172 maximize_mode_window_manager_.reset();
181 shell->RecordUserMetricsAction(UMA_MAXIMIZE_MODE_DISABLED); 173 shell->RecordUserMetricsAction(UMA_MAXIMIZE_MODE_DISABLED);
182 shell->OnMaximizeModeEnded(); 174 shell->OnMaximizeModeEnded();
183 175
184 touchview_observers_.ForAllPtrs([](mojom::TouchViewObserver* observer) { 176 observers_.ForAllPtrs([](mojom::TouchViewObserver* observer) {
185 observer->OnTouchViewToggled(false); 177 observer->OnTouchViewToggled(false);
186 }); 178 });
187 } 179 }
188 } 180 }
189 181
190 bool MaximizeModeController::IsMaximizeModeWindowManagerEnabled() const { 182 bool MaximizeModeController::IsMaximizeModeWindowManagerEnabled() const {
191 return maximize_mode_window_manager_.get() != NULL; 183 return maximize_mode_window_manager_.get() != NULL;
192 } 184 }
193 185
194 void MaximizeModeController::AddWindow(WmWindow* window) { 186 void MaximizeModeController::AddWindow(WmWindow* window) {
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 334 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
343 switches::kAshEnableTouchViewTesting)) { 335 switches::kAshEnableTouchViewTesting)) {
344 // We don't let accelerometer updates interfere with the maximize mode 336 // We don't let accelerometer updates interfere with the maximize mode
345 // status as set by the touch-view-testing keyboard shortcut. 337 // status as set by the touch-view-testing keyboard shortcut.
346 return; 338 return;
347 } 339 }
348 340
349 if (IsMaximizeModeWindowManagerEnabled()) 341 if (IsMaximizeModeWindowManagerEnabled())
350 return; 342 return;
351 EnableMaximizeModeWindowManager(true); 343 EnableMaximizeModeWindowManager(true);
352
353 for (auto& observer : observers_)
354 observer.OnEnterMaximizeMode();
355 } 344 }
356 345
357 void MaximizeModeController::LeaveMaximizeMode() { 346 void MaximizeModeController::LeaveMaximizeMode() {
358 event_blocker_.reset(); 347 event_blocker_.reset();
359 348
360 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 349 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
361 switches::kAshEnableTouchViewTesting)) { 350 switches::kAshEnableTouchViewTesting)) {
362 // We don't let accelerometer updates interfere with the maximize mode 351 // We don't let accelerometer updates interfere with the maximize mode
363 // status as set by the touch-view-testing keyboard shortcut. 352 // status as set by the touch-view-testing keyboard shortcut.
364 return; 353 return;
365 } 354 }
366 355
367 if (!IsMaximizeModeWindowManagerEnabled()) 356 if (!IsMaximizeModeWindowManagerEnabled())
368 return; 357 return;
369 EnableMaximizeModeWindowManager(false); 358 EnableMaximizeModeWindowManager(false);
370
371 for (auto& observer : observers_)
372 observer.OnLeaveMaximizeMode();
373 } 359 }
374 360
375 // Called after maximize mode has started, windows might still animate though. 361 // Called after maximize mode has started, windows might still animate though.
376 void MaximizeModeController::OnMaximizeModeStarted() { 362 void MaximizeModeController::OnMaximizeModeStarted() {
377 RecordTouchViewUsageInterval(TOUCH_VIEW_INTERVAL_INACTIVE); 363 RecordTouchViewUsageInterval(TOUCH_VIEW_INTERVAL_INACTIVE);
378 } 364 }
379 365
380 // Called after maximize mode has ended, windows might still be returning to 366 // Called after maximize mode has ended, windows might still be returning to
381 // their original position. 367 // their original position.
382 void MaximizeModeController::OnMaximizeModeEnded() { 368 void MaximizeModeController::OnMaximizeModeEnded() {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 400
415 MaximizeModeController::TouchViewIntervalType 401 MaximizeModeController::TouchViewIntervalType
416 MaximizeModeController::CurrentTouchViewIntervalType() { 402 MaximizeModeController::CurrentTouchViewIntervalType() {
417 if (IsMaximizeModeWindowManagerEnabled()) 403 if (IsMaximizeModeWindowManagerEnabled())
418 return TOUCH_VIEW_INTERVAL_ACTIVE; 404 return TOUCH_VIEW_INTERVAL_ACTIVE;
419 return TOUCH_VIEW_INTERVAL_INACTIVE; 405 return TOUCH_VIEW_INTERVAL_INACTIVE;
420 } 406 }
421 407
422 void MaximizeModeController::AddObserver(mojom::TouchViewObserverPtr observer) { 408 void MaximizeModeController::AddObserver(mojom::TouchViewObserverPtr observer) {
423 observer->OnTouchViewToggled(IsMaximizeModeWindowManagerEnabled()); 409 observer->OnTouchViewToggled(IsMaximizeModeWindowManagerEnabled());
424 touchview_observers_.AddPtr(std::move(observer)); 410 observers_.AddPtr(std::move(observer));
425 } 411 }
426 412
427 void MaximizeModeController::OnAppTerminating() { 413 void MaximizeModeController::OnAppTerminating() {
428 // The system is about to shut down, so record TouchView usage interval 414 // The system is about to shut down, so record TouchView usage interval
429 // metrics based on whether TouchView mode is currently active. 415 // metrics based on whether TouchView mode is currently active.
430 RecordTouchViewUsageInterval(CurrentTouchViewIntervalType()); 416 RecordTouchViewUsageInterval(CurrentTouchViewIntervalType());
431 417
432 if (CanEnterMaximizeMode()) { 418 if (CanEnterMaximizeMode()) {
433 UMA_HISTOGRAM_CUSTOM_COUNTS("Ash.TouchView.TouchViewActiveTotal", 419 UMA_HISTOGRAM_CUSTOM_COUNTS("Ash.TouchView.TouchViewActiveTotal",
434 total_touchview_time_.InMinutes(), 1, 420 total_touchview_time_.InMinutes(), 1,
(...skipping 21 matching lines...) Expand all
456 return elapsed_time.InSeconds() <= kLidRecentlyOpenedDurationSeconds; 442 return elapsed_time.InSeconds() <= kLidRecentlyOpenedDurationSeconds;
457 } 443 }
458 444
459 void MaximizeModeController::SetTickClockForTest( 445 void MaximizeModeController::SetTickClockForTest(
460 std::unique_ptr<base::TickClock> tick_clock) { 446 std::unique_ptr<base::TickClock> tick_clock) {
461 DCHECK(tick_clock_); 447 DCHECK(tick_clock_);
462 tick_clock_ = std::move(tick_clock); 448 tick_clock_ = std::move(tick_clock);
463 } 449 }
464 450
465 } // namespace ash 451 } // namespace ash
OLDNEW
« no previous file with comments | « ash/common/wm/maximize_mode/maximize_mode_controller.h ('k') | ash/system/chromeos/power/tablet_power_button_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698