shill: Handle success/failure events from dhcpcd.

BUG=chromium-os:16718
TEST=unit tests

Change-Id: I36d8b737a060f7b295ebab26aa37b4e71022b4f0
Reviewed-on: http://gerrit.chromium.org/gerrit/2880
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Chris Masone <cmasone@chromium.org>
diff --git a/ipconfig_unittest.cc b/ipconfig_unittest.cc
index 0ff911a..efb565f 100644
--- a/ipconfig_unittest.cc
+++ b/ipconfig_unittest.cc
@@ -52,7 +52,7 @@
   properties.domain_search.push_back("zoo.org");
   properties.domain_search.push_back("zoo.com");
   properties.mtu = 700;
-  ipconfig_->UpdateProperties(properties);
+  ipconfig_->UpdateProperties(properties, true);
   EXPECT_EQ("1.2.3.4", ipconfig_->properties().address);
   EXPECT_EQ(24, ipconfig_->properties().subnet_cidr);
   EXPECT_EQ("11.22.33.44", ipconfig_->properties().broadcast_address);
@@ -67,31 +67,40 @@
   EXPECT_EQ(700, ipconfig_->properties().mtu);
 }
 
+namespace {
+
 class UpdateCallbackTest {
  public:
-  UpdateCallbackTest(IPConfigRefPtr ipconfig)
+  UpdateCallbackTest(IPConfigRefPtr ipconfig, bool success)
       : ipconfig_(ipconfig),
+        success_(success),
         called_(false) {}
 
-  void Callback(IPConfigRefPtr ipconfig) {
+  void Callback(IPConfigRefPtr ipconfig, bool success) {
     called_ = true;
-    EXPECT_EQ(ipconfig.get(), ipconfig_.get());
+    EXPECT_EQ(ipconfig_.get(), ipconfig.get());
+    EXPECT_EQ(success_, success);
   }
 
   bool called() const { return called_; }
 
  private:
   IPConfigRefPtr ipconfig_;
+  bool success_;
   bool called_;
 };
 
+}  // namespace {}
+
 TEST_F(IPConfigTest, UpdateCallback) {
-  UpdateCallbackTest callback_test(ipconfig_);
-  ASSERT_FALSE(callback_test.called());
-  ipconfig_->RegisterUpdateCallback(
-      NewCallback(&callback_test, &UpdateCallbackTest::Callback));
-  ipconfig_->UpdateProperties(IPConfig::Properties());
-  EXPECT_TRUE(callback_test.called());
+  for (int success = 0; success < 2; success++) {
+    UpdateCallbackTest callback_test(ipconfig_, success);
+    ASSERT_FALSE(callback_test.called());
+    ipconfig_->RegisterUpdateCallback(
+        NewCallback(&callback_test, &UpdateCallbackTest::Callback));
+    ipconfig_->UpdateProperties(IPConfig::Properties(), success);
+    EXPECT_TRUE(callback_test.called());
+  }
 }
 
 }  // namespace shill