shill: Convert code to use the newest version of libchrome.

The biggest change is a switch from using the deprecated
Task and CallbackN mechanisms to using the new Callback
mechanism.

Note: Original CL was https://gerrit.chromium.org/gerrit/16156.
This is logically another patch to that CL, but since the
latter was already merged, and is considered closed by
Gerrit, it's necessary to create a new CL.

BUG=chromium-os:15330
TEST=Build shill and run it on a zgb with a modem. Build and
run unit tests.
CQ-DEPEND=I37628863370323d30cac493764ea28f8ffd42637

Change-Id: I3ae78a3aa44ec167b79f2170d07650ece888254f
Reviewed-on: https://gerrit.chromium.org/gerrit/18030
Reviewed-by: Eric Shienbrood <ers@chromium.org>
Tested-by: Eric Shienbrood <ers@chromium.org>
Commit-Ready: Eric Shienbrood <ers@chromium.org>
diff --git a/dns_client_unittest.cc b/dns_client_unittest.cc
index 33e87d3..6a15c2d 100644
--- a/dns_client_unittest.cc
+++ b/dns_client_unittest.cc
@@ -9,6 +9,7 @@
 #include <string>
 #include <vector>
 
+#include <base/bind.h>
 #include <base/memory/scoped_ptr.h>
 #include <gtest/gtest.h>
 #include <gmock/gmock.h>
@@ -21,6 +22,8 @@
 #include "shill/mock_event_dispatcher.h"
 #include "shill/mock_time.h"
 
+using base::Bind;
+using base::Unretained;
 using std::string;
 using std::vector;
 using testing::_;
@@ -202,7 +205,7 @@
   void ExpectReset() {
     EXPECT_TRUE(dns_client_->address_.family() == IPAddress::kFamilyIPv4);
     EXPECT_TRUE(dns_client_->address_.IsDefault());
-    EXPECT_TRUE(dns_client_->task_factory_.empty());
+    EXPECT_FALSE(dns_client_->weak_ptr_factory_.HasWeakPtrs());
     EXPECT_FALSE(dns_client_->resolver_state_.get());
   }
 
@@ -210,14 +213,14 @@
   class DNSCallbackTarget {
    public:
     DNSCallbackTarget()
-        : callback_(NewCallback(this, &DNSCallbackTarget::CallTarget)) {}
+        : callback_(Bind(&DNSCallbackTarget::CallTarget, Unretained(this))) {}
 
     MOCK_METHOD2(CallTarget, void(const Error &error,
                                   const IPAddress &address));
-    DNSClient::ClientCallback *callback() { return callback_.get(); }
+    const DNSClient::ClientCallback &callback() { return callback_; }
 
    private:
-    scoped_ptr<DNSClient::ClientCallback> callback_;
+    DNSClient::ClientCallback callback_;
   };
 
   scoped_ptr<DNSClient> dns_client_;