15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROMEOS_DBUS_DBUS_THREAD_MANAGER_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROMEOS_DBUS_DBUS_THREAD_MANAGER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/callback.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/chromeos_export.h" 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chromeos/dbus/dbus_client_bundle.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Thread; 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace base 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace dbus { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Bus; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ObjectPath; 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace dbus 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Style Note: Clients are sorted by names. 267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class BluetoothAdapterClient; 277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class BluetoothAgentManagerClient; 287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class BluetoothDeviceClient; 29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass BluetoothGattCharacteristicClient; 30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass BluetoothGattDescriptorClient; 31e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdochclass BluetoothGattManagerClient; 32effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass BluetoothGattServiceClient; 337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class BluetoothInputClient; 347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class BluetoothProfileManagerClient; 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class CrasAudioClient; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CrosDisksClient; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CryptohomeClient; 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class DBusClient; 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass DBusThreadManager; 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass DBusThreadManagerSetter; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DebugDaemonClient; 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class EasyUnlockClient; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GsmSMSClient; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ImageBurnerClient; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class IntrospectableClient; 460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass LorgnetteManagerClient; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ModemMessagingClient; 481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class NfcAdapterClient; 490f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)class NfcDeviceClient; 501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class NfcManagerClient; 51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class NfcRecordClient; 520f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)class NfcTagClient; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PermissionBrokerClient; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PowerManagerClient; 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PowerPolicyController; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SessionManagerClient; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShillDeviceClient; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShillIPConfigClient; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShillManagerClient; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShillProfileClient; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShillServiceClient; 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class SMSClient; 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class SystemClockClient; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UpdateEngineClient; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DBusThreadManager manages the D-Bus thread, the thread dedicated to 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// handling asynchronous D-Bus operations. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This class also manages D-Bus connections and D-Bus clients, which 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// depend on the D-Bus thread to ensure the right order of shutdowns for 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the D-Bus thread, the D-Bus connections, and the D-Bus clients. 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// CALLBACKS IN D-BUS CLIENTS: 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// D-Bus clients managed by DBusThreadManager are guaranteed to be deleted 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// after the D-Bus thread so the clients don't need to worry if new 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// incoming messages arrive from the D-Bus thread during shutdown of the 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// clients. The UI message loop is not running during the shutdown hence 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the UI message loop won't post tasks to D-BUS clients during the 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// shutdown. However, to be extra cautious, clients should use 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// WeakPtrFactory when creating callbacks that run on UI thread. See 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// session_manager_client.cc for examples. 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CHROMEOS_EXPORT DBusThreadManager { 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets the global instance. Must be called before any calls to Get(). 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We explicitly initialize and shut down the global object, rather than 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // making it a Singleton, to ensure clean startup and shutdown. 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // This will initialize real or stub DBusClients depending on command-line 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // arguments and whether this process runs in a ChromeOS environment. 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void Initialize(); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Returns a DBusThreadManagerSetter instance that allows tests to 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // replace individual D-Bus clients with their own implementations. 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Also initializes the main DBusThreadManager for testing if necessary. 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static scoped_ptr<DBusThreadManagerSetter> GetSetterForTesting(); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if DBusThreadManager has been initialized. Call this to 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // avoid initializing + shutting down DBusThreadManager more than once. 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool IsInitialized(); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Destroys the global instance. 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void Shutdown(); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Gets the global instance. Initialize() must be called first. 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static DBusThreadManager* Get(); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Returns true if |client| is stubbed. 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool IsUsingStub(DBusClientBundle::DBusClientType client); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns various D-Bus bus instances, owned by DBusThreadManager. 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci dbus::Bus* GetSystemBus(); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // All returned objects are owned by DBusThreadManager. Do not cache these 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // pointers and use them after DBusThreadManager has been shut down. 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci BluetoothAdapterClient* GetBluetoothAdapterClient(); 1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci BluetoothAgentManagerClient* GetBluetoothAgentManagerClient(); 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci BluetoothDeviceClient* GetBluetoothDeviceClient(); 1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci BluetoothGattCharacteristicClient* GetBluetoothGattCharacteristicClient(); 1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci BluetoothGattDescriptorClient* GetBluetoothGattDescriptorClient(); 1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci BluetoothGattManagerClient* GetBluetoothGattManagerClient(); 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci BluetoothGattServiceClient* GetBluetoothGattServiceClient(); 1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci BluetoothInputClient* GetBluetoothInputClient(); 1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci BluetoothProfileManagerClient* GetBluetoothProfileManagerClient(); 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CrasAudioClient* GetCrasAudioClient(); 1261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CrosDisksClient* GetCrosDisksClient(); 1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CryptohomeClient* GetCryptohomeClient(); 1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DebugDaemonClient* GetDebugDaemonClient(); 1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockClient* GetEasyUnlockClient(); 1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GsmSMSClient* GetGsmSMSClient(); 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ImageBurnerClient* GetImageBurnerClient(); 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IntrospectableClient* GetIntrospectableClient(); 1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LorgnetteManagerClient* GetLorgnetteManagerClient(); 1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ModemMessagingClient* GetModemMessagingClient(); 1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NfcAdapterClient* GetNfcAdapterClient(); 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NfcDeviceClient* GetNfcDeviceClient(); 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NfcManagerClient* GetNfcManagerClient(); 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NfcRecordClient* GetNfcRecordClient(); 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NfcTagClient* GetNfcTagClient(); 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci PermissionBrokerClient* GetPermissionBrokerClient(); 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci PowerManagerClient* GetPowerManagerClient(); 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci PowerPolicyController* GetPowerPolicyController(); 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SessionManagerClient* GetSessionManagerClient(); 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ShillDeviceClient* GetShillDeviceClient(); 1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ShillIPConfigClient* GetShillIPConfigClient(); 1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ShillManagerClient* GetShillManagerClient(); 1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ShillServiceClient* GetShillServiceClient(); 1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ShillProfileClient* GetShillProfileClient(); 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SMSClient* GetSMSClient(); 1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SystemClockClient* GetSystemClockClient(); 1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UpdateEngineClient* GetUpdateEngineClient(); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 153f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private: 1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci friend class DBusThreadManagerSetter; 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Creates a new DBusThreadManager using the DBusClients set in 1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // |client_bundle|. 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci explicit DBusThreadManager(scoped_ptr<DBusClientBundle> client_bundle); 1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ~DBusThreadManager(); 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Creates a global instance of DBusThreadManager with the real 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // implementations for all clients that are listed in |unstub_client_mask| and 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // stub implementations for all clients that are not included. Cannot be 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // called more than once. 1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static void CreateGlobalInstance( 1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusClientBundle::DBusClientTypeMask unstub_client_mask); 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Initialize global thread manager instance with all real dbus client 1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // implementations. 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static void InitializeWithRealClients(); 1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Initialize global thread manager instance with stubbed-out dbus clients 1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // implementation. 1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static void InitializeWithStubs(); 1756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Initialize with stub implementations for only certain clients that are 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // not included in the comma-separated |unstub_clients| list. 1786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) static void InitializeWithPartialStub(const std::string& unstub_clients); 1796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Initializes all currently stored DBusClients with the system bus and 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // performs additional setup. 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void InitializeClients(); 183f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<base::Thread> dbus_thread_; 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_refptr<dbus::Bus> system_bus_; 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<DBusClientBundle> client_bundle_; 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<PowerPolicyController> power_policy_controller_; 1886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(DBusThreadManager); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass CHROMEOS_EXPORT DBusThreadManagerSetter { 1931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public: 1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ~DBusThreadManagerSetter(); 1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetBluetoothAdapterClient(scoped_ptr<BluetoothAdapterClient> client); 1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetBluetoothAgentManagerClient( 1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothAgentManagerClient> client); 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetBluetoothDeviceClient(scoped_ptr<BluetoothDeviceClient> client); 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetBluetoothGattCharacteristicClient( 2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothGattCharacteristicClient> client); 2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetBluetoothGattDescriptorClient( 2031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothGattDescriptorClient> client); 2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetBluetoothGattManagerClient( 2051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothGattManagerClient> client); 2061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetBluetoothGattServiceClient( 2071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothGattServiceClient> client); 2081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetBluetoothInputClient(scoped_ptr<BluetoothInputClient> client); 2091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetBluetoothProfileManagerClient( 2101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothProfileManagerClient> client); 2111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetCrasAudioClient(scoped_ptr<CrasAudioClient> client); 2121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetCrosDisksClient(scoped_ptr<CrosDisksClient> client); 2131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetCryptohomeClient(scoped_ptr<CryptohomeClient> client); 2141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetDebugDaemonClient(scoped_ptr<DebugDaemonClient> client); 2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetEasyUnlockClient(scoped_ptr<EasyUnlockClient> client); 2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetLorgnetteManagerClient(scoped_ptr<LorgnetteManagerClient> client); 2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetShillDeviceClient(scoped_ptr<ShillDeviceClient> client); 2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetShillIPConfigClient(scoped_ptr<ShillIPConfigClient> client); 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetShillManagerClient(scoped_ptr<ShillManagerClient> client); 2201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetShillServiceClient(scoped_ptr<ShillServiceClient> client); 2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetShillProfileClient(scoped_ptr<ShillProfileClient> client); 2221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetGsmSMSClient(scoped_ptr<GsmSMSClient> client); 2231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetImageBurnerClient(scoped_ptr<ImageBurnerClient> client); 2241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetIntrospectableClient(scoped_ptr<IntrospectableClient> client); 2251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetModemMessagingClient(scoped_ptr<ModemMessagingClient> client); 2261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetNfcAdapterClient(scoped_ptr<NfcAdapterClient> client); 2271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetNfcDeviceClient(scoped_ptr<NfcDeviceClient> client); 2281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetNfcManagerClient(scoped_ptr<NfcManagerClient> client); 2291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetNfcRecordClient(scoped_ptr<NfcRecordClient> client); 2301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetNfcTagClient(scoped_ptr<NfcTagClient> client); 2311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetPermissionBrokerClient(scoped_ptr<PermissionBrokerClient> client); 2321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetPowerManagerClient(scoped_ptr<PowerManagerClient> client); 2331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetSessionManagerClient(scoped_ptr<SessionManagerClient> client); 2341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetSMSClient(scoped_ptr<SMSClient> client); 2351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetSystemClockClient(scoped_ptr<SystemClockClient> client); 2361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetUpdateEngineClient(scoped_ptr<UpdateEngineClient> client); 2371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private: 2391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci friend class DBusThreadManager; 2401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManagerSetter(); 2421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DISALLOW_COPY_AND_ASSIGN(DBusThreadManagerSetter); 2441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 2451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROMEOS_DBUS_DBUS_THREAD_MANAGER_H_ 249