// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef BASE_TIMER_MOCK_TIMER_H_
#define BASE_TIMER_MOCK_TIMER_H_

#include "base/timer/timer.h"

namespace base {

class BASE_EXPORT MockTimer : public Timer {
 public:
  MockTimer(bool retain_user_task, bool is_repeating);
  MockTimer(const Location& posted_from,
            TimeDelta delay,
            const base::Closure& user_task,
            bool is_repeating);
  ~MockTimer() override;

  // base::Timer implementation.
  bool IsRunning() const override;
  base::TimeDelta GetCurrentDelay() const override;
  void Start(const Location& posted_from,
             base::TimeDelta delay,
             const base::Closure& user_task) override;
  void Stop() override;
  void Reset() override;

  // Testing methods.
  void Fire();

 private:
  base::Closure user_task_;
  TimeDelta delay_;
  bool is_running_;
};

}  // namespace base

#endif  // BASE_TIMER_MOCK_TIMER_H_
