Index: base/task_scheduler/task_tracker_unittest.cc |
diff --git a/base/task_scheduler/task_tracker_unittest.cc b/base/task_scheduler/task_tracker_unittest.cc |
index e1596f7b51fdb3d5df92f687c14656b5dbd398ff..4d3d94f4313f60233d505eb5535515697c221ce5 100644 |
--- a/base/task_scheduler/task_tracker_unittest.cc |
+++ b/base/task_scheduler/task_tracker_unittest.cc |
@@ -27,6 +27,7 @@ |
#include "base/task_scheduler/scheduler_lock.h" |
#include "base/task_scheduler/task.h" |
#include "base/task_scheduler/task_traits.h" |
+#include "base/task_scheduler/test_utils.h" |
#include "base/test/gtest_util.h" |
#include "base/test/histogram_tester.h" |
#include "base/test/test_simple_task_runner.h" |
@@ -149,7 +150,8 @@ class TaskSchedulerTaskTrackerTest |
return MakeUnique<Task>( |
FROM_HERE, |
Bind(&TaskSchedulerTaskTrackerTest::RunTaskCallback, Unretained(this)), |
- TaskTraits().WithShutdownBehavior(shutdown_behavior), TimeDelta()); |
+ test::CreateTaskTraits().WithShutdownBehavior(shutdown_behavior), |
+ TimeDelta()); |
} |
// Calls tracker_->Shutdown() on a new thread. When this returns, Shutdown() |
@@ -277,7 +279,8 @@ TEST_P(TaskSchedulerTaskTrackerTest, WillPostAndRunLongTaskBeforeShutdown) { |
task_barrier->Wait(); |
}, |
Unretained(&task_running), base::Unretained(&task_barrier)), |
- TaskTraits().WithBaseSyncPrimitives().WithShutdownBehavior(GetParam()), |
+ test::CreateTaskTraits().WithBaseSyncPrimitives().WithShutdownBehavior( |
+ GetParam()), |
TimeDelta()); |
// Inform |task_tracker_| that |blocked_task| will be posted. |
@@ -427,9 +430,9 @@ TEST_P(TaskSchedulerTaskTrackerTest, SingletonAllowed) { |
(GetParam() != TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN); |
TaskTracker tracker; |
- std::unique_ptr<Task> task( |
- new Task(FROM_HERE, BindOnce(&ThreadRestrictions::AssertSingletonAllowed), |
- TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta())); |
+ std::unique_ptr<Task> task(new Task( |
+ FROM_HERE, BindOnce(&ThreadRestrictions::AssertSingletonAllowed), |
+ test::CreateTaskTraits().WithShutdownBehavior(GetParam()), TimeDelta())); |
EXPECT_TRUE(tracker.WillPostTask(task.get())); |
// Set the singleton allowed bit to the opposite of what it is expected to be |
@@ -458,7 +461,8 @@ TEST_P(TaskSchedulerTaskTrackerTest, IOAllowed) { |
// Shouldn't fail. |
ThreadRestrictions::AssertIOAllowed(); |
}), |
- TaskTraits().MayBlock().WithShutdownBehavior(GetParam()), TimeDelta()); |
+ test::CreateTaskTraits().MayBlock().WithShutdownBehavior(GetParam()), |
+ TimeDelta()); |
EXPECT_TRUE(tracker.WillPostTask(task_with_may_block.get())); |
tracker.RunTask(std::move(task_with_may_block), SequenceToken::Create()); |
@@ -469,7 +473,7 @@ TEST_P(TaskSchedulerTaskTrackerTest, IOAllowed) { |
FROM_HERE, Bind([]() { |
EXPECT_DCHECK_DEATH({ ThreadRestrictions::AssertIOAllowed(); }); |
}), |
- TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
+ test::CreateTaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
EXPECT_TRUE(tracker.WillPostTask(task_without_may_block.get())); |
tracker.RunTask(std::move(task_without_may_block), SequenceToken::Create()); |
} |
@@ -501,9 +505,9 @@ static void VerifyNoTaskRunnerHandle() { |
TEST_P(TaskSchedulerTaskTrackerTest, TaskRunnerHandleIsNotSetOnParallel) { |
// Create a task that will verify that TaskRunnerHandles are not set in its |
// scope per no TaskRunner ref being set to it. |
- std::unique_ptr<Task> verify_task( |
- new Task(FROM_HERE, BindOnce(&VerifyNoTaskRunnerHandle), |
- TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta())); |
+ std::unique_ptr<Task> verify_task(new Task( |
+ FROM_HERE, BindOnce(&VerifyNoTaskRunnerHandle), |
+ test::CreateTaskTraits().WithShutdownBehavior(GetParam()), TimeDelta())); |
RunTaskRunnerHandleVerificationTask(&tracker_, std::move(verify_task)); |
} |
@@ -522,11 +526,11 @@ TEST_P(TaskSchedulerTaskTrackerTest, |
// Create a task that will verify that SequencedTaskRunnerHandle is properly |
// set to |test_task_runner| in its scope per |sequenced_task_runner_ref| |
// being set to it. |
- std::unique_ptr<Task> verify_task( |
- new Task(FROM_HERE, |
- BindOnce(&VerifySequencedTaskRunnerHandle, |
- base::Unretained(test_task_runner.get())), |
- TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta())); |
+ std::unique_ptr<Task> verify_task(new Task( |
+ FROM_HERE, |
+ BindOnce(&VerifySequencedTaskRunnerHandle, |
+ base::Unretained(test_task_runner.get())), |
+ test::CreateTaskTraits().WithShutdownBehavior(GetParam()), TimeDelta())); |
verify_task->sequenced_task_runner_ref = test_task_runner; |
RunTaskRunnerHandleVerificationTask(&tracker_, std::move(verify_task)); |
@@ -548,20 +552,20 @@ TEST_P(TaskSchedulerTaskTrackerTest, |
// Create a task that will verify that ThreadTaskRunnerHandle is properly set |
// to |test_task_runner| in its scope per |single_thread_task_runner_ref| |
// being set on it. |
- std::unique_ptr<Task> verify_task( |
- new Task(FROM_HERE, |
- BindOnce(&VerifyThreadTaskRunnerHandle, |
- base::Unretained(test_task_runner.get())), |
- TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta())); |
+ std::unique_ptr<Task> verify_task(new Task( |
+ FROM_HERE, |
+ BindOnce(&VerifyThreadTaskRunnerHandle, |
+ base::Unretained(test_task_runner.get())), |
+ test::CreateTaskTraits().WithShutdownBehavior(GetParam()), TimeDelta())); |
verify_task->single_thread_task_runner_ref = test_task_runner; |
RunTaskRunnerHandleVerificationTask(&tracker_, std::move(verify_task)); |
} |
TEST_P(TaskSchedulerTaskTrackerTest, FlushPendingDelayedTask) { |
- const Task delayed_task(FROM_HERE, BindOnce(&DoNothing), |
- TaskTraits().WithShutdownBehavior(GetParam()), |
- TimeDelta::FromDays(1)); |
+ Task delayed_task(FROM_HERE, BindOnce(&DoNothing), |
+ test::CreateTaskTraits().WithShutdownBehavior(GetParam()), |
+ TimeDelta::FromDays(1)); |
tracker_.WillPostTask(&delayed_task); |
// Flush() should return even if the delayed task didn't run. |
tracker_.Flush(); |
@@ -570,7 +574,7 @@ TEST_P(TaskSchedulerTaskTrackerTest, FlushPendingDelayedTask) { |
TEST_P(TaskSchedulerTaskTrackerTest, FlushPendingUndelayedTask) { |
auto undelayed_task = base::MakeUnique<Task>( |
FROM_HERE, Bind(&DoNothing), |
- TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
+ test::CreateTaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
tracker_.WillPostTask(undelayed_task.get()); |
// Flush() shouldn't return before the undelayed task runs. |
@@ -586,7 +590,7 @@ TEST_P(TaskSchedulerTaskTrackerTest, FlushPendingUndelayedTask) { |
TEST_P(TaskSchedulerTaskTrackerTest, PostTaskDuringFlush) { |
auto undelayed_task = base::MakeUnique<Task>( |
FROM_HERE, Bind(&DoNothing), |
- TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
+ test::CreateTaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
tracker_.WillPostTask(undelayed_task.get()); |
// Flush() shouldn't return before the undelayed task runs. |
@@ -597,7 +601,7 @@ TEST_P(TaskSchedulerTaskTrackerTest, PostTaskDuringFlush) { |
// Simulate posting another undelayed task. |
auto other_undelayed_task = base::MakeUnique<Task>( |
FROM_HERE, Bind(&DoNothing), |
- TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
+ test::CreateTaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
tracker_.WillPostTask(other_undelayed_task.get()); |
// Run the first undelayed task. |
@@ -616,11 +620,12 @@ TEST_P(TaskSchedulerTaskTrackerTest, RunDelayedTaskDuringFlush) { |
// Simulate posting a delayed and an undelayed task. |
auto delayed_task = base::MakeUnique<Task>( |
FROM_HERE, Bind(&DoNothing), |
- TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta::FromDays(1)); |
+ test::CreateTaskTraits().WithShutdownBehavior(GetParam()), |
+ TimeDelta::FromDays(1)); |
tracker_.WillPostTask(delayed_task.get()); |
auto undelayed_task = base::MakeUnique<Task>( |
FROM_HERE, Bind(&DoNothing), |
- TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
+ test::CreateTaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
tracker_.WillPostTask(undelayed_task.get()); |
// Flush() shouldn't return before the undelayed task runs. |
@@ -650,7 +655,7 @@ TEST_P(TaskSchedulerTaskTrackerTest, FlushAfterShutdown) { |
// Simulate posting a task. |
auto undelayed_task = base::MakeUnique<Task>( |
FROM_HERE, Bind(&DoNothing), |
- TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
+ test::CreateTaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
tracker_.WillPostTask(undelayed_task.get()); |
// Shutdown() should return immediately since there are no pending |
@@ -669,7 +674,7 @@ TEST_P(TaskSchedulerTaskTrackerTest, ShutdownDuringFlush) { |
// Simulate posting a task. |
auto undelayed_task = base::MakeUnique<Task>( |
FROM_HERE, Bind(&DoNothing), |
- TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
+ test::CreateTaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()); |
tracker_.WillPostTask(undelayed_task.get()); |
// Flush() shouldn't return before the undelayed task runs or |
@@ -713,7 +718,7 @@ TEST_F(TaskSchedulerTaskTrackerTest, CurrentSequenceToken) { |
const SequenceToken sequence_token(SequenceToken::Create()); |
auto task = base::MakeUnique<Task>(FROM_HERE, |
Bind(&ExpectSequenceToken, sequence_token), |
- TaskTraits(), TimeDelta()); |
+ test::CreateTaskTraits(), TimeDelta()); |
tracker_.WillPostTask(task.get()); |
EXPECT_FALSE(SequenceToken::GetForCurrentThread().IsValid()); |
@@ -866,7 +871,7 @@ class WaitAllowedTestThread : public SimpleThread { |
FROM_HERE, Bind([]() { |
EXPECT_DCHECK_DEATH({ ThreadRestrictions::AssertWaitAllowed(); }); |
}), |
- TaskTraits(), TimeDelta()); |
+ test::CreateTaskTraits(), TimeDelta()); |
EXPECT_TRUE(tracker.WillPostTask(task_without_sync_primitives.get())); |
tracker.RunTask(std::move(task_without_sync_primitives), |
SequenceToken::Create()); |
@@ -874,12 +879,12 @@ class WaitAllowedTestThread : public SimpleThread { |
// Disallow waiting. Expect TaskTracker to allow it before running a task |
// with the WithBaseSyncPrimitives() trait. |
ThreadRestrictions::DisallowWaiting(); |
- auto task_with_sync_primitives = |
- MakeUnique<Task>(FROM_HERE, Bind([]() { |
- // Shouldn't fail. |
- ThreadRestrictions::AssertWaitAllowed(); |
- }), |
- TaskTraits().WithBaseSyncPrimitives(), TimeDelta()); |
+ auto task_with_sync_primitives = MakeUnique<Task>( |
+ FROM_HERE, Bind([]() { |
+ // Shouldn't fail. |
+ ThreadRestrictions::AssertWaitAllowed(); |
+ }), |
+ test::CreateTaskTraits().WithBaseSyncPrimitives(), TimeDelta()); |
EXPECT_TRUE(tracker.WillPostTask(task_with_sync_primitives.get())); |
tracker.RunTask(std::move(task_with_sync_primitives), |
SequenceToken::Create()); |
@@ -909,30 +914,36 @@ TEST(TaskSchedulerTaskTrackerHistogramTest, TaskLatency) { |
TaskTracker tracker; |
struct { |
- const TaskTraits traits; |
+ TaskTraits traits; |
const char* const expected_histogram; |
} tests[] = { |
- {TaskTraits().WithPriority(TaskPriority::BACKGROUND), |
+ {test::CreateTaskTraits().WithPriority(TaskPriority::BACKGROUND), |
"TaskScheduler.TaskLatency.BackgroundTaskPriority"}, |
- {TaskTraits().WithPriority(TaskPriority::BACKGROUND).MayBlock(), |
+ {test::CreateTaskTraits() |
+ .WithPriority(TaskPriority::BACKGROUND) |
+ .MayBlock(), |
"TaskScheduler.TaskLatency.BackgroundTaskPriority.MayBlock"}, |
- {TaskTraits() |
+ {test::CreateTaskTraits() |
.WithPriority(TaskPriority::BACKGROUND) |
.WithBaseSyncPrimitives(), |
"TaskScheduler.TaskLatency.BackgroundTaskPriority.MayBlock"}, |
- {TaskTraits().WithPriority(TaskPriority::USER_VISIBLE), |
+ {test::CreateTaskTraits().WithPriority(TaskPriority::USER_VISIBLE), |
"TaskScheduler.TaskLatency.UserVisibleTaskPriority"}, |
- {TaskTraits().WithPriority(TaskPriority::USER_VISIBLE).MayBlock(), |
+ {test::CreateTaskTraits() |
+ .WithPriority(TaskPriority::USER_VISIBLE) |
+ .MayBlock(), |
"TaskScheduler.TaskLatency.UserVisibleTaskPriority.MayBlock"}, |
- {TaskTraits() |
+ {test::CreateTaskTraits() |
.WithPriority(TaskPriority::USER_VISIBLE) |
.WithBaseSyncPrimitives(), |
"TaskScheduler.TaskLatency.UserVisibleTaskPriority.MayBlock"}, |
- {TaskTraits().WithPriority(TaskPriority::USER_BLOCKING), |
+ {test::CreateTaskTraits().WithPriority(TaskPriority::USER_BLOCKING), |
"TaskScheduler.TaskLatency.UserBlockingTaskPriority"}, |
- {TaskTraits().WithPriority(TaskPriority::USER_BLOCKING).MayBlock(), |
+ {test::CreateTaskTraits() |
+ .WithPriority(TaskPriority::USER_BLOCKING) |
+ .MayBlock(), |
"TaskScheduler.TaskLatency.UserBlockingTaskPriority.MayBlock"}, |
- {TaskTraits() |
+ {test::CreateTaskTraits() |
.WithPriority(TaskPriority::USER_BLOCKING) |
.WithBaseSyncPrimitives(), |
"TaskScheduler.TaskLatency.UserBlockingTaskPriority.MayBlock"}}; |