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); |
} |