sync_file_system_test_util.h revision 7d4cd473f85ac64c3747c96c277f9e506a0d2246
1// Copyright (c) 2012 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 CHROME_BROWSER_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_TEST_UTIL_H_
6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_TEST_UTIL_H_
7
8#include "base/memory/ref_counted.h"
9#include "base/memory/scoped_ptr.h"
10#include "base/message_loop.h"
11
12namespace base {
13class RunLoop;
14class SingleThreadTaskRunner;
15}
16
17namespace content {
18class TestBrowserThreadBundle;
19}
20
21namespace sync_file_system {
22
23template <typename R>
24void AssignAndQuit(base::RunLoop* run_loop, R* result_out, R result);
25
26template <typename R> base::Callback<void(R)>
27AssignAndQuitCallback(base::RunLoop* run_loop, R* result);
28
29// This sets up FILE, IO and UI browser threads for testing.
30// (UI thread is set to the current thread.)
31class MultiThreadTestHelper {
32 public:
33  MultiThreadTestHelper();
34  ~MultiThreadTestHelper();
35
36  void SetUp();
37  void TearDown();
38
39  base::SingleThreadTaskRunner* ui_task_runner() {
40    return ui_task_runner_.get();
41  }
42
43  base::SingleThreadTaskRunner* file_task_runner() {
44    return file_task_runner_.get();
45  }
46
47  base::SingleThreadTaskRunner* io_task_runner() {
48    return io_task_runner_.get();
49  }
50
51 private:
52  scoped_ptr<content::TestBrowserThreadBundle> thread_bundle_;
53
54  scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
55  scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_;
56  scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
57};
58
59}  // namespace sync_file_system
60
61#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_TEST_UTIL_H_
62