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

Unified Diff: device/generic_sensor/sensor_provider_impl.cc

Issue 2368193003: [sensors] Introduce asynchronous way to create sensors. (Closed)
Patch Set: Created 4 years, 3 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_provider_impl.cc
diff --git a/device/generic_sensor/sensor_provider_impl.cc b/device/generic_sensor/sensor_provider_impl.cc
index 2cdb1c5a32d5b32ac3c3b97070d0a3a2f0983d33..a27759d07302c412f43a5273747a4a0140664333 100644
--- a/device/generic_sensor/sensor_provider_impl.cc
+++ b/device/generic_sensor/sensor_provider_impl.cc
@@ -32,7 +32,7 @@ void SensorProviderImpl::Create(mojom::SensorProviderRequest request) {
}
SensorProviderImpl::SensorProviderImpl(PlatformSensorProvider* provider)
- : provider_(provider) {
+ : provider_(provider), weak_ptr_factory_(this) {
Mikhail 2016/09/27 11:29:19 nit: next line
maksims (do not use this acc) 2016/09/27 12:22:08 Should I really move to the next line? Git cl form
DCHECK(provider_);
}
@@ -49,10 +49,24 @@ void SensorProviderImpl::GetSensor(mojom::SensorType type,
scoped_refptr<PlatformSensor> sensor = provider_->GetSensor(type);
if (!sensor) {
- sensor = provider_->CreateSensor(
- type, mojom::SensorInitParams::kReadBufferSize, GetBufferOffset(type));
+ CreateSensorCallback cb = base::Bind(
+ &SensorProviderImpl::CreateSensor, weak_ptr_factory_.GetWeakPtr(), type,
+ base::Passed(&cloned_handle), base::Passed(&sensor_request), callback);
+ provider_->CreateSensor(type, mojom::SensorInitParams::kReadBufferSize,
+ GetBufferOffset(type), cb);
+ return;
}
+ CreateSensor(type, std::move(cloned_handle), std::move(sensor_request),
+ callback, std::move(sensor));
+}
+
+void SensorProviderImpl::CreateSensor(
Mikhail 2016/09/27 11:29:19 worth renaming to 'SensorCreated'. it does not cre
maksims (do not use this acc) 2016/09/27 12:19:37 Done.
+ mojom::SensorType type,
+ mojo::ScopedSharedBufferHandle cloned_handle,
+ mojom::SensorRequest sensor_request,
+ const GetSensorCallback& callback,
+ scoped_refptr<PlatformSensor> sensor) {
if (!sensor) {
callback.Run(nullptr, nullptr);
return;
« device/generic_sensor/sensor_provider_impl.h ('K') | « device/generic_sensor/sensor_provider_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698