1 // Copyright 2011 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/pending_task.h"
7 #include "base/task/task_features.h"
11 PendingTask::PendingTask() = default;
13 PendingTask::PendingTask(const Location& posted_from,
16 TimeTicks delayed_run_time,
18 subtle::DelayPolicy delay_policy)
19 : task(std::move(task)),
20 posted_from(posted_from),
21 queue_time(queue_time),
22 delayed_run_time(delayed_run_time),
24 delay_policy(delay_policy) {}
26 PendingTask::PendingTask(PendingTask&& other) = default;
28 PendingTask::~PendingTask() = default;
30 PendingTask& PendingTask::operator=(PendingTask&& other) = default;
32 TimeTicks PendingTask::GetDesiredExecutionTime() const {
33 if (!delayed_run_time.is_null())
34 return delayed_run_time;
38 TimeTicks PendingTask::earliest_delayed_run_time() const {
39 DCHECK(!delayed_run_time.is_null());
40 if (delay_policy == subtle::DelayPolicy::kFlexiblePreferEarly)
41 return delayed_run_time - leeway;
42 return delayed_run_time;
45 TimeTicks PendingTask::latest_delayed_run_time() const {
46 DCHECK(!delayed_run_time.is_null());
47 if (delay_policy == subtle::DelayPolicy::kFlexibleNoSooner)
48 return delayed_run_time + leeway;
49 return delayed_run_time;