Index: dbus/object_manager.h |
diff --git a/dbus/object_manager.h b/dbus/object_manager.h |
index 266b53eb9a0ac3d140d468114701af3ecad17ba9..acc8d26668513d8cb599d40b75b2ce8d626ce657 100644 |
--- a/dbus/object_manager.h |
+++ b/dbus/object_manager.h |
@@ -71,8 +71,9 @@ |
// object_manager_->UnregisterInterface(kInterface); |
// } |
// |
-// The D-Bus thread manager takes care of issuing the necessary call to |
-// GetManagedObjects() after the implementation classes have been set up. |
+// This class calls GetManagedObjects() asynchronously after the remote service |
+// becomes available and additionally refreshes managed objects after the |
+// service stops or restarts. |
// |
// The object manager interface class has one abstract method that must be |
// implemented by the class to create Properties structures on demand. As well |
@@ -238,8 +239,14 @@ public: |
private: |
friend class base::RefCountedThreadSafe<ObjectManager>; |
+ // Callback for ObjectProxy::WaitForServiceToBeAvailable() that refreshes |
+ // objects when the service becomes initially available if |
+ // |signals_are_connected_| is already true. |
+ void OnServiceInitiallyAvailable(bool service_is_available); |
+ |
// Connects the InterfacesAdded and InterfacesRemoved signals and calls |
- // GetManagedObjects. Called from OnSetupMatchRuleAndFilterComplete. |
+ // GetManagedObjects if |service_initially_available_| is already true. Called |
+ // from OnSetupMatchRuleAndFilterComplete. |
void InitializeObjects(); |
// Called from the constructor to add a match rule for PropertiesChanged |
@@ -326,6 +333,13 @@ public: |
bool setup_success_; |
bool cleanup_called_; |
+ // Set to true by OnServiceInitiallyAvailable() once the service becomes |
+ // initially available. |
+ bool service_initially_available_; |
+ |
+ // Set to true by InitializeObjects() once signals are connected. |
+ bool signals_are_connected_; |
+ |
// Maps the name of an interface to the implementation class used for |
// instantiating PropertySet structures for that interface's properties. |
typedef std::map<std::string, Interface*> InterfaceMap; |