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 13 ThreadTestHelper::ThreadTestHelper(MessageLoopProxy* target_thread) 14 : test_result_(false), 15 target_thread_(target_thread), 16 done_event_(false, false) { 17 } 18 19 bool 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 29 void ThreadTestHelper::RunTest() { set_test_result(true); } 30 31 ThreadTestHelper::~ThreadTestHelper() {} 32 33 void ThreadTestHelper::RunInThread() { 34 RunTest(); 35 done_event_.Signal(); 36 } 37 38 } // namespace base 39