Remove indirection task for creating a modem object.
Creating a modem object causes a DBus call (to register the object on
the bus). This used to cause a deadlock, but ers fixed the deadlock,
so now we don't need the indirection.
BUG=chromium-os:27936
TEST=creates a cromo modem
Change-Id: I226248001989781c6098cc620b30584aabb59e4c
Reviewed-on: https://gerrit.chromium.org/gerrit/18399
Reviewed-by: Eric Shienbrood <ers@chromium.org>
Tested-by: David Rochberg <rochberg@chromium.org>
Commit-Ready: David Rochberg <rochberg@chromium.org>
diff --git a/modem_manager_unittest.cc b/modem_manager_unittest.cc
index d48f4f3..22ba368 100644
--- a/modem_manager_unittest.cc
+++ b/modem_manager_unittest.cc
@@ -22,6 +22,7 @@
using std::vector;
using testing::_;
using testing::Invoke;
+using testing::Pointee;
using testing::Return;
using testing::StrEq;
using testing::Test;
@@ -164,6 +165,26 @@
EXPECT_EQ(0, modem_manager_.modems_.size());
}
+class ModemManagerClassicMockInit : public ModemManagerClassic {
+ public:
+ ModemManagerClassicMockInit(const string &service,
+ const string &path,
+ ControlInterface *control_interface,
+ EventDispatcher *dispatcher,
+ Metrics *metrics,
+ Manager *manager,
+ GLib *glib,
+ mobile_provider_db *provider_db) :
+ ModemManagerClassic(service,
+ path,
+ control_interface,
+ dispatcher,
+ metrics,
+ manager,
+ glib,
+ provider_db) {}
+ MOCK_METHOD1(InitModem, void(shared_ptr<Modem> modem));
+};
class ModemManagerClassicTest : public ModemManagerTest {
public:
@@ -205,7 +226,7 @@
modem_manager_.proxy_factory_ = NULL;
}
- ModemManagerClassic modem_manager_;
+ ModemManagerClassicMockInit modem_manager_;
scoped_ptr<MockModemManagerProxy> proxy_;
TestProxyFactory proxy_factory_;
};
@@ -216,6 +237,9 @@
EXPECT_CALL(*proxy_, EnumerateDevices())
.WillOnce(Return(vector<DBus::Path>(1, kModemPath)));
+ EXPECT_CALL(modem_manager_,
+ InitModem(Pointee(Field(&Modem::path_, StrEq(kModemPath)))));
+
modem_manager_.Connect(kOwner);
EXPECT_EQ(kOwner, modem_manager_.owner_);
EXPECT_EQ(1, modem_manager_.modems_.size());