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( 14 const scoped_refptr<MessageLoopProxy>& target_thread) 15 : test_result_(false), 16 target_thread_(target_thread), 17 done_event_(false, false) { 18} 19 20bool ThreadTestHelper::Run() { 21 if (!target_thread_->PostTask( 22 FROM_HERE, base::Bind(&ThreadTestHelper::RunInThread, this))) { 23 return false; 24 } 25 base::ThreadRestrictions::ScopedAllowWait allow_wait; 26 done_event_.Wait(); 27 return test_result_; 28} 29 30void ThreadTestHelper::RunTest() { set_test_result(true); } 31 32ThreadTestHelper::~ThreadTestHelper() {} 33 34void ThreadTestHelper::RunInThread() { 35 RunTest(); 36 done_event_.Signal(); 37} 38 39} // namespace base 40