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

Side by Side Diff: content/renderer/scheduler/task_queue_manager_unittest.cc

Issue 673833002: scheduler: Don't access weak pointers on foreign threads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Ross's comments. Created 6 years, 2 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
« no previous file with comments | « content/renderer/scheduler/task_queue_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "content/renderer/scheduler/task_queue_manager.h" 5 #include "content/renderer/scheduler/task_queue_manager.h"
6 6
7 #include "base/test/test_simple_task_runner.h" 7 #include "base/test/test_simple_task_runner.h"
8 #include "base/threading/thread.h"
8 #include "content/renderer/scheduler/task_queue_selector.h" 9 #include "content/renderer/scheduler/task_queue_selector.h"
9 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
10 11
11 namespace content { 12 namespace content {
12 namespace { 13 namespace {
13 14
14 class SelectorForTest : public TaskQueueSelector { 15 class SelectorForTest : public TaskQueueSelector {
15 public: 16 public:
16 SelectorForTest() {} 17 SelectorForTest() {}
17 18
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 321
321 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); 322 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
322 manager_.reset(); 323 manager_.reset();
323 selector_.reset(); 324 selector_.reset();
324 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); 325 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
325 326
326 test_task_runner_->RunUntilIdle(); 327 test_task_runner_->RunUntilIdle();
327 EXPECT_TRUE(run_order.empty()); 328 EXPECT_TRUE(run_order.empty());
328 } 329 }
329 330
331 void PostTaskToRunner(scoped_refptr<base::SingleThreadTaskRunner> runner,
332 std::vector<int>* run_order) {
333 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, run_order));
334 }
335
336 TEST_F(TaskQueueManagerTest, PostFromThread) {
337 base::MessageLoop message_loop;
338 selector_ = make_scoped_ptr(new SelectorForTest);
339 manager_ = make_scoped_ptr(
340 new TaskQueueManager(1u, message_loop.task_runner(), selector_.get()));
341
342 std::vector<int> run_order;
343 scoped_refptr<base::SingleThreadTaskRunner> runner =
344 manager_->TaskRunnerForQueue(0);
345
346 base::Thread thread("TestThread");
347 thread.Start();
348 thread.message_loop()->PostTask(
349 FROM_HERE, base::Bind(&PostTaskToRunner, runner, &run_order));
350 thread.Stop();
351
352 selector_->AppendQueueToService(0);
353 message_loop.RunUntilIdle();
354 EXPECT_EQ(1, run_order[0]);
355 }
356
330 } // namespace 357 } // namespace
331 } // namespace content 358 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/scheduler/task_queue_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698