shill: wimax: Resort services when WiMAX service connectability changes.

If a WiMAX service's connectable property changes, alert Manager so
that it can resort the registered services and initiate auto-connect
to the service if necessary.

BUG=chrome-os-partner:10179
TEST=unit tests

Change-Id: Icdfc6f432de496d2f53994dd993387605f87dece
Reviewed-on: https://gerrit.chromium.org/gerrit/24584
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Ready: Darin Petkov <petkov@chromium.org>
diff --git a/service_unittest.cc b/service_unittest.cc
index 2f17f12..f8427e2 100644
--- a/service_unittest.cc
+++ b/service_unittest.cc
@@ -550,6 +550,36 @@
   }
 }
 
+TEST_F(ServiceTest, SetConnectable) {
+  EXPECT_FALSE(service_->connectable());
+
+  ServiceMockAdaptor *adaptor =
+      dynamic_cast<ServiceMockAdaptor *>(service_->adaptor());
+
+  EXPECT_CALL(*adaptor, EmitBoolChanged(_, _)).Times(0);
+  EXPECT_CALL(mock_manager_, HasService(_)).Times(0);
+  service_->SetConnectable(false);
+  EXPECT_FALSE(service_->connectable());
+
+  EXPECT_CALL(*adaptor, EmitBoolChanged(flimflam::kConnectableProperty, true));
+  EXPECT_CALL(mock_manager_, HasService(_)).WillOnce(Return(false));
+  EXPECT_CALL(mock_manager_, UpdateService(_)).Times(0);
+  service_->SetConnectable(true);
+  EXPECT_TRUE(service_->connectable());
+
+  EXPECT_CALL(*adaptor, EmitBoolChanged(flimflam::kConnectableProperty, false));
+  EXPECT_CALL(mock_manager_, HasService(_)).WillOnce(Return(true));
+  EXPECT_CALL(mock_manager_, UpdateService(_));
+  service_->SetConnectable(false);
+  EXPECT_FALSE(service_->connectable());
+
+  EXPECT_CALL(*adaptor, EmitBoolChanged(flimflam::kConnectableProperty, true));
+  EXPECT_CALL(mock_manager_, HasService(_)).WillOnce(Return(true));
+              EXPECT_CALL(mock_manager_, UpdateService(_));
+  service_->SetConnectable(true);
+  EXPECT_TRUE(service_->connectable());
+}
+
 // Make sure a property is registered as a write only property
 // by reading and comparing all string properties returned on the store.
 // Subtle: We need to convert the test argument back and forth between