shill: On Service::Connect, connect the modem device to the network.

Also, uncouple the DBusProperties signal callbacks from Modem to make the proxy
implementation more consistent with the other proxies.

BUG=chromium-os:18727
TEST=unit tests

Change-Id: Icdddea8d2a30803150f2a159fdc5a719e960f95d
Reviewed-on: http://gerrit.chromium.org/gerrit/5444
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Chris Masone <cmasone@chromium.org>
diff --git a/dbus_properties_proxy_interface.h b/dbus_properties_proxy_interface.h
index 7aeea03..93320dc 100644
--- a/dbus_properties_proxy_interface.h
+++ b/dbus_properties_proxy_interface.h
@@ -5,6 +5,8 @@
 #ifndef SHILL_DBUS_PROPERTIES_PROXY_INTERFACE_
 #define SHILL_DBUS_PROPERTIES_PROXY_INTERFACE_
 
+#include <vector>
+
 #include "shill/dbus_properties.h"
 
 namespace shill {
@@ -18,6 +20,21 @@
   virtual DBusPropertiesMap GetAll(const std::string &interface_name) = 0;
 };
 
+// DBus.Properties signal listener to be associated with the proxy.
+class DBusPropertiesProxyListener {
+ public:
+  virtual ~DBusPropertiesProxyListener() {}
+
+  virtual void OnDBusPropertiesChanged(
+      const std::string &interface,
+      const DBusPropertiesMap &changed_properties,
+      const std::vector<std::string> &invalidated_properties) = 0;
+
+  virtual void OnModemManagerPropertiesChanged(
+      const std::string &interface,
+      const DBusPropertiesMap &properties) = 0;
+};
+
 }  // namespace shill
 
 #endif  // SHILL_DBUS_PROPERTIES_PROXY_INTERFACE_