[shill] Add support for setting properties.

This CL adds a framework for supporting RPC-exposed properties in Shill.
It also plumbs the code for setting properties on Service objects to prove
the approach.  Device and Manager settings will follow.

BUG=chromium-os:16343
TEST=build shill, run unit tests.

Change-Id: I55869453d6039e688f1a49be9dfb1ba1315efe0a
Reviewed-on: http://gerrit.chromium.org/gerrit/3004
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Chris Masone <cmasone@chromium.org>
diff --git a/manager.h b/manager.h
index 58d4407..bcfe6b4 100644
--- a/manager.h
+++ b/manager.h
@@ -29,7 +29,7 @@
   // A constructor for the Manager object
   Manager(ControlInterface *control_interface,
           EventDispatcher *dispatcher);
-  ~Manager();
+  virtual ~Manager();
   void Start();
   void Stop();
 
@@ -45,18 +45,31 @@
   ServiceRefPtr FindService(const std::string& name);
 
   // Implementation of PropertyStoreInterface
-  bool SetBoolProperty(const std::string& name, bool value, Error *error);
-
-  bool SetStringProperty(const std::string& name,
-                         const std::string& value,
-                         Error *error);
+  virtual bool Contains(const std::string &property);
+  virtual bool SetBoolProperty(const std::string &name,
+                               bool value,
+                               Error *error);
+  virtual bool SetStringProperty(const std::string &name,
+                                 const std::string &value,
+                                 Error *error);
 
  private:
   scoped_ptr<ManagerAdaptorInterface> adaptor_;
   DeviceInfo device_info_;
   bool running_;
+  std::vector<std::string> known_properties_;
   std::vector<DeviceRefPtr> devices_;
   std::vector<ServiceRefPtr> services_;
+
+  // Properties to be get/set via PropertyStoreInterface calls.
+  bool offline_mode_;
+  std::string state_;
+  std::string country_;
+  std::string portal_url_;
+
+  std::string active_profile_;  // This is supposed to be, essentially,
+                                // an RPC-visible object handle
+
   friend class ManagerAdaptorInterface;
 };