OLD | NEW |
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 "services/device/device_service.h" | 5 #include "services/device/device_service.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" |
10 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
11 #include "services/device/fingerprint/fingerprint.h" | 11 #include "services/device/fingerprint/fingerprint.h" |
12 #include "services/device/power_monitor/power_monitor_message_broadcaster.h" | 12 #include "services/device/power_monitor/power_monitor_message_broadcaster.h" |
13 #include "services/device/time_zone_monitor/time_zone_monitor.h" | 13 #include "services/device/time_zone_monitor/time_zone_monitor.h" |
14 #include "services/service_manager/public/cpp/connection.h" | 14 #include "services/service_manager/public/cpp/connection.h" |
15 #include "services/service_manager/public/cpp/interface_registry.h" | 15 #include "services/service_manager/public/cpp/interface_registry.h" |
| 16 #include "ui/gfx/native_widget_types.h" |
16 | 17 |
17 #if defined(OS_ANDROID) | 18 #if defined(OS_ANDROID) |
18 #include "services/device/android/register_jni.h" | 19 #include "services/device/android/register_jni.h" |
19 #endif | 20 #endif |
20 | 21 |
21 namespace device { | 22 namespace device { |
22 | 23 |
| 24 #if defined(OS_ANDROID) |
23 std::unique_ptr<service_manager::Service> CreateDeviceService( | 25 std::unique_ptr<service_manager::Service> CreateDeviceService( |
24 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner) { | 26 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner, |
25 #if defined(OS_ANDROID) | 27 WakeLockContextCallback wake_lock_context_callback) { |
26 if (!EnsureJniRegistered()) { | 28 if (!EnsureJniRegistered()) { |
27 DLOG(ERROR) << "Failed to register JNI for Device Service"; | 29 DLOG(ERROR) << "Failed to register JNI for Device Service"; |
28 return nullptr; | 30 return nullptr; |
29 } | 31 } |
| 32 |
| 33 return base::MakeUnique<DeviceService>(std::move(file_task_runner), |
| 34 wake_lock_context_callback); |
| 35 } |
| 36 #else |
| 37 std::unique_ptr<service_manager::Service> CreateDeviceService( |
| 38 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner) { |
| 39 return base::MakeUnique<DeviceService>(std::move(file_task_runner)); |
| 40 } |
30 #endif | 41 #endif |
31 | 42 |
32 return base::MakeUnique<DeviceService>(std::move(file_task_runner)); | 43 #if defined(OS_ANDROID) |
33 } | 44 DeviceService::DeviceService( |
34 | 45 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner, |
| 46 WakeLockContextCallback wake_lock_context_callback) |
| 47 : file_task_runner_(std::move(file_task_runner)), |
| 48 wake_lock_context_callback_(wake_lock_context_callback) {} |
| 49 #else |
35 DeviceService::DeviceService( | 50 DeviceService::DeviceService( |
36 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner) | 51 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner) |
37 : file_task_runner_(std::move(file_task_runner)) {} | 52 : file_task_runner_(std::move(file_task_runner)) {} |
| 53 #endif |
38 | 54 |
39 DeviceService::~DeviceService() {} | 55 DeviceService::~DeviceService() {} |
40 | 56 |
41 void DeviceService::OnStart() {} | 57 void DeviceService::OnStart() {} |
42 | 58 |
43 bool DeviceService::OnConnect(const service_manager::ServiceInfo& remote_info, | 59 bool DeviceService::OnConnect(const service_manager::ServiceInfo& remote_info, |
44 service_manager::InterfaceRegistry* registry) { | 60 service_manager::InterfaceRegistry* registry) { |
45 registry->AddInterface<mojom::Fingerprint>(this); | 61 registry->AddInterface<mojom::Fingerprint>(this); |
46 registry->AddInterface<mojom::PowerMonitor>(this); | 62 registry->AddInterface<mojom::PowerMonitor>(this); |
47 registry->AddInterface<mojom::TimeZoneMonitor>(this); | 63 registry->AddInterface<mojom::TimeZoneMonitor>(this); |
| 64 registry->AddInterface<mojom::WakeLockServiceContext>(this); |
48 return true; | 65 return true; |
49 } | 66 } |
50 | 67 |
51 void DeviceService::Create(const service_manager::Identity& remote_identity, | 68 void DeviceService::Create(const service_manager::Identity& remote_identity, |
52 mojom::FingerprintRequest request) { | 69 mojom::FingerprintRequest request) { |
53 Fingerprint::Create(std::move(request)); | 70 Fingerprint::Create(std::move(request)); |
54 } | 71 } |
55 | 72 |
56 void DeviceService::Create(const service_manager::Identity& remote_identity, | 73 void DeviceService::Create(const service_manager::Identity& remote_identity, |
57 mojom::PowerMonitorRequest request) { | 74 mojom::PowerMonitorRequest request) { |
58 if (!power_monitor_message_broadcaster_) { | 75 if (!power_monitor_message_broadcaster_) { |
59 power_monitor_message_broadcaster_ = | 76 power_monitor_message_broadcaster_ = |
60 base::MakeUnique<PowerMonitorMessageBroadcaster>(); | 77 base::MakeUnique<PowerMonitorMessageBroadcaster>(); |
61 } | 78 } |
62 power_monitor_message_broadcaster_->Bind(std::move(request)); | 79 power_monitor_message_broadcaster_->Bind(std::move(request)); |
63 } | 80 } |
64 | 81 |
65 void DeviceService::Create(const service_manager::Identity& remote_identity, | 82 void DeviceService::Create(const service_manager::Identity& remote_identity, |
66 mojom::TimeZoneMonitorRequest request) { | 83 mojom::TimeZoneMonitorRequest request) { |
67 if (!time_zone_monitor_) | 84 if (!time_zone_monitor_) |
68 time_zone_monitor_ = device::TimeZoneMonitor::Create(file_task_runner_); | 85 time_zone_monitor_ = device::TimeZoneMonitor::Create(file_task_runner_); |
69 time_zone_monitor_->Bind(std::move(request)); | 86 time_zone_monitor_->Bind(std::move(request)); |
70 } | 87 } |
71 | 88 |
| 89 void DeviceService::Create(const service_manager::Identity& remote_identity, |
| 90 mojom::WakeLockServiceContextRequest request) { |
| 91 new WakeLockServiceContext(std::move(request), file_task_runner_, |
| 92 wake_lock_context_callback_); |
| 93 } |
| 94 |
72 } // namespace device | 95 } // namespace device |
OLD | NEW |