sync_file_system_test_util.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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; 15class Thread; 16} 17 18namespace content { 19class TestBrowserThread; 20} 21 22namespace sync_file_system { 23 24template <typename R> 25void AssignAndQuit(base::RunLoop* run_loop, R* result_out, R result); 26 27template <typename R> base::Callback<void(R)> 28AssignAndQuitCallback(base::RunLoop* run_loop, R* result); 29 30// This sets up FILE, IO and UI browser threads for testing. 31// (UI thread is set to the current thread.) 32class MultiThreadTestHelper { 33 public: 34 MultiThreadTestHelper(); 35 ~MultiThreadTestHelper(); 36 37 void SetUp(); 38 void TearDown(); 39 40 MessageLoop* message_loop() { return &message_loop_; } 41 42 base::SingleThreadTaskRunner* ui_task_runner() { 43 return ui_task_runner_.get(); 44 } 45 46 base::SingleThreadTaskRunner* file_task_runner() { 47 return file_task_runner_.get(); 48 } 49 50 base::SingleThreadTaskRunner* io_task_runner() { 51 return io_task_runner_.get(); 52 } 53 54 private: 55 MessageLoop message_loop_; 56 scoped_ptr<base::Thread> file_thread_; 57 scoped_ptr<base::Thread> io_thread_; 58 59 scoped_ptr<content::TestBrowserThread> browser_ui_thread_; 60 scoped_ptr<content::TestBrowserThread> browser_file_thread_; 61 scoped_ptr<content::TestBrowserThread> browser_io_thread_; 62 63 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; 64 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_; 65 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; 66}; 67 68} // namespace sync_file_system 69 70#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_TEST_UTIL_H_ 71