| Index: content/browser/device_sensors/sensor_manager_android.cc
|
| diff --git a/content/browser/device_sensors/sensor_manager_android.cc b/content/browser/device_sensors/sensor_manager_android.cc
|
| index 22b416997b43e5e17922d550aff73a55e652b32a..345be4acd1ae89fb9efd792475a50dac014c3ab9 100644
|
| --- a/content/browser/device_sensors/sensor_manager_android.cc
|
| +++ b/content/browser/device_sensors/sensor_manager_android.cc
|
| @@ -11,7 +11,7 @@
|
| #include "base/bind.h"
|
| #include "base/memory/singleton.h"
|
| #include "base/metrics/histogram_macros.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| +#include "base/threading/thread_task_runner_handle.h"
|
| #include "jni/DeviceSensors_jni.h"
|
|
|
| using base::android::AttachCurrentThread;
|
| @@ -57,6 +57,7 @@ SensorManagerAndroid::SensorManagerAndroid()
|
| device_orientation_buffer_(nullptr),
|
| motion_buffer_initialized_(false),
|
| orientation_buffer_initialized_(false),
|
| + ui_task_runner_(nullptr),
|
| is_shutdown_(false) {
|
| memset(received_motion_data_, 0, sizeof(received_motion_data_));
|
| device_sensors_.Reset(Java_DeviceSensors_getInstance(
|
| @@ -242,20 +243,18 @@ SensorManagerAndroid::GetOrientationSensorTypeUsed() {
|
|
|
| void SensorManagerAndroid::StartFetchingDeviceLightData(
|
| DeviceLightHardwareBuffer* buffer) {
|
| - if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| + if (ui_task_runner_->RunsTasksOnCurrentThread()) {
|
| StartFetchingLightDataOnUI(buffer);
|
| } else {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&SensorManagerAndroid::StartFetchingLightDataOnUI,
|
| - base::Unretained(this),
|
| - buffer));
|
| + ui_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&SensorManagerAndroid::StartFetchingLightDataOnUI,
|
| + base::Unretained(this), buffer));
|
| }
|
| }
|
|
|
| void SensorManagerAndroid::StartFetchingLightDataOnUI(
|
| DeviceLightHardwareBuffer* buffer) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
|
| DCHECK(buffer);
|
| if (is_shutdown_)
|
| return;
|
| @@ -273,19 +272,18 @@ void SensorManagerAndroid::StartFetchingLightDataOnUI(
|
| }
|
|
|
| void SensorManagerAndroid::StopFetchingDeviceLightData() {
|
| - if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| + if (ui_task_runner_->RunsTasksOnCurrentThread()) {
|
| StopFetchingLightDataOnUI();
|
| return;
|
| }
|
|
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&SensorManagerAndroid::StopFetchingLightDataOnUI,
|
| - base::Unretained(this)));
|
| + ui_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&SensorManagerAndroid::StopFetchingLightDataOnUI,
|
| + base::Unretained(this)));
|
| }
|
|
|
| void SensorManagerAndroid::StopFetchingLightDataOnUI() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
|
| if (is_shutdown_)
|
| return;
|
|
|
| @@ -309,20 +307,19 @@ void SensorManagerAndroid::SetLightBufferValue(double lux) {
|
|
|
| void SensorManagerAndroid::StartFetchingDeviceMotionData(
|
| DeviceMotionHardwareBuffer* buffer) {
|
| - if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| + if (ui_task_runner_->RunsTasksOnCurrentThread()) {
|
| StartFetchingMotionDataOnUI(buffer);
|
| } else {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| + ui_task_runner_->PostTask(
|
| + FROM_HERE,
|
| base::Bind(&SensorManagerAndroid::StartFetchingMotionDataOnUI,
|
| - base::Unretained(this),
|
| - buffer));
|
| + base::Unretained(this), buffer));
|
| }
|
| }
|
|
|
| void SensorManagerAndroid::StartFetchingMotionDataOnUI(
|
| DeviceMotionHardwareBuffer* buffer) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
|
| DCHECK(buffer);
|
| if (is_shutdown_)
|
| return;
|
| @@ -345,19 +342,18 @@ void SensorManagerAndroid::StartFetchingMotionDataOnUI(
|
| }
|
|
|
| void SensorManagerAndroid::StopFetchingDeviceMotionData() {
|
| - if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| + if (ui_task_runner_->RunsTasksOnCurrentThread()) {
|
| StopFetchingMotionDataOnUI();
|
| return;
|
| }
|
|
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&SensorManagerAndroid::StopFetchingMotionDataOnUI,
|
| - base::Unretained(this)));
|
| + ui_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&SensorManagerAndroid::StopFetchingMotionDataOnUI,
|
| + base::Unretained(this)));
|
| }
|
|
|
| void SensorManagerAndroid::StopFetchingMotionDataOnUI() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
|
| if (is_shutdown_)
|
| return;
|
|
|
| @@ -410,20 +406,19 @@ void SensorManagerAndroid::ClearInternalMotionBuffers() {
|
|
|
| void SensorManagerAndroid::StartFetchingDeviceOrientationData(
|
| DeviceOrientationHardwareBuffer* buffer) {
|
| - if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| + if (ui_task_runner_->RunsTasksOnCurrentThread()) {
|
| StartFetchingOrientationDataOnUI(buffer);
|
| } else {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| + ui_task_runner_->PostTask(
|
| + FROM_HERE,
|
| base::Bind(&SensorManagerAndroid::StartFetchingOrientationDataOnUI,
|
| - base::Unretained(this),
|
| - buffer));
|
| + base::Unretained(this), buffer));
|
| }
|
| }
|
|
|
| void SensorManagerAndroid::StartFetchingOrientationDataOnUI(
|
| DeviceOrientationHardwareBuffer* buffer) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
|
| DCHECK(buffer);
|
| if (is_shutdown_)
|
| return;
|
| @@ -448,19 +443,19 @@ void SensorManagerAndroid::StartFetchingOrientationDataOnUI(
|
| }
|
|
|
| void SensorManagerAndroid::StopFetchingDeviceOrientationData() {
|
| - if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| + if (ui_task_runner_->RunsTasksOnCurrentThread()) {
|
| StopFetchingOrientationDataOnUI();
|
| return;
|
| }
|
|
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| + ui_task_runner_->PostTask(
|
| + FROM_HERE,
|
| base::Bind(&SensorManagerAndroid::StopFetchingOrientationDataOnUI,
|
| base::Unretained(this)));
|
| }
|
|
|
| void SensorManagerAndroid::StopFetchingOrientationDataOnUI() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
|
| if (is_shutdown_)
|
| return;
|
|
|
| @@ -477,33 +472,32 @@ void SensorManagerAndroid::StopFetchingOrientationDataOnUI() {
|
|
|
| void SensorManagerAndroid::StartFetchingDeviceOrientationAbsoluteData(
|
| DeviceOrientationHardwareBuffer* buffer) {
|
| - if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| + if (ui_task_runner_->RunsTasksOnCurrentThread()) {
|
| StartFetchingOrientationAbsoluteDataOnUI(buffer);
|
| } else {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| + ui_task_runner_->PostTask(
|
| + FROM_HERE,
|
| base::Bind(
|
| &SensorManagerAndroid::StartFetchingOrientationAbsoluteDataOnUI,
|
| - base::Unretained(this),
|
| - buffer));
|
| + base::Unretained(this), buffer));
|
| }
|
| }
|
|
|
| void SensorManagerAndroid::StopFetchingDeviceOrientationAbsoluteData() {
|
| - if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| + if (ui_task_runner_->RunsTasksOnCurrentThread()) {
|
| StopFetchingOrientationAbsoluteDataOnUI();
|
| return;
|
| }
|
|
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| + ui_task_runner_->PostTask(
|
| + FROM_HERE,
|
| base::Bind(&SensorManagerAndroid::StopFetchingOrientationAbsoluteDataOnUI,
|
| base::Unretained(this)));
|
| }
|
|
|
| void SensorManagerAndroid::StartFetchingOrientationAbsoluteDataOnUI(
|
| DeviceOrientationHardwareBuffer* buffer) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
|
| DCHECK(buffer);
|
| if (is_shutdown_)
|
| return;
|
| @@ -525,7 +519,7 @@ void SensorManagerAndroid::StartFetchingOrientationAbsoluteDataOnUI(
|
| }
|
|
|
| void SensorManagerAndroid::StopFetchingOrientationAbsoluteDataOnUI() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
|
| if (is_shutdown_)
|
| return;
|
|
|
| @@ -541,8 +535,14 @@ void SensorManagerAndroid::StopFetchingOrientationAbsoluteDataOnUI() {
|
| }
|
| }
|
|
|
| -void SensorManagerAndroid::Shutdown() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| +void SensorManagerAndroid::InitOnUIThread() {
|
| + DCHECK(!ui_task_runner_);
|
| + ui_task_runner_ = base::ThreadTaskRunnerHandle::Get();
|
| + DCHECK(ui_task_runner_);
|
| +}
|
| +
|
| +void SensorManagerAndroid::ShutDownOnUIThread() {
|
| + DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
|
| is_shutdown_ = true;
|
| }
|
|
|
|
|