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

Side by Side Diff: components/scheduler/base/task_queue_manager_unittest.cc

Issue 1815363002: Add RetainedRef uses where needed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 "components/scheduler/base/task_queue_manager.h" 5 #include "components/scheduler/base/task_queue_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 202
203 std::vector<std::pair<base::Closure, bool>> tasks_to_post_from_nested_loop; 203 std::vector<std::pair<base::Closure, bool>> tasks_to_post_from_nested_loop;
204 tasks_to_post_from_nested_loop.push_back( 204 tasks_to_post_from_nested_loop.push_back(
205 std::make_pair(base::Bind(&TestTask, 3, &run_order), false)); 205 std::make_pair(base::Bind(&TestTask, 3, &run_order), false));
206 tasks_to_post_from_nested_loop.push_back( 206 tasks_to_post_from_nested_loop.push_back(
207 std::make_pair(base::Bind(&TestTask, 4, &run_order), true)); 207 std::make_pair(base::Bind(&TestTask, 4, &run_order), true));
208 tasks_to_post_from_nested_loop.push_back( 208 tasks_to_post_from_nested_loop.push_back(
209 std::make_pair(base::Bind(&TestTask, 5, &run_order), true)); 209 std::make_pair(base::Bind(&TestTask, 5, &run_order), true));
210 210
211 runners_[0]->PostTask( 211 runners_[0]->PostTask(
212 FROM_HERE, 212 FROM_HERE, base::Bind(&PostFromNestedRunloop, message_loop_.get(),
213 base::Bind(&PostFromNestedRunloop, message_loop_.get(), runners_[0], 213 base::RetainedRef(runners_[0]),
214 base::Unretained(&tasks_to_post_from_nested_loop))); 214 base::Unretained(&tasks_to_post_from_nested_loop)));
215 215
216 message_loop_->RunUntilIdle(); 216 message_loop_->RunUntilIdle();
217 // Note we expect task 3 to run last because it's non-nestable. 217 // Note we expect task 3 to run last because it's non-nestable.
218 EXPECT_THAT(run_order, ElementsAre(1, 2, 4, 5, 3)); 218 EXPECT_THAT(run_order, ElementsAre(1, 2, 4, 5, 3));
219 } 219 }
220 220
221 TEST_F(TaskQueueManagerTest, QueuePolling) { 221 TEST_F(TaskQueueManagerTest, QueuePolling) {
222 Initialize(1u); 222 Initialize(1u);
223 223
224 std::vector<EnqueueOrder> run_order; 224 std::vector<EnqueueOrder> run_order;
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 TEST_F(TaskQueueManagerTest, PostFromNestedRunloop) { 610 TEST_F(TaskQueueManagerTest, PostFromNestedRunloop) {
611 InitializeWithRealMessageLoop(1u); 611 InitializeWithRealMessageLoop(1u);
612 612
613 std::vector<EnqueueOrder> run_order; 613 std::vector<EnqueueOrder> run_order;
614 std::vector<std::pair<base::Closure, bool>> tasks_to_post_from_nested_loop; 614 std::vector<std::pair<base::Closure, bool>> tasks_to_post_from_nested_loop;
615 tasks_to_post_from_nested_loop.push_back( 615 tasks_to_post_from_nested_loop.push_back(
616 std::make_pair(base::Bind(&TestTask, 1, &run_order), true)); 616 std::make_pair(base::Bind(&TestTask, 1, &run_order), true));
617 617
618 runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 0, &run_order)); 618 runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 0, &run_order));
619 runners_[0]->PostTask( 619 runners_[0]->PostTask(
620 FROM_HERE, 620 FROM_HERE, base::Bind(&PostFromNestedRunloop, message_loop_.get(),
621 base::Bind(&PostFromNestedRunloop, message_loop_.get(), runners_[0], 621 base::RetainedRef(runners_[0]),
622 base::Unretained(&tasks_to_post_from_nested_loop))); 622 base::Unretained(&tasks_to_post_from_nested_loop)));
623 runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order)); 623 runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
624 624
625 message_loop_->RunUntilIdle(); 625 message_loop_->RunUntilIdle();
626 626
627 EXPECT_THAT(run_order, ElementsAre(0, 2, 1)); 627 EXPECT_THAT(run_order, ElementsAre(0, 2, 1));
628 } 628 }
629 629
630 TEST_F(TaskQueueManagerTest, WorkBatching) { 630 TEST_F(TaskQueueManagerTest, WorkBatching) {
631 Initialize(1u); 631 Initialize(1u);
632 632
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after
1189 } 1189 }
1190 1190
1191 TEST_F(TaskQueueManagerTest, QuitWhileNested) { 1191 TEST_F(TaskQueueManagerTest, QuitWhileNested) {
1192 // This test makes sure we don't continue running a work batch after a nested 1192 // This test makes sure we don't continue running a work batch after a nested
1193 // run loop has been exited in the middle of the batch. 1193 // run loop has been exited in the middle of the batch.
1194 InitializeWithRealMessageLoop(1u); 1194 InitializeWithRealMessageLoop(1u);
1195 manager_->SetWorkBatchSize(2); 1195 manager_->SetWorkBatchSize(2);
1196 1196
1197 bool was_nested = true; 1197 bool was_nested = true;
1198 base::RunLoop run_loop; 1198 base::RunLoop run_loop;
1199 runners_[0]->PostTask( 1199 runners_[0]->PostTask(FROM_HERE, base::Bind(&PostAndQuitFromNestedRunloop,
1200 FROM_HERE, 1200 base::Unretained(&run_loop),
1201 base::Bind(&PostAndQuitFromNestedRunloop, base::Unretained(&run_loop), 1201 base::RetainedRef(runners_[0]),
1202 runners_[0], base::Unretained(&was_nested))); 1202 base::Unretained(&was_nested)));
1203 1203
1204 message_loop_->RunUntilIdle(); 1204 message_loop_->RunUntilIdle();
1205 EXPECT_FALSE(was_nested); 1205 EXPECT_FALSE(was_nested);
1206 } 1206 }
1207 1207
1208 class SequenceNumberCapturingTaskObserver 1208 class SequenceNumberCapturingTaskObserver
1209 : public base::MessageLoop::TaskObserver { 1209 : public base::MessageLoop::TaskObserver {
1210 public: 1210 public:
1211 // MessageLoop::TaskObserver overrides. 1211 // MessageLoop::TaskObserver overrides.
1212 void WillProcessTask(const base::PendingTask& pending_task) override {} 1212 void WillProcessTask(const base::PendingTask& pending_task) override {}
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
1449 base::Unretained(task_queue.get())), 1449 base::Unretained(task_queue.get())),
1450 true)); 1450 true));
1451 tasks_to_post_from_nested_loop.push_back(std::make_pair( 1451 tasks_to_post_from_nested_loop.push_back(std::make_pair(
1452 base::Bind(&internal::TaskQueueImpl::UnregisterTaskQueue, 1452 base::Bind(&internal::TaskQueueImpl::UnregisterTaskQueue,
1453 base::Unretained(task_queue.get())), true)); 1453 base::Unretained(task_queue.get())), true));
1454 tasks_to_post_from_nested_loop.push_back( 1454 tasks_to_post_from_nested_loop.push_back(
1455 std::make_pair(base::Bind(&HasOneRefTask, base::Unretained(&log), 1455 std::make_pair(base::Bind(&HasOneRefTask, base::Unretained(&log),
1456 base::Unretained(task_queue.get())), 1456 base::Unretained(task_queue.get())),
1457 true)); 1457 true));
1458 runners_[0]->PostTask( 1458 runners_[0]->PostTask(
1459 FROM_HERE, 1459 FROM_HERE, base::Bind(&PostFromNestedRunloop, message_loop_.get(),
1460 base::Bind(&PostFromNestedRunloop, message_loop_.get(), runners_[0], 1460 base::RetainedRef(runners_[0]),
1461 base::Unretained(&tasks_to_post_from_nested_loop))); 1461 base::Unretained(&tasks_to_post_from_nested_loop)));
1462 message_loop_->RunUntilIdle(); 1462 message_loop_->RunUntilIdle();
1463 1463
1464 // Add a final call to HasOneRefTask. This gives the manager a chance to 1464 // Add a final call to HasOneRefTask. This gives the manager a chance to
1465 // release its reference, and checks that it has. 1465 // release its reference, and checks that it has.
1466 runners_[0]->PostTask(FROM_HERE, 1466 runners_[0]->PostTask(FROM_HERE,
1467 base::Bind(&HasOneRefTask, base::Unretained(&log), 1467 base::Bind(&HasOneRefTask, base::Unretained(&log),
1468 base::Unretained(task_queue.get()))); 1468 base::Unretained(task_queue.get())));
1469 message_loop_->RunUntilIdle(); 1469 message_loop_->RunUntilIdle();
1470 1470
1471 EXPECT_THAT(log, ElementsAre(false, false, true)); 1471 EXPECT_THAT(log, ElementsAre(false, false, true));
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
1836 FROM_HERE, base::Bind(&RunloopCurrentlyExecutingTaskQueueTestTask, 1836 FROM_HERE, base::Bind(&RunloopCurrentlyExecutingTaskQueueTestTask,
1837 message_loop_.get(), manager_.get(), &task_sources, 1837 message_loop_.get(), manager_.get(), &task_sources,
1838 &tasks_to_post_from_nested_loop)); 1838 &tasks_to_post_from_nested_loop));
1839 1839
1840 message_loop_->RunUntilIdle(); 1840 message_loop_->RunUntilIdle();
1841 EXPECT_THAT(task_sources, ElementsAre(queue0, queue1, queue2, queue0)); 1841 EXPECT_THAT(task_sources, ElementsAre(queue0, queue1, queue2, queue0));
1842 EXPECT_EQ(nullptr, manager_->currently_executing_task_queue()); 1842 EXPECT_EQ(nullptr, manager_->currently_executing_task_queue());
1843 } 1843 }
1844 1844
1845 } // namespace scheduler 1845 } // namespace scheduler
OLDNEW
« no previous file with comments | « components/history/core/browser/top_sites_impl.cc ('k') | components/scheduler/child/idle_helper_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698