buffet: Add ObjectManager interface to /org/chromium/Buffet

BUG=chromium:359190
TEST=`buffet_client GetManagedObjects` returns
message_type: MESSAGE_METHOD_RETURN
destination: :1.35
sender: :1.31
signature: a{oa{sa{sv}}}
serial: 10
reply_serial: 3

array [
  dict entry {
    object_path "/org/chromium/Buffet/Manager"
    array [
      dict entry {
        string "org.chromium.Buffet.Manager"
        array [
          dict entry {
            string "State"
            variant               string "{}"
          }
        ]
      }
    ]
  }
]

Done.

Change-Id: I2bbcc9a3f71c7ec6ab76cb4600dad7efe1a8bb0a
Reviewed-on: https://chromium-review.googlesource.com/198963
Reviewed-by: Chris Sosa <sosa@chromium.org>
Commit-Queue: Christopher Wiley <wiley@chromium.org>
Tested-by: Christopher Wiley <wiley@chromium.org>
Reviewed-by: Ilja Friedel <ihf@chromium.org>
diff --git a/buffet/manager.h b/buffet/manager.h
index a508d81..4498c50 100644
--- a/buffet/manager.h
+++ b/buffet/manager.h
@@ -10,6 +10,7 @@
 
 #include <base/basictypes.h>
 #include <base/memory/scoped_ptr.h>
+#include <base/memory/weak_ptr.h>
 #include <base/values.h>
 #include <dbus/message.h>
 #include <dbus/object_path.h>
@@ -20,7 +21,9 @@
 
 namespace buffet {
 
-class DBusManager;
+namespace dbus_utils {
+class ExportedObjectManager;
+}  // namespace dbus_utils
 
 // The Manager is responsible for global state of Buffet.  It exposes
 // interfaces which affect the entire device such as device registration and
@@ -29,7 +32,8 @@
  public:
   typedef base::Callback<void(bool success)> OnInitFinish;
 
-  explicit Manager(dbus::Bus* bus);
+  Manager(scoped_refptr<dbus::Bus> bus,
+          base::WeakPtr<dbus_utils::ExportedObjectManager> object_manager);
   ~Manager();
   void Init(const OnInitFinish& cb);
 
@@ -64,8 +68,9 @@
   scoped_ptr<::dbus::Response> HandleTestMethod(
       ::dbus::MethodCall* method_call);
 
-  dbus::Bus* bus_;
+  scoped_refptr<dbus::Bus> bus_;
   dbus::ExportedObject* exported_object_;  // weak; owned by the Bus object.
+  base::WeakPtr<dbus_utils::ExportedObjectManager> object_manager_;
   scoped_ptr<Properties> properties_;
 
   DeviceRegistrationInfo device_info_;