diff --git a/libweave/Android.mk b/libweave/Android.mk
index ac1185d..156b171 100644
--- a/libweave/Android.mk
+++ b/libweave/Android.mk
@@ -148,9 +148,9 @@
 
 LOCAL_SRC_FILES := \
 	src/test/fake_stream.cc \
+	src/test/fake_task_runner.cc \
 	src/test/mock_command.cc \
 	src/test/mock_http_client.cc \
-	src/test/mock_task_runner.cc \
 	src/test/unittest_utils.cc \
 
 include $(BUILD_STATIC_LIBRARY)
diff --git a/libweave/include/weave/provider/test/mock_task_runner.h b/libweave/include/weave/provider/test/fake_task_runner.h
similarity index 68%
rename from libweave/include/weave/provider/test/mock_task_runner.h
rename to libweave/include/weave/provider/test/fake_task_runner.h
index 3c58614..c0c8e9e 100644
--- a/libweave/include/weave/provider/test/mock_task_runner.h
+++ b/libweave/include/weave/provider/test/fake_task_runner.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBWEAVE_INCLUDE_WEAVE_PROVIDER_TEST_MOCK_TASK_RUNNER_H_
-#define LIBWEAVE_INCLUDE_WEAVE_PROVIDER_TEST_MOCK_TASK_RUNNER_H_
+#ifndef LIBWEAVE_INCLUDE_WEAVE_PROVIDER_TEST_FAKE_TASK_RUNNER_H_
+#define LIBWEAVE_INCLUDE_WEAVE_PROVIDER_TEST_FAKE_TASK_RUNNER_H_
 
 #include <weave/provider/task_runner.h>
 
@@ -13,21 +13,19 @@
 #include <vector>
 
 #include <base/time/clock.h>
-#include <gmock/gmock.h>
 
 namespace weave {
 namespace provider {
 namespace test {
 
-class MockTaskRunner : public TaskRunner {
+class FakeTaskRunner : public TaskRunner {
  public:
-  MockTaskRunner();
-  ~MockTaskRunner() override;
+  FakeTaskRunner();
+  ~FakeTaskRunner() override;
 
-  MOCK_METHOD3(PostDelayedTask,
-               void(const tracked_objects::Location&,
-                    const base::Closure&,
-                    base::TimeDelta));
+  void PostDelayedTask(const tracked_objects::Location& from_here,
+                       const base::Closure& task,
+                       base::TimeDelta delay) override;
 
   bool RunOnce();
   void Run();
@@ -55,11 +53,11 @@
 
   std::priority_queue<QueueItem,
                       std::vector<QueueItem>,
-                      MockTaskRunner::Greater> queue_;
+                      FakeTaskRunner::Greater> queue_;
 };
 
 }  // namespace test
 }  // namespace provider
 }  // namespace weave
 
-#endif  // LIBWEAVE_INCLUDE_WEAVE_PROVIDER_TEST_MOCK_TASK_RUNNER_H_
+#endif  // LIBWEAVE_INCLUDE_WEAVE_PROVIDER_TEST_FAKE_TASK_RUNNER_H_
diff --git a/libweave/libweave.gypi b/libweave/libweave.gypi
index 544e127..3229571 100644
--- a/libweave/libweave.gypi
+++ b/libweave/libweave.gypi
@@ -54,9 +54,9 @@
     ],
     'weave_test_sources': [
       'src/test/fake_stream.cc',
+      'src/test/fake_task_runner.cc',
       'src/test/mock_command.cc',
       'src/test/mock_http_client.cc',
-      'src/test/mock_task_runner.cc',
       'src/test/unittest_utils.cc',
     ],
     'weave_unittest_sources': [
diff --git a/libweave/src/commands/cloud_command_proxy_unittest.cc b/libweave/src/commands/cloud_command_proxy_unittest.cc
index 3a3ce38..d96508d 100644
--- a/libweave/src/commands/cloud_command_proxy_unittest.cc
+++ b/libweave/src/commands/cloud_command_proxy_unittest.cc
@@ -9,7 +9,7 @@
 
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
-#include <weave/provider/test/mock_task_runner.h>
+#include <weave/provider/test/fake_task_runner.h>
 
 #include "libweave/src/commands/command_dictionary.h"
 #include "libweave/src/commands/command_instance.h"
@@ -136,7 +136,7 @@
   base::CallbackList<void(StateChangeQueueInterface::UpdateID)> callbacks_;
   testing::StrictMock<MockCloudCommandUpdateInterface> cloud_updater_;
   testing::StrictMock<MockStateChangeQueueInterface> state_change_queue_;
-  testing::StrictMock<provider::test::MockTaskRunner> task_runner_;
+  testing::StrictMock<provider::test::FakeTaskRunner> task_runner_;
   std::queue<base::Closure> task_queue_;
   CommandDictionary command_dictionary_;
   std::unique_ptr<CommandInstance> command_instance_;
@@ -214,7 +214,6 @@
   // We should retry with both state and progress fields updated this time,
   // after the initial backoff (which should be 1s in our case).
   base::TimeDelta expected_delay = base::TimeDelta::FromSeconds(1);
-  EXPECT_CALL(task_runner_, PostDelayedTask(_, _, expected_delay));
   on_error.Run();
 
   // Execute the delayed request. But pretend that it failed too.
@@ -228,7 +227,6 @@
 
   // Now backoff should be 2 seconds.
   expected_delay = base::TimeDelta::FromSeconds(2);
-  EXPECT_CALL(task_runner_, PostDelayedTask(_, _, expected_delay));
   on_error.Run();
 
   // Retry the task.
diff --git a/libweave/src/notification/xmpp_channel_unittest.cc b/libweave/src/notification/xmpp_channel_unittest.cc
index beecd1d..e783727 100644
--- a/libweave/src/notification/xmpp_channel_unittest.cc
+++ b/libweave/src/notification/xmpp_channel_unittest.cc
@@ -8,8 +8,8 @@
 #include <queue>
 
 #include <gtest/gtest.h>
+#include <weave/provider/test/fake_task_runner.h>
 #include <weave/provider/test/mock_network.h>
-#include <weave/provider/test/mock_task_runner.h>
 #include <weave/test/fake_stream.h>
 
 #include "libweave/src/bind_lambda.h"
@@ -144,7 +144,7 @@
     EXPECT_EQ(st, xmpp_client_.state());
   }
 
-  StrictMock<provider::test::MockTaskRunner> task_runner_;
+  StrictMock<provider::test::FakeTaskRunner> task_runner_;
   StrictMock<MockNetwork> network_;
   FakeXmppChannel xmpp_client_{&task_runner_, &network_};
 };
diff --git a/libweave/src/notification/xmpp_iq_stanza_handler_unittest.cc b/libweave/src/notification/xmpp_iq_stanza_handler_unittest.cc
index 27392b3..2fa7d97 100644
--- a/libweave/src/notification/xmpp_iq_stanza_handler_unittest.cc
+++ b/libweave/src/notification/xmpp_iq_stanza_handler_unittest.cc
@@ -9,7 +9,7 @@
 
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
-#include <weave/provider/test/mock_task_runner.h>
+#include <weave/provider/test/fake_task_runner.h>
 
 #include "libweave/src/bind_lambda.h"
 #include "libweave/src/notification/xml_node.h"
@@ -76,7 +76,7 @@
 class IqStanzaHandlerTest : public testing::Test {
  public:
   testing::StrictMock<MockXmppChannelInterface> mock_xmpp_channel_;
-  provider::test::MockTaskRunner task_runner_;
+  provider::test::FakeTaskRunner task_runner_;
   IqStanzaHandler iq_stanza_handler_{&mock_xmpp_channel_, &task_runner_};
   MockResponseReceiver receiver_;
 };
@@ -122,16 +122,12 @@
 }
 
 TEST_F(IqStanzaHandlerTest, SequentialResponses) {
-  EXPECT_CALL(task_runner_, PostDelayedTask(_, _, _)).Times(2);
-
   EXPECT_CALL(mock_xmpp_channel_, SendMessage(_)).Times(2);
   iq_stanza_handler_.SendRequest("set", "", "", "<body/>",
                                  receiver_.callback(1), {});
   iq_stanza_handler_.SendRequest("get", "", "", "<body/>",
                                  receiver_.callback(2), {});
 
-  EXPECT_CALL(task_runner_, PostDelayedTask(_, _, _)).Times(2);
-
   EXPECT_CALL(receiver_, OnResponse(1, "foo"));
   auto request = XmlParser{}.Parse("<iq id='1' type='result'><foo/></iq>");
   EXPECT_TRUE(iq_stanza_handler_.HandleIqStanza(std::move(request)));
@@ -144,16 +140,12 @@
 }
 
 TEST_F(IqStanzaHandlerTest, OutOfOrderResponses) {
-  EXPECT_CALL(task_runner_, PostDelayedTask(_, _, _)).Times(2);
-
   EXPECT_CALL(mock_xmpp_channel_, SendMessage(_)).Times(2);
   iq_stanza_handler_.SendRequest("set", "", "", "<body/>",
                                  receiver_.callback(1), {});
   iq_stanza_handler_.SendRequest("get", "", "", "<body/>",
                                  receiver_.callback(2), {});
 
-  EXPECT_CALL(task_runner_, PostDelayedTask(_, _, _)).Times(2);
-
   EXPECT_CALL(receiver_, OnResponse(2, "bar"));
   auto request = XmlParser{}.Parse("<iq id='2' type='result'><bar/></iq>");
   EXPECT_TRUE(iq_stanza_handler_.HandleIqStanza(std::move(request)));
@@ -166,8 +158,6 @@
 }
 
 TEST_F(IqStanzaHandlerTest, RequestTimeout) {
-  EXPECT_CALL(task_runner_, PostDelayedTask(_, _, _)).Times(1);
-
   bool called = false;
   auto on_timeout = [&called]() { called = true; };
 
diff --git a/libweave/src/privet/security_manager_unittest.cc b/libweave/src/privet/security_manager_unittest.cc
index 5c9fc2d..c85bd5f 100644
--- a/libweave/src/privet/security_manager_unittest.cc
+++ b/libweave/src/privet/security_manager_unittest.cc
@@ -19,7 +19,7 @@
 #include <base/strings/string_util.h>
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
-#include <weave/provider/test/mock_task_runner.h>
+#include <weave/provider/test/fake_task_runner.h>
 
 #include "libweave/external/crypto/p224_spake.h"
 #include "libweave/src/data_encoding.h"
@@ -100,7 +100,7 @@
   }
 
   const base::Time time_ = base::Time::FromTimeT(1410000000);
-  provider::test::MockTaskRunner task_runner_;
+  provider::test::FakeTaskRunner task_runner_;
   SecurityManager security_{{PairingType::kEmbeddedCode},
                             "1234",
                             false,
diff --git a/libweave/src/test/fake_task_runner.cc b/libweave/src/test/fake_task_runner.cc
new file mode 100644
index 0000000..8ba3b4c
--- /dev/null
+++ b/libweave/src/test/fake_task_runner.cc
@@ -0,0 +1,57 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <weave/provider/test/fake_task_runner.h>
+
+namespace weave {
+namespace provider {
+namespace test {
+
+class FakeTaskRunner::TestClock : public base::Clock {
+ public:
+  base::Time Now() override { return now_; }
+
+  void SetNow(base::Time now) { now_ = now; }
+
+ private:
+  base::Time now_{base::Time::Now()};
+};
+
+FakeTaskRunner::FakeTaskRunner() : test_clock_{new TestClock} {}
+
+FakeTaskRunner::~FakeTaskRunner() {}
+
+bool FakeTaskRunner::RunOnce() {
+  if (queue_.empty())
+    return false;
+  auto top = queue_.top();
+  queue_.pop();
+  test_clock_->SetNow(std::max(test_clock_->Now(), top.first.first));
+  top.second.Run();
+  return true;
+}
+
+void FakeTaskRunner::Run() {
+  break_ = false;
+  while (!break_ && RunOnce()) {
+  }
+}
+
+void FakeTaskRunner::Break() {
+  break_ = true;
+}
+
+base::Clock* FakeTaskRunner::GetClock() {
+  return test_clock_.get();
+}
+
+void FakeTaskRunner::PostDelayedTask(const tracked_objects::Location& from_here,
+                                     const base::Closure& task,
+                                     base::TimeDelta delay) {
+  queue_.emplace(std::make_pair(test_clock_->Now() + delay, ++counter_), task);
+}
+
+}  // namespace test
+}  // namespace provider
+}  // namespace weave
diff --git a/libweave/src/test/mock_task_runner.cc b/libweave/src/test/mock_task_runner.cc
deleted file mode 100644
index 78af5ad..0000000
--- a/libweave/src/test/mock_task_runner.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2015 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <weave/provider/test/mock_task_runner.h>
-
-using testing::_;
-using testing::Invoke;
-using testing::AnyNumber;
-
-namespace weave {
-namespace provider {
-namespace test {
-
-class MockTaskRunner::TestClock : public base::Clock {
- public:
-  base::Time Now() override { return now_; }
-
-  void SetNow(base::Time now) { now_ = now; }
-
- private:
-  base::Time now_{base::Time::Now()};
-};
-
-MockTaskRunner::MockTaskRunner() : test_clock_{new TestClock} {
-  ON_CALL(*this, PostDelayedTask(_, _, _))
-      .WillByDefault(Invoke(this, &MockTaskRunner::SaveTask));
-  EXPECT_CALL(*this, PostDelayedTask(_, _, _)).Times(AnyNumber());
-}
-
-MockTaskRunner::~MockTaskRunner() {}
-
-bool MockTaskRunner::RunOnce() {
-  if (queue_.empty())
-    return false;
-  auto top = queue_.top();
-  queue_.pop();
-  test_clock_->SetNow(std::max(test_clock_->Now(), top.first.first));
-  top.second.Run();
-  return true;
-}
-
-void MockTaskRunner::Run() {
-  break_ = false;
-  while (!break_ && RunOnce()) {
-  }
-}
-
-void MockTaskRunner::Break() {
-  break_ = true;
-}
-
-base::Clock* MockTaskRunner::GetClock() {
-  return test_clock_.get();
-}
-
-void MockTaskRunner::SaveTask(const tracked_objects::Location& from_here,
-                              const base::Closure& task,
-                              base::TimeDelta delay) {
-  queue_.emplace(std::make_pair(test_clock_->Now() + delay, ++counter_), task);
-}
-
-}  // namespace test
-}  // namespace provider
-}  // namespace weave
diff --git a/libweave/src/weave_unittest.cc b/libweave/src/weave_unittest.cc
index e92c266..15891d6 100644
--- a/libweave/src/weave_unittest.cc
+++ b/libweave/src/weave_unittest.cc
@@ -6,13 +6,13 @@
 
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
+#include <weave/provider/test/fake_task_runner.h>
 #include <weave/provider/test/mock_bluetooth.h>
 #include <weave/provider/test/mock_config_store.h>
 #include <weave/provider/test/mock_dns_service_discovery.h>
 #include <weave/provider/test/mock_http_client.h>
 #include <weave/provider/test/mock_http_server.h>
 #include <weave/provider/test/mock_network.h>
-#include <weave/provider/test/mock_task_runner.h>
 #include <weave/provider/test/mock_wifi.h>
 #include <weave/test/unittest_utils.h>
 
@@ -323,7 +323,7 @@
   std::vector<provider::HttpServer::OnRequestCallback> http_server_request_cb_;
 
   StrictMock<provider::test::MockConfigStore> config_store_;
-  StrictMock<provider::test::MockTaskRunner> task_runner_;
+  StrictMock<provider::test::FakeTaskRunner> task_runner_;
   StrictMock<provider::test::MockHttpClient> http_client_;
   StrictMock<provider::test::MockNetwork> network_;
   StrictMock<provider::test::MockDnsServiceDiscovery> dns_sd_;
