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

Side by Side Diff: chromeos/accelerometer/accelerometer_reader.cc

Issue 895993002: Correcly Report CanEnterMaximizeMode on devices without accelerometers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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 | « chromeos/accelerometer/accelerometer_reader.h ('k') | 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 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 "chromeos/accelerometer/accelerometer_reader.h" 5 #include "chromeos/accelerometer/accelerometer_reader.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 // startup. 196 // startup.
197 base::PostTaskAndReplyWithResult( 197 base::PostTaskAndReplyWithResult(
198 task_runner_.get(), FROM_HERE, 198 task_runner_.get(), FROM_HERE,
199 base::Bind(&DetectAndReadAccelerometerConfiguration, configuration_), 199 base::Bind(&DetectAndReadAccelerometerConfiguration, configuration_),
200 base::Bind(&AccelerometerReader::OnInitialized, 200 base::Bind(&AccelerometerReader::OnInitialized,
201 weak_factory_.GetWeakPtr(), configuration_)); 201 weak_factory_.GetWeakPtr(), configuration_));
202 } 202 }
203 203
204 void AccelerometerReader::AddObserver(Observer* observer) { 204 void AccelerometerReader::AddObserver(Observer* observer) {
205 observers_.AddObserver(observer); 205 observers_.AddObserver(observer);
206 observer->OnAccelerometerUpdated(update_); 206 if (has_update_)
207 observer->OnAccelerometerUpdated(update_);
207 } 208 }
208 209
209 void AccelerometerReader::RemoveObserver(Observer* observer) { 210 void AccelerometerReader::RemoveObserver(Observer* observer) {
210 observers_.RemoveObserver(observer); 211 observers_.RemoveObserver(observer);
211 } 212 }
212 213
213 AccelerometerReader::AccelerometerReader() 214 AccelerometerReader::AccelerometerReader()
214 : configuration_(new AccelerometerReader::Configuration()), 215 : has_update_(false),
216 configuration_(new AccelerometerReader::Configuration()),
215 weak_factory_(this) { 217 weak_factory_(this) {
216 } 218 }
217 219
218 AccelerometerReader::~AccelerometerReader() { 220 AccelerometerReader::~AccelerometerReader() {
219 } 221 }
220 222
221 void AccelerometerReader::OnInitialized( 223 void AccelerometerReader::OnInitialized(
222 scoped_refptr<AccelerometerReader::Configuration> configuration, 224 scoped_refptr<AccelerometerReader::Configuration> configuration,
223 bool success) { 225 bool success) {
224 if (success) 226 if (success)
(...skipping 13 matching lines...) Expand all
238 weak_factory_.GetWeakPtr(), 240 weak_factory_.GetWeakPtr(),
239 reading)); 241 reading));
240 } 242 }
241 243
242 void AccelerometerReader::OnDataRead( 244 void AccelerometerReader::OnDataRead(
243 scoped_refptr<AccelerometerReader::Reading> reading, 245 scoped_refptr<AccelerometerReader::Reading> reading,
244 bool success) { 246 bool success) {
245 DCHECK(!task_runner_->RunsTasksOnCurrentThread()); 247 DCHECK(!task_runner_->RunsTasksOnCurrentThread());
246 248
247 if (success) { 249 if (success) {
250 has_update_ = true;
248 for (int i = 0; i < ACCELEROMETER_SOURCE_COUNT; ++i) { 251 for (int i = 0; i < ACCELEROMETER_SOURCE_COUNT; ++i) {
249 if (!configuration_->data.has[i]) 252 if (!configuration_->data.has[i])
250 continue; 253 continue;
251 254
252 int16* values = reinterpret_cast<int16*>(reading->data); 255 int16* values = reinterpret_cast<int16*>(reading->data);
253 update_.Set(static_cast<AccelerometerSource>(i), 256 update_.Set(static_cast<AccelerometerSource>(i),
254 values[configuration_->data.index[i][0]] * 257 values[configuration_->data.index[i][0]] *
255 configuration_->data.scale[i][0], 258 configuration_->data.scale[i][0],
256 values[configuration_->data.index[i][1]] * 259 values[configuration_->data.index[i][1]] *
257 configuration_->data.scale[i][1], 260 configuration_->data.scale[i][1],
258 values[configuration_->data.index[i][2]] * 261 values[configuration_->data.index[i][2]] *
259 configuration_->data.scale[i][2]); 262 configuration_->data.scale[i][2]);
260 } 263 }
261 FOR_EACH_OBSERVER(Observer, observers_, OnAccelerometerUpdated(update_)); 264 FOR_EACH_OBSERVER(Observer, observers_, OnAccelerometerUpdated(update_));
262 } 265 }
263 266
264 // Trigger another read after the current sampling delay. 267 // Trigger another read after the current sampling delay.
265 base::MessageLoop::current()->PostDelayedTask( 268 base::MessageLoop::current()->PostDelayedTask(
266 FROM_HERE, 269 FROM_HERE,
267 base::Bind(&AccelerometerReader::TriggerRead, 270 base::Bind(&AccelerometerReader::TriggerRead,
268 weak_factory_.GetWeakPtr()), 271 weak_factory_.GetWeakPtr()),
269 base::TimeDelta::FromMilliseconds(kDelayBetweenReadsMs)); 272 base::TimeDelta::FromMilliseconds(kDelayBetweenReadsMs));
270 } 273 }
271 274
272 } // namespace chromeos 275 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/accelerometer/accelerometer_reader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698