Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / base / test / thread_test_helper.cc
blob6a12190898fab773d9c481df7b9b65ad20a0236f
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/test/thread_test_helper.h"
7 #include "base/bind.h"
8 #include "base/location.h"
9 #include "base/threading/thread_restrictions.h"
11 namespace base {
13 ThreadTestHelper::ThreadTestHelper(
14 scoped_refptr<SingleThreadTaskRunner> target_thread)
15 : test_result_(false),
16 target_thread_(target_thread.Pass()),
17 done_event_(false, false) {
20 bool ThreadTestHelper::Run() {
21 if (!target_thread_->PostTask(
22 FROM_HERE, base::Bind(&ThreadTestHelper::RunInThread, this))) {
23 return false;
25 base::ThreadRestrictions::ScopedAllowWait allow_wait;
26 done_event_.Wait();
27 return test_result_;
30 void ThreadTestHelper::RunTest() { set_test_result(true); }
32 ThreadTestHelper::~ThreadTestHelper() {}
34 void ThreadTestHelper::RunInThread() {
35 RunTest();
36 done_event_.Signal();
39 } // namespace base