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

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

Issue 795333002: Refactor AccelerometerReader to provide an Observer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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/wm/maximize_mode/maximize_mode_controller.h" 5 #include "ash/wm/maximize_mode/maximize_mode_controller.h"
6 6
7 #include "ash/accelerators/accelerator_controller.h" 7 #include "ash/accelerators/accelerator_controller.h"
8 #include "ash/accelerators/accelerator_table.h" 8 #include "ash/accelerators/accelerator_table.h"
9 #include "ash/accelerometer/accelerometer_controller.h"
10 #include "ash/ash_switches.h" 9 #include "ash/ash_switches.h"
11 #include "ash/display/display_manager.h" 10 #include "ash/display/display_manager.h"
12 #include "ash/shell.h" 11 #include "ash/shell.h"
13 #include "ash/wm/maximize_mode/maximize_mode_window_manager.h" 12 #include "ash/wm/maximize_mode/maximize_mode_window_manager.h"
14 #include "ash/wm/maximize_mode/scoped_disable_internal_mouse_and_keyboard.h" 13 #include "ash/wm/maximize_mode/scoped_disable_internal_mouse_and_keyboard.h"
15 #include "base/auto_reset.h" 14 #include "base/auto_reset.h"
16 #include "base/command_line.h" 15 #include "base/command_line.h"
17 #include "base/metrics/histogram.h" 16 #include "base/metrics/histogram.h"
18 #include "base/time/default_tick_clock.h" 17 #include "base/time/default_tick_clock.h"
19 #include "base/time/tick_clock.h" 18 #include "base/time/tick_clock.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 MaximizeModeController::MaximizeModeController() 116 MaximizeModeController::MaximizeModeController()
118 : rotation_locked_(false), 117 : rotation_locked_(false),
119 have_seen_accelerometer_data_(false), 118 have_seen_accelerometer_data_(false),
120 ignore_display_configuration_updates_(false), 119 ignore_display_configuration_updates_(false),
121 lid_open_past_180_(false), 120 lid_open_past_180_(false),
122 shutting_down_(false), 121 shutting_down_(false),
123 user_rotation_(gfx::Display::ROTATE_0), 122 user_rotation_(gfx::Display::ROTATE_0),
124 last_touchview_transition_time_(base::Time::Now()), 123 last_touchview_transition_time_(base::Time::Now()),
125 tick_clock_(new base::DefaultTickClock()), 124 tick_clock_(new base::DefaultTickClock()),
126 lid_is_closed_(false) { 125 lid_is_closed_(false) {
127 Shell::GetInstance()->accelerometer_controller()->AddObserver(this);
128 Shell::GetInstance()->AddShellObserver(this); 126 Shell::GetInstance()->AddShellObserver(this);
129 #if defined(OS_CHROMEOS) 127 #if defined(OS_CHROMEOS)
128 Shell::GetInstance()->accelerometer_reader()->AddObserver(this);
130 chromeos::DBusThreadManager::Get()-> 129 chromeos::DBusThreadManager::Get()->
131 GetPowerManagerClient()->AddObserver(this); 130 GetPowerManagerClient()->AddObserver(this);
132 #endif // OS_CHROMEOS 131 #endif // OS_CHROMEOS
133 } 132 }
134 133
135 MaximizeModeController::~MaximizeModeController() { 134 MaximizeModeController::~MaximizeModeController() {
136 Shell::GetInstance()->RemoveShellObserver(this); 135 Shell::GetInstance()->RemoveShellObserver(this);
137 Shell::GetInstance()->accelerometer_controller()->RemoveObserver(this);
138 #if defined(OS_CHROMEOS) 136 #if defined(OS_CHROMEOS)
137 Shell::GetInstance()->accelerometer_reader()->RemoveObserver(this);
139 chromeos::DBusThreadManager::Get()-> 138 chromeos::DBusThreadManager::Get()->
140 GetPowerManagerClient()->RemoveObserver(this); 139 GetPowerManagerClient()->RemoveObserver(this);
141 #endif // OS_CHROMEOS 140 #endif // OS_CHROMEOS
142 } 141 }
143 142
144 void MaximizeModeController::SetRotationLocked(bool rotation_locked) { 143 void MaximizeModeController::SetRotationLocked(bool rotation_locked) {
145 if (rotation_locked_ == rotation_locked) 144 if (rotation_locked_ == rotation_locked)
146 return; 145 return;
147 base::AutoReset<bool> auto_ignore_display_configuration_updates( 146 base::AutoReset<bool> auto_ignore_display_configuration_updates(
148 &ignore_display_configuration_updates_, true); 147 &ignore_display_configuration_updates_, true);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 void MaximizeModeController::AddWindow(aura::Window* window) { 194 void MaximizeModeController::AddWindow(aura::Window* window) {
196 if (IsMaximizeModeWindowManagerEnabled()) 195 if (IsMaximizeModeWindowManagerEnabled())
197 maximize_mode_window_manager_->AddWindow(window); 196 maximize_mode_window_manager_->AddWindow(window);
198 } 197 }
199 198
200 void MaximizeModeController::Shutdown() { 199 void MaximizeModeController::Shutdown() {
201 shutting_down_ = true; 200 shutting_down_ = true;
202 LeaveMaximizeMode(); 201 LeaveMaximizeMode();
203 } 202 }
204 203
204 void MaximizeModeController::OnDisplayConfigurationChanged() {
jonross 2014/12/11 23:09:27 I actually moved OnAccelerometerUpdated down into
flackr 2014/12/12 16:47:10 Acknowledged.
205 if (ignore_display_configuration_updates_)
206 return;
207 DisplayManager* display_manager = Shell::GetInstance()->display_manager();
208 gfx::Display::Rotation user_rotation =
209 display_manager->GetDisplayInfo(gfx::Display::InternalDisplayId())
210 .rotation();
211 if (user_rotation != current_rotation_) {
212 // A user may change other display configuration settings. When the user
213 // does change the rotation setting, then lock rotation to prevent the
214 // accelerometer from erasing their change.
215 SetRotationLocked(true);
216 user_rotation_ = user_rotation;
217 current_rotation_ = user_rotation;
218 }
219 }
220
221 #if defined(OS_CHROMEOS)
205 void MaximizeModeController::OnAccelerometerUpdated( 222 void MaximizeModeController::OnAccelerometerUpdated(
206 const ui::AccelerometerUpdate& update) { 223 const ui::AccelerometerUpdate& update) {
207 bool first_accelerometer_update = !have_seen_accelerometer_data_; 224 bool first_accelerometer_update = !have_seen_accelerometer_data_;
208 have_seen_accelerometer_data_ = true; 225 have_seen_accelerometer_data_ = true;
209 226
210 // Ignore the reading if it appears unstable. The reading is considered 227 // Ignore the reading if it appears unstable. The reading is considered
211 // unstable if it deviates too much from gravity and/or the magnitude of the 228 // unstable if it deviates too much from gravity and/or the magnitude of the
212 // reading from the lid differs too much from the reading from the base. 229 // reading from the lid differs too much from the reading from the base.
213 float lid_magnitude = update.has(ui::ACCELEROMETER_SOURCE_SCREEN) ? 230 float lid_magnitude = update.has(ui::ACCELEROMETER_SOURCE_SCREEN) ?
214 update.get(ui::ACCELEROMETER_SOURCE_SCREEN).Length() : 0.0f; 231 update.get(ui::ACCELEROMETER_SOURCE_SCREEN).Length() : 0.0f;
(...skipping 26 matching lines...) Expand all
241 258
242 if (first_accelerometer_update) { 259 if (first_accelerometer_update) {
243 // On the first accelerometer update we will know if we have entered 260 // On the first accelerometer update we will know if we have entered
244 // maximize mode or not. Update the preferences to reflect the current 261 // maximize mode or not. Update the preferences to reflect the current
245 // state. 262 // state.
246 Shell::GetInstance()->display_manager()-> 263 Shell::GetInstance()->display_manager()->
247 RegisterDisplayRotationProperties(rotation_locked_, current_rotation_); 264 RegisterDisplayRotationProperties(rotation_locked_, current_rotation_);
248 } 265 }
249 } 266 }
250 267
251 void MaximizeModeController::OnDisplayConfigurationChanged() {
252 if (ignore_display_configuration_updates_)
253 return;
254 DisplayManager* display_manager = Shell::GetInstance()->display_manager();
255 gfx::Display::Rotation user_rotation = display_manager->
256 GetDisplayInfo(gfx::Display::InternalDisplayId()).rotation();
257 if (user_rotation != current_rotation_) {
258 // A user may change other display configuration settings. When the user
259 // does change the rotation setting, then lock rotation to prevent the
260 // accelerometer from erasing their change.
261 SetRotationLocked(true);
262 user_rotation_ = user_rotation;
263 current_rotation_ = user_rotation;
264 }
265 }
266
267 #if defined(OS_CHROMEOS)
268 void MaximizeModeController::LidEventReceived(bool open, 268 void MaximizeModeController::LidEventReceived(bool open,
269 const base::TimeTicks& time) { 269 const base::TimeTicks& time) {
270 if (open) 270 if (open)
271 last_lid_open_time_ = time; 271 last_lid_open_time_ = time;
272 lid_is_closed_ = !open; 272 lid_is_closed_ = !open;
273 LeaveMaximizeMode(); 273 LeaveMaximizeMode();
274 } 274 }
275 275
276 void MaximizeModeController::SuspendImminent() { 276 void MaximizeModeController::SuspendImminent() {
277 RecordTouchViewStateTransition(); 277 RecordTouchViewStateTransition();
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 return elapsed_time <= kLidRecentlyOpenedDuration; 506 return elapsed_time <= kLidRecentlyOpenedDuration;
507 } 507 }
508 508
509 void MaximizeModeController::SetTickClockForTest( 509 void MaximizeModeController::SetTickClockForTest(
510 scoped_ptr<base::TickClock> tick_clock) { 510 scoped_ptr<base::TickClock> tick_clock) {
511 DCHECK(tick_clock_); 511 DCHECK(tick_clock_);
512 tick_clock_ = tick_clock.Pass(); 512 tick_clock_ = tick_clock.Pass();
513 } 513 }
514 514
515 } // namespace ash 515 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698