sorin | 7c71762 | 2015-05-26 19:59:09 | [diff] [blame] | 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 | |
| 5 | #include "components/component_updater/timer.h" |
| 6 | |
| 7 | #include "base/bind.h" |
sorin | 7c71762 | 2015-05-26 19:59:09 | [diff] [blame] | 8 | #include "base/location.h" |
| 9 | |
| 10 | namespace component_updater { |
| 11 | |
tzik | 32768d5 | 2018-07-10 01:08:32 | [diff] [blame] | 12 | Timer::Timer() {} |
sorin | 7c71762 | 2015-05-26 19:59:09 | [diff] [blame] | 13 | |
| 14 | Timer::~Timer() { |
| 15 | DCHECK(thread_checker_.CalledOnValidThread()); |
| 16 | Stop(); |
| 17 | } |
| 18 | |
| 19 | void Timer::Start(base::TimeDelta initial_delay, |
| 20 | base::TimeDelta delay, |
| 21 | const base::Closure& user_task) { |
| 22 | DCHECK(thread_checker_.CalledOnValidThread()); |
| 23 | |
| 24 | delay_ = delay; |
| 25 | user_task_ = user_task; |
| 26 | |
| 27 | timer_.Start(FROM_HERE, initial_delay, |
tzik | 2bcf8e4 | 2018-07-31 11:22:15 | [diff] [blame] | 28 | base::BindOnce(&Timer::OnDelay, base::Unretained(this))); |
sorin | 7c71762 | 2015-05-26 19:59:09 | [diff] [blame] | 29 | } |
| 30 | |
| 31 | void Timer::Stop() { |
| 32 | DCHECK(thread_checker_.CalledOnValidThread()); |
| 33 | timer_.Stop(); |
| 34 | } |
| 35 | |
| 36 | void Timer::OnDelay() { |
| 37 | DCHECK(thread_checker_.CalledOnValidThread()); |
| 38 | |
| 39 | user_task_.Run(); |
| 40 | |
| 41 | timer_.Start(FROM_HERE, delay_, |
tzik | 2bcf8e4 | 2018-07-31 11:22:15 | [diff] [blame] | 42 | base::BindOnce(&Timer::OnDelay, base::Unretained(this))); |
sorin | 7c71762 | 2015-05-26 19:59:09 | [diff] [blame] | 43 | } |
| 44 | |
| 45 | } // namespace component_updater |