buffet: Add property update signals to ExportedPropertSet

BUG=chromium:356368
TEST=unit tests pass, added more

Change-Id: I4c4beabce9bf6d3daf444066b2ce26cf13d50d10
Reviewed-on: https://chromium-review.googlesource.com/192725
Tested-by: Christopher Wiley <wiley@chromium.org>
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Christopher Wiley <wiley@chromium.org>
diff --git a/buffet/exported_property_set.h b/buffet/exported_property_set.h
index 7ed9d9b..84dbe2a 100644
--- a/buffet/exported_property_set.h
+++ b/buffet/exported_property_set.h
@@ -89,7 +89,7 @@
   // needed to write out properties to Get and GetAll methods implemented
   // by the ExportedPropertySet since it doesn't actually know the type
   // of each property.
-  virtual void AppendValueToWriter(dbus::MessageWriter* writer) = 0;
+  virtual void AppendValueToWriter(dbus::MessageWriter* writer) const = 0;
 };
 
 class ExportedPropertySet {
@@ -123,6 +123,11 @@
                                      const std::string& name,
                                      const ExportedPropertyBase* property);
 
+  void WriteSignalForPropertyUpdate(const std::string& interface,
+                                    const std::string& name,
+                                    const ExportedPropertyBase* property,
+                                    dbus::Signal* signal) const;
+
   dbus::ExportedObject* exported_object_;  // weak; owned by the Bus object.
   // This is a map from interface name -> property name -> pointer to property.
   std::map<std::string,
@@ -154,7 +159,7 @@
   virtual void SetUpdateCallback(const OnUpdateCallback& cb) override;
 
   // Implementation provided by specialization.
-  virtual void AppendValueToWriter(dbus::MessageWriter* writer) override;
+  virtual void AppendValueToWriter(dbus::MessageWriter* writer) const override;
 
  private:
   OnUpdateCallback on_update_;