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 DBusThreadManager. 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 DBusThreadManager.
52 class CHROMEOS_EXPORT DBusClientBundle {
54 typedef 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,
81 explicit DBusClientBundle(DBusClientTypeMask unstub_client_mask);
84 // Returns true if |client| is stubbed.
85 bool IsUsingStub(DBusClientType client);
87 // Returns true if any real DBusClient is used.
88 bool IsUsingAnyRealClient();
90 // Initialize proper runtime environment for its dbus clients.
91 void SetupDefaultEnvironment();
93 // Parses command line param values for dbus subsystem that should be
95 static DBusClientTypeMask ParseUnstubList(const std::string& unstub_list);
97 BluetoothAdapterClient* bluetooth_adapter_client() {
98 return bluetooth_adapter_client_.get();
101 BluetoothAgentManagerClient* bluetooth_agent_manager_client() {
102 return bluetooth_agent_manager_client_.get();
105 BluetoothDeviceClient* bluetooth_device_client() {
106 return bluetooth_device_client_.get();
109 BluetoothGattCharacteristicClient* bluetooth_gatt_characteristic_client() {
110 return bluetooth_gatt_characteristic_client_.get();
113 BluetoothGattDescriptorClient* bluetooth_gatt_descriptor_client() {
114 return bluetooth_gatt_descriptor_client_.get();
117 BluetoothGattManagerClient* bluetooth_gatt_manager_client() {
118 return bluetooth_gatt_manager_client_.get();
121 BluetoothGattServiceClient* bluetooth_gatt_service_client() {
122 return bluetooth_gatt_service_client_.get();
125 BluetoothInputClient* bluetooth_input_client() {
126 return bluetooth_input_client_.get();
129 BluetoothProfileManagerClient* bluetooth_profile_manager_client() {
130 return bluetooth_profile_manager_client_.get();
133 CrasAudioClient* cras_audio_client() {
134 return cras_audio_client_.get();
137 CrosDisksClient* cros_disks_client() {
138 return cros_disks_client_.get();
141 CryptohomeClient* cryptohome_client() {
142 return cryptohome_client_.get();
145 DebugDaemonClient* debug_daemon_client() {
146 return debug_daemon_client_.get();
149 EasyUnlockClient* easy_unlock_client() {
150 return easy_unlock_client_.get();
153 LorgnetteManagerClient* lorgnette_manager_client() {
154 return lorgnette_manager_client_.get();
157 ShillDeviceClient* shill_device_client() {
158 return shill_device_client_.get();
161 ShillIPConfigClient* shill_ipconfig_client() {
162 return shill_ipconfig_client_.get();
165 ShillManagerClient* shill_manager_client() {
166 return shill_manager_client_.get();
169 ShillServiceClient* shill_service_client() {
170 return shill_service_client_.get();
173 ShillProfileClient* shill_profile_client() {
174 return shill_profile_client_.get();
177 GsmSMSClient* gsm_sms_client() {
178 return gsm_sms_client_.get();
181 ImageBurnerClient* image_burner_client() {
182 return image_burner_client_.get();
185 IntrospectableClient* introspectable_client() {
186 return introspectable_client_.get();
189 ModemMessagingClient* modem_messaging_client() {
190 return modem_messaging_client_.get();
193 NfcManagerClient* nfc_manager_client() {
194 return nfc_manager_client_.get();
197 NfcAdapterClient* nfc_adapter_client() {
198 return nfc_adapter_client_.get();
201 NfcDeviceClient* nfc_device_client() {
202 return nfc_device_client_.get();
205 NfcTagClient* nfc_tag_client() {
206 return nfc_tag_client_.get();
209 NfcRecordClient* nfc_record_client() {
210 return nfc_record_client_.get();
213 PermissionBrokerClient* permission_broker_client() {
214 return permission_broker_client_.get();
217 SystemClockClient* system_clock_client() {
218 return system_clock_client_.get();
221 PowerManagerClient* power_manager_client() {
222 return power_manager_client_.get();
225 SessionManagerClient* session_manager_client() {
226 return session_manager_client_.get();
229 SMSClient* sms_client() {
230 return sms_client_.get();
233 UpdateEngineClient* update_engine_client() {
234 return update_engine_client_.get();
238 friend class DBusThreadManagerSetter;
240 // Bitmask that defines which dbus clients are not stubbed out. Bitmap flags
241 // are defined within DBusClientType enum.
242 DBusClientTypeMask unstub_client_mask_;
244 scoped_ptr<BluetoothAdapterClient> bluetooth_adapter_client_;
245 scoped_ptr<BluetoothAgentManagerClient> bluetooth_agent_manager_client_;
246 scoped_ptr<BluetoothDeviceClient> bluetooth_device_client_;
247 scoped_ptr<BluetoothGattCharacteristicClient>
248 bluetooth_gatt_characteristic_client_;
249 scoped_ptr<BluetoothGattDescriptorClient> bluetooth_gatt_descriptor_client_;
250 scoped_ptr<BluetoothGattManagerClient> bluetooth_gatt_manager_client_;
251 scoped_ptr<BluetoothGattServiceClient> bluetooth_gatt_service_client_;
252 scoped_ptr<BluetoothInputClient> bluetooth_input_client_;
253 scoped_ptr<BluetoothProfileManagerClient> bluetooth_profile_manager_client_;
254 scoped_ptr<CrasAudioClient> cras_audio_client_;
255 scoped_ptr<CrosDisksClient> cros_disks_client_;
256 scoped_ptr<CryptohomeClient> cryptohome_client_;
257 scoped_ptr<DebugDaemonClient> debug_daemon_client_;
258 scoped_ptr<EasyUnlockClient> easy_unlock_client_;
259 scoped_ptr<LorgnetteManagerClient> lorgnette_manager_client_;
260 scoped_ptr<ShillDeviceClient> shill_device_client_;
261 scoped_ptr<ShillIPConfigClient> shill_ipconfig_client_;
262 scoped_ptr<ShillManagerClient> shill_manager_client_;
263 scoped_ptr<ShillServiceClient> shill_service_client_;
264 scoped_ptr<ShillProfileClient> shill_profile_client_;
265 scoped_ptr<GsmSMSClient> gsm_sms_client_;
266 scoped_ptr<ImageBurnerClient> image_burner_client_;
267 scoped_ptr<IntrospectableClient> introspectable_client_;
268 scoped_ptr<ModemMessagingClient> modem_messaging_client_;
269 // The declaration order for NFC client objects is important. See
270 // DBusThreadManager::InitializeClients for the dependencies.
271 scoped_ptr<NfcManagerClient> nfc_manager_client_;
272 scoped_ptr<NfcAdapterClient> nfc_adapter_client_;
273 scoped_ptr<NfcDeviceClient> nfc_device_client_;
274 scoped_ptr<NfcTagClient> nfc_tag_client_;
275 scoped_ptr<NfcRecordClient> nfc_record_client_;
276 scoped_ptr<PermissionBrokerClient> permission_broker_client_;
277 scoped_ptr<SystemClockClient> system_clock_client_;
278 scoped_ptr<PowerManagerClient> power_manager_client_;
279 scoped_ptr<SessionManagerClient> session_manager_client_;
280 scoped_ptr<SMSClient> sms_client_;
281 scoped_ptr<UpdateEngineClient> update_engine_client_;
283 DISALLOW_COPY_AND_ASSIGN(DBusClientBundle);
286 } // namespace chromeos
288 #endif // CHROMEOS_DBUS_DBUS_CLIENT_BUNDLE_H_