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

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

Issue 934843002: Implement DeviceMotionEvent API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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
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/ash_switches.h" 9 #include "ash/ash_switches.h"
10 #include "ash/display/display_manager.h" 10 #include "ash/display/display_manager.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 return maximize_mode_window_manager_.get() != NULL; 144 return maximize_mode_window_manager_.get() != NULL;
145 } 145 }
146 146
147 void MaximizeModeController::AddWindow(aura::Window* window) { 147 void MaximizeModeController::AddWindow(aura::Window* window) {
148 if (IsMaximizeModeWindowManagerEnabled()) 148 if (IsMaximizeModeWindowManagerEnabled())
149 maximize_mode_window_manager_->AddWindow(window); 149 maximize_mode_window_manager_->AddWindow(window);
150 } 150 }
151 151
152 #if defined(OS_CHROMEOS) 152 #if defined(OS_CHROMEOS)
153 void MaximizeModeController::OnAccelerometerUpdated( 153 void MaximizeModeController::OnAccelerometerUpdated(
154 const chromeos::AccelerometerUpdate& update) { 154 scoped_refptr<const chromeos::AccelerometerUpdate> update) {
155 bool first_accelerometer_update = !have_seen_accelerometer_data_; 155 bool first_accelerometer_update = !have_seen_accelerometer_data_;
156 have_seen_accelerometer_data_ = true; 156 have_seen_accelerometer_data_ = true;
157 157
158 if (!update.has(chromeos::ACCELEROMETER_SOURCE_SCREEN)) 158 if (!update->has(chromeos::ACCELEROMETER_SOURCE_SCREEN))
159 return; 159 return;
160 160
161 // Whether or not we enter maximize mode affects whether we handle screen 161 // Whether or not we enter maximize mode affects whether we handle screen
162 // rotation, so determine whether to enter maximize mode first. 162 // rotation, so determine whether to enter maximize mode first.
163 if (!update.has(chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD)) { 163 if (!update->has(chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD)) {
164 if (first_accelerometer_update) 164 if (first_accelerometer_update)
165 EnterMaximizeMode(); 165 EnterMaximizeMode();
166 } else if (ui::IsAccelerometerReadingStable( 166 } else if (ui::IsAccelerometerReadingStable(
167 update, chromeos::ACCELEROMETER_SOURCE_SCREEN) && 167 *update, chromeos::ACCELEROMETER_SOURCE_SCREEN) &&
168 ui::IsAccelerometerReadingStable( 168 ui::IsAccelerometerReadingStable(
169 update, chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD) && 169 *update, chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD) &&
170 IsAngleBetweenAccelerometerReadingsStable(update)) { 170 IsAngleBetweenAccelerometerReadingsStable(*update)) {
171 // update.has(chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD) 171 // update.has(chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD)
172 // Ignore the reading if it appears unstable. The reading is considered 172 // Ignore the reading if it appears unstable. The reading is considered
173 // unstable if it deviates too much from gravity and/or the magnitude of the 173 // unstable if it deviates too much from gravity and/or the magnitude of the
174 // reading from the lid differs too much from the reading from the base. 174 // reading from the lid differs too much from the reading from the base.
175 HandleHingeRotation(update); 175 HandleHingeRotation(update.get());
176 } 176 }
177 } 177 }
178 178
179 void MaximizeModeController::LidEventReceived(bool open, 179 void MaximizeModeController::LidEventReceived(bool open,
180 const base::TimeTicks& time) { 180 const base::TimeTicks& time) {
181 if (open) 181 if (open)
182 last_lid_open_time_ = time; 182 last_lid_open_time_ = time;
183 lid_is_closed_ = !open; 183 lid_is_closed_ = !open;
184 LeaveMaximizeMode(); 184 LeaveMaximizeMode();
185 } 185 }
186 186
187 void MaximizeModeController::SuspendImminent() { 187 void MaximizeModeController::SuspendImminent() {
188 // The system is about to suspend, so record TouchView usage interval metrics 188 // The system is about to suspend, so record TouchView usage interval metrics
189 // based on whether TouchView mode is currently active. 189 // based on whether TouchView mode is currently active.
190 RecordTouchViewUsageInterval(CurrentTouchViewIntervalType()); 190 RecordTouchViewUsageInterval(CurrentTouchViewIntervalType());
191 } 191 }
192 192
193 void MaximizeModeController::SuspendDone( 193 void MaximizeModeController::SuspendDone(
194 const base::TimeDelta& sleep_duration) { 194 const base::TimeDelta& sleep_duration) {
195 // We do not want TouchView usage metrics to include time spent in suspend. 195 // We do not want TouchView usage metrics to include time spent in suspend.
196 touchview_usage_interval_start_time_ = base::Time::Now(); 196 touchview_usage_interval_start_time_ = base::Time::Now();
197 } 197 }
198 198
199 void MaximizeModeController::HandleHingeRotation( 199 void MaximizeModeController::HandleHingeRotation(
200 const chromeos::AccelerometerUpdate& update) { 200 const chromeos::AccelerometerUpdate* update) {
oshima 2015/03/10 22:55:24 any reason not to use scoped_refptr here?
jonross 2015/03/11 17:52:48 Nope, I just missed it. Done.
201 static const gfx::Vector3dF hinge_vector(1.0f, 0.0f, 0.0f); 201 static const gfx::Vector3dF hinge_vector(1.0f, 0.0f, 0.0f);
202 // Ignore the component of acceleration parallel to the hinge for the purposes 202 // Ignore the component of acceleration parallel to the hinge for the purposes
203 // of hinge angle calculation. 203 // of hinge angle calculation.
204 gfx::Vector3dF base_flattened(ui::ConvertAccelerometerReadingToVector3dF( 204 gfx::Vector3dF base_flattened(ui::ConvertAccelerometerReadingToVector3dF(
205 update.get(chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD))); 205 update->get(chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD)));
206 gfx::Vector3dF lid_flattened(ui::ConvertAccelerometerReadingToVector3dF( 206 gfx::Vector3dF lid_flattened(ui::ConvertAccelerometerReadingToVector3dF(
207 update.get(chromeos::ACCELEROMETER_SOURCE_SCREEN))); 207 update->get(chromeos::ACCELEROMETER_SOURCE_SCREEN)));
208 base_flattened.set_x(0.0f); 208 base_flattened.set_x(0.0f);
209 lid_flattened.set_x(0.0f); 209 lid_flattened.set_x(0.0f);
210 210
211 // As the hinge approaches a vertical angle, the base and lid accelerometers 211 // As the hinge approaches a vertical angle, the base and lid accelerometers
212 // approach the same values making any angle calculations highly inaccurate. 212 // approach the same values making any angle calculations highly inaccurate.
213 // Bail out early when it is too close. 213 // Bail out early when it is too close.
214 if (base_flattened.Length() < kHingeAngleDetectionThreshold || 214 if (base_flattened.Length() < kHingeAngleDetectionThreshold ||
215 lid_flattened.Length() < kHingeAngleDetectionThreshold) { 215 lid_flattened.Length() < kHingeAngleDetectionThreshold) {
216 return; 216 return;
217 } 217 }
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 return elapsed_time <= kLidRecentlyOpenedDuration; 339 return elapsed_time <= kLidRecentlyOpenedDuration;
340 } 340 }
341 341
342 void MaximizeModeController::SetTickClockForTest( 342 void MaximizeModeController::SetTickClockForTest(
343 scoped_ptr<base::TickClock> tick_clock) { 343 scoped_ptr<base::TickClock> tick_clock) {
344 DCHECK(tick_clock_); 344 DCHECK(tick_clock_);
345 tick_clock_ = tick_clock.Pass(); 345 tick_clock_ = tick_clock.Pass();
346 } 346 }
347 347
348 } // namespace ash 348 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698