[email protected] | dd1f9fe | 2011-11-15 23:36:30 | [diff] [blame] | 1 | // Copyright (c) 2011 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 "base/pending_task.h" |
| 6 | |
[email protected] | dd1f9fe | 2011-11-15 23:36:30 | [diff] [blame] | 7 | |
| 8 | namespace base { |
| 9 | |
Jesse McKenna | 9cf1137 | 2018-11-01 19:38:38 | [diff] [blame] | 10 | PendingTask::PendingTask() = default; |
| 11 | |
Brett Wilson | 8e88b31 | 2017-09-12 05:22:16 | [diff] [blame] | 12 | PendingTask::PendingTask(const Location& posted_from, |
tzik | 739ffe3 | 2016-10-14 14:34:58 | [diff] [blame] | 13 | OnceClosure task, |
Etienne Pierre-doray | 69f30c8 | 2021-04-27 20:50:37 | [diff] [blame] | 14 | TimeTicks queue_time, |
Etienne Pierre-doray | 6fcfc787 | 2022-04-26 15:56:00 | [diff] [blame] | 15 | TimeTicks delayed_run_time, |
| 16 | TimeDelta leeway, |
| 17 | subtle::DelayPolicy delay_policy) |
Brett Wilson | b57e3dd | 2017-09-08 00:47:49 | [diff] [blame] | 18 | : task(std::move(task)), |
[email protected] | dd1f9fe | 2011-11-15 23:36:30 | [diff] [blame] | 19 | posted_from(posted_from), |
Etienne Pierre-doray | 69f30c8 | 2021-04-27 20:50:37 | [diff] [blame] | 20 | queue_time(queue_time), |
Etienne Pierre-doray | 6fcfc787 | 2022-04-26 15:56:00 | [diff] [blame] | 21 | delayed_run_time(delayed_run_time), |
| 22 | leeway(leeway), |
| 23 | delay_policy(delay_policy) {} |
[email protected] | dd1f9fe | 2011-11-15 23:36:30 | [diff] [blame] | 24 | |
tzik | b6769d5 | 2016-07-07 20:20:06 | [diff] [blame] | 25 | PendingTask::PendingTask(PendingTask&& other) = default; |
vmpstr | 7c787706 | 2016-02-18 22:12:24 | [diff] [blame] | 26 | |
Chris Watkins | bb7211c | 2017-11-29 07:16:38 | [diff] [blame] | 27 | PendingTask::~PendingTask() = default; |
[email protected] | dd1f9fe | 2011-11-15 23:36:30 | [diff] [blame] | 28 | |
tzik | b6769d5 | 2016-07-07 20:20:06 | [diff] [blame] | 29 | PendingTask& PendingTask::operator=(PendingTask&& other) = default; |
| 30 | |
Etienne Pierre-doray | 69f30c8 | 2021-04-27 20:50:37 | [diff] [blame] | 31 | TimeTicks PendingTask::GetDesiredExecutionTime() const { |
| 32 | if (!delayed_run_time.is_null()) |
| 33 | return delayed_run_time; |
| 34 | return queue_time; |
| 35 | } |
| 36 | |
Etienne Pierre-doray | 6fcfc787 | 2022-04-26 15:56:00 | [diff] [blame] | 37 | TimeTicks PendingTask::earliest_delayed_run_time() const { |
| 38 | DCHECK(!delayed_run_time.is_null()); |
| 39 | if (delay_policy == subtle::DelayPolicy::kFlexiblePreferEarly) |
| 40 | return delayed_run_time - leeway; |
| 41 | return delayed_run_time; |
| 42 | } |
| 43 | |
| 44 | TimeTicks PendingTask::latest_delayed_run_time() const { |
| 45 | DCHECK(!delayed_run_time.is_null()); |
| 46 | if (delay_policy == subtle::DelayPolicy::kFlexibleNoSooner) |
| 47 | return delayed_run_time + leeway; |
| 48 | return delayed_run_time; |
| 49 | } |
| 50 | |
[email protected] | dd1f9fe | 2011-11-15 23:36:30 | [diff] [blame] | 51 | } // namespace base |