|  | // Copyright 2016 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef BASE_TEST_TEST_MESSAGE_LOOP_H_ | 
|  | #define BASE_TEST_TEST_MESSAGE_LOOP_H_ | 
|  |  | 
|  | #include "base/message_loop/message_loop.h" | 
|  |  | 
|  | namespace base { | 
|  |  | 
|  | // TestMessageLoop is a convenience class for unittests that need to create a | 
|  | // message loop without a real thread backing it. For most tests, | 
|  | // it is sufficient to just instantiate TestMessageLoop as a member variable. | 
|  | // | 
|  | // TestMessageLoop will attempt to drain the underlying MessageLoop on | 
|  | // destruction for clean teardown of tests. | 
|  | class TestMessageLoop { | 
|  | public: | 
|  | TestMessageLoop(); | 
|  | explicit TestMessageLoop(MessageLoop::Type type); | 
|  | ~TestMessageLoop(); | 
|  |  | 
|  | const scoped_refptr<SingleThreadTaskRunner>& task_runner() { | 
|  | return loop_.task_runner(); | 
|  | } | 
|  |  | 
|  | private: | 
|  | MessageLoop loop_; | 
|  | }; | 
|  |  | 
|  | }  // namespace base | 
|  |  | 
|  | #endif  // BASE_TEST_TEST_MESSAGE_LOOP_H_ |