1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROMEOS_DBUS_DBUS_CLIENT_BUNDLE_H_
6 #define CHROMEOS_DBUS_DBUS_CLIENT_BUNDLE_H_
8 #include "base/memory/scoped_ptr.h"
9 #include "chromeos/chromeos_export.h"
13 class BluetoothAdapterClient
;
14 class BluetoothAgentManagerClient
;
15 class BluetoothDeviceClient
;
16 class BluetoothGattCharacteristicClient
;
17 class BluetoothGattDescriptorClient
;
18 class BluetoothGattManagerClient
;
19 class BluetoothGattServiceClient
;
20 class BluetoothInputClient
;
21 class BluetoothProfileManagerClient
;
22 class CrasAudioClient
;
23 class CrosDisksClient
;
24 class CryptohomeClient
;
25 class DebugDaemonClient
;
26 class EasyUnlockClient
;
27 class LorgnetteManagerClient
;
28 class ShillDeviceClient
;
29 class ShillIPConfigClient
;
30 class ShillManagerClient
;
31 class ShillServiceClient
;
32 class ShillProfileClient
;
34 class ImageBurnerClient
;
35 class IntrospectableClient
;
36 class ModemMessagingClient
;
37 class NfcManagerClient
;
38 class NfcAdapterClient
;
39 class NfcDeviceClient
;
41 class NfcRecordClient
;
42 class PermissionBrokerClient
;
43 class SystemClockClient
;
44 class PowerManagerClient
;
45 class SessionManagerClient
;
47 class UpdateEngineClient
;
49 // The bundle of all D-Bus clients used in DBusThreadManagerImpl. The bundle
50 // is used to delete them at once in the right order before shutting down the
51 // system bus. See also the comment in the destructor of DBusThreadManagerImpl.
52 class CHROMEOS_EXPORT DBusClientBundle
{
54 typedef unsigned int DBusClientTypeMask
;
56 // TODO(zelidrag): We might want to collapse few more of these subsystems if
57 // their dbus interfaced correspond to the same daemon.
64 DEBUG_DAEMON
= 1 << 4,
66 LORGNETTE_MANAGER
= 1 << 6,
69 IMAGE_BURNER
= 1 << 9,
70 INTROSPECTABLE
= 1 << 10,
71 MODEM_MESSAGING
= 1 << 11,
73 PERMISSION_BROKER
= 1 << 13,
74 POWER_MANAGER
= 1 << 14,
75 SESSION_MANAGER
= 1 << 15,
77 SYSTEM_CLOCK
= 1 << 17,
78 UPDATE_ENGINE
= 1 << 18,
79 ALL_CLIENTS
= ~static_cast<DBusClientTypeMask
>(0),
85 // Initialize proper runtime environment for its dbus clients.
86 void SetupDefaultEnvironment();
88 // Parses command line param values for dbus subsystem that should be
90 static DBusClientTypeMask
ParseUnstubList(const std::string
& unstub_list
);
92 BluetoothAdapterClient
* bluetooth_adapter_client() {
93 return bluetooth_adapter_client_
.get();
96 BluetoothAgentManagerClient
* bluetooth_agent_manager_client() {
97 return bluetooth_agent_manager_client_
.get();
100 BluetoothDeviceClient
* bluetooth_device_client() {
101 return bluetooth_device_client_
.get();
104 BluetoothGattCharacteristicClient
* bluetooth_gatt_characteristic_client() {
105 return bluetooth_gatt_characteristic_client_
.get();
108 BluetoothGattDescriptorClient
* bluetooth_gatt_descriptor_client() {
109 return bluetooth_gatt_descriptor_client_
.get();
112 BluetoothGattManagerClient
* bluetooth_gatt_manager_client() {
113 return bluetooth_gatt_manager_client_
.get();
116 BluetoothGattServiceClient
* bluetooth_gatt_service_client() {
117 return bluetooth_gatt_service_client_
.get();
120 BluetoothInputClient
* bluetooth_input_client() {
121 return bluetooth_input_client_
.get();
124 BluetoothProfileManagerClient
* bluetooth_profile_manager_client() {
125 return bluetooth_profile_manager_client_
.get();
128 CrasAudioClient
* cras_audio_client() {
129 return cras_audio_client_
.get();
132 CrosDisksClient
* cros_disks_client() {
133 return cros_disks_client_
.get();
136 CryptohomeClient
* cryptohome_client() {
137 return cryptohome_client_
.get();
140 DebugDaemonClient
* debug_daemon_client() {
141 return debug_daemon_client_
.get();
144 EasyUnlockClient
* easy_unlock_client() {
145 return easy_unlock_client_
.get();
148 LorgnetteManagerClient
* lorgnette_manager_client() {
149 return lorgnette_manager_client_
.get();
152 ShillDeviceClient
* shill_device_client() {
153 return shill_device_client_
.get();
156 ShillIPConfigClient
* shill_ipconfig_client() {
157 return shill_ipconfig_client_
.get();
160 ShillManagerClient
* shill_manager_client() {
161 return shill_manager_client_
.get();
164 ShillServiceClient
* shill_service_client() {
165 return shill_service_client_
.get();
168 ShillProfileClient
* shill_profile_client() {
169 return shill_profile_client_
.get();
172 GsmSMSClient
* gsm_sms_client() {
173 return gsm_sms_client_
.get();
176 ImageBurnerClient
* image_burner_client() {
177 return image_burner_client_
.get();
180 IntrospectableClient
* introspectable_client() {
181 return introspectable_client_
.get();
184 ModemMessagingClient
* modem_messaging_client() {
185 return modem_messaging_client_
.get();
188 NfcManagerClient
* nfc_manager_client() {
189 return nfc_manager_client_
.get();
192 NfcAdapterClient
* nfc_adapter_client() {
193 return nfc_adapter_client_
.get();
196 NfcDeviceClient
* nfc_device_client() {
197 return nfc_device_client_
.get();
200 NfcTagClient
* nfc_tag_client() {
201 return nfc_tag_client_
.get();
204 NfcRecordClient
* nfc_record_client() {
205 return nfc_record_client_
.get();
208 PermissionBrokerClient
* permission_broker_client() {
209 return permission_broker_client_
.get();
212 SystemClockClient
* system_clock_client() {
213 return system_clock_client_
.get();
216 PowerManagerClient
* power_manager_client() {
217 return power_manager_client_
.get();
220 SessionManagerClient
* session_manager_client() {
221 return session_manager_client_
.get();
224 SMSClient
* sms_client() {
225 return sms_client_
.get();
228 UpdateEngineClient
* update_engine_client() {
229 return update_engine_client_
.get();
233 friend class DBusThreadManagerSetter
;
235 scoped_ptr
<BluetoothAdapterClient
> bluetooth_adapter_client_
;
236 scoped_ptr
<BluetoothAgentManagerClient
> bluetooth_agent_manager_client_
;
237 scoped_ptr
<BluetoothDeviceClient
> bluetooth_device_client_
;
238 scoped_ptr
<BluetoothGattCharacteristicClient
>
239 bluetooth_gatt_characteristic_client_
;
240 scoped_ptr
<BluetoothGattDescriptorClient
> bluetooth_gatt_descriptor_client_
;
241 scoped_ptr
<BluetoothGattManagerClient
> bluetooth_gatt_manager_client_
;
242 scoped_ptr
<BluetoothGattServiceClient
> bluetooth_gatt_service_client_
;
243 scoped_ptr
<BluetoothInputClient
> bluetooth_input_client_
;
244 scoped_ptr
<BluetoothProfileManagerClient
> bluetooth_profile_manager_client_
;
245 scoped_ptr
<CrasAudioClient
> cras_audio_client_
;
246 scoped_ptr
<CrosDisksClient
> cros_disks_client_
;
247 scoped_ptr
<CryptohomeClient
> cryptohome_client_
;
248 scoped_ptr
<DebugDaemonClient
> debug_daemon_client_
;
249 scoped_ptr
<EasyUnlockClient
> easy_unlock_client_
;
250 scoped_ptr
<LorgnetteManagerClient
> lorgnette_manager_client_
;
251 scoped_ptr
<ShillDeviceClient
> shill_device_client_
;
252 scoped_ptr
<ShillIPConfigClient
> shill_ipconfig_client_
;
253 scoped_ptr
<ShillManagerClient
> shill_manager_client_
;
254 scoped_ptr
<ShillServiceClient
> shill_service_client_
;
255 scoped_ptr
<ShillProfileClient
> shill_profile_client_
;
256 scoped_ptr
<GsmSMSClient
> gsm_sms_client_
;
257 scoped_ptr
<ImageBurnerClient
> image_burner_client_
;
258 scoped_ptr
<IntrospectableClient
> introspectable_client_
;
259 scoped_ptr
<ModemMessagingClient
> modem_messaging_client_
;
260 // The declaration order for NFC client objects is important. See
261 // DBusThreadManager::CreateDefaultClients for the dependencies.
262 scoped_ptr
<NfcManagerClient
> nfc_manager_client_
;
263 scoped_ptr
<NfcAdapterClient
> nfc_adapter_client_
;
264 scoped_ptr
<NfcDeviceClient
> nfc_device_client_
;
265 scoped_ptr
<NfcTagClient
> nfc_tag_client_
;
266 scoped_ptr
<NfcRecordClient
> nfc_record_client_
;
267 scoped_ptr
<PermissionBrokerClient
> permission_broker_client_
;
268 scoped_ptr
<SystemClockClient
> system_clock_client_
;
269 scoped_ptr
<PowerManagerClient
> power_manager_client_
;
270 scoped_ptr
<SessionManagerClient
> session_manager_client_
;
271 scoped_ptr
<SMSClient
> sms_client_
;
272 scoped_ptr
<UpdateEngineClient
> update_engine_client_
;
274 DISALLOW_COPY_AND_ASSIGN(DBusClientBundle
);
277 } // namespace chromeos
279 #endif // CHROMEOS_DBUS_DBUS_CLIENT_BUNDLE_H_