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

Unified Diff: device/generic_sensor/sensor_impl.cc

Issue 2927263002: Add |notify_client_on_reading_change| flag to sensor configuration (Closed)
Patch Set: address nit Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
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..3f82419c424e35b2e34573880006594a9de033f8 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_ == 0)
client_->SensorReadingChanged();
}
« device/generic_sensor/public/interfaces/sensor.mojom ('K') | « device/generic_sensor/sensor_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698