#ifndef BASE_TEST_THREAD_TEST_HELPER_H_
#define BASE_TEST_THREAD_TEST_HELPER_H_
#include "base/memory/ref_counted.h"
#include "base/synchronization/waitable_event.h"
#include "base/task/sequenced_task_runner.h"
namespace base {
class ThreadTestHelper : public RefCountedThreadSafe<ThreadTestHelper> {
public:
explicit ThreadTestHelper(scoped_refptr<SequencedTaskRunner> target_sequence);
ThreadTestHelper(const ThreadTestHelper&) = delete;
ThreadTestHelper& operator=(const ThreadTestHelper&) = delete;
[[nodiscard]] bool Run();
virtual void RunTest();
protected:
friend class RefCountedThreadSafe<ThreadTestHelper>;
virtual ~ThreadTestHelper();
void set_test_result(bool test_result) { test_result_ = test_result; }
private:
void RunOnSequence();
bool test_result_;
scoped_refptr<SequencedTaskRunner> target_sequence_;
WaitableEvent done_event_;
};
}
#endif