shill: Service: Reset has_ever_connected on Unload()

This property should be removed if credentials have been reset
for this service.  While we are at it, remove a couple of bool
fields that never amounted to anything.  Add logic to test
has_ever_connected on both load and unload.  While here test
that explicitly_disconnected is cleared on Load().

BUG=chromium-os:25226
TEST=Unit tests.

Change-Id: I20580c3f78cf05db90ac1b709ac946e6cb9b6241
Reviewed-on: https://gerrit.chromium.org/gerrit/33796
Commit-Ready: Paul Stewart <pstew@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/service_unittest.cc b/service_unittest.cc
index 7e0f8aa..7013f14 100644
--- a/service_unittest.cc
+++ b/service_unittest.cc
@@ -282,6 +282,12 @@
   EXPECT_CALL(storage, GetString(storage_id_, _, _))
       .Times(AtLeast(1))
       .WillRepeatedly(DoAll(SetArgumentPointee<2>(string_value), Return(true)));
+  EXPECT_CALL(storage, GetBool(storage_id_, _, _))
+      .Times(AtLeast(1))
+      .WillRepeatedly(DoAll(SetArgumentPointee<2>(true), Return(true)));
+  EXPECT_FALSE(service_->explicitly_disconnected_);
+  service_->explicitly_disconnected_ = true;
+  EXPECT_FALSE(service_->has_ever_connected_);
   ASSERT_TRUE(service_->Load(&storage));
   // TODO(pstew): Only two string properties in the service are tested as
   // a sentinel that properties are being set and reset at the right times.
@@ -291,10 +297,14 @@
   // be created. crosbug.com/24859
   EXPECT_EQ(string_value, service_->ui_data_);
   EXPECT_EQ(string_value, service_->guid_);
+  EXPECT_FALSE(service_->explicitly_disconnected_);
+  EXPECT_TRUE(service_->has_ever_connected_);
+  service_->explicitly_disconnected_ = true;
   service_->Unload();
   EXPECT_EQ(string(""), service_->ui_data_);
   EXPECT_EQ(string(""), service_->guid_);
   EXPECT_FALSE(service_->explicitly_disconnected_);
+  EXPECT_FALSE(service_->has_ever_connected_);
 }
 
 TEST_F(ServiceTest, State) {