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. 4 5#include "base/test/thread_test_helper.h" 6 7#include "base/bind.h" 8#include "base/location.h" 9#include "base/threading/thread_restrictions.h" 10 11namespace base { 12 13ThreadTestHelper::ThreadTestHelper(MessageLoopProxy* target_thread) 14 : test_result_(false), 15 target_thread_(target_thread), 16 done_event_(false, false) { 17} 18 19bool ThreadTestHelper::Run() { 20 if (!target_thread_->PostTask( 21 FROM_HERE, base::Bind(&ThreadTestHelper::RunInThread, this))) { 22 return false; 23 } 24 base::ThreadRestrictions::ScopedAllowWait allow_wait; 25 done_event_.Wait(); 26 return test_result_; 27} 28 29void ThreadTestHelper::RunTest() { set_test_result(true); } 30 31ThreadTestHelper::~ThreadTestHelper() {} 32 33void ThreadTestHelper::RunInThread() { 34 RunTest(); 35 done_event_.Signal(); 36} 37 38} // namespace base 39