1f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko// Copyright 2014 The Chromium Authors. All rights reserved.
2f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko// Use of this source code is governed by a BSD-style license that can be
3f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko// found in the LICENSE file.
4f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko
5f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko#ifndef BASE_TIMER_MOCK_TIMER_H_
6f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko#define BASE_TIMER_MOCK_TIMER_H_
7f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko
8f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko#include "base/timer/timer.h"
9f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko
10f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenkonamespace base {
11f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko
12f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenkoclass BASE_EXPORT MockTimer : public Timer {
13f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko public:
14f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  MockTimer(bool retain_user_task, bool is_repeating);
15f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  MockTimer(const tracked_objects::Location& posted_from,
16f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko            TimeDelta delay,
17f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko            const base::Closure& user_task,
18f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko            bool is_repeating);
19f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  ~MockTimer() override;
20f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko
21f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  // base::Timer implementation.
22f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  bool IsRunning() const override;
23f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  base::TimeDelta GetCurrentDelay() const override;
24f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  void Start(const tracked_objects::Location& posted_from,
25f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko             base::TimeDelta delay,
26f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko             const base::Closure& user_task) override;
27f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  void Stop() override;
28f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  void Reset() override;
29f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko
30f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  // Testing methods.
31f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  void Fire();
32f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko
33f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko private:
34f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  base::Closure user_task_;
35f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  TimeDelta delay_;
36f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko  bool is_running_;
37f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko};
38f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko
39f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko}  // namespace base
40f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko
41f6024733c0d1eed88f68520b5e6a20b96e212ad6Alex Vakulenko#endif  // BASE_TIMER_MOCK_TIMER_H_
42