1 // Copyright 2016 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 #ifndef BASE_TEST_TEST_MESSAGE_LOOP_H_
6 #define BASE_TEST_TEST_MESSAGE_LOOP_H_
7 
8 #include "base/message_loop/message_loop.h"
9 
10 namespace base {
11 
12 // TestMessageLoop is a convenience class for unittests that need to create a
13 // message loop without a real thread backing it. For most tests,
14 // it is sufficient to just instantiate TestMessageLoop as a member variable.
15 //
16 // TestMessageLoop will attempt to drain the underlying MessageLoop on
17 // destruction for clean teardown of tests.
18 class TestMessageLoop {
19  public:
20   TestMessageLoop();
21   explicit TestMessageLoop(MessageLoop::Type type);
22   ~TestMessageLoop();
23 
task_runner()24   const scoped_refptr<SingleThreadTaskRunner>& task_runner() {
25     return loop_.task_runner();
26   }
27 
28  private:
29   MessageLoop loop_;
30 };
31 
32 }  // namespace base
33 
34 #endif  // BASE_TEST_TEST_MESSAGE_LOOP_H_
35