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)#include "chromeos/dbus/dbus_thread_manager.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h" 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/sys_info.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/threading/thread.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/chromeos_switches.h" 117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chromeos/dbus/bluetooth_adapter_client.h" 127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chromeos/dbus/bluetooth_agent_manager_client.h" 137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chromeos/dbus/bluetooth_device_client.h" 14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chromeos/dbus/bluetooth_gatt_characteristic_client.h" 15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chromeos/dbus/bluetooth_gatt_descriptor_client.h" 16e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "chromeos/dbus/bluetooth_gatt_manager_client.h" 17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chromeos/dbus/bluetooth_gatt_service_client.h" 187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chromeos/dbus/bluetooth_input_client.h" 197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chromeos/dbus/bluetooth_profile_manager_client.h" 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/dbus/cras_audio_client.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/cros_disks_client.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/cryptohome_client.h" 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chromeos/dbus/dbus_client.h" 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chromeos/dbus/dbus_client_bundle.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/debug_daemon_client.h" 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chromeos/dbus/easy_unlock_client.h" 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chromeos/dbus/gsm_sms_client.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/image_burner_client.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/introspectable_client.h" 300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chromeos/dbus/lorgnette_manager_client.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/modem_messaging_client.h" 321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chromeos/dbus/nfc_adapter_client.h" 330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chromeos/dbus/nfc_device_client.h" 341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chromeos/dbus/nfc_manager_client.h" 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chromeos/dbus/nfc_record_client.h" 360f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chromeos/dbus/nfc_tag_client.h" 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/permission_broker_client.h" 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/power_manager_client.h" 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chromeos/dbus/power_policy_controller.h" 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/session_manager_client.h" 4168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chromeos/dbus/shill_device_client.h" 4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chromeos/dbus/shill_ipconfig_client.h" 4368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chromeos/dbus/shill_manager_client.h" 4468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chromeos/dbus/shill_profile_client.h" 4568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chromeos/dbus/shill_service_client.h" 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/sms_client.h" 4768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chromeos/dbus/system_clock_client.h" 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/update_engine_client.h" 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "dbus/bus.h" 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "dbus/dbus_statistics.h" 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static DBusThreadManager* g_dbus_thread_manager = NULL; 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic bool g_using_dbus_thread_manager_for_testing = false; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::DBusThreadManager(scoped_ptr<DBusClientBundle> client_bundle) 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : client_bundle_(client_bundle.Pass()) { 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci dbus::statistics::Initialize(); 60a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (client_bundle_->IsUsingAnyRealClient()) { 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // At least one real DBusClient is used. 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create the D-Bus thread. 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Thread::Options thread_options; 65868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) thread_options.message_loop_type = base::MessageLoop::TYPE_IO; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus_thread_.reset(new base::Thread("D-Bus thread")); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus_thread_->StartWithOptions(thread_options); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create the connection to the system bus. 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::Bus::Options system_bus_options; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) system_bus_options.bus_type = dbus::Bus::SYSTEM; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) system_bus_options.connection_type = dbus::Bus::PRIVATE; 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) system_bus_options.dbus_task_runner = dbus_thread_->message_loop_proxy(); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) system_bus_ = new dbus::Bus(system_bus_options); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // TODO(crbug.com/345586): Move PowerPolicyController out of 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // DBusThreadManager. 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci power_policy_controller_.reset(new PowerPolicyController); 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 81a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::~DBusThreadManager() { 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // PowerPolicyController's destructor depends on PowerManagerClient. 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci power_policy_controller_.reset(); 85a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Delete all D-Bus clients before shutting down the system bus. 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client_bundle_.reset(); 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Shut down the bus. During the browser shutdown, it's ok to shut down 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // the bus synchronously. 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (system_bus_.get()) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) system_bus_->ShutdownOnDBusThreadAndBlock(); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Stop the D-Bus thread. 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (dbus_thread_) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus_thread_->Stop(); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci dbus::statistics::Shutdown(); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!g_dbus_thread_manager) 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return; // Called form Shutdown() or local test instance. 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // There should never be both a global instance and a local instance. 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CHECK(this == g_dbus_thread_manager); 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (g_using_dbus_thread_manager_for_testing) { 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci g_dbus_thread_manager = NULL; 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci g_using_dbus_thread_manager_for_testing = false; 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci VLOG(1) << "DBusThreadManager destroyed"; 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LOG(FATAL) << "~DBusThreadManager() called outside of Shutdown()"; 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccidbus::Bus* DBusThreadManager::GetSystemBus() { 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return system_bus_.get(); 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciBluetoothAdapterClient* DBusThreadManager::GetBluetoothAdapterClient() { 1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->bluetooth_adapter_client(); 1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciBluetoothAgentManagerClient* 1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::GetBluetoothAgentManagerClient() { 1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->bluetooth_agent_manager_client(); 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 126effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciBluetoothDeviceClient* DBusThreadManager::GetBluetoothDeviceClient() { 1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->bluetooth_device_client(); 1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 130effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciBluetoothGattCharacteristicClient* 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::GetBluetoothGattCharacteristicClient() { 1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->bluetooth_gatt_characteristic_client(); 1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 135e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciBluetoothGattDescriptorClient* 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::GetBluetoothGattDescriptorClient() { 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->bluetooth_gatt_descriptor_client(); 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 140effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciBluetoothGattManagerClient* 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::GetBluetoothGattManagerClient() { 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->bluetooth_gatt_manager_client(); 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciBluetoothGattServiceClient* 1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::GetBluetoothGattServiceClient() { 1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->bluetooth_gatt_service_client(); 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciBluetoothInputClient* DBusThreadManager::GetBluetoothInputClient() { 1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->bluetooth_input_client(); 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciBluetoothProfileManagerClient* 1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::GetBluetoothProfileManagerClient() { 1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->bluetooth_profile_manager_client(); 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciCrasAudioClient* DBusThreadManager::GetCrasAudioClient() { 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->cras_audio_client(); 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciCrosDisksClient* DBusThreadManager::GetCrosDisksClient() { 1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->cros_disks_client(); 1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciCryptohomeClient* DBusThreadManager::GetCryptohomeClient() { 1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->cryptohome_client(); 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1710529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDebugDaemonClient* DBusThreadManager::GetDebugDaemonClient() { 1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->debug_daemon_client(); 1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEasyUnlockClient* DBusThreadManager::GetEasyUnlockClient() { 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->easy_unlock_client(); 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciLorgnetteManagerClient* 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::GetLorgnetteManagerClient() { 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->lorgnette_manager_client(); 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciShillDeviceClient* 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::GetShillDeviceClient() { 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->shill_device_client(); 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciShillIPConfigClient* 1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::GetShillIPConfigClient() { 1911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->shill_ipconfig_client(); 1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciShillManagerClient* 1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::GetShillManagerClient() { 1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->shill_manager_client(); 1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 198eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciShillServiceClient* 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::GetShillServiceClient() { 2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->shill_service_client(); 2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciShillProfileClient* 2051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManager::GetShillProfileClient() { 2061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->shill_profile_client(); 2071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciGsmSMSClient* DBusThreadManager::GetGsmSMSClient() { 2101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->gsm_sms_client(); 2111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciImageBurnerClient* DBusThreadManager::GetImageBurnerClient() { 2141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->image_burner_client(); 2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIntrospectableClient* DBusThreadManager::GetIntrospectableClient() { 2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->introspectable_client(); 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciModemMessagingClient* DBusThreadManager::GetModemMessagingClient() { 2221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->modem_messaging_client(); 2231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciNfcAdapterClient* DBusThreadManager::GetNfcAdapterClient() { 2261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->nfc_adapter_client(); 2271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 2291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciNfcDeviceClient* DBusThreadManager::GetNfcDeviceClient() { 2301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->nfc_device_client(); 2311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 232f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciNfcManagerClient* DBusThreadManager::GetNfcManagerClient() { 2341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->nfc_manager_client(); 2351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2360f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciNfcRecordClient* DBusThreadManager::GetNfcRecordClient() { 2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->nfc_record_client(); 2391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciNfcTagClient* DBusThreadManager::GetNfcTagClient() { 2421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->nfc_tag_client(); 2431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciPermissionBrokerClient* DBusThreadManager::GetPermissionBrokerClient() { 2461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->permission_broker_client(); 2471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciPowerManagerClient* DBusThreadManager::GetPowerManagerClient() { 2501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->power_manager_client(); 2511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciSessionManagerClient* DBusThreadManager::GetSessionManagerClient() { 2541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->session_manager_client(); 2551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciSMSClient* DBusThreadManager::GetSMSClient() { 2581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->sms_client(); 2591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 260a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 2611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciSystemClockClient* DBusThreadManager::GetSystemClockClient() { 2621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->system_clock_client(); 2631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciUpdateEngineClient* DBusThreadManager::GetUpdateEngineClient() { 2661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->update_engine_client(); 2671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciPowerPolicyController* DBusThreadManager::GetPowerPolicyController() { 2701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return power_policy_controller_.get(); 2711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManager::InitializeClients() { 2741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetBluetoothAdapterClient()->Init(GetSystemBus()); 2751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetBluetoothAgentManagerClient()->Init(GetSystemBus()); 2761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetBluetoothDeviceClient()->Init(GetSystemBus()); 2771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetBluetoothGattCharacteristicClient()->Init(GetSystemBus()); 2781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetBluetoothGattDescriptorClient()->Init(GetSystemBus()); 2791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetBluetoothGattManagerClient()->Init(GetSystemBus()); 2801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetBluetoothGattServiceClient()->Init(GetSystemBus()); 2811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetBluetoothInputClient()->Init(GetSystemBus()); 2821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetBluetoothProfileManagerClient()->Init(GetSystemBus()); 2831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetCrasAudioClient()->Init(GetSystemBus()); 2841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetCrosDisksClient()->Init(GetSystemBus()); 2851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetCryptohomeClient()->Init(GetSystemBus()); 2861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetDebugDaemonClient()->Init(GetSystemBus()); 2871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetEasyUnlockClient()->Init(GetSystemBus()); 2881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetGsmSMSClient()->Init(GetSystemBus()); 2891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetImageBurnerClient()->Init(GetSystemBus()); 2901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetIntrospectableClient()->Init(GetSystemBus()); 2911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetLorgnetteManagerClient()->Init(GetSystemBus()); 2921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetModemMessagingClient()->Init(GetSystemBus()); 2931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetPermissionBrokerClient()->Init(GetSystemBus()); 2941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetPowerManagerClient()->Init(GetSystemBus()); 2951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetSessionManagerClient()->Init(GetSystemBus()); 2961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetShillDeviceClient()->Init(GetSystemBus()); 2971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetShillIPConfigClient()->Init(GetSystemBus()); 2981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetShillManagerClient()->Init(GetSystemBus()); 2991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetShillServiceClient()->Init(GetSystemBus()); 3001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetShillProfileClient()->Init(GetSystemBus()); 3011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetSMSClient()->Init(GetSystemBus()); 3021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetSystemClockClient()->Init(GetSystemBus()); 3031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetUpdateEngineClient()->Init(GetSystemBus()); 3041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Initialize the NFC clients in the correct order. The order of 3061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // initialization matters due to dependencies that exist between the 3071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // client objects. 3081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetNfcManagerClient()->Init(GetSystemBus()); 3091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetNfcAdapterClient()->Init(GetSystemBus()); 3101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetNfcDeviceClient()->Init(GetSystemBus()); 3111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetNfcTagClient()->Init(GetSystemBus()); 3121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetNfcRecordClient()->Init(GetSystemBus()); 3131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // PowerPolicyController is dependent on PowerManagerClient, so 3151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // initialize it after the main list of clients. 3161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (GetPowerPolicyController()) 3171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetPowerPolicyController()->Init(this); 3181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // This must be called after the list of clients so they've each had a 3201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // chance to register with their object g_dbus_thread_managers. 3211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (GetSystemBus()) 3221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetSystemBus()->GetManagedObjects(); 3231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client_bundle_->SetupDefaultEnvironment(); 3251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool DBusThreadManager::IsUsingStub(DBusClientBundle::DBusClientType client) { 3281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_bundle_->IsUsingStub(client); 3296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 3306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 3316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// static 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DBusThreadManager::Initialize() { 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If we initialize DBusThreadManager twice we may also be shutting it down 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // early; do not allow that. 3351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (g_using_dbus_thread_manager_for_testing) 336a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return; 337cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 3381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CHECK(!g_dbus_thread_manager); 3396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bool use_dbus_stub = !base::SysInfo::IsRunningOnChromeOS() || 340cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) CommandLine::ForCurrentProcess()->HasSwitch( 3416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) chromeos::switches::kDbusStub); 3426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bool force_unstub_clients = CommandLine::ForCurrentProcess()->HasSwitch( 3436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) chromeos::switches::kDbusUnstubClients); 3446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Determine whether we use stub or real client implementations. 3456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (force_unstub_clients) { 3466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) InitializeWithPartialStub( 3476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 3486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) chromeos::switches::kDbusUnstubClients)); 3496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } else if (use_dbus_stub) { 3501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci InitializeWithStubs(); 351cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } else { 3521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci InitializeWithRealClients(); 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 3571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciscoped_ptr<DBusThreadManagerSetter> DBusThreadManager::GetSetterForTesting() { 3581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!g_using_dbus_thread_manager_for_testing) { 3591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci g_using_dbus_thread_manager_for_testing = true; 3601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci InitializeWithStubs(); 3611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 3621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return make_scoped_ptr(new DBusThreadManagerSetter()); 364a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 365a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 366a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// static 3671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManager::CreateGlobalInstance( 3681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusClientBundle::DBusClientTypeMask unstub_client_mask) { 3691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CHECK(!g_dbus_thread_manager); 3701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci g_dbus_thread_manager = new DBusThreadManager( 3711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci make_scoped_ptr(new DBusClientBundle(unstub_client_mask))); 3721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci g_dbus_thread_manager->InitializeClients(); 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 3761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManager::InitializeWithRealClients() { 3771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CreateGlobalInstance(~static_cast<DBusClientBundle::DBusClientTypeMask>(0)); 3786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) VLOG(1) << "DBusThreadManager initialized for Chrome OS"; 3796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 3806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 3816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// static 3821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManager::InitializeWithStubs() { 3831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CreateGlobalInstance(0 /* unstub_client_mask */); 3841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci VLOG(1) << "DBusThreadManager created for testing"; 3851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 3861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// static 3886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)void DBusThreadManager::InitializeWithPartialStub( 3896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const std::string& unstub_clients) { 3901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusClientBundle::DBusClientTypeMask unstub_client_mask = 3911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusClientBundle::ParseUnstubList(unstub_clients); 3926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // We should have something parsed correctly here. 3931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LOG_IF(FATAL, unstub_client_mask == 0) 3941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << "Switch values for --" << chromeos::switches::kDbusUnstubClients 3951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << " cannot be parsed: " << unstub_clients; 3966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) VLOG(1) << "DBusThreadManager initialized for mixed runtime environment"; 3971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CreateGlobalInstance(unstub_client_mask); 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool DBusThreadManager::IsInitialized() { 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return g_dbus_thread_manager != NULL; 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DBusThreadManager::Shutdown() { 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ensure that we only shutdown DBusThreadManager once. 4081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CHECK(g_dbus_thread_manager); 409c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DBusThreadManager* dbus_thread_manager = g_dbus_thread_manager; 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) g_dbus_thread_manager = NULL; 4111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci g_using_dbus_thread_manager_for_testing = false; 412c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) delete dbus_thread_manager; 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VLOG(1) << "DBusThreadManager Shutdown completed"; 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DBusThreadManager* DBusThreadManager::Get() { 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK(g_dbus_thread_manager) 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "DBusThreadManager::Get() called before Initialize()"; 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return g_dbus_thread_manager; 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManagerSetter::DBusThreadManagerSetter() { 4241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 425f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 4261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDBusThreadManagerSetter::~DBusThreadManagerSetter() { 4271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 428a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 4291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetBluetoothAdapterClient( 4301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothAdapterClient> client) { 4311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->bluetooth_adapter_client_ = 4321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 4331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 434f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 4351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetBluetoothAgentManagerClient( 4361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothAgentManagerClient> client) { 4371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->bluetooth_agent_manager_client_ = 4381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 439f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 440f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 4411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetBluetoothDeviceClient( 4421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothDeviceClient> client) { 4431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->bluetooth_device_client_ = 4441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 4451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetBluetoothGattCharacteristicClient( 4481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothGattCharacteristicClient> client) { 4491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_-> 4501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bluetooth_gatt_characteristic_client_ = client.Pass(); 4511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetBluetoothGattDescriptorClient( 4541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothGattDescriptorClient> client) { 4551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->bluetooth_gatt_descriptor_client_ = 4561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 4571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetBluetoothGattManagerClient( 4601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothGattManagerClient> client) { 4611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->bluetooth_gatt_manager_client_ = 4621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 4631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetBluetoothGattServiceClient( 4661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothGattServiceClient> client) { 4671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->bluetooth_gatt_service_client_ = 4681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 4691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetBluetoothInputClient( 4721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothInputClient> client) { 4731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->bluetooth_input_client_ = 4741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 4751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetBluetoothProfileManagerClient( 4781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<BluetoothProfileManagerClient> client) { 4791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->bluetooth_profile_manager_client_ = 4801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 4811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetCrasAudioClient( 4841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<CrasAudioClient> client) { 4851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->cras_audio_client_ = client.Pass(); 4861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetCrosDisksClient( 4891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<CrosDisksClient> client) { 4901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->cros_disks_client_ = client.Pass(); 4911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetCryptohomeClient( 4941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<CryptohomeClient> client) { 4951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->cryptohome_client_ = client.Pass(); 4961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetDebugDaemonClient( 4991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<DebugDaemonClient> client) { 5001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->debug_daemon_client_ = 5011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 5021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetEasyUnlockClient( 5051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<EasyUnlockClient> client) { 5061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->easy_unlock_client_ = client.Pass(); 5071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetLorgnetteManagerClient( 5101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<LorgnetteManagerClient> client) { 5111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->lorgnette_manager_client_ = 5121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 5131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetShillDeviceClient( 5161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<ShillDeviceClient> client) { 5171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->shill_device_client_ = 5181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 5191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetShillIPConfigClient( 5221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<ShillIPConfigClient> client) { 5231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->shill_ipconfig_client_ = 5241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 5251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetShillManagerClient( 5281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<ShillManagerClient> client) { 5291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->shill_manager_client_ = 5301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 5311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetShillServiceClient( 5341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<ShillServiceClient> client) { 5351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->shill_service_client_ = 5361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 5371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetShillProfileClient( 5401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<ShillProfileClient> client) { 5411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->shill_profile_client_ = 5421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 5431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetGsmSMSClient( 5461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<GsmSMSClient> client) { 5471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->gsm_sms_client_ = client.Pass(); 5481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetImageBurnerClient( 5511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<ImageBurnerClient> client) { 5521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->image_burner_client_ = 5531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 5541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetIntrospectableClient( 5571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<IntrospectableClient> client) { 5581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->introspectable_client_ = 5591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 5601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetModemMessagingClient( 5631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<ModemMessagingClient> client) { 5641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->modem_messaging_client_ = 5651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 5661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetNfcAdapterClient( 5691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<NfcAdapterClient> client) { 5701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->nfc_adapter_client_ = client.Pass(); 5711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetNfcDeviceClient( 5741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<NfcDeviceClient> client) { 5751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->nfc_device_client_ = client.Pass(); 5761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetNfcManagerClient( 5791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<NfcManagerClient> client) { 5801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->nfc_manager_client_ = client.Pass(); 5811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetNfcRecordClient( 5841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<NfcRecordClient> client) { 5851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->nfc_record_client_ = client.Pass(); 5861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetNfcTagClient( 5891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<NfcTagClient> client) { 5901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->nfc_tag_client_ = client.Pass(); 5911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetPermissionBrokerClient( 5941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<PermissionBrokerClient> client) { 5951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->permission_broker_client_ = 5961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 5971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetPowerManagerClient( 6001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<PowerManagerClient> client) { 6011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->power_policy_controller_.reset(); 6021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->power_manager_client_ = 6031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 6041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->power_policy_controller_.reset( 6051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci new PowerPolicyController); 6061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->power_policy_controller_->Init( 6071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()); 6081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetSessionManagerClient( 6111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<SessionManagerClient> client) { 6121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->session_manager_client_ = 6131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 6141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetSMSClient(scoped_ptr<SMSClient> client) { 6171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->sms_client_ = client.Pass(); 6181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetSystemClockClient( 6211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<SystemClockClient> client) { 6221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->system_clock_client_ = 6231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 6241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DBusThreadManagerSetter::SetUpdateEngineClient( 6271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<UpdateEngineClient> client) { 6281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DBusThreadManager::Get()->client_bundle_->update_engine_client_ = 6291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client.Pass(); 630f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 631f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 633