Chromium Code Reviews| 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; |