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 |
| index 33e9cd0bb2a0f14e81f6cbcdaedfbe5e4c4da948..7ef579ac96b20734885131235923b45304f0b6f5 100644 |
| --- a/device/generic_sensor/sensor_impl.cc |
| +++ b/device/generic_sensor/sensor_impl.cc |
| @@ -11,7 +11,9 @@ |
| namespace device { |
| SensorImpl::SensorImpl(scoped_refptr<PlatformSensor> sensor) |
| - : sensor_(std::move(sensor)), suspended_(false) { |
| + : sensor_(std::move(sensor)), |
| + suspended_(false), |
| + suppress_on_change_events_count_(0) { |
| sensor_->AddClient(this); |
| } |
| @@ -28,7 +30,10 @@ void SensorImpl::AddConfiguration( |
| AddConfigurationCallback callback) { |
| // TODO(Mikhail): To avoid overflowing browser by repeated AddConfigs |
| // (maybe limit the number of configs per client). |
| - std::move(callback).Run(sensor_->StartListening(this, configuration)); |
| + bool success = sensor_->StartListening(this, configuration); |
| + if (success && configuration.suppress_on_change_events()) |
| + ++suppress_on_change_events_count_; |
| + std::move(callback).Run(success); |
| } |
| void SensorImpl::GetDefaultConfiguration( |
| @@ -39,7 +44,10 @@ void SensorImpl::GetDefaultConfiguration( |
| void SensorImpl::RemoveConfiguration( |
| const PlatformSensorConfiguration& configuration, |
| RemoveConfigurationCallback callback) { |
| - std::move(callback).Run(sensor_->StopListening(this, configuration)); |
| + bool success = sensor_->StopListening(this, configuration); |
| + if (success && configuration.suppress_on_change_events()) |
| + --suppress_on_change_events_count_; |
| + std::move(callback).Run(success); |
| } |
| void SensorImpl::Suspend() { |
| @@ -54,7 +62,7 @@ void SensorImpl::Resume() { |
| void SensorImpl::OnSensorReadingChanged() { |
| DCHECK(!suspended_); |
| - if (client_) |
| + if (client_ && !suppress_on_change_events_count_) |
|
Reilly Grant (use Gerrit)
2017/06/09 22:57:14
nit: this isn't a boolean, I would say suppress_on
juncai
2017/06/09 23:11:32
Done.
|
| client_->SensorReadingChanged(); |
| } |