fixup! [M120 Migration] Notify media device state to webbrowser
[platform/framework/web/chromium-efl.git] / base / pending_task.cc
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.
4
5 #include "base/pending_task.h"
6
7 #include "base/task/task_features.h"
8
9 namespace base {
10
11 PendingTask::PendingTask() = default;
12
13 PendingTask::PendingTask(const Location& posted_from,
14                          OnceClosure task,
15                          TimeTicks queue_time,
16                          TimeTicks delayed_run_time,
17                          TimeDelta leeway,
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),
23       leeway(leeway),
24       delay_policy(delay_policy) {}
25
26 PendingTask::PendingTask(PendingTask&& other) = default;
27
28 PendingTask::~PendingTask() = default;
29
30 PendingTask& PendingTask::operator=(PendingTask&& other) = default;
31
32 TimeTicks PendingTask::GetDesiredExecutionTime() const {
33   if (!delayed_run_time.is_null())
34     return delayed_run_time;
35   return queue_time;
36 }
37
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;
43 }
44
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;
50 }
51
52 }  // namespace base