Chromium Code Reviews| Index: device/generic_sensor/sensor_impl.cc |
| diff --git a/device/generic_sensor/sensor_impl.cc b/device/generic_sensor/sensor_impl.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e93ec766de6fe279c3157cc250fbee4e0addd97f |
| --- /dev/null |
| +++ b/device/generic_sensor/sensor_impl.cc |
| @@ -0,0 +1,65 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "device/generic_sensor/sensor_impl.h" |
| + |
| +#include <utility> |
| + |
| +namespace device { |
| + |
| +SensorImpl::SensorImpl(mojo::InterfaceRequest<Sensor> request, |
| + scoped_refptr<PlatformSensor> sensor) |
| + : sensor_(std::move(sensor)), |
| + binding_(this, std::move(request)), |
| + suspended_(false) { |
| + sensor_->AddClient(this); |
| +} |
| + |
| +SensorImpl::~SensorImpl() { |
| + sensor_->RemoveClient(this); |
| +} |
| + |
| +mojom::SensorClientRequest SensorImpl::GetClient() { |
| + return mojo::GetProxy(&client_); |
| +} |
| + |
| +void SensorImpl::AddConfiguration( |
| + const PlatformSensorConfiguration& configuration, |
| + const AddConfigurationCallback& callback) { |
| + callback.Run(sensor_->StartListening(this, configuration)); |
|
timvolodine
2016/08/18 22:52:14
add TODO to avoid overflowing browser by repeated
Mikhail
2016/08/19 09:29:55
Done.
|
| +} |
| + |
| +void SensorImpl::RemoveConfiguration( |
| + const PlatformSensorConfiguration& configuration, |
| + const RemoveConfigurationCallback& callback) { |
| + callback.Run(sensor_->StopListening(this, configuration)); |
| +} |
| + |
| +void SensorImpl::SuspendNotification() { |
| + suspended_ = true; |
| + sensor_->UpdateSensor(); |
| +} |
| + |
| +void SensorImpl::ResumeNotification() { |
| + suspended_ = false; |
| + sensor_->UpdateSensor(); |
| +} |
| + |
| +void SensorImpl::OnSensorReadingChanged() { |
| + DCHECK(!suspended_); |
| + if (client_) |
|
timvolodine
2016/08/18 22:52:14
is client_ set anywhere? should this be a DCHECK?
Mikhail
2016/08/19 09:29:55
It might be null if hasn't been actually bound to
|
| + client_->SensorReadingChanged(); |
| +} |
| + |
| +void SensorImpl::OnSensorError() { |
| + DCHECK(!suspended_); |
| + if (client_) |
| + client_->RaiseError(); |
| +} |
| + |
| +bool SensorImpl::IsNotificationSuspended() { |
| + return suspended_; |
| +} |
| + |
| +} // namespace device |