#include "base/task/thread_pool/test_utils.h"
#include <utility>
#include "base/check.h"
#include "base/debug/leak_annotations.h"
#include "base/functional/bind.h"
#include "base/functional/overloaded.h"
#include "base/memory/raw_ptr.h"
#include "base/synchronization/condition_variable.h"
#include "base/task/thread_pool/pooled_parallel_task_runner.h"
#include "base/task/thread_pool/pooled_sequenced_task_runner.h"
#include "base/test/bind.h"
#include "base/threading/scoped_blocking_call_internal.h"
#include "base/threading/thread_restrictions.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/abseil-cpp/absl/types/variant.h"
namespace base {
namespace internal {
namespace test {
namespace {
class MockJobTaskRunner : public TaskRunner { … };
bool MockJobTaskRunner::PostDelayedTask(const Location& from_here,
OnceClosure closure,
TimeDelta delay) { … }
scoped_refptr<TaskRunner> CreateJobTaskRunner(
const TaskTraits& traits,
MockPooledTaskRunnerDelegate* mock_pooled_task_runner_delegate) { … }
}
MockWorkerThreadObserver::MockWorkerThreadObserver()
: … { … }
MockWorkerThreadObserver::~MockWorkerThreadObserver() { … }
void MockWorkerThreadObserver::AllowCallsOnMainExit(int num_calls) { … }
void MockWorkerThreadObserver::WaitCallsOnMainExit() { … }
void MockWorkerThreadObserver::OnWorkerThreadMainExit() { … }
scoped_refptr<Sequence> CreateSequenceWithTask(
Task task,
const TaskTraits& traits,
scoped_refptr<SequencedTaskRunner> task_runner,
TaskSourceExecutionMode execution_mode) { … }
scoped_refptr<TaskRunner> CreatePooledTaskRunnerWithExecutionMode(
TaskSourceExecutionMode execution_mode,
MockPooledTaskRunnerDelegate* mock_pooled_task_runner_delegate,
const TaskTraits& traits) { … }
scoped_refptr<TaskRunner> CreatePooledTaskRunner(
const TaskTraits& traits,
MockPooledTaskRunnerDelegate* mock_pooled_task_runner_delegate) { … }
scoped_refptr<SequencedTaskRunner> CreatePooledSequencedTaskRunner(
const TaskTraits& traits,
MockPooledTaskRunnerDelegate* mock_pooled_task_runner_delegate) { … }
MockPooledTaskRunnerDelegate::MockPooledTaskRunnerDelegate(
TrackedRef<TaskTracker> task_tracker,
DelayedTaskManager* delayed_task_manager)
: … { … }
MockPooledTaskRunnerDelegate::~MockPooledTaskRunnerDelegate() = default;
bool MockPooledTaskRunnerDelegate::PostTaskWithSequence(
Task task,
scoped_refptr<Sequence> sequence) { … }
void MockPooledTaskRunnerDelegate::PostTaskWithSequenceNow(
Task task,
scoped_refptr<Sequence> sequence) { … }
bool MockPooledTaskRunnerDelegate::ShouldYield(const TaskSource* task_source) { … }
bool MockPooledTaskRunnerDelegate::EnqueueJobTaskSource(
scoped_refptr<JobTaskSource> task_source) { … }
void MockPooledTaskRunnerDelegate::RemoveJobTaskSource(
scoped_refptr<JobTaskSource> task_source) { … }
void MockPooledTaskRunnerDelegate::UpdatePriority(
scoped_refptr<TaskSource> task_source,
TaskPriority priority) { … }
void MockPooledTaskRunnerDelegate::UpdateJobPriority(
scoped_refptr<TaskSource> task_source,
TaskPriority priority) { … }
void MockPooledTaskRunnerDelegate::SetThreadGroup(ThreadGroup* thread_group) { … }
MockJobTask::~MockJobTask() = default;
MockJobTask::MockJobTask(
base::RepeatingCallback<void(JobDelegate*)> worker_task,
size_t num_tasks_to_run)
: … { … }
MockJobTask::MockJobTask(base::OnceClosure worker_task)
: … { … }
void MockJobTask::SetNumTasksToRun(size_t num_tasks_to_run) { … }
size_t MockJobTask::GetMaxConcurrency(size_t ) const { … }
void MockJobTask::Run(JobDelegate* delegate) { … }
scoped_refptr<JobTaskSource> MockJobTask::GetJobTaskSource(
const Location& from_here,
const TaskTraits& traits,
PooledTaskRunnerDelegate* delegate) { … }
RegisteredTaskSource QueueAndRunTaskSource(
TaskTracker* task_tracker,
scoped_refptr<TaskSource> task_source) { … }
void ShutdownTaskTracker(TaskTracker* task_tracker) { … }
}
}
}