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"
10 PendingTask::PendingTask() = default;
12 PendingTask::PendingTask(const Location& posted_from,
15 TimeTicks delayed_run_time,
17 subtle::DelayPolicy delay_policy)
18 : task(std::move(task)),
19 posted_from(posted_from),
20 queue_time(queue_time),
21 delayed_run_time(delayed_run_time),
23 delay_policy(delay_policy) {}
25 PendingTask::PendingTask(PendingTask&& other) = default;
27 PendingTask::~PendingTask() = default;
29 PendingTask& PendingTask::operator=(PendingTask&& other) = default;
31 TimeTicks PendingTask::GetDesiredExecutionTime() const {
32 if (!delayed_run_time.is_null())
33 return delayed_run_time;
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;
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;