// 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/test/simple_test_tick_clock.h"
#include "base/timer/timer.h"

namespace base {

class TestSimpleTaskRunner;

// A mock implementation of base::Timer which requires being explicitly
// Fire()'d.
// Prefer using ScopedTaskEnvironment::MOCK_TIME + FastForward*() to this when
// possible.
class MockOneShotTimer : public OneShotTimer {
 public:
  MockOneShotTimer();
  ~MockOneShotTimer() override;

  // Testing method.
  void Fire();

 private:
  // Timer implementation.
  // MockOneShotTimer doesn't support SetTaskRunner. Do not use this.
  void SetTaskRunner(scoped_refptr<SequencedTaskRunner> task_runner) override;

  SimpleTestTickClock clock_;
  scoped_refptr<TestSimpleTaskRunner> test_task_runner_;
};

// See MockOneShotTimer's comment. Prefer using
// ScopedTaskEnvironment::MOCK_TIME.
class MockRepeatingTimer : public RepeatingTimer {
 public:
  MockRepeatingTimer();
  ~MockRepeatingTimer() override;

  // Testing method.
  void Fire();

 private:
  // Timer implementation.
  // MockRepeatingTimer doesn't support SetTaskRunner. Do not use this.
  void SetTaskRunner(scoped_refptr<SequencedTaskRunner> task_runner) override;

  SimpleTestTickClock clock_;
  scoped_refptr<TestSimpleTaskRunner> test_task_runner_;
};

// See MockOneShotTimer'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_
