Index: device/generic_sensor/platform_sensor_provider_base.cc |
diff --git a/device/generic_sensor/platform_sensor_provider_base.cc b/device/generic_sensor/platform_sensor_provider_base.cc |
index c3f30ceb648966f50954ee5717d6e42ac4686551..f8bb907f0f27f013da38c99a13a329bf7ad0af20 100644 |
--- a/device/generic_sensor/platform_sensor_provider_base.cc |
+++ b/device/generic_sensor/platform_sensor_provider_base.cc |
@@ -32,8 +32,7 @@ void PlatformSensorProviderBase::CreateSensor( |
return; |
} |
- mojo::ScopedSharedBufferMapping mapping = shared_buffer_handle_->MapAtOffset( |
- kReadingBufferSize, SensorReadingSharedBuffer::GetOffset(type)); |
+ mojo::ScopedSharedBufferMapping mapping = MapSharedBufferForType(type); |
if (!mapping) { |
callback.Run(nullptr); |
return; |
@@ -43,8 +42,6 @@ void PlatformSensorProviderBase::CreateSensor( |
if (it != requests_map_.end()) { |
it->second.push_back(callback); |
} else { // This is the first CreateSensor call. |
- memset(mapping.get(), 0, kReadingBufferSize); |
- |
requests_map_[type] = CallbackQueue({callback}); |
CreateSensorInternal( |
@@ -117,4 +114,20 @@ void PlatformSensorProviderBase::NotifySensorCreated( |
requests_map_.erase(type); |
} |
+std::vector<mojom::SensorType> |
+PlatformSensorProviderBase::GetPendingRequestTypes() { |
+ std::vector<mojom::SensorType> request_types; |
+ for (auto const& entry : requests_map_) |
+ request_types.push_back(entry.first); |
+ return request_types; |
+} |
+ |
+mojo::ScopedSharedBufferMapping |
+PlatformSensorProviderBase::MapSharedBufferForType(mojom::SensorType type) { |
+ mojo::ScopedSharedBufferMapping mapping = shared_buffer_handle_->MapAtOffset( |
+ kReadingBufferSize, SensorReadingSharedBuffer::GetOffset(type)); |
+ memset(mapping.get(), 0, kReadingBufferSize); |
+ return mapping; |
+} |
+ |
} // namespace device |