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.