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

Side by Side Diff: content/browser/device_sensors/device_sensor_host.cc

Issue 2410123002: Remove content::BrowserThread knowledge from Device Sensors (Closed)
Patch Set: Rebase, avoid object creation on startup Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/device_sensors/device_sensor_host.h" 5 #include "content/browser/device_sensors/device_sensor_host.h"
6 6
7 #include "base/message_loop/message_loop.h"
8 #include "build/build_config.h"
7 #include "content/browser/device_sensors/device_sensor_service.h" 9 #include "content/browser/device_sensors/device_sensor_service.h"
8 #include "content/public/browser/browser_thread.h"
9 #include "mojo/public/cpp/bindings/strong_binding.h" 10 #include "mojo/public/cpp/bindings/strong_binding.h"
10 11
12 #if defined(OS_ANDROID)
13 #include "content/browser/device_sensors/sensor_manager_android.h"
14 #endif
15
11 namespace content { 16 namespace content {
12 17
13 template <typename MojoInterface, ConsumerType consumer_type> 18 template <typename MojoInterface, ConsumerType consumer_type>
14 void DeviceSensorHost<MojoInterface, consumer_type>::Create( 19 void DeviceSensorHost<MojoInterface, consumer_type>::Create(
20 scoped_refptr<base::SequencedTaskRunner> ui_task_runner,
15 mojo::InterfaceRequest<MojoInterface> request) { 21 mojo::InterfaceRequest<MojoInterface> request) {
16 mojo::MakeStrongBinding( 22 mojo::MakeStrongBinding(
17 base::WrapUnique(new DeviceSensorHost<MojoInterface, consumer_type>), 23 base::WrapUnique(
24 new DeviceSensorHost<MojoInterface, consumer_type>(ui_task_runner)),
18 std::move(request)); 25 std::move(request));
19 } 26 }
20 27
21 template <typename MojoInterface, ConsumerType consumer_type> 28 template <typename MojoInterface, ConsumerType consumer_type>
22 DeviceSensorHost<MojoInterface, consumer_type>::DeviceSensorHost() 29 DeviceSensorHost<MojoInterface, consumer_type>::DeviceSensorHost(
23 : is_started_(false) { 30 scoped_refptr<base::SequencedTaskRunner> ui_task_runner)
24 DCHECK_CURRENTLY_ON(BrowserThread::IO); 31 : is_started_(false), ui_task_runner_(ui_task_runner) {
32 DCHECK(base::MessageLoopForIO::IsCurrent());
25 } 33 }
26 34
27 template <typename MojoInterface, ConsumerType consumer_type> 35 template <typename MojoInterface, ConsumerType consumer_type>
28 DeviceSensorHost<MojoInterface, consumer_type>::~DeviceSensorHost() { 36 DeviceSensorHost<MojoInterface, consumer_type>::~DeviceSensorHost() {
29 DCHECK(thread_checker_.CalledOnValidThread()); 37 DCHECK(thread_checker_.CalledOnValidThread());
30 if (is_started_) 38 if (is_started_)
31 DeviceSensorService::GetInstance()->RemoveConsumer(consumer_type); 39 DeviceSensorService::GetInstance()->RemoveConsumer(consumer_type);
32 } 40 }
33 41
34 template <typename MojoInterface, ConsumerType consumer_type> 42 template <typename MojoInterface, ConsumerType consumer_type>
35 void DeviceSensorHost<MojoInterface, consumer_type>::DeviceSensorHost:: 43 void DeviceSensorHost<MojoInterface, consumer_type>::DeviceSensorHost::
36 StartPolling(const typename MojoInterface::StartPollingCallback& callback) { 44 StartPolling(const typename MojoInterface::StartPollingCallback& callback) {
37 DCHECK(thread_checker_.CalledOnValidThread()); 45 DCHECK(thread_checker_.CalledOnValidThread());
38 DCHECK(!is_started_); 46 DCHECK(!is_started_);
39 if (is_started_) 47 if (is_started_)
40 return; 48 return;
41 is_started_ = true; 49 is_started_ = true;
50 #if defined(OS_ANDROID)
51 SensorManagerAndroid::GetInstance()->SetUITaskRunner(ui_task_runner_);
52 #endif
42 DeviceSensorService::GetInstance()->AddConsumer(consumer_type); 53 DeviceSensorService::GetInstance()->AddConsumer(consumer_type);
43 callback.Run( 54 callback.Run(
44 DeviceSensorService::GetInstance()->GetSharedMemoryHandle(consumer_type)); 55 DeviceSensorService::GetInstance()->GetSharedMemoryHandle(consumer_type));
45 } 56 }
46 57
47 template <typename MojoInterface, ConsumerType consumer_type> 58 template <typename MojoInterface, ConsumerType consumer_type>
48 void DeviceSensorHost<MojoInterface, 59 void DeviceSensorHost<MojoInterface,
49 consumer_type>::DeviceSensorHost::StopPolling() { 60 consumer_type>::DeviceSensorHost::StopPolling() {
50 DCHECK(thread_checker_.CalledOnValidThread()); 61 DCHECK(thread_checker_.CalledOnValidThread());
51 DCHECK(is_started_); 62 DCHECK(is_started_);
52 if (!is_started_) 63 if (!is_started_)
53 return; 64 return;
54 is_started_ = false; 65 is_started_ = false;
55 DeviceSensorService::GetInstance()->RemoveConsumer(consumer_type); 66 DeviceSensorService::GetInstance()->RemoveConsumer(consumer_type);
56 } 67 }
57 68
58 template class DeviceSensorHost<device::mojom::LightSensor, 69 template class DeviceSensorHost<device::mojom::LightSensor,
59 CONSUMER_TYPE_LIGHT>; 70 CONSUMER_TYPE_LIGHT>;
60 template class DeviceSensorHost<device::mojom::MotionSensor, 71 template class DeviceSensorHost<device::mojom::MotionSensor,
61 CONSUMER_TYPE_MOTION>; 72 CONSUMER_TYPE_MOTION>;
62 template class DeviceSensorHost<device::mojom::OrientationSensor, 73 template class DeviceSensorHost<device::mojom::OrientationSensor,
63 CONSUMER_TYPE_ORIENTATION>; 74 CONSUMER_TYPE_ORIENTATION>;
64 template class DeviceSensorHost<device::mojom::OrientationAbsoluteSensor, 75 template class DeviceSensorHost<device::mojom::OrientationAbsoluteSensor,
65 CONSUMER_TYPE_ORIENTATION_ABSOLUTE>; 76 CONSUMER_TYPE_ORIENTATION_ABSOLUTE>;
66 77
67 } // namespace content 78 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/device_sensors/device_sensor_host.h ('k') | content/browser/device_sensors/device_sensor_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698