Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Side by Side Diff: third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc

Issue 2701993002: DO NOT COMMIT: Results of running new (proposed) clang-format on Blink (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "platform/scheduler/base/task_queue_manager.h" 5 #include "platform/scheduler/base/task_queue_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 runners_.push_back( 265 runners_.push_back(
266 manager_->NewTaskQueue(TaskQueue::Spec(TaskQueue::QueueType::TEST))); 266 manager_->NewTaskQueue(TaskQueue::Spec(TaskQueue::QueueType::TEST)));
267 267
268 std::vector<std::pair<base::Closure, bool>> tasks_to_post_from_nested_loop; 268 std::vector<std::pair<base::Closure, bool>> tasks_to_post_from_nested_loop;
269 for (int i = 0; i <= 6; ++i) { 269 for (int i = 0; i <= 6; ++i) {
270 tasks_to_post_from_nested_loop.push_back( 270 tasks_to_post_from_nested_loop.push_back(
271 std::make_pair(base::Bind(&NopTask), true)); 271 std::make_pair(base::Bind(&NopTask), true));
272 } 272 }
273 273
274 runners_[0]->PostTask( 274 runners_[0]->PostTask(
275 FROM_HERE, base::Bind(&PostFromNestedRunloop, message_loop_.get(), 275 FROM_HERE,
276 base::RetainedRef(runners_[0]), 276 base::Bind(&PostFromNestedRunloop, message_loop_.get(),
277 base::Unretained(&tasks_to_post_from_nested_loop))); 277 base::RetainedRef(runners_[0]),
278 base::Unretained(&tasks_to_post_from_nested_loop)));
278 279
279 base::RunLoop().RunUntilIdle(); 280 base::RunLoop().RunUntilIdle();
280 // We need to call Now twice, to measure the start and end of the outermost 281 // We need to call Now twice, to measure the start and end of the outermost
281 // task. We shouldn't call it for any of the nested tasks. 282 // task. We shouldn't call it for any of the nested tasks.
282 EXPECT_EQ(2, test_count_uses_time_source->now_calls_count()); 283 EXPECT_EQ(2, test_count_uses_time_source->now_calls_count());
283 } 284 }
284 285
285 void NullTask() {} 286 void NullTask() {}
286 287
287 void TestTask(EnqueueOrder value, std::vector<EnqueueOrder>* out_result) { 288 void TestTask(EnqueueOrder value, std::vector<EnqueueOrder>* out_result) {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 351
351 std::vector<std::pair<base::Closure, bool>> tasks_to_post_from_nested_loop; 352 std::vector<std::pair<base::Closure, bool>> tasks_to_post_from_nested_loop;
352 tasks_to_post_from_nested_loop.push_back( 353 tasks_to_post_from_nested_loop.push_back(
353 std::make_pair(base::Bind(&TestTask, 3, &run_order), false)); 354 std::make_pair(base::Bind(&TestTask, 3, &run_order), false));
354 tasks_to_post_from_nested_loop.push_back( 355 tasks_to_post_from_nested_loop.push_back(
355 std::make_pair(base::Bind(&TestTask, 4, &run_order), true)); 356 std::make_pair(base::Bind(&TestTask, 4, &run_order), true));
356 tasks_to_post_from_nested_loop.push_back( 357 tasks_to_post_from_nested_loop.push_back(
357 std::make_pair(base::Bind(&TestTask, 5, &run_order), true)); 358 std::make_pair(base::Bind(&TestTask, 5, &run_order), true));
358 359
359 runners_[0]->PostTask( 360 runners_[0]->PostTask(
360 FROM_HERE, base::Bind(&PostFromNestedRunloop, message_loop_.get(), 361 FROM_HERE,
361 base::RetainedRef(runners_[0]), 362 base::Bind(&PostFromNestedRunloop, message_loop_.get(),
362 base::Unretained(&tasks_to_post_from_nested_loop))); 363 base::RetainedRef(runners_[0]),
364 base::Unretained(&tasks_to_post_from_nested_loop)));
363 365
364 base::RunLoop().RunUntilIdle(); 366 base::RunLoop().RunUntilIdle();
365 // Note we expect task 3 to run last because it's non-nestable. 367 // Note we expect task 3 to run last because it's non-nestable.
366 EXPECT_THAT(run_order, ElementsAre(1, 2, 4, 5, 3)); 368 EXPECT_THAT(run_order, ElementsAre(1, 2, 4, 5, 3));
367 } 369 }
368 370
369 TEST_F(TaskQueueManagerTest, HasPendingImmediateWork_ImmediateTask) { 371 TEST_F(TaskQueueManagerTest, HasPendingImmediateWork_ImmediateTask) {
370 Initialize(1u); 372 Initialize(1u);
371 373
372 std::vector<EnqueueOrder> run_order; 374 std::vector<EnqueueOrder> run_order;
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 FROM_HERE, base::Bind(&PostTaskToRunner, runners_[0], &run_order)); 856 FROM_HERE, base::Bind(&PostTaskToRunner, runners_[0], &run_order));
855 thread.Stop(); 857 thread.Stop();
856 858
857 base::RunLoop().RunUntilIdle(); 859 base::RunLoop().RunUntilIdle();
858 EXPECT_THAT(run_order, ElementsAre(1)); 860 EXPECT_THAT(run_order, ElementsAre(1));
859 } 861 }
860 862
861 void RePostingTestTask(scoped_refptr<base::SingleThreadTaskRunner> runner, 863 void RePostingTestTask(scoped_refptr<base::SingleThreadTaskRunner> runner,
862 int* run_count) { 864 int* run_count) {
863 (*run_count)++; 865 (*run_count)++;
864 runner->PostTask(FROM_HERE, Bind(&RePostingTestTask, 866 runner->PostTask(
865 base::Unretained(runner.get()), run_count)); 867 FROM_HERE,
868 Bind(&RePostingTestTask, base::Unretained(runner.get()), run_count));
866 } 869 }
867 870
868 TEST_F(TaskQueueManagerTest, DoWorkCantPostItselfMultipleTimes) { 871 TEST_F(TaskQueueManagerTest, DoWorkCantPostItselfMultipleTimes) {
869 Initialize(1u); 872 Initialize(1u);
870 873
871 int run_count = 0; 874 int run_count = 0;
872 runners_[0]->PostTask( 875 runners_[0]->PostTask(
873 FROM_HERE, base::Bind(&RePostingTestTask, runners_[0], &run_count)); 876 FROM_HERE, base::Bind(&RePostingTestTask, runners_[0], &run_count));
874 877
875 test_task_runner_->RunPendingTasks(); 878 test_task_runner_->RunPendingTasks();
876 // NOTE without the executing_task_ check in MaybeScheduleDoWork there 879 // NOTE without the executing_task_ check in MaybeScheduleDoWork there
877 // will be two tasks here. 880 // will be two tasks here.
878 EXPECT_EQ(1u, test_task_runner_->NumPendingTasks()); 881 EXPECT_EQ(1u, test_task_runner_->NumPendingTasks());
879 EXPECT_EQ(1, run_count); 882 EXPECT_EQ(1, run_count);
880 } 883 }
881 884
882 TEST_F(TaskQueueManagerTest, PostFromNestedRunloop) { 885 TEST_F(TaskQueueManagerTest, PostFromNestedRunloop) {
883 InitializeWithRealMessageLoop(1u); 886 InitializeWithRealMessageLoop(1u);
884 887
885 std::vector<EnqueueOrder> run_order; 888 std::vector<EnqueueOrder> run_order;
886 std::vector<std::pair<base::Closure, bool>> tasks_to_post_from_nested_loop; 889 std::vector<std::pair<base::Closure, bool>> tasks_to_post_from_nested_loop;
887 tasks_to_post_from_nested_loop.push_back( 890 tasks_to_post_from_nested_loop.push_back(
888 std::make_pair(base::Bind(&TestTask, 1, &run_order), true)); 891 std::make_pair(base::Bind(&TestTask, 1, &run_order), true));
889 892
890 runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 0, &run_order)); 893 runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 0, &run_order));
891 runners_[0]->PostTask( 894 runners_[0]->PostTask(
892 FROM_HERE, base::Bind(&PostFromNestedRunloop, message_loop_.get(), 895 FROM_HERE,
893 base::RetainedRef(runners_[0]), 896 base::Bind(&PostFromNestedRunloop, message_loop_.get(),
894 base::Unretained(&tasks_to_post_from_nested_loop))); 897 base::RetainedRef(runners_[0]),
898 base::Unretained(&tasks_to_post_from_nested_loop)));
895 runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order)); 899 runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
896 900
897 base::RunLoop().RunUntilIdle(); 901 base::RunLoop().RunUntilIdle();
898 902
899 EXPECT_THAT(run_order, ElementsAre(0, 2, 1)); 903 EXPECT_THAT(run_order, ElementsAre(0, 2, 1));
900 } 904 }
901 905
902 TEST_F(TaskQueueManagerTest, WorkBatching) { 906 TEST_F(TaskQueueManagerTest, WorkBatching) {
903 Initialize(1u); 907 Initialize(1u);
904 908
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1091 1095
1092 base::TimeTicks run_time; 1096 base::TimeTicks run_time;
1093 EXPECT_TRUE(manager_->real_time_domain()->NextScheduledRunTime(&run_time)); 1097 EXPECT_TRUE(manager_->real_time_domain()->NextScheduledRunTime(&run_time));
1094 EXPECT_EQ(now_src_->NowTicks() + delay2, run_time); 1098 EXPECT_EQ(now_src_->NowTicks() + delay2, run_time);
1095 } 1099 }
1096 1100
1097 TEST_F(TaskQueueManagerTest, DeleteTaskQueueManagerInsideATask) { 1101 TEST_F(TaskQueueManagerTest, DeleteTaskQueueManagerInsideATask) {
1098 Initialize(1u); 1102 Initialize(1u);
1099 1103
1100 runners_[0]->PostTask( 1104 runners_[0]->PostTask(
1101 FROM_HERE, base::Bind(&TaskQueueManagerTest::DeleteTaskQueueManager, 1105 FROM_HERE,
1102 base::Unretained(this))); 1106 base::Bind(&TaskQueueManagerTest::DeleteTaskQueueManager,
1107 base::Unretained(this)));
1103 1108
1104 // This should not crash, assuming DoWork detects the TaskQueueManager has 1109 // This should not crash, assuming DoWork detects the TaskQueueManager has
1105 // been deleted. 1110 // been deleted.
1106 test_task_runner_->RunUntilIdle(); 1111 test_task_runner_->RunUntilIdle();
1107 } 1112 }
1108 1113
1109 TEST_F(TaskQueueManagerTest, GetAndClearSystemIsQuiescentBit) { 1114 TEST_F(TaskQueueManagerTest, GetAndClearSystemIsQuiescentBit) {
1110 Initialize(3u); 1115 Initialize(3u);
1111 1116
1112 scoped_refptr<internal::TaskQueueImpl> queue0 = 1117 scoped_refptr<internal::TaskQueueImpl> queue0 =
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1189 base::TimeDelta delay = base::TimeDelta::FromMilliseconds(10); 1194 base::TimeDelta delay = base::TimeDelta::FromMilliseconds(10);
1190 for (int i = 10; i < 19; i++) { 1195 for (int i = 10; i < 19; i++) {
1191 runners_[0]->PostDelayedTask( 1196 runners_[0]->PostDelayedTask(
1192 FROM_HERE, 1197 FROM_HERE,
1193 base::Bind(&ExpensiveTestTask, i, now_src_.get(), &run_order), delay); 1198 base::Bind(&ExpensiveTestTask, i, now_src_.get(), &run_order), delay);
1194 } 1199 }
1195 1200
1196 test_task_runner_->RunForPeriod(delay); 1201 test_task_runner_->RunForPeriod(delay);
1197 1202
1198 for (int i = 0; i < 9; i++) { 1203 for (int i = 0; i < 9; i++) {
1199 runners_[0]->PostTask(FROM_HERE, base::Bind(&ExpensiveTestTask, i, 1204 runners_[0]->PostTask(
1200 now_src_.get(), &run_order)); 1205 FROM_HERE,
1206 base::Bind(&ExpensiveTestTask, i, now_src_.get(), &run_order));
1201 } 1207 }
1202 1208
1203 test_task_runner_->SetAutoAdvanceNowToPendingTasks(true); 1209 test_task_runner_->SetAutoAdvanceNowToPendingTasks(true);
1204 test_task_runner_->RunUntilIdle(); 1210 test_task_runner_->RunUntilIdle();
1205 1211
1206 // Delayed tasks are not allowed to starve out immediate work which is why 1212 // Delayed tasks are not allowed to starve out immediate work which is why
1207 // some of the immediate tasks run out of order. 1213 // some of the immediate tasks run out of order.
1208 int expected_run_order[] = {10, 11, 12, 13, 0, 14, 15, 16, 1, 1214 int expected_run_order[] = {10, 11, 12, 13, 0, 14, 15, 16, 1,
1209 17, 18, 2, 3, 4, 5, 6, 7, 8}; 1215 17, 18, 2, 3, 4, 5, 6, 7, 8};
1210 EXPECT_THAT(run_order, ElementsAreArray(expected_run_order)); 1216 EXPECT_THAT(run_order, ElementsAreArray(expected_run_order));
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1276 } 1282 }
1277 1283
1278 TEST_F(TaskQueueManagerTest, QuitWhileNested) { 1284 TEST_F(TaskQueueManagerTest, QuitWhileNested) {
1279 // This test makes sure we don't continue running a work batch after a nested 1285 // This test makes sure we don't continue running a work batch after a nested
1280 // run loop has been exited in the middle of the batch. 1286 // run loop has been exited in the middle of the batch.
1281 InitializeWithRealMessageLoop(1u); 1287 InitializeWithRealMessageLoop(1u);
1282 manager_->SetWorkBatchSize(2); 1288 manager_->SetWorkBatchSize(2);
1283 1289
1284 bool was_nested = true; 1290 bool was_nested = true;
1285 base::RunLoop run_loop; 1291 base::RunLoop run_loop;
1286 runners_[0]->PostTask(FROM_HERE, base::Bind(&PostAndQuitFromNestedRunloop, 1292 runners_[0]->PostTask(
1287 base::Unretained(&run_loop), 1293 FROM_HERE,
1288 base::RetainedRef(runners_[0]), 1294 base::Bind(&PostAndQuitFromNestedRunloop, base::Unretained(&run_loop),
1289 base::Unretained(&was_nested))); 1295 base::RetainedRef(runners_[0]),
1296 base::Unretained(&was_nested)));
1290 1297
1291 base::RunLoop().RunUntilIdle(); 1298 base::RunLoop().RunUntilIdle();
1292 EXPECT_FALSE(was_nested); 1299 EXPECT_FALSE(was_nested);
1293 } 1300 }
1294 1301
1295 class SequenceNumberCapturingTaskObserver 1302 class SequenceNumberCapturingTaskObserver
1296 : public base::MessageLoop::TaskObserver { 1303 : public base::MessageLoop::TaskObserver {
1297 public: 1304 public:
1298 // MessageLoop::TaskObserver overrides. 1305 // MessageLoop::TaskObserver overrides.
1299 void WillProcessTask(const base::PendingTask& pending_task) override {} 1306 void WillProcessTask(const base::PendingTask& pending_task) override {}
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
1518 true)); 1525 true));
1519 tasks_to_post_from_nested_loop.push_back( 1526 tasks_to_post_from_nested_loop.push_back(
1520 std::make_pair(base::Bind(&internal::TaskQueueImpl::UnregisterTaskQueue, 1527 std::make_pair(base::Bind(&internal::TaskQueueImpl::UnregisterTaskQueue,
1521 base::Unretained(task_queue.get())), 1528 base::Unretained(task_queue.get())),
1522 true)); 1529 true));
1523 tasks_to_post_from_nested_loop.push_back( 1530 tasks_to_post_from_nested_loop.push_back(
1524 std::make_pair(base::Bind(&HasOneRefTask, base::Unretained(&log), 1531 std::make_pair(base::Bind(&HasOneRefTask, base::Unretained(&log),
1525 base::Unretained(task_queue.get())), 1532 base::Unretained(task_queue.get())),
1526 true)); 1533 true));
1527 runners_[0]->PostTask( 1534 runners_[0]->PostTask(
1528 FROM_HERE, base::Bind(&PostFromNestedRunloop, message_loop_.get(), 1535 FROM_HERE,
1529 base::RetainedRef(runners_[0]), 1536 base::Bind(&PostFromNestedRunloop, message_loop_.get(),
1530 base::Unretained(&tasks_to_post_from_nested_loop))); 1537 base::RetainedRef(runners_[0]),
1538 base::Unretained(&tasks_to_post_from_nested_loop)));
1531 base::RunLoop().RunUntilIdle(); 1539 base::RunLoop().RunUntilIdle();
1532 1540
1533 // Add a final call to HasOneRefTask. This gives the manager a chance to 1541 // Add a final call to HasOneRefTask. This gives the manager a chance to
1534 // release its reference, and checks that it has. 1542 // release its reference, and checks that it has.
1535 runners_[0]->PostTask(FROM_HERE, 1543 runners_[0]->PostTask(FROM_HERE,
1536 base::Bind(&HasOneRefTask, base::Unretained(&log), 1544 base::Bind(&HasOneRefTask, base::Unretained(&log),
1537 base::Unretained(task_queue.get()))); 1545 base::Unretained(task_queue.get())));
1538 base::RunLoop().RunUntilIdle(); 1546 base::RunLoop().RunUntilIdle();
1539 1547
1540 EXPECT_THAT(log, ElementsAre(false, false, true)); 1548 EXPECT_THAT(log, ElementsAre(false, false, true));
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after
2040 } 2048 }
2041 } 2049 }
2042 2050
2043 TEST_F(TaskQueueManagerTest, CurrentlyExecutingTaskQueue_TaskRunning) { 2051 TEST_F(TaskQueueManagerTest, CurrentlyExecutingTaskQueue_TaskRunning) {
2044 Initialize(2u); 2052 Initialize(2u);
2045 2053
2046 internal::TaskQueueImpl* queue0 = runners_[0].get(); 2054 internal::TaskQueueImpl* queue0 = runners_[0].get();
2047 internal::TaskQueueImpl* queue1 = runners_[1].get(); 2055 internal::TaskQueueImpl* queue1 = runners_[1].get();
2048 2056
2049 std::vector<TaskQueue*> task_sources; 2057 std::vector<TaskQueue*> task_sources;
2050 queue0->PostTask(FROM_HERE, base::Bind(&CurrentlyExecutingTaskQueueTestTask, 2058 queue0->PostTask(FROM_HERE,
2051 manager_.get(), &task_sources)); 2059 base::Bind(&CurrentlyExecutingTaskQueueTestTask,
2052 queue1->PostTask(FROM_HERE, base::Bind(&CurrentlyExecutingTaskQueueTestTask, 2060 manager_.get(), &task_sources));
2053 manager_.get(), &task_sources)); 2061 queue1->PostTask(FROM_HERE,
2062 base::Bind(&CurrentlyExecutingTaskQueueTestTask,
2063 manager_.get(), &task_sources));
2054 test_task_runner_->RunUntilIdle(); 2064 test_task_runner_->RunUntilIdle();
2055 2065
2056 EXPECT_THAT(task_sources, ElementsAre(queue0, queue1)); 2066 EXPECT_THAT(task_sources, ElementsAre(queue0, queue1));
2057 EXPECT_EQ(nullptr, manager_->currently_executing_task_queue()); 2067 EXPECT_EQ(nullptr, manager_->currently_executing_task_queue());
2058 } 2068 }
2059 2069
2060 namespace { 2070 namespace {
2061 void RunloopCurrentlyExecutingTaskQueueTestTask( 2071 void RunloopCurrentlyExecutingTaskQueueTestTask(
2062 base::MessageLoop* message_loop, 2072 base::MessageLoop* message_loop,
2063 TaskQueueManager* task_queue_manager, 2073 TaskQueueManager* task_queue_manager,
(...skipping 23 matching lines...) Expand all
2087 tasks_to_post_from_nested_loop; 2097 tasks_to_post_from_nested_loop;
2088 tasks_to_post_from_nested_loop.push_back( 2098 tasks_to_post_from_nested_loop.push_back(
2089 std::make_pair(base::Bind(&CurrentlyExecutingTaskQueueTestTask, 2099 std::make_pair(base::Bind(&CurrentlyExecutingTaskQueueTestTask,
2090 manager_.get(), &task_sources), 2100 manager_.get(), &task_sources),
2091 queue1)); 2101 queue1));
2092 tasks_to_post_from_nested_loop.push_back( 2102 tasks_to_post_from_nested_loop.push_back(
2093 std::make_pair(base::Bind(&CurrentlyExecutingTaskQueueTestTask, 2103 std::make_pair(base::Bind(&CurrentlyExecutingTaskQueueTestTask,
2094 manager_.get(), &task_sources), 2104 manager_.get(), &task_sources),
2095 queue2)); 2105 queue2));
2096 2106
2097 queue0->PostTask( 2107 queue0->PostTask(FROM_HERE,
2098 FROM_HERE, base::Bind(&RunloopCurrentlyExecutingTaskQueueTestTask, 2108 base::Bind(&RunloopCurrentlyExecutingTaskQueueTestTask,
2099 message_loop_.get(), manager_.get(), &task_sources, 2109 message_loop_.get(), manager_.get(),
2100 &tasks_to_post_from_nested_loop)); 2110 &task_sources, &tasks_to_post_from_nested_loop));
2101 2111
2102 base::RunLoop().RunUntilIdle(); 2112 base::RunLoop().RunUntilIdle();
2103 EXPECT_THAT(task_sources, ElementsAre(queue0, queue1, queue2, queue0)); 2113 EXPECT_THAT(task_sources, ElementsAre(queue0, queue1, queue2, queue0));
2104 EXPECT_EQ(nullptr, manager_->currently_executing_task_queue()); 2114 EXPECT_EQ(nullptr, manager_->currently_executing_task_queue());
2105 } 2115 }
2106 2116
2107 void OnTraceDataCollected(base::Closure quit_closure, 2117 void OnTraceDataCollected(base::Closure quit_closure,
2108 base::trace_event::TraceResultBuffer* buffer, 2118 base::trace_event::TraceResultBuffer* buffer,
2109 const scoped_refptr<base::RefCountedString>& json, 2119 const scoped_refptr<base::RefCountedString>& json,
2110 bool has_more_events) { 2120 bool has_more_events) {
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
2195 CancelableTask task1(now_src_.get()); 2205 CancelableTask task1(now_src_.get());
2196 CancelableTask task2(now_src_.get()); 2206 CancelableTask task2(now_src_.get());
2197 CancelableTask task3(now_src_.get()); 2207 CancelableTask task3(now_src_.get());
2198 CancelableTask task4(now_src_.get()); 2208 CancelableTask task4(now_src_.get());
2199 base::TimeDelta delay1(base::TimeDelta::FromSeconds(5)); 2209 base::TimeDelta delay1(base::TimeDelta::FromSeconds(5));
2200 base::TimeDelta delay2(base::TimeDelta::FromSeconds(10)); 2210 base::TimeDelta delay2(base::TimeDelta::FromSeconds(10));
2201 base::TimeDelta delay3(base::TimeDelta::FromSeconds(15)); 2211 base::TimeDelta delay3(base::TimeDelta::FromSeconds(15));
2202 base::TimeDelta delay4(base::TimeDelta::FromSeconds(30)); 2212 base::TimeDelta delay4(base::TimeDelta::FromSeconds(30));
2203 std::vector<base::TimeTicks> run_times; 2213 std::vector<base::TimeTicks> run_times;
2204 runners_[0]->PostDelayedTask( 2214 runners_[0]->PostDelayedTask(
2205 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2215 FROM_HERE,
2206 task1.weak_factory_.GetWeakPtr(), &run_times), 2216 base::Bind(&CancelableTask::RecordTimeTask,
2217 task1.weak_factory_.GetWeakPtr(), &run_times),
2207 delay1); 2218 delay1);
2208 runners_[0]->PostDelayedTask( 2219 runners_[0]->PostDelayedTask(
2209 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2220 FROM_HERE,
2210 task2.weak_factory_.GetWeakPtr(), &run_times), 2221 base::Bind(&CancelableTask::RecordTimeTask,
2222 task2.weak_factory_.GetWeakPtr(), &run_times),
2211 delay2); 2223 delay2);
2212 runners_[0]->PostDelayedTask( 2224 runners_[0]->PostDelayedTask(
2213 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2225 FROM_HERE,
2214 task3.weak_factory_.GetWeakPtr(), &run_times), 2226 base::Bind(&CancelableTask::RecordTimeTask,
2227 task3.weak_factory_.GetWeakPtr(), &run_times),
2215 delay3); 2228 delay3);
2216 runners_[0]->PostDelayedTask( 2229 runners_[0]->PostDelayedTask(
2217 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2230 FROM_HERE,
2218 task4.weak_factory_.GetWeakPtr(), &run_times), 2231 base::Bind(&CancelableTask::RecordTimeTask,
2232 task4.weak_factory_.GetWeakPtr(), &run_times),
2219 delay4); 2233 delay4);
2220 2234
2221 task2.weak_factory_.InvalidateWeakPtrs(); 2235 task2.weak_factory_.InvalidateWeakPtrs();
2222 task3.weak_factory_.InvalidateWeakPtrs(); 2236 task3.weak_factory_.InvalidateWeakPtrs();
2223 2237
2224 std::set<base::TimeTicks> wakeup_times; 2238 std::set<base::TimeTicks> wakeup_times;
2225 2239
2226 RunUntilIdle(base::Bind( 2240 RunUntilIdle(base::Bind(
2227 [](std::set<base::TimeTicks>* wakeup_times, 2241 [](std::set<base::TimeTicks>* wakeup_times,
2228 base::SimpleTestTickClock* clock) { 2242 base::SimpleTestTickClock* clock) {
(...skipping 14 matching lines...) Expand all
2243 CancelableTask task1(now_src_.get()); 2257 CancelableTask task1(now_src_.get());
2244 CancelableTask task2(now_src_.get()); 2258 CancelableTask task2(now_src_.get());
2245 CancelableTask task3(now_src_.get()); 2259 CancelableTask task3(now_src_.get());
2246 CancelableTask task4(now_src_.get()); 2260 CancelableTask task4(now_src_.get());
2247 base::TimeDelta delay1(base::TimeDelta::FromSeconds(5)); 2261 base::TimeDelta delay1(base::TimeDelta::FromSeconds(5));
2248 base::TimeDelta delay2(base::TimeDelta::FromSeconds(10)); 2262 base::TimeDelta delay2(base::TimeDelta::FromSeconds(10));
2249 base::TimeDelta delay3(base::TimeDelta::FromSeconds(15)); 2263 base::TimeDelta delay3(base::TimeDelta::FromSeconds(15));
2250 base::TimeDelta delay4(base::TimeDelta::FromSeconds(30)); 2264 base::TimeDelta delay4(base::TimeDelta::FromSeconds(30));
2251 std::vector<base::TimeTicks> run_times; 2265 std::vector<base::TimeTicks> run_times;
2252 runners_[0]->PostDelayedTask( 2266 runners_[0]->PostDelayedTask(
2253 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2267 FROM_HERE,
2254 task4.weak_factory_.GetWeakPtr(), &run_times), 2268 base::Bind(&CancelableTask::RecordTimeTask,
2269 task4.weak_factory_.GetWeakPtr(), &run_times),
2255 delay4); 2270 delay4);
2256 runners_[0]->PostDelayedTask( 2271 runners_[0]->PostDelayedTask(
2257 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2272 FROM_HERE,
2258 task3.weak_factory_.GetWeakPtr(), &run_times), 2273 base::Bind(&CancelableTask::RecordTimeTask,
2274 task3.weak_factory_.GetWeakPtr(), &run_times),
2259 delay3); 2275 delay3);
2260 runners_[0]->PostDelayedTask( 2276 runners_[0]->PostDelayedTask(
2261 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2277 FROM_HERE,
2262 task2.weak_factory_.GetWeakPtr(), &run_times), 2278 base::Bind(&CancelableTask::RecordTimeTask,
2279 task2.weak_factory_.GetWeakPtr(), &run_times),
2263 delay2); 2280 delay2);
2264 runners_[0]->PostDelayedTask( 2281 runners_[0]->PostDelayedTask(
2265 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2282 FROM_HERE,
2266 task1.weak_factory_.GetWeakPtr(), &run_times), 2283 base::Bind(&CancelableTask::RecordTimeTask,
2284 task1.weak_factory_.GetWeakPtr(), &run_times),
2267 delay1); 2285 delay1);
2268 2286
2269 task2.weak_factory_.InvalidateWeakPtrs(); 2287 task2.weak_factory_.InvalidateWeakPtrs();
2270 task3.weak_factory_.InvalidateWeakPtrs(); 2288 task3.weak_factory_.InvalidateWeakPtrs();
2271 2289
2272 std::set<base::TimeTicks> wakeup_times; 2290 std::set<base::TimeTicks> wakeup_times;
2273 2291
2274 RunUntilIdle(base::Bind( 2292 RunUntilIdle(base::Bind(
2275 [](std::set<base::TimeTicks>* wakeup_times, 2293 [](std::set<base::TimeTicks>* wakeup_times,
2276 base::SimpleTestTickClock* clock) { 2294 base::SimpleTestTickClock* clock) {
(...skipping 14 matching lines...) Expand all
2291 CancelableTask task1(now_src_.get()); 2309 CancelableTask task1(now_src_.get());
2292 CancelableTask task2(now_src_.get()); 2310 CancelableTask task2(now_src_.get());
2293 CancelableTask task3(now_src_.get()); 2311 CancelableTask task3(now_src_.get());
2294 CancelableTask task4(now_src_.get()); 2312 CancelableTask task4(now_src_.get());
2295 base::TimeDelta delay1(base::TimeDelta::FromSeconds(5)); 2313 base::TimeDelta delay1(base::TimeDelta::FromSeconds(5));
2296 base::TimeDelta delay2(base::TimeDelta::FromSeconds(10)); 2314 base::TimeDelta delay2(base::TimeDelta::FromSeconds(10));
2297 base::TimeDelta delay3(base::TimeDelta::FromSeconds(15)); 2315 base::TimeDelta delay3(base::TimeDelta::FromSeconds(15));
2298 base::TimeDelta delay4(base::TimeDelta::FromSeconds(30)); 2316 base::TimeDelta delay4(base::TimeDelta::FromSeconds(30));
2299 std::vector<base::TimeTicks> run_times; 2317 std::vector<base::TimeTicks> run_times;
2300 runners_[0]->PostDelayedTask( 2318 runners_[0]->PostDelayedTask(
2301 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2319 FROM_HERE,
2302 task1.weak_factory_.GetWeakPtr(), &run_times), 2320 base::Bind(&CancelableTask::RecordTimeTask,
2321 task1.weak_factory_.GetWeakPtr(), &run_times),
2303 delay1); 2322 delay1);
2304 runners_[0]->PostDelayedTask( 2323 runners_[0]->PostDelayedTask(
2305 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2324 FROM_HERE,
2306 task2.weak_factory_.GetWeakPtr(), &run_times), 2325 base::Bind(&CancelableTask::RecordTimeTask,
2326 task2.weak_factory_.GetWeakPtr(), &run_times),
2307 delay2); 2327 delay2);
2308 runners_[0]->PostDelayedTask( 2328 runners_[0]->PostDelayedTask(
2309 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2329 FROM_HERE,
2310 task3.weak_factory_.GetWeakPtr(), &run_times), 2330 base::Bind(&CancelableTask::RecordTimeTask,
2331 task3.weak_factory_.GetWeakPtr(), &run_times),
2311 delay3); 2332 delay3);
2312 runners_[0]->PostDelayedTask( 2333 runners_[0]->PostDelayedTask(
2313 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2334 FROM_HERE,
2314 task4.weak_factory_.GetWeakPtr(), &run_times), 2335 base::Bind(&CancelableTask::RecordTimeTask,
2336 task4.weak_factory_.GetWeakPtr(), &run_times),
2315 delay4); 2337 delay4);
2316 2338
2317 // Post a non-canceled task with |delay3|. So we should still get a wakeup at 2339 // Post a non-canceled task with |delay3|. So we should still get a wakeup at
2318 // |delay3| even though we cancel |task3|. 2340 // |delay3| even though we cancel |task3|.
2319 runners_[0]->PostDelayedTask(FROM_HERE, 2341 runners_[0]->PostDelayedTask(FROM_HERE,
2320 base::Bind(&CancelableTask::RecordTimeTask, 2342 base::Bind(&CancelableTask::RecordTimeTask,
2321 base::Unretained(&task3), &run_times), 2343 base::Unretained(&task3), &run_times),
2322 delay3); 2344 delay3);
2323 2345
2324 task2.weak_factory_.InvalidateWeakPtrs(); 2346 task2.weak_factory_.InvalidateWeakPtrs();
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
2425 CancelableTask task1(now_src_.get()); 2447 CancelableTask task1(now_src_.get());
2426 CancelableTask task2(now_src_.get()); 2448 CancelableTask task2(now_src_.get());
2427 CancelableTask task3(now_src_.get()); 2449 CancelableTask task3(now_src_.get());
2428 CancelableTask task4(now_src_.get()); 2450 CancelableTask task4(now_src_.get());
2429 base::TimeDelta delay1(base::TimeDelta::FromSeconds(5)); 2451 base::TimeDelta delay1(base::TimeDelta::FromSeconds(5));
2430 base::TimeDelta delay2(base::TimeDelta::FromSeconds(10)); 2452 base::TimeDelta delay2(base::TimeDelta::FromSeconds(10));
2431 base::TimeDelta delay3(base::TimeDelta::FromSeconds(15)); 2453 base::TimeDelta delay3(base::TimeDelta::FromSeconds(15));
2432 base::TimeDelta delay4(base::TimeDelta::FromSeconds(30)); 2454 base::TimeDelta delay4(base::TimeDelta::FromSeconds(30));
2433 std::vector<base::TimeTicks> run_times; 2455 std::vector<base::TimeTicks> run_times;
2434 runners_[0]->PostDelayedTask( 2456 runners_[0]->PostDelayedTask(
2435 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2457 FROM_HERE,
2436 task1.weak_factory_.GetWeakPtr(), &run_times), 2458 base::Bind(&CancelableTask::RecordTimeTask,
2459 task1.weak_factory_.GetWeakPtr(), &run_times),
2437 delay1); 2460 delay1);
2438 runners_[0]->PostDelayedTask( 2461 runners_[0]->PostDelayedTask(
2439 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2462 FROM_HERE,
2440 task2.weak_factory_.GetWeakPtr(), &run_times), 2463 base::Bind(&CancelableTask::RecordTimeTask,
2464 task2.weak_factory_.GetWeakPtr(), &run_times),
2441 delay2); 2465 delay2);
2442 runners_[0]->PostDelayedTask( 2466 runners_[0]->PostDelayedTask(
2443 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2467 FROM_HERE,
2444 task3.weak_factory_.GetWeakPtr(), &run_times), 2468 base::Bind(&CancelableTask::RecordTimeTask,
2469 task3.weak_factory_.GetWeakPtr(), &run_times),
2445 delay3); 2470 delay3);
2446 runners_[0]->PostDelayedTask( 2471 runners_[0]->PostDelayedTask(
2447 FROM_HERE, base::Bind(&CancelableTask::RecordTimeTask, 2472 FROM_HERE,
2448 task4.weak_factory_.GetWeakPtr(), &run_times), 2473 base::Bind(&CancelableTask::RecordTimeTask,
2474 task4.weak_factory_.GetWeakPtr(), &run_times),
2449 delay4); 2475 delay4);
2450 2476
2451 EXPECT_EQ(4u, runners_[0]->GetNumberOfPendingTasks()); 2477 EXPECT_EQ(4u, runners_[0]->GetNumberOfPendingTasks());
2452 task2.weak_factory_.InvalidateWeakPtrs(); 2478 task2.weak_factory_.InvalidateWeakPtrs();
2453 task3.weak_factory_.InvalidateWeakPtrs(); 2479 task3.weak_factory_.InvalidateWeakPtrs();
2454 EXPECT_EQ(4u, runners_[0]->GetNumberOfPendingTasks()); 2480 EXPECT_EQ(4u, runners_[0]->GetNumberOfPendingTasks());
2455 2481
2456 manager_->SweepCanceledDelayedTasks(); 2482 manager_->SweepCanceledDelayedTasks();
2457 EXPECT_EQ(2u, runners_[0]->GetNumberOfPendingTasks()); 2483 EXPECT_EQ(2u, runners_[0]->GetNumberOfPendingTasks());
2458 2484
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
2852 runners_[0]->PostTask(FROM_HERE, base::Bind(&NopTask)); 2878 runners_[0]->PostTask(FROM_HERE, base::Bind(&NopTask));
2853 EXPECT_EQ(start_time + delay2, runners_[0]->GetNextScheduledWakeUp()); 2879 EXPECT_EQ(start_time + delay2, runners_[0]->GetNextScheduledWakeUp());
2854 2880
2855 // Neither should fences. 2881 // Neither should fences.
2856 runners_[0]->InsertFence(TaskQueue::InsertFencePosition::BEGINNING_OF_TIME); 2882 runners_[0]->InsertFence(TaskQueue::InsertFencePosition::BEGINNING_OF_TIME);
2857 EXPECT_EQ(start_time + delay2, runners_[0]->GetNextScheduledWakeUp()); 2883 EXPECT_EQ(start_time + delay2, runners_[0]->GetNextScheduledWakeUp());
2858 } 2884 }
2859 2885
2860 } // namespace scheduler 2886 } // namespace scheduler
2861 } // namespace blink 2887 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698