1 // Copyright 2021 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/sequence_manager/fence.h" 6 7 #include "base/check.h" 8 #include "base/json/values_util.h" 9 #include "base/task/sequence_manager/enqueue_order.h" 10 #include "base/task/sequence_manager/task_order.h" 11 #include "base/time/time.h" 12 #include "base/values.h" 13 14 namespace base { 15 namespace sequence_manager { 16 namespace internal { 17 Fence(const TaskOrder & task_order)18Fence::Fence(const TaskOrder& task_order) : task_order_(task_order) { 19 DCHECK_NE(task_order_.enqueue_order(), EnqueueOrder::none()); 20 } 21 Fence(EnqueueOrder enqueue_order,TimeTicks delayed_run_time,int sequence_num)22Fence::Fence(EnqueueOrder enqueue_order, 23 TimeTicks delayed_run_time, 24 int sequence_num) 25 : task_order_(enqueue_order, delayed_run_time, sequence_num) {} 26 27 Fence::Fence(const Fence& other) = default; 28 29 Fence& Fence::operator=(const Fence& other) = default; 30 31 Fence::~Fence() = default; 32 33 // static BlockingFence()34Fence Fence::BlockingFence() { 35 return CreateWithEnqueueOrder(EnqueueOrder::blocking_fence()); 36 } 37 38 // static CreateWithEnqueueOrder(EnqueueOrder enqueue_order)39Fence Fence::CreateWithEnqueueOrder(EnqueueOrder enqueue_order) { 40 return Fence(enqueue_order, TimeTicks(), 0); 41 } 42 43 } // namespace internal 44 } // namespace sequence_manager 45 } // namespace base 46