shill: Only disconnect from modem if bearer is valid.

BUG=chromium-os:32235
TEST=Unit tests, cellular_ModemControl

Change-Id: I78c06315dec77fddccbb08b1e6e3b0ff25b13b3c
Reviewed-on: https://gerrit.chromium.org/gerrit/28039
Reviewed-by: Thieu Le <thieule@chromium.org>
Tested-by: Thieu Le <thieule@chromium.org>
diff --git a/cellular_capability_universal_unittest.cc b/cellular_capability_universal_unittest.cc
index 8405fe9..f466b62 100644
--- a/cellular_capability_universal_unittest.cc
+++ b/cellular_capability_universal_unittest.cc
@@ -342,6 +342,16 @@
   disable_callback.Run(Error(Error::kSuccess));
 }
 
+TEST_F(CellularCapabilityUniversalTest, DisconnectModemNoBearer) {
+  Error error;
+  ResultCallback disconnect_callback;
+  mm1::MockModemSimpleProxy *modem_simple_proxy = modem_simple_proxy_.get();
+  EXPECT_CALL(*modem_simple_proxy,
+              Disconnect(_, _, _, CellularCapability::kTimeoutDefault))
+      .Times(0);
+  capability_->Disconnect(&error, disconnect_callback);
+}
+
 TEST_F(CellularCapabilityUniversalTest, PropertiesChanged) {
   // Set up mock modem properties
   DBusPropertiesMap modem_properties;