Replace base::MockTimer with behavior-specific timers in //components

This CL replaces MockTimer with MockOneShotTimer or MockRepeatingTimer
as a preparation of OnceCallback support of base::Timer.

Bug: 850247
Change-Id: Ibe313bbf292c269b67782c169af173859c353db7
Reviewed-on: https://chromium-review.googlesource.com/1111482
Reviewed-by: Gabriel Charette <[email protected]>
Reviewed-by: Colin Blundell <[email protected]>
Commit-Queue: Taiju Tsuiki <[email protected]>
Cr-Commit-Position: refs/heads/master@{#571834}
diff --git a/base/timer/mock_timer.h b/base/timer/mock_timer.h
index 597e155..81dc2bc 100644
--- a/base/timer/mock_timer.h
+++ b/base/timer/mock_timer.h
@@ -69,6 +69,24 @@
   scoped_refptr<TestSimpleTaskRunner> test_task_runner_;
 };
 
+// See MockTimer's comment. Prefer using ScopedTaskEnvironment::MOCK_TIME.
+class MockRetainingOneShotTimer : public RetainingOneShotTimer {
+ public:
+  MockRetainingOneShotTimer();
+  ~MockRetainingOneShotTimer() override;
+
+  // Testing method.
+  void Fire();
+
+ private:
+  // Timer implementation.
+  // MockRetainingOneShotTimer doesn't support SetTaskRunner. Do not use this.
+  void SetTaskRunner(scoped_refptr<SequencedTaskRunner> task_runner) override;
+
+  SimpleTestTickClock clock_;
+  scoped_refptr<TestSimpleTaskRunner> test_task_runner_;
+};
+
 }  // namespace base
 
 #endif  // BASE_TIMER_MOCK_TIMER_H_