1// Copyright 2013 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_TEST_BASE_TESTING_IO_THREAD_STATE_H_ 6#define CHROME_TEST_BASE_TESTING_IO_THREAD_STATE_H_ 7 8#include "base/callback_forward.h" 9#include "base/memory/scoped_ptr.h" 10 11class IOThread; 12 13namespace chrome { 14 15// Convenience class for creating an IOThread object in unittests. 16// Usual usage is to create one of these in the test fixture, after the 17// BrowserThreadBundle and TestingBrowserProcess have been initialized. 18// 19// If code requires the use of io thread globals, those can be set by 20// accessing io_thread_state()->globals() on the IO thread during test setup. 21class TestingIOThreadState { 22 public: 23 TestingIOThreadState(); 24 ~TestingIOThreadState(); 25 IOThread* io_thread_state() { return io_thread_state_.get(); } 26 27 private: 28 void Initialize(const base::Closure& done); 29 void Shutdown(const base::Closure& done); 30 31 scoped_ptr<IOThread> io_thread_state_; 32 33 DISALLOW_COPY_AND_ASSIGN(TestingIOThreadState); 34}; 35 36} // namespace chrome 37 38#endif // CHROME_TEST_BASE_TESTING_IO_THREAD_STATE_H_ 39