thread_test_helper.cc 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. #include "base/test/thread_test_helper.h"
  5. #include <utility>
  6. #include "base/bind.h"
  7. #include "base/location.h"
  8. #include "base/threading/thread_restrictions.h"
  9. namespace base {
  10. ThreadTestHelper::ThreadTestHelper(
  11. scoped_refptr<SequencedTaskRunner> target_sequence)
  12. : test_result_(false),
  13. target_sequence_(std::move(target_sequence)),
  14. done_event_(WaitableEvent::ResetPolicy::AUTOMATIC,
  15. WaitableEvent::InitialState::NOT_SIGNALED) {}
  16. bool ThreadTestHelper::Run() {
  17. if (!target_sequence_->PostTask(
  18. FROM_HERE, base::BindOnce(&ThreadTestHelper::RunOnSequence, this))) {
  19. return false;
  20. }
  21. base::ScopedAllowBaseSyncPrimitivesForTesting allow_wait;
  22. done_event_.Wait();
  23. return test_result_;
  24. }
  25. void ThreadTestHelper::RunTest() { set_test_result(true); }
  26. ThreadTestHelper::~ThreadTestHelper() = default;
  27. void ThreadTestHelper::RunOnSequence() {
  28. RunTest();
  29. done_event_.Signal();
  30. }
  31. } // namespace base