Chromium Code Reviews| Index: content/browser/device_sensors/device_sensor_service.cc |
| diff --git a/content/browser/device_sensors/device_sensor_service.cc b/content/browser/device_sensors/device_sensor_service.cc |
| index 827600740f7c4bf3355020a3fbe8c85e782f53ee..b058af81f9d786adc6461ff661e5cba3f03d8782 100644 |
| --- a/content/browser/device_sensors/device_sensor_service.cc |
| +++ b/content/browser/device_sensors/device_sensor_service.cc |
| @@ -7,8 +7,13 @@ |
| #include "base/bind.h" |
| #include "base/logging.h" |
| #include "base/memory/singleton.h" |
| +#include "build/build_config.h" |
| #include "content/browser/device_sensors/data_fetcher_shared_memory.h" |
| +#if defined(OS_ANDROID) |
| +#include "content/browser/device_sensors/sensor_manager_android.h" |
| +#endif |
| + |
| namespace content { |
| DeviceSensorService::DeviceSensorService() |
| @@ -46,7 +51,7 @@ void DeviceSensorService::RemoveConsumer(ConsumerType consumer_type) { |
| bool DeviceSensorService::ChangeNumberConsumers(ConsumerType consumer_type, |
| int delta) { |
| - DCHECK(thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_thread_checker_.CalledOnValidThread()); |
| if (is_shutdown_) |
| return false; |
| @@ -91,13 +96,26 @@ int DeviceSensorService::GetNumberConsumers(ConsumerType consumer_type) const { |
| mojo::ScopedSharedBufferHandle DeviceSensorService::GetSharedMemoryHandle( |
| ConsumerType consumer_type) { |
| - DCHECK(thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_thread_checker_.CalledOnValidThread()); |
| return data_fetcher_->GetSharedMemoryHandle(consumer_type); |
| } |
| -void DeviceSensorService::Shutdown() { |
| +void DeviceSensorService::InitOnUIThread() { |
| +#if defined(OS_ANDROID) |
| + SensorManagerAndroid::GetInstance()->InitOnUIThread(); |
| +#endif |
| +} |
| + |
| +void DeviceSensorService::InitOnIOThread() { |
|
timvolodine
2016/10/12 16:28:58
I am slightly confused by the two Init methods, wi
|
| + // Ensure that the thread checker is associated with the IO thread in case |
| + // instantiation of this object occurred on the UI thread. |
| + io_thread_checker_.DetachFromThread(); |
| + ignore_result(io_thread_checker_.CalledOnValidThread()); |
| +} |
| + |
| +void DeviceSensorService::ShutDownOnUIThread() { |
| if (data_fetcher_) { |
| - data_fetcher_->Shutdown(); |
| + data_fetcher_->ShutDownOnUIThread(); |
| data_fetcher_.reset(); |
| } |
| is_shutdown_ = true; |
| @@ -106,7 +124,7 @@ void DeviceSensorService::Shutdown() { |
| void DeviceSensorService::SetDataFetcherForTesting( |
| DataFetcherSharedMemory* test_data_fetcher) { |
| if (data_fetcher_) |
| - data_fetcher_->Shutdown(); |
| + data_fetcher_->ShutDownOnUIThread(); |
| data_fetcher_.reset(test_data_fetcher); |
| } |