Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(717)

Unified Diff: chromeos/dbus/dbus_thread_manager.cc

Issue 49773003: ChromeOS: Remove MockDBusThreadManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed helper files. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chromeos/dbus/dbus_thread_manager.cc
diff --git a/chromeos/dbus/dbus_thread_manager.cc b/chromeos/dbus/dbus_thread_manager.cc
index 85dfeca4eda52803e6761c715456753d3f39a1bd..ab1c195b5998c1a26d532cb0873c7a976b2a0a44 100644
--- a/chromeos/dbus/dbus_thread_manager.cc
+++ b/chromeos/dbus/dbus_thread_manager.cc
@@ -19,9 +19,11 @@
#include "chromeos/dbus/cras_audio_client.h"
#include "chromeos/dbus/cros_disks_client.h"
#include "chromeos/dbus/cryptohome_client.h"
+#include "chromeos/dbus/dbus_client.h"
#include "chromeos/dbus/dbus_client_implementation_type.h"
#include "chromeos/dbus/dbus_thread_manager_observer.h"
#include "chromeos/dbus/debug_daemon_client.h"
+#include "chromeos/dbus/fake_dbus_thread_manager.h"
#include "chromeos/dbus/gsm_sms_client.h"
#include "chromeos/dbus/ibus/ibus_client.h"
#include "chromeos/dbus/image_burner_client.h"
@@ -42,6 +44,7 @@
#include "chromeos/dbus/shill_service_client.h"
#include "chromeos/dbus/shill_stub_helper.h"
#include "chromeos/dbus/sms_client.h"
+#include "chromeos/dbus/stub_dbus_thread_manager_helper.h"
#include "chromeos/dbus/system_clock_client.h"
#include "chromeos/dbus/update_engine_client.h"
#include "dbus/bus.h"
@@ -55,15 +58,7 @@ static bool g_dbus_thread_manager_set_for_testing = false;
// The DBusThreadManager implementation used in production.
class DBusThreadManagerImpl : public DBusThreadManager {
public:
- explicit DBusThreadManagerImpl(DBusClientImplementationType client_type) {
- DBusClientImplementationType client_type_override = client_type;
- // If --dbus-stub was requested, pass STUB to specific components;
- // Many components like login are not useful with a stub implementation.
- if (CommandLine::ForCurrentProcess()->HasSwitch(
- chromeos::switches::kDbusStub)) {
- client_type_override = STUB_DBUS_CLIENT_IMPLEMENTATION;
- }
-
+ explicit DBusThreadManagerImpl() {
// Create the D-Bus thread.
base::Thread::Options thread_options;
thread_options.message_loop_type = base::MessageLoop::TYPE_IO;
@@ -77,54 +72,7 @@ class DBusThreadManagerImpl : public DBusThreadManager {
system_bus_options.dbus_task_runner = dbus_thread_->message_loop_proxy();
system_bus_ = new dbus::Bus(system_bus_options);
- CreateDefaultClients(client_type, client_type_override);
- }
-
- // InitializeClients gets called after g_dbus_thread_manager is set.
- // NOTE: Clients that access other clients in their Init() must be
- // initialized in the correct order. This is the only place where Clients'
- // Init() should be called if DBusThreadManager is being used.
- void InitializeClients() {
- InitClient(bluetooth_adapter_client_.get());
- InitClient(bluetooth_agent_manager_client_.get());
- InitClient(bluetooth_device_client_.get());
- InitClient(bluetooth_input_client_.get());
- InitClient(bluetooth_profile_manager_client_.get());
- InitClient(cras_audio_client_.get());
- InitClient(cros_disks_client_.get());
- InitClient(cryptohome_client_.get());
- InitClient(debug_daemon_client_.get());
- InitClient(shill_manager_client_.get());
- InitClient(shill_device_client_.get());
- InitClient(shill_ipconfig_client_.get());
- InitClient(shill_service_client_.get());
- InitClient(shill_profile_client_.get());
- InitClient(gsm_sms_client_.get());
- InitClient(image_burner_client_.get());
- InitClient(introspectable_client_.get());
- InitClient(modem_messaging_client_.get());
- // Initialize the NFC clients in the correct order.
- InitClient(nfc_manager_client_.get());
- InitClient(nfc_adapter_client_.get());
- InitClient(nfc_device_client_.get());
- InitClient(nfc_tag_client_.get());
- InitClient(permission_broker_client_.get());
- InitClient(power_manager_client_.get());
- InitClient(session_manager_client_.get());
- InitClient(sms_client_.get());
- InitClient(system_clock_client_.get());
- InitClient(update_engine_client_.get());
-
- // PowerPolicyController is dependent on PowerManagerClient, so
- // initialize it after the main list of clients.
- power_policy_controller_.reset(
- new PowerPolicyController(this, power_manager_client_.get()));
-
- shill_stub_helper::SetupDefaultEnvironment();
-
- // This must be called after the list of clients so they've each had a
- // chance to register with their object managers.
- system_bus_->GetManagedObjects();
+ CreateDefaultClients();
}
virtual ~DBusThreadManagerImpl() {
@@ -139,26 +87,23 @@ class DBusThreadManagerImpl : public DBusThreadManager {
dbus_thread_->Stop();
}
- // DBusThreadManager override.
+ // DBusThreadManager overrides:
virtual void AddObserver(DBusThreadManagerObserver* observer) OVERRIDE {
DCHECK(observer);
observers_.AddObserver(observer);
}
- // DBusThreadManager override.
virtual void RemoveObserver(DBusThreadManagerObserver* observer) OVERRIDE {
DCHECK(observer);
observers_.RemoveObserver(observer);
}
- // DBusThreadManager override.
virtual void InitIBusBus(
const std::string &ibus_address,
const base::Closure& on_disconnected_callback) OVERRIDE {
ibus_client_.reset(IBusClient::Create());
}
- // DBusThreadManager overrides:
virtual dbus::Bus* GetSystemBus() OVERRIDE {
return system_bus_.get();
}
@@ -286,16 +231,20 @@ class DBusThreadManagerImpl : public DBusThreadManager {
}
private:
- // Initializes |client| with the |system_bus_|.
- void InitClient(DBusClient* client) {
- client->Init(system_bus_.get());
- }
-
// Constructs all clients -- stub or real implementation according to
// |client_type| and |client_type_override| -- and stores them in the
// respective *_client_ member variable.
- void CreateDefaultClients(DBusClientImplementationType client_type,
- DBusClientImplementationType client_type_override) {
+ void CreateDefaultClients() {
+ DBusClientImplementationType client_type = REAL_DBUS_CLIENT_IMPLEMENTATION;
+ DBusClientImplementationType client_type_override =
+ REAL_DBUS_CLIENT_IMPLEMENTATION;
+ // If --dbus-stub was requested, pass STUB to specific components;
+ // Many components like login are not useful with a stub implementation.
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ chromeos::switches::kDbusStub)) {
+ client_type_override = STUB_DBUS_CLIENT_IMPLEMENTATION;
+ }
+
bluetooth_adapter_client_.reset(
BluetoothAdapterClient::Create(client_type));
bluetooth_agent_manager_client_.reset(
@@ -338,6 +287,8 @@ class DBusThreadManagerImpl : public DBusThreadManager {
sms_client_.reset(SMSClient::Create(client_type));
system_clock_client_.reset(SystemClockClient::Create(client_type));
update_engine_client_.reset(UpdateEngineClient::Create(client_type));
+
+ power_policy_controller_.reset(new PowerPolicyController);
}
// Note: Keep this before other members so they can call AddObserver() in
@@ -377,8 +328,8 @@ class DBusThreadManagerImpl : public DBusThreadManager {
scoped_ptr<SMSClient> sms_client_;
scoped_ptr<UpdateEngineClient> update_engine_client_;
scoped_ptr<IBusClient> ibus_client_;
- scoped_ptr<PowerPolicyController> power_policy_controller_;
+ scoped_ptr<PowerPolicyController> power_policy_controller_;
};
// static
@@ -389,19 +340,16 @@ void DBusThreadManager::Initialize() {
// If we initialize DBusThreadManager twice we may also be shutting it down
// early; do not allow that.
CHECK(g_dbus_thread_manager == NULL);
+
// Determine whether we use stub or real client implementations.
- DBusThreadManagerImpl* dbus_thread_manager_impl;
if (base::SysInfo::IsRunningOnChromeOS()) {
- dbus_thread_manager_impl =
- new DBusThreadManagerImpl(REAL_DBUS_CLIENT_IMPLEMENTATION);
+ g_dbus_thread_manager = new DBusThreadManagerImpl;
+ InitializeClients();
VLOG(1) << "DBusThreadManager initialized for ChromeOS";
} else {
- dbus_thread_manager_impl =
- new DBusThreadManagerImpl(STUB_DBUS_CLIENT_IMPLEMENTATION);
- VLOG(1) << "DBusThreadManager initialized with Stub";
+ InitializeWithStub();
+ return;
}
- g_dbus_thread_manager = dbus_thread_manager_impl;
- dbus_thread_manager_impl->InitializeClients();
}
// static
@@ -413,6 +361,7 @@ void DBusThreadManager::InitializeForTesting(
CHECK(dbus_thread_manager);
g_dbus_thread_manager = dbus_thread_manager;
g_dbus_thread_manager_set_for_testing = true;
+ InitializeClients();
VLOG(1) << "DBusThreadManager initialized with test implementation";
}
@@ -421,10 +370,11 @@ void DBusThreadManager::InitializeWithStub() {
// If we initialize DBusThreadManager twice we may also be shutting it down
// early; do not allow that.
CHECK(g_dbus_thread_manager == NULL);
- DBusThreadManagerImpl* dbus_thread_manager_impl =
- new DBusThreadManagerImpl(STUB_DBUS_CLIENT_IMPLEMENTATION);
- g_dbus_thread_manager = dbus_thread_manager_impl;
- dbus_thread_manager_impl->InitializeClients();
+ FakeDBusThreadManager* fake_dbus_thread_manager = new FakeDBusThreadManager;
+ SetStubClients(fake_dbus_thread_manager);
+ g_dbus_thread_manager = fake_dbus_thread_manager;
+ InitializeClients();
+ shill_stub_helper::SetupDefaultEnvironment();
VLOG(1) << "DBusThreadManager initialized with stub implementation";
}
@@ -470,4 +420,55 @@ DBusThreadManager* DBusThreadManager::Get() {
return g_dbus_thread_manager;
}
+// static
+void DBusThreadManager::InitializeClients() {
+ InitClient(g_dbus_thread_manager->GetBluetoothAdapterClient());
+ InitClient(g_dbus_thread_manager->GetBluetoothAgentManagerClient());
+ InitClient(g_dbus_thread_manager->GetBluetoothDeviceClient());
+ InitClient(g_dbus_thread_manager->GetBluetoothInputClient());
+ InitClient(g_dbus_thread_manager->GetBluetoothProfileManagerClient());
+ InitClient(g_dbus_thread_manager->GetCrasAudioClient());
+ InitClient(g_dbus_thread_manager->GetCrosDisksClient());
+ InitClient(g_dbus_thread_manager->GetCryptohomeClient());
+ InitClient(g_dbus_thread_manager->GetDebugDaemonClient());
+ InitClient(g_dbus_thread_manager->GetGsmSMSClient());
+ InitClient(g_dbus_thread_manager->GetImageBurnerClient());
+ InitClient(g_dbus_thread_manager->GetIntrospectableClient());
+ InitClient(g_dbus_thread_manager->GetModemMessagingClient());
+ // Initialize the NFC clients in the correct order.
+ InitClient(g_dbus_thread_manager->GetNfcAdapterClient());
+ InitClient(g_dbus_thread_manager->GetNfcManagerClient());
+ InitClient(g_dbus_thread_manager->GetNfcDeviceClient());
+ InitClient(g_dbus_thread_manager->GetNfcTagClient());
+ InitClient(g_dbus_thread_manager->GetPermissionBrokerClient());
+ InitClient(g_dbus_thread_manager->GetPowerManagerClient());
+ InitClient(g_dbus_thread_manager->GetSessionManagerClient());
+ InitClient(g_dbus_thread_manager->GetShillDeviceClient());
+ InitClient(g_dbus_thread_manager->GetShillIPConfigClient());
+ InitClient(g_dbus_thread_manager->GetShillManagerClient());
+ InitClient(g_dbus_thread_manager->GetShillServiceClient());
+ InitClient(g_dbus_thread_manager->GetShillProfileClient());
+ InitClient(g_dbus_thread_manager->GetSMSClient());
+ InitClient(g_dbus_thread_manager->GetSystemClockClient());
+ InitClient(g_dbus_thread_manager->GetUpdateEngineClient());
+
+ // PowerPolicyController is dependent on PowerManagerClient, so
+ // initialize it after the main list of clients.
+ if (g_dbus_thread_manager->GetPowerPolicyController()) {
+ g_dbus_thread_manager->GetPowerPolicyController()->Init(
+ g_dbus_thread_manager);
+ }
+
+ // This must be called after the list of clients so they've each had a
+ // chance to register with their object g_dbus_thread_managers.
+ if (g_dbus_thread_manager->GetSystemBus())
+ g_dbus_thread_manager->GetSystemBus()->GetManagedObjects();
+}
+
+// static
+void DBusThreadManager::InitClient(DBusClient* client) {
+ if (client)
+ client->Init(g_dbus_thread_manager->GetSystemBus());
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698