shill: have Service check if a service is connected/connecting
before executing an AutoConnect request.
This avoids a spurious warning in the log file, if manager
autoconnects to an already connected Cellular service.
No effect on Ethernet services, because Ethernet's connect is
a no-op. No effect on WiFi services, because they override
Service::AutoConnect.
BUG=None
TEST=new unit test
Change-Id: If9e6c18735a5fb8a0d9baa1602c392ce7ec6e932
Reviewed-on: https://gerrit.chromium.org/gerrit/14097
Reviewed-by: Thieu Le <thieule@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Ready: mukesh agrawal <quiche@chromium.org>
Tested-by: mukesh agrawal <quiche@chromium.org>
diff --git a/service_unittest.cc b/service_unittest.cc
index 4f73bb8..634113d 100644
--- a/service_unittest.cc
+++ b/service_unittest.cc
@@ -276,4 +276,15 @@
EXPECT_FALSE(service_->auto_connect());
}
+TEST_F(ServiceTest, IsAutoConnectable) {
+ service_->set_connectable(true);
+ EXPECT_TRUE(service_->IsAutoConnectable());
+
+ service_->SetState(Service::kStateConnected);
+ EXPECT_FALSE(service_->IsAutoConnectable());
+
+ service_->SetState(Service::kStateAssociating);
+ EXPECT_FALSE(service_->IsAutoConnectable());
+}
+
} // namespace shill