Chromium Code Reviews| Index: chromeos/dbus/dbus_client_bundle.h |
| diff --git a/chromeos/dbus/dbus_client_bundle.h b/chromeos/dbus/dbus_client_bundle.h |
| index 176e3ac8351ef4db538f097baba20f1d55f0cdce..529a966e0173847d033dfdd1aa8c43d5d47449af 100644 |
| --- a/chromeos/dbus/dbus_client_bundle.h |
| +++ b/chromeos/dbus/dbus_client_bundle.h |
| @@ -36,15 +36,15 @@ class ShillThirdPartyVpnDriverClient; |
| class SystemClockClient; |
| class UpdateEngineClient; |
| +// Declared outside of DBusClientBundle to make identifiers shorter in outside |
| +// classes. |
| +using DBusClientTypeMask = int; |
| + |
| // The bundle of all D-Bus clients used in DBusThreadManager. The bundle |
| // is used to delete them at once in the right order before shutting down the |
| // system bus. See also the comment in the destructor of DBusThreadManager. |
| class CHROMEOS_EXPORT DBusClientBundle { |
| public: |
| - typedef int DBusClientTypeMask; |
| - |
| - // TODO(zelidrag): We might want to collapse few more of these subsystems if |
| - // their dbus interfaced correspond to the same daemon. |
| enum DBusClientType { |
| NO_CLIENT = 0, |
| BLUETOOTH = 1 << 0, |
| @@ -65,13 +65,23 @@ class CHROMEOS_EXPORT DBusClientBundle { |
| SYSTEM_CLOCK = 1 << 15, |
| UPDATE_ENGINE = 1 << 16, |
| ARC_OBB_MOUNTER = 1 << 17, |
| + ALL_CLIENTS = ~NO_CLIENT, |
| }; |
| - explicit DBusClientBundle(DBusClientTypeMask unstub_client_mask); |
| + // Creates real implementations for |real_client_mask| and fakes for |
| + // |fake_client_mask|. The masks must be mutually exclusive. Fakes are used |
| + // when running on Linux desktop and in tests. If a client does not appear in |
| + // either mask then no implementation will be created and the getters below |
| + // will return null. |
| + DBusClientBundle(DBusClientTypeMask real_client_mask, |
| + DBusClientTypeMask fake_client_mask); |
| ~DBusClientBundle(); |
| - // Returns true if |client| is stubbed. |
| - bool IsUsingStub(DBusClientType client); |
| + // Returns true if |client| is faked. |
| + bool IsUsingFake(DBusClientType client) const; |
| + |
| + // Returns true if |client| has the real client implementation. |
| + bool IsUsingReal(DBusClientType client) const; |
| // Returns true if any real DBusClient is used. |
| bool IsUsingAnyRealClient(); |
| @@ -79,8 +89,8 @@ class CHROMEOS_EXPORT DBusClientBundle { |
| // Initialize proper runtime environment for its dbus clients. |
| void SetupDefaultEnvironment(); |
| - // Parses command line param values for dbus subsystem that should be |
| - // un-stubbed. |
| + // Parses command line param values for dbus subsystems that should be forced |
| + // to use real implementations. |
| static DBusClientTypeMask ParseUnstubList(const std::string& unstub_list); |
|
James Cook
2016/09/07 19:56:07
I did not rename the --dbus-unstub-clients flag be
|
| ArcObbMounterClient* arc_obb_mounter_client() { |
| @@ -174,10 +184,14 @@ class CHROMEOS_EXPORT DBusClientBundle { |
| private: |
| friend class DBusThreadManagerSetter; |
| - // Bitmask that defines which dbus clients are not stubbed out. Bitmap flags |
| - // are defined within DBusClientType enum. |
| - DBusClientTypeMask unstub_client_mask_; |
| + // Bitmask for clients with real implementations. See DBusClientType. |
| + const DBusClientTypeMask real_client_mask_; |
| + |
| + // Bitmask for clients with fake implementations. See DBusClientType. |
| + const DBusClientTypeMask fake_client_mask_; |
| + // May be null if the current process does not use the client (e.g. in the |
| + // ash process on mustash). |
| std::unique_ptr<ArcObbMounterClient> arc_obb_mounter_client_; |
| std::unique_ptr<CrasAudioClient> cras_audio_client_; |
| std::unique_ptr<CrosDisksClient> cros_disks_client_; |