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