1*6777b538SAndroid Build Coastguard Worker // Copyright 2016 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef BASE_TEST_TEST_MESSAGE_LOOP_H_ 6*6777b538SAndroid Build Coastguard Worker #define BASE_TEST_TEST_MESSAGE_LOOP_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include "base/message_loop/message_pump_type.h" 9*6777b538SAndroid Build Coastguard Worker #include "base/task/single_thread_task_runner.h" 10*6777b538SAndroid Build Coastguard Worker #include "base/test/task_environment.h" 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker namespace base { 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Worker // TestMessageLoop is a convenience class for unittests that need to create a 15*6777b538SAndroid Build Coastguard Worker // message loop without a real thread backing it. For most tests, 16*6777b538SAndroid Build Coastguard Worker // it is sufficient to just instantiate TestMessageLoop as a member variable. 17*6777b538SAndroid Build Coastguard Worker // 18*6777b538SAndroid Build Coastguard Worker // TestMessageLoop will attempt to drain the underlying MessageLoop on 19*6777b538SAndroid Build Coastguard Worker // destruction for clean teardown of tests. 20*6777b538SAndroid Build Coastguard Worker // 21*6777b538SAndroid Build Coastguard Worker // TODO(b/891670): Get rid of this and migrate users to 22*6777b538SAndroid Build Coastguard Worker // SingleThreadTaskEnvironment 23*6777b538SAndroid Build Coastguard Worker class TestMessageLoop { 24*6777b538SAndroid Build Coastguard Worker public: 25*6777b538SAndroid Build Coastguard Worker TestMessageLoop(); 26*6777b538SAndroid Build Coastguard Worker explicit TestMessageLoop(MessagePumpType type); 27*6777b538SAndroid Build Coastguard Worker ~TestMessageLoop(); 28*6777b538SAndroid Build Coastguard Worker task_runner()29*6777b538SAndroid Build Coastguard Worker scoped_refptr<SingleThreadTaskRunner> task_runner() { 30*6777b538SAndroid Build Coastguard Worker return task_environment_.GetMainThreadTaskRunner(); 31*6777b538SAndroid Build Coastguard Worker } 32*6777b538SAndroid Build Coastguard Worker 33*6777b538SAndroid Build Coastguard Worker private: 34*6777b538SAndroid Build Coastguard Worker test::SingleThreadTaskEnvironment task_environment_; 35*6777b538SAndroid Build Coastguard Worker }; 36*6777b538SAndroid Build Coastguard Worker 37*6777b538SAndroid Build Coastguard Worker } // namespace base 38*6777b538SAndroid Build Coastguard Worker 39*6777b538SAndroid Build Coastguard Worker #endif // BASE_TEST_TEST_MESSAGE_LOOP_H_ 40