| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/task/sequence_manager/fence.h" |
| |
| #include "base/check.h" |
| #include "base/json/values_util.h" |
| #include "base/task/sequence_manager/enqueue_order.h" |
| #include "base/task/sequence_manager/task_order.h" |
| #include "base/time/time.h" |
| #include "base/values.h" |
| |
| namespace base { |
| namespace sequence_manager { |
| namespace internal { |
| |
| Fence::Fence(const TaskOrder& task_order) : task_order_(task_order) { |
| DCHECK_NE(task_order_.enqueue_order(), EnqueueOrder::none()); |
| } |
| |
| Fence::Fence(EnqueueOrder enqueue_order, |
| TimeTicks delayed_run_time, |
| int sequence_num) |
| : task_order_(enqueue_order, delayed_run_time, sequence_num) {} |
| |
| Fence::Fence(const Fence& other) = default; |
| |
| Fence& Fence::operator=(const Fence& other) = default; |
| |
| Fence::~Fence() = default; |
| |
| // static |
| Fence Fence::BlockingFence() { |
| return CreateWithEnqueueOrder(EnqueueOrder::blocking_fence()); |
| } |
| |
| // static |
| Fence Fence::CreateWithEnqueueOrder(EnqueueOrder enqueue_order) { |
| return Fence(enqueue_order, TimeTicks(), 0); |
| } |
| |
| } // namespace internal |
| } // namespace sequence_manager |
| } // namespace base |