1 // Copyright 2016 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/task/thread_pool/task.h"
6
7 #include <utility>
8
9 namespace base {
10 namespace internal {
11
Task(const Location & posted_from,OnceClosure task,TimeTicks queue_time,TimeDelta delay,TimeDelta leeway,int sequence_num)12 Task::Task(const Location& posted_from,
13 OnceClosure task,
14 TimeTicks queue_time,
15 TimeDelta delay,
16 TimeDelta leeway,
17 int sequence_num)
18 : Task(posted_from,
19 std::move(task),
20 queue_time,
21 delay.is_zero() ? TimeTicks() : queue_time + delay,
22 leeway,
23 subtle::DelayPolicy::kFlexibleNoSooner,
24 sequence_num) {}
25
Task(const Location & posted_from,OnceClosure task,TimeTicks queue_time,TimeTicks delayed_run_time,TimeDelta leeway,subtle::DelayPolicy delay_policy,int sequence_num)26 Task::Task(const Location& posted_from,
27 OnceClosure task,
28 TimeTicks queue_time,
29 TimeTicks delayed_run_time,
30 TimeDelta leeway,
31 subtle::DelayPolicy delay_policy,
32 int sequence_num)
33 : PendingTask(posted_from,
34 std::move(task),
35 queue_time,
36 delayed_run_time,
37 leeway,
38 delay_policy) {
39 this->sequence_num = sequence_num;
40 }
41
Task(const TaskMetadata & metadata,OnceClosure task)42 Task::Task(const TaskMetadata& metadata, OnceClosure task)
43 : PendingTask(metadata, std::move(task)) {}
44
45 // This should be "= default but MSVC has trouble with "noexcept = default" in
46 // this case.
Task(Task && other)47 Task::Task(Task&& other) noexcept : PendingTask(std::move(other)) {}
48
49 Task& Task::operator=(Task&& other) = default;
50
51 } // namespace internal
52 } // namespace base
53