#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_manager.h"
#include <algorithm>
#include "base/task/sequence_manager/task_queue.h"
#include "base/task/single_thread_task_runner.h"
#include "third_party/blink/renderer/platform/scheduler/common/task_priority.h"
#include "third_party/blink/renderer/platform/scheduler/test/fuzzer/thread_pool_manager.h"
namespace base {
namespace sequence_manager {
namespace {
blink::scheduler::TaskPriority ToTaskQueuePriority(
SequenceManagerTestDescription::QueuePriority priority) { … }
}
ThreadManager::ThreadManager(base::TimeTicks initial_time,
SequenceManagerFuzzerProcessor* processor)
: … { … }
ThreadManager::~ThreadManager() = default;
base::TimeTicks ThreadManager::NowTicks() { … }
base::TimeDelta ThreadManager::NextPendingTaskDelay() { … }
void ThreadManager::AdvanceMockTickClock(base::TimeDelta delta) { … }
void ThreadManager::ExecuteThread(
const google::protobuf::RepeatedPtrField<
SequenceManagerTestDescription::Action>& initial_thread_actions) { … }
void ThreadManager::RunAction(
const SequenceManagerTestDescription::Action& action) { … }
void ThreadManager::ExecuteCreateThreadAction(
uint64_t action_id,
const SequenceManagerTestDescription::CreateThreadAction& action) { … }
void ThreadManager::ExecuteCreateTaskQueueAction(
uint64_t action_id,
const SequenceManagerTestDescription::CreateTaskQueueAction& action) { … }
void ThreadManager::ExecutePostDelayedTaskAction(
uint64_t action_id,
const SequenceManagerTestDescription::PostDelayedTaskAction& action) { … }
void ThreadManager::ExecuteCrossThreadPostDelayedTaskAction(
uint64_t action_id,
const SequenceManagerTestDescription::CrossThreadPostDelayedTaskAction&
action) { … }
void ThreadManager::PostDelayedTask(
uint64_t task_queue_id,
uint32_t delay_ms,
const SequenceManagerTestDescription::Task& task) { … }
void ThreadManager::ExecuteSetQueuePriorityAction(
uint64_t action_id,
const SequenceManagerTestDescription::SetQueuePriorityAction& action) { … }
void ThreadManager::ExecuteSetQueueEnabledAction(
uint64_t action_id,
const SequenceManagerTestDescription::SetQueueEnabledAction& action) { … }
void ThreadManager::ExecuteCreateQueueVoterAction(
uint64_t action_id,
const SequenceManagerTestDescription::CreateQueueVoterAction& action) { … }
void ThreadManager::ExecuteShutdownTaskQueueAction(
uint64_t action_id,
const SequenceManagerTestDescription::ShutdownTaskQueueAction& action) { … }
void ThreadManager::ExecuteCancelTaskAction(
uint64_t action_id,
const SequenceManagerTestDescription::CancelTaskAction& action) { … }
void ThreadManager::ExecuteInsertFenceAction(
uint64_t action_id,
const SequenceManagerTestDescription::InsertFenceAction& action) { … }
void ThreadManager::ExecuteRemoveFenceAction(
uint64_t action_id,
const SequenceManagerTestDescription::RemoveFenceAction& action) { … }
void ThreadManager::ExecuteTask(
const SequenceManagerTestDescription::Task& task) { … }
void ThreadManager::DeleteTask(Task* task) { … }
scoped_refptr<TaskQueueWithVoters> ThreadManager::GetTaskQueueFor(
uint64_t task_queue_id) { … }
scoped_refptr<SingleThreadTaskRunner> ThreadManager::GetTaskRunnerFor(
uint64_t task_queue_id) { … }
const Vector<SequenceManagerFuzzerProcessor::TaskForTest>&
ThreadManager::ordered_tasks() const { … }
const Vector<SequenceManagerFuzzerProcessor::ActionForTest>&
ThreadManager::ordered_actions() const { … }
ThreadManager::Task::Task(ThreadManager* thread_manager)
: … { … }
void ThreadManager::Task::Execute(
const SequenceManagerTestDescription::Task& task) { … }
}
}