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/power_manager_unittest.cc b/power_manager_unittest.cc
index 8254a06..2bc744d 100644
--- a/power_manager_unittest.cc
+++ b/power_manager_unittest.cc
@@ -6,23 +6,23 @@
 
 #include <string>
 
-#include <base/scoped_ptr.h>
+#include <base/bind.h>
+#include <base/memory/scoped_ptr.h>
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
 
-#include "shill/mock_callback.h"
 #include "shill/mock_power_manager_proxy.h"
 #include "shill/power_manager_proxy_interface.h"
 #include "shill/proxy_factory.h"
 
+using base::Bind;
+using base::Unretained;
 using std::string;
 using testing::_;
 using testing::Test;
 
 namespace shill {
 
-typedef MockCallback<void(PowerManager::SuspendState)> MyMockCallback;
-
 namespace {
 
 class FakeProxyFactory : public ProxyFactory {
@@ -48,6 +48,9 @@
       : power_manager_(&factory_),
         delegate_(factory_.delegate()) { }
 
+  MOCK_METHOD1(TestCallback1, void(PowerManager::SuspendState));
+  MOCK_METHOD1(TestCallback2, void(PowerManager::SuspendState));
+
  protected:
   FakeProxyFactory factory_;
   PowerManager power_manager_;
@@ -56,24 +59,25 @@
 
 TEST_F(PowerManagerTest, Add) {
   const string kKey = "Zaphod";
-  MyMockCallback *mock_callback = NewMockCallback();
-  EXPECT_CALL(*mock_callback, OnRun(PowerManagerProxyDelegate::kOn));
-  power_manager_.AddStateChangeCallback(kKey, mock_callback);
+  EXPECT_CALL(*this, TestCallback1(PowerManagerProxyDelegate::kOn));
+  power_manager_.AddStateChangeCallback(
+      kKey, Bind(&PowerManagerTest::TestCallback1, Unretained(this)));
   factory_.delegate()->OnPowerStateChanged(PowerManagerProxyDelegate::kOn);
+  power_manager_.RemoveStateChangeCallback(kKey);
 }
 
 TEST_F(PowerManagerTest, AddMultipleRunMultiple) {
   const string kKey1 = "Zaphod";
-  MyMockCallback *mock_callback1 = NewMockCallback();
-  EXPECT_CALL(*mock_callback1, OnRun(PowerManagerProxyDelegate::kOn));
-  EXPECT_CALL(*mock_callback1, OnRun(PowerManagerProxyDelegate::kMem));
-  power_manager_.AddStateChangeCallback(kKey1, mock_callback1);
+  EXPECT_CALL(*this, TestCallback1(PowerManagerProxyDelegate::kOn));
+  EXPECT_CALL(*this, TestCallback1(PowerManagerProxyDelegate::kMem));
+  power_manager_.AddStateChangeCallback(
+      kKey1, Bind(&PowerManagerTest::TestCallback1, Unretained(this)));
 
   const string kKey2 = "Beeblebrox";
-  MyMockCallback *mock_callback2 = NewMockCallback();
-  EXPECT_CALL(*mock_callback2, OnRun(PowerManagerProxyDelegate::kOn));
-  EXPECT_CALL(*mock_callback2, OnRun(PowerManagerProxyDelegate::kMem));
-  power_manager_.AddStateChangeCallback(kKey2, mock_callback2);
+  EXPECT_CALL(*this, TestCallback2(PowerManagerProxyDelegate::kOn));
+  EXPECT_CALL(*this, TestCallback2(PowerManagerProxyDelegate::kMem));
+  power_manager_.AddStateChangeCallback(
+      kKey2, Bind(&PowerManagerTest::TestCallback2, Unretained(this)));
 
   factory_.delegate()->OnPowerStateChanged(PowerManagerProxyDelegate::kOn);
   factory_.delegate()->OnPowerStateChanged(PowerManagerProxyDelegate::kMem);
@@ -81,16 +85,16 @@
 
 TEST_F(PowerManagerTest, Remove) {
   const string kKey1 = "Zaphod";
-  MyMockCallback *mock_callback1 = NewMockCallback();
-  EXPECT_CALL(*mock_callback1, OnRun(PowerManagerProxyDelegate::kOn));
-  EXPECT_CALL(*mock_callback1, OnRun(PowerManagerProxyDelegate::kMem));
-  power_manager_.AddStateChangeCallback(kKey1, mock_callback1);
+  EXPECT_CALL(*this, TestCallback1(PowerManagerProxyDelegate::kOn));
+  EXPECT_CALL(*this, TestCallback1(PowerManagerProxyDelegate::kMem));
+  power_manager_.AddStateChangeCallback(
+      kKey1, Bind(&PowerManagerTest::TestCallback1, Unretained(this)));
 
   const string kKey2 = "Beeblebrox";
-  MyMockCallback *mock_callback2 = NewMockCallback();
-  EXPECT_CALL(*mock_callback2, OnRun(PowerManagerProxyDelegate::kOn));
-  EXPECT_CALL(*mock_callback2, OnRun(PowerManagerProxyDelegate::kMem)).Times(0);
-  power_manager_.AddStateChangeCallback(kKey2, mock_callback2);
+  EXPECT_CALL(*this, TestCallback2(PowerManagerProxyDelegate::kOn));
+  EXPECT_CALL(*this, TestCallback2(PowerManagerProxyDelegate::kMem)).Times(0);
+  power_manager_.AddStateChangeCallback(
+      kKey2, Bind(&PowerManagerTest::TestCallback2, Unretained(this)));
 
   factory_.delegate()->OnPowerStateChanged(PowerManagerProxyDelegate::kOn);
 
@@ -103,9 +107,9 @@
 
 TEST_F(PowerManagerTest, OnSuspendDelayIgnored) {
   const string kKey = "Zaphod";
-  MyMockCallback *mock_callback = NewMockCallback();
-  EXPECT_CALL(*mock_callback, OnRun(_)).Times(0);
-  power_manager_.AddStateChangeCallback(kKey, mock_callback);
+  EXPECT_CALL(*this, TestCallback1(_)).Times(0);
+  power_manager_.AddStateChangeCallback(
+      kKey, Bind(&PowerManagerTest::TestCallback1, Unretained(this)));
   factory_.delegate()->OnSuspendDelay(99);
 }
 
@@ -113,18 +117,19 @@
 
 TEST_F(PowerManagerDeathTest, AddDuplicateKey) {
   const string kKey1 = "Zaphod";
-  MyMockCallback *mock_callback1 = NewMockCallback();
-  MyMockCallback *mock_callback2 = NewMockCallback();
-  power_manager_.AddStateChangeCallback(kKey1, mock_callback1);
+  power_manager_.AddStateChangeCallback(
+      kKey1, Bind(&PowerManagerTest::TestCallback1, Unretained(this)));
 
 #ifndef NDEBUG
   // Adding another callback with the same key is an error and causes a crash in
   // debug mode.
-  EXPECT_DEATH(power_manager_.AddStateChangeCallback(kKey1, mock_callback2),
+  EXPECT_DEATH(power_manager_.AddStateChangeCallback(
+      kKey1, Bind(&PowerManagerTest::TestCallback2, Unretained(this))),
                "Inserting duplicate key");
 #else  // NDEBUG
-  EXPECT_CALL(*mock_callback2, OnRun(PowerManagerProxyDelegate::kOn));
-  power_manager_.AddStateChangeCallback(kKey1, mock_callback2);
+  EXPECT_CALL(*this, TestCallback2(PowerManagerProxyDelegate::kOn));
+  power_manager_.AddStateChangeCallback(
+      kKey1, Bind(&PowerManagerTest::TestCallback2, Unretained(this)));
   factory_.delegate()->OnPowerStateChanged(PowerManagerProxyDelegate::kOn);
 #endif  // NDEBUG
 }
@@ -132,8 +137,8 @@
 TEST_F(PowerManagerDeathTest, RemoveUnknownKey) {
   const string kKey1 = "Zaphod";
   const string kKey2 = "Beeblebrox";
-  MyMockCallback *mock_callback1 = NewMockCallback();
-  power_manager_.AddStateChangeCallback(kKey1, mock_callback1);
+  power_manager_.AddStateChangeCallback(
+      kKey1, Bind(&PowerManagerTest::TestCallback1, Unretained(this)));
 
 #ifndef NDEBUG
   // Attempting to remove a callback key that was not added is an error and
@@ -141,7 +146,7 @@
   EXPECT_DEATH(power_manager_.RemoveStateChangeCallback(kKey2),
                "Removing unknown key");
 #else  // NDEBUG
-  EXPECT_CALL(*mock_callback1, OnRun(PowerManagerProxyDelegate::kOn));
+  EXPECT_CALL(*this, TestCallback1(PowerManagerProxyDelegate::kOn));
 
   // In non-debug mode, removing an unknown key does nothing.
   power_manager_.RemoveStateChangeCallback(kKey2);