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