shill: cellular: Replace g_bus_watch_name with DBusNameWatcher.

This CL changes the ModemManager class to use DBusNameWatcher, instead
of g_bus_watch_name, to monitor the presence of modem manager DBus
service daemons. Glib::BusWatchName and Glib::BusUnwatchName are also
removed.

BUG=chromium:214475
TEST=Tested the following:
1. Build and run unit tests.
2. Manually verify, via /var/log/net.log, that shill can observe and
   handle the scenarios when cromo and ModemManager appear on and vanish
   from DBus.

Change-Id: I57257f076a05101d9c38d5ff3044884378e91337
Reviewed-on: https://chromium-review.googlesource.com/182052
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
Commit-Queue: Ben Chan <benchan@chromium.org>
diff --git a/modem_manager.h b/modem_manager.h
index 3cc7a42..1604a41 100644
--- a/modem_manager.h
+++ b/modem_manager.h
@@ -24,6 +24,7 @@
 
 namespace shill {
 
+class DBusNameWatcher;
 class DBusObjectManagerProxyInterface;
 class DBusPropertiesProxyInterface;
 class Modem1;
@@ -47,6 +48,10 @@
   // associated modems.
   void Stop();
 
+  // DBusNameWatcher callbacks.
+  void OnAppear(const std::string &name, const std::string &owner);
+  void OnVanish(const std::string &name);
+
   void OnDeviceInfoAvailable(const std::string &link_name);
 
  protected:
@@ -81,28 +86,17 @@
   FRIEND_TEST(ModemManager1Test, Connect);
   FRIEND_TEST(ModemManagerClassicTest, Connect);
   FRIEND_TEST(ModemManagerCoreTest, AddRemoveModem);
-  FRIEND_TEST(ModemManagerCoreTest, Connect);
-  FRIEND_TEST(ModemManagerCoreTest, Disconnect);
-  FRIEND_TEST(ModemManagerCoreTest, ModemExists);
+  FRIEND_TEST(ModemManagerCoreTest, ConnectDisconnect);
   FRIEND_TEST(ModemManagerCoreTest, OnAppearVanish);
-  FRIEND_TEST(ModemManagerCoreTest, Start);
-  FRIEND_TEST(ModemManagerCoreTest, Stop);
-
-  // DBus service watcher callbacks.
-  static void OnAppear(GDBusConnection *connection,
-                       const gchar *name,
-                       const gchar *name_owner,
-                       gpointer user_data);
-  static void OnVanish(GDBusConnection *connection,
-                       const gchar *name,
-                       gpointer user_data);
+  FRIEND_TEST(ModemManagerCoreTest, StartStopWithModemManagerServiceAbsent);
+  FRIEND_TEST(ModemManagerCoreTest, StartStopWithModemManagerServicePresent);
 
   // Store cached copies of singletons for speed/ease of testing.
   ProxyFactory *proxy_factory_;
 
   const std::string service_;
   const std::string path_;
-  guint watcher_id_;
+  scoped_ptr<DBusNameWatcher> name_watcher_;
 
   std::string owner_;  // DBus service owner.