timer.cc 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Copyright 2015 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/component_updater/timer.h"
  5. #include "base/bind.h"
  6. #include "base/location.h"
  7. namespace component_updater {
  8. Timer::Timer() = default;
  9. Timer::~Timer() {
  10. DCHECK(thread_checker_.CalledOnValidThread());
  11. Stop();
  12. }
  13. void Timer::Start(base::TimeDelta initial_delay,
  14. base::TimeDelta delay,
  15. const base::RepeatingClosure& user_task) {
  16. DCHECK(thread_checker_.CalledOnValidThread());
  17. delay_ = delay;
  18. user_task_ = user_task;
  19. timer_.Start(FROM_HERE, initial_delay,
  20. base::BindOnce(&Timer::OnDelay, base::Unretained(this)));
  21. }
  22. void Timer::Stop() {
  23. DCHECK(thread_checker_.CalledOnValidThread());
  24. timer_.Stop();
  25. }
  26. void Timer::OnDelay() {
  27. DCHECK(thread_checker_.CalledOnValidThread());
  28. user_task_.Run();
  29. timer_.Start(FROM_HERE, delay_,
  30. base::BindOnce(&Timer::OnDelay, base::Unretained(this)));
  31. }
  32. } // namespace component_updater