blob: b74e8258646ebbee1d7f9b103b4a581bfc12f5da [file] [log] [blame]
[email protected]dd1f9fe2011-11-15 23:36:301// 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]dd1f9fe2011-11-15 23:36:307
8namespace base {
9
Jesse McKenna9cf11372018-11-01 19:38:3810PendingTask::PendingTask() = default;
11
Brett Wilson8e88b312017-09-12 05:22:1612PendingTask::PendingTask(const Location& posted_from,
tzik739ffe32016-10-14 14:34:5813 OnceClosure task,
Etienne Pierre-doray69f30c82021-04-27 20:50:3714 TimeTicks queue_time,
Etienne Pierre-doray6fcfc7872022-04-26 15:56:0015 TimeTicks delayed_run_time,
16 TimeDelta leeway,
17 subtle::DelayPolicy delay_policy)
Brett Wilsonb57e3dd2017-09-08 00:47:4918 : task(std::move(task)),
[email protected]dd1f9fe2011-11-15 23:36:3019 posted_from(posted_from),
Etienne Pierre-doray69f30c82021-04-27 20:50:3720 queue_time(queue_time),
Etienne Pierre-doray6fcfc7872022-04-26 15:56:0021 delayed_run_time(delayed_run_time),
22 leeway(leeway),
23 delay_policy(delay_policy) {}
[email protected]dd1f9fe2011-11-15 23:36:3024
tzikb6769d52016-07-07 20:20:0625PendingTask::PendingTask(PendingTask&& other) = default;
vmpstr7c7877062016-02-18 22:12:2426
Chris Watkinsbb7211c2017-11-29 07:16:3827PendingTask::~PendingTask() = default;
[email protected]dd1f9fe2011-11-15 23:36:3028
tzikb6769d52016-07-07 20:20:0629PendingTask& PendingTask::operator=(PendingTask&& other) = default;
30
Etienne Pierre-doray69f30c82021-04-27 20:50:3731TimeTicks PendingTask::GetDesiredExecutionTime() const {
32 if (!delayed_run_time.is_null())
33 return delayed_run_time;
34 return queue_time;
35}
36
Etienne Pierre-doray6fcfc7872022-04-26 15:56:0037TimeTicks 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
44TimeTicks 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]dd1f9fe2011-11-15 23:36:3051} // namespace base