| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| #ifndef CHROME_BROWSER_ASH_PERFORMANCE_PAUSABLE_TIMER_H_ |
| #define CHROME_BROWSER_ASH_PERFORMANCE_PAUSABLE_TIMER_H_ |
| #include "base/time/time.h" |
| #include "base/timer/timer.h" |
| // A pausable timer that tracks an elapsed duration before calling a |
| PausableTimer(const PausableTimer&) = delete; |
| PausableTimer& operator=(const PausableTimer&) = delete; |
| void Start(base::OnceClosure callback); |
| bool IsRunning() const { return timer_.IsRunning(); } |
| void set_remaining_duration(base::TimeDelta duration); |
| base::TimeDelta get_remaining_duration() const { return remaining_duration_; } |
| base::OneShotTimer timer_; |
| base::TimeTicks last_started_; |
| base::TimeDelta remaining_duration_; |
| #endif // CHROME_BROWSER_ASH_PERFORMANCE_PAUSABLE_TIMER_H_ |