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 11 namespace base { 12 ThreadTestHelper(const scoped_refptr<MessageLoopProxy> & target_thread)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 Run()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 RunTest()30void ThreadTestHelper::RunTest() { set_test_result(true); } 31 ~ThreadTestHelper()32ThreadTestHelper::~ThreadTestHelper() {} 33 RunInThread()34void ThreadTestHelper::RunInThread() { 35 RunTest(); 36 done_event_.Signal(); 37 } 38 39 } // namespace base 40