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

Unified Diff: base/threading/sequenced_task_runner_handle_unittest.cc

Issue 1414793009: Allow SequencedTaskRunnerHandle::Get() while running unsequenced tasks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove base:: Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: base/threading/sequenced_task_runner_handle_unittest.cc
diff --git a/base/threading/sequenced_task_runner_handle_unittest.cc b/base/threading/sequenced_task_runner_handle_unittest.cc
index 1080262f32f1a8617f4fa2da7de3f0aa1f2d76fd..a50ddbd5f1cdcbfef9a354eba81a7fa817f186f3 100644
--- a/base/threading/sequenced_task_runner_handle_unittest.cc
+++ b/base/threading/sequenced_task_runner_handle_unittest.cc
@@ -23,21 +23,24 @@ namespace {
class SequencedTaskRunnerHandleTest : public ::testing::Test {
protected:
- static void GetTaskRunner(const Closure& callback) {
- // Use SequenceCheckerImpl to make sure it's not a no-op in Release builds.
- scoped_ptr<SequenceCheckerImpl> sequence_checker(new SequenceCheckerImpl);
+ static void VerifyCurrentSequencedTaskRunner(const Closure& callback) {
ASSERT_TRUE(SequencedTaskRunnerHandle::IsSet());
scoped_refptr<SequencedTaskRunner> task_runner =
SequencedTaskRunnerHandle::Get();
ASSERT_TRUE(task_runner);
+
+ // Use SequenceCheckerImpl to make sure it's not a no-op in Release builds.
+ scoped_ptr<SequenceCheckerImpl> sequence_checker(new SequenceCheckerImpl);
task_runner->PostTask(
- FROM_HERE, base::Bind(&SequencedTaskRunnerHandleTest::CheckValidThread,
- base::Passed(&sequence_checker), callback));
+ FROM_HERE,
+ base::Bind(&SequencedTaskRunnerHandleTest::CheckValidSequence,
+ base::Passed(&sequence_checker), callback));
}
private:
- static void CheckValidThread(scoped_ptr<SequenceCheckerImpl> sequence_checker,
- const Closure& callback) {
+ static void CheckValidSequence(
+ scoped_ptr<SequenceCheckerImpl> sequence_checker,
+ const Closure& callback) {
EXPECT_TRUE(sequence_checker->CalledOnValidSequencedThread());
callback.Run();
}
@@ -47,19 +50,34 @@ class SequencedTaskRunnerHandleTest : public ::testing::Test {
TEST_F(SequencedTaskRunnerHandleTest, FromMessageLoop) {
RunLoop run_loop;
- GetTaskRunner(run_loop.QuitClosure());
+ VerifyCurrentSequencedTaskRunner(run_loop.QuitClosure());
run_loop.Run();
}
-TEST_F(SequencedTaskRunnerHandleTest, FromSequencedWorkerPool) {
+TEST_F(SequencedTaskRunnerHandleTest, FromSequencedWorkerPoolTask) {
// Wrap the SequencedWorkerPool to avoid leaks due to its asynchronous
// destruction.
SequencedWorkerPoolOwner owner(3, "Test");
WaitableEvent event(false, false);
owner.pool()->PostSequencedWorkerTask(
owner.pool()->GetSequenceToken(), FROM_HERE,
- base::Bind(&SequencedTaskRunnerHandleTest::GetTaskRunner,
- base::Bind(&WaitableEvent::Signal, base::Unretained(&event))));
+ base::Bind(
+ &SequencedTaskRunnerHandleTest::VerifyCurrentSequencedTaskRunner,
+ base::Bind(&WaitableEvent::Signal, base::Unretained(&event))));
+ event.Wait();
+ owner.pool()->Shutdown();
+}
+
+TEST_F(SequencedTaskRunnerHandleTest, FromUnsequencedTask) {
+ // Wrap the SequencedWorkerPool to avoid leaks due to its asynchronous
+ // destruction.
+ SequencedWorkerPoolOwner owner(3, "Test");
+ WaitableEvent event(false, false);
+ owner.pool()->PostWorkerTask(
+ FROM_HERE,
+ base::Bind(
+ &SequencedTaskRunnerHandleTest::VerifyCurrentSequencedTaskRunner,
+ base::Bind(&WaitableEvent::Signal, base::Unretained(&event))));
event.Wait();
owner.pool()->Shutdown();
}

Powered by Google App Engine
This is Rietveld 408576698