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

Unified Diff: chromeos/dbus/dbus_thread_manager.h

Issue 477663004: Merged FakedDBusThreadManager with DBusThreadManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months 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.h
diff --git a/chromeos/dbus/dbus_thread_manager.h b/chromeos/dbus/dbus_thread_manager.h
index 053763c984d0854b2b56150db1755e7d0dac341d..ed3012c7de6416fa38690f9adeea7b5d146db076 100644
--- a/chromeos/dbus/dbus_thread_manager.h
+++ b/chromeos/dbus/dbus_thread_manager.h
@@ -36,6 +36,8 @@ class CrasAudioClient;
class CrosDisksClient;
class CryptohomeClient;
class DBusClient;
+class DBusThreadManager;
+class DBusThreadManagerTestHelper;
class DebugDaemonClient;
class EasyUnlockClient;
class GsmSMSClient;
@@ -86,24 +88,10 @@ class CHROMEOS_EXPORT DBusThreadManager {
// making it a Singleton, to ensure clean startup and shutdown.
static void Initialize();
- // Sets an alternative DBusThreadManager such as MockDBusThreadManager
- // to be used in |Initialize()| for testing. Tests that call
- // DBusThreadManager::Initialize() (such as browser_tests and
- // interactive_ui_tests) should use this instead of calling
- // |InitiailzeForTesting|. The injected object will be owned by the
- // internal pointer and deleted by Shutdown().
- static void SetInstanceForTesting(DBusThreadManager* dbus_thread_manager);
-
- // Similar to Initialize(), but injects an alternative
- // DBusThreadManager using SetInstanceForTest first. The injected
- // object will be owned by the internal pointer and deleted by
- // Shutdown(). Does not create any Fake client implementations.
- static void InitializeForTesting(DBusThreadManager* dbus_thread_manager);
-
- // Initialize with stub implementations for tests, creating a complete set
- // of fake/stub client implementations. Also initializes a default set of
- // fake Shill devices and services, customizable with switches::kShillStub.
- static void InitializeWithStub();
+ // Returns DBusThreadManagerTestHelper instance that allows tests to
+ // replace individual dbus clients with their own implementations.
+ static scoped_ptr<DBusThreadManagerTestHelper>
+ GetDBusThreadManagerTestHelper();
// Returns true if DBusThreadManager has been initialized. Call this to
// avoid initializing + shutting down DBusThreadManager more than once.
@@ -119,76 +107,142 @@ class CHROMEOS_EXPORT DBusThreadManager {
static bool IsUsingStub(DBusClientBundle::DBusClientType client);
// Returns various D-Bus bus instances, owned by DBusThreadManager.
- virtual dbus::Bus* GetSystemBus() = 0;
+ dbus::Bus* GetSystemBus();
// All returned objects are owned by DBusThreadManager. Do not cache these
// pointers and use them after DBusThreadManager has been shut down.
- virtual BluetoothAdapterClient* GetBluetoothAdapterClient() = 0;
- virtual BluetoothAgentManagerClient* GetBluetoothAgentManagerClient() = 0;
- virtual BluetoothDeviceClient* GetBluetoothDeviceClient() = 0;
- virtual BluetoothGattCharacteristicClient*
- GetBluetoothGattCharacteristicClient() = 0;
- virtual BluetoothGattDescriptorClient* GetBluetoothGattDescriptorClient() = 0;
- virtual BluetoothGattManagerClient* GetBluetoothGattManagerClient() = 0;
- virtual BluetoothGattServiceClient* GetBluetoothGattServiceClient() = 0;
- virtual BluetoothInputClient* GetBluetoothInputClient() = 0;
- virtual BluetoothProfileManagerClient* GetBluetoothProfileManagerClient() = 0;
- virtual CrasAudioClient* GetCrasAudioClient() = 0;
- virtual CrosDisksClient* GetCrosDisksClient() = 0;
- virtual CryptohomeClient* GetCryptohomeClient() = 0;
- virtual DebugDaemonClient* GetDebugDaemonClient() = 0;
- virtual EasyUnlockClient* GetEasyUnlockClient() = 0;
- virtual GsmSMSClient* GetGsmSMSClient() = 0;
- virtual ImageBurnerClient* GetImageBurnerClient() = 0;
- virtual IntrospectableClient* GetIntrospectableClient() = 0;
- virtual LorgnetteManagerClient* GetLorgnetteManagerClient() = 0;
- virtual ModemMessagingClient* GetModemMessagingClient() = 0;
- virtual NfcAdapterClient* GetNfcAdapterClient() = 0;
- virtual NfcDeviceClient* GetNfcDeviceClient() = 0;
- virtual NfcManagerClient* GetNfcManagerClient() = 0;
- virtual NfcRecordClient* GetNfcRecordClient() = 0;
- virtual NfcTagClient* GetNfcTagClient() = 0;
- virtual PermissionBrokerClient* GetPermissionBrokerClient() = 0;
- virtual PowerManagerClient* GetPowerManagerClient() = 0;
- virtual PowerPolicyController* GetPowerPolicyController() = 0;
- virtual SessionManagerClient* GetSessionManagerClient() = 0;
- virtual ShillDeviceClient* GetShillDeviceClient() = 0;
- virtual ShillIPConfigClient* GetShillIPConfigClient() = 0;
- virtual ShillManagerClient* GetShillManagerClient() = 0;
- virtual ShillServiceClient* GetShillServiceClient() = 0;
- virtual ShillProfileClient* GetShillProfileClient() = 0;
- virtual SMSClient* GetSMSClient() = 0;
- virtual SystemClockClient* GetSystemClockClient() = 0;
- virtual UpdateEngineClient* GetUpdateEngineClient() = 0;
-
- virtual ~DBusThreadManager();
-
- protected:
- DBusThreadManager();
+ BluetoothAdapterClient* GetBluetoothAdapterClient();
+ BluetoothAgentManagerClient* GetBluetoothAgentManagerClient();
+ BluetoothDeviceClient* GetBluetoothDeviceClient();
+ BluetoothGattCharacteristicClient* GetBluetoothGattCharacteristicClient();
+ BluetoothGattDescriptorClient* GetBluetoothGattDescriptorClient();
+ BluetoothGattManagerClient* GetBluetoothGattManagerClient();
+ BluetoothGattServiceClient* GetBluetoothGattServiceClient();
+ BluetoothInputClient* GetBluetoothInputClient();
+ BluetoothProfileManagerClient* GetBluetoothProfileManagerClient();
+ CrasAudioClient* GetCrasAudioClient();
+ CrosDisksClient* GetCrosDisksClient();
+ CryptohomeClient* GetCryptohomeClient();
+ DebugDaemonClient* GetDebugDaemonClient();
+ EasyUnlockClient* GetEasyUnlockClient();
+ GsmSMSClient* GetGsmSMSClient();
+ ImageBurnerClient* GetImageBurnerClient();
+ IntrospectableClient* GetIntrospectableClient();
+ LorgnetteManagerClient* GetLorgnetteManagerClient();
+ ModemMessagingClient* GetModemMessagingClient();
+ NfcAdapterClient* GetNfcAdapterClient();
+ NfcDeviceClient* GetNfcDeviceClient();
+ NfcManagerClient* GetNfcManagerClient();
+ NfcRecordClient* GetNfcRecordClient();
+ NfcTagClient* GetNfcTagClient();
+ PermissionBrokerClient* GetPermissionBrokerClient();
+ PowerManagerClient* GetPowerManagerClient();
+ PowerPolicyController* GetPowerPolicyController();
+ SessionManagerClient* GetSessionManagerClient();
+ ShillDeviceClient* GetShillDeviceClient();
+ ShillIPConfigClient* GetShillIPConfigClient();
+ ShillManagerClient* GetShillManagerClient();
+ ShillServiceClient* GetShillServiceClient();
+ ShillProfileClient* GetShillProfileClient();
+ SMSClient* GetSMSClient();
+ SystemClockClient* GetSystemClockClient();
+ UpdateEngineClient* GetUpdateEngineClient();
private:
+ friend class DBusThreadManagerTestHelper;
+
+ DBusThreadManager();
+ ~DBusThreadManager();
+
// Initialize global thread manager instance.
static void InitializeRegular();
+ // Initialize global thread manager instance for testing which has stubbed-out
+ // dbus client implementations.
+ static void InitializeForTesting();
+
// Initialize with stub implementations for only certain clients that are
// not included in comma-separated |unstub_clients| list.
static void InitializeWithPartialStub(const std::string& unstub_clients);
- // InitializeClients is called after g_dbus_thread_manager is set.
- // NOTE: Clients that access other clients in their Init() must be
- // initialized in the correct order.
- static void InitializeClients();
+ // Creates instance of DBusThreadManager.
+ static DBusThreadManager* CreateInstance();
+
+ // Constructs all clients and stores them in the respective *_client_ member
+ // variable.
+ void CreateDefaultClients();
- // Initializes |client| with the |system_bus_|.
- static void InitClient(DBusClient* client);
+ // Constructs all clients and stores them in the respective *_client_ member
+ // variable.
+ void InitializeClients();
// Bitmask that defines which dbus clients are not stubbed out. Bitmap flags
// are defined within DBusClientBundle::DBusClientType enum.
static DBusClientBundle::DBusClientTypeMask unstub_client_mask_;
+ scoped_ptr<base::Thread> dbus_thread_;
+ scoped_refptr<dbus::Bus> system_bus_;
+ scoped_ptr<DBusClientBundle> client_bundle_;
+ scoped_ptr<PowerPolicyController> power_policy_controller_;
+
DISALLOW_COPY_AND_ASSIGN(DBusThreadManager);
};
+class CHROMEOS_EXPORT DBusThreadManagerTestHelper {
+ public:
+ ~DBusThreadManagerTestHelper();
+
+ void SetBluetoothAdapterClient(scoped_ptr<BluetoothAdapterClient> client);
+ void SetBluetoothAgentManagerClient(
+ scoped_ptr<BluetoothAgentManagerClient> client);
+ void SetBluetoothDeviceClient(scoped_ptr<BluetoothDeviceClient> client);
+ void SetBluetoothGattCharacteristicClient(
+ scoped_ptr<BluetoothGattCharacteristicClient> client);
+ void SetBluetoothGattDescriptorClient(
+ scoped_ptr<BluetoothGattDescriptorClient> client);
+ void SetBluetoothGattManagerClient(
+ scoped_ptr<BluetoothGattManagerClient> client);
+ void SetBluetoothGattServiceClient(
+ scoped_ptr<BluetoothGattServiceClient> client);
+ void SetBluetoothInputClient(scoped_ptr<BluetoothInputClient> client);
+ void SetBluetoothProfileManagerClient(
+ scoped_ptr<BluetoothProfileManagerClient> client);
+ void SetCrasAudioClient(scoped_ptr<CrasAudioClient> client);
+ void SetCrosDisksClient(scoped_ptr<CrosDisksClient> client);
+ void SetCryptohomeClient(scoped_ptr<CryptohomeClient> client);
+ void SetDebugDaemonClient(scoped_ptr<DebugDaemonClient> client);
+ void SetEasyUnlockClient(scoped_ptr<EasyUnlockClient> client);
+ void SetLorgnetteManagerClient(scoped_ptr<LorgnetteManagerClient> client);
+ void SetShillDeviceClient(scoped_ptr<ShillDeviceClient> client);
+ void SetShillIPConfigClient(scoped_ptr<ShillIPConfigClient> client);
+ void SetShillManagerClient(scoped_ptr<ShillManagerClient> client);
+ void SetShillServiceClient(scoped_ptr<ShillServiceClient> client);
+ void SetShillProfileClient(scoped_ptr<ShillProfileClient> client);
+ void SetGsmSMSClient(scoped_ptr<GsmSMSClient> client);
+ void SetImageBurnerClient(scoped_ptr<ImageBurnerClient> client);
+ void SetIntrospectableClient(scoped_ptr<IntrospectableClient> client);
+ void SetModemMessagingClient(scoped_ptr<ModemMessagingClient> client);
+ void SetNfcAdapterClient(scoped_ptr<NfcAdapterClient> client);
+ void SetNfcDeviceClient(scoped_ptr<NfcDeviceClient> client);
+ void SetNfcManagerClient(scoped_ptr<NfcManagerClient> client);
+ void SetNfcRecordClient(scoped_ptr<NfcRecordClient> client);
+ void SetNfcTagClient(scoped_ptr<NfcTagClient> client);
+ void SetPermissionBrokerClient(scoped_ptr<PermissionBrokerClient> client);
+ void SetPowerManagerClient(scoped_ptr<PowerManagerClient> client);
+ void SetPowerPolicyController(scoped_ptr<PowerPolicyController> client);
+ void SetSessionManagerClient(scoped_ptr<SessionManagerClient> client);
+ void SetSMSClient(scoped_ptr<SMSClient> client);
+ void SetSystemClockClient(scoped_ptr<SystemClockClient> client);
+ void SetUpdateEngineClient(scoped_ptr<UpdateEngineClient> client);
+
+ private:
+ friend class DBusThreadManager;
+
+ DBusThreadManagerTestHelper();
+
+ DISALLOW_COPY_AND_ASSIGN(DBusThreadManagerTestHelper);
+};
+
} // namespace chromeos
#endif // CHROMEOS_DBUS_DBUS_THREAD_MANAGER_H_

Powered by Google App Engine
This is Rietveld 408576698