// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_TASK_THREAD_POOL_CAN_RUN_POLICY_TEST_H_ #define BASE_TASK_THREAD_POOL_CAN_RUN_POLICY_TEST_H_ #include "base/synchronization/atomic_flag.h" #include "base/task/task_runner.h" #include "base/task/thread_pool/task_tracker.h" #include "base/task/thread_pool/test_utils.h" #include "base/test/bind.h" #include "base/test/test_timeouts.h" #include "base/test/test_waitable_event.h" #include "base/threading/platform_thread.h" #include "build/build_config.h" namespace base { namespace internal { namespace test { // Verify that tasks only run when allowed by the CanRunPolicy. |target| is the // object on which DidUpdateCanRunPolicy() must be called after updating the // CanRunPolicy in |task_tracker|. |create_task_runner| is a function that // receives a TaskPriority and returns a TaskRunner. |task_tracker| is the // TaskTracker. template <typename Target, typename CreateTaskRunner> void TestCanRunPolicyBasic(Target* target, CreateTaskRunner create_task_runner, TaskTracker* task_tracker) { … } // Verify that if a task was allowed to run by the CanRunPolicy when it was // posted, but the CanRunPolicy is updated to disallow it from running before it // starts running, it doesn't run. |target| is the object on which // DidUpdateCanRunPolicy() must be called after updating the CanRunPolicy in // |task_tracker|. |create_task_runner| is a function that receives a // TaskPriority and returns a *Sequenced*TaskRunner. |task_tracker| is the // TaskTracker. template <typename Target, typename CreateTaskRunner> void TestCanRunPolicyChangedBeforeRun(Target* target, CreateTaskRunner create_task_runner, TaskTracker* task_tracker) { … } // Regression test for https://crbug.com/950383 template <typename Target, typename CreateTaskRunner> void TestCanRunPolicyLoad(Target* target, CreateTaskRunner create_task_runner, TaskTracker* task_tracker) { … } } // namespace test } // namespace internal } // namespace base #endif // BASE_TASK_THREAD_POOL_CAN_RUN_POLICY_TEST_H_