1a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// found in the LICENSE file. 4a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 5a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#ifndef CHROME_TEST_BASE_TESTING_IO_THREAD_STATE_H_ 6a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#define CHROME_TEST_BASE_TESTING_IO_THREAD_STATE_H_ 7a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 8a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "base/callback_forward.h" 9a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "base/memory/scoped_ptr.h" 10a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 11a3f7b4e666c476898878fa745f637129375cd889Ben Murdochclass IOThread; 12a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 13a3f7b4e666c476898878fa745f637129375cd889Ben Murdochnamespace chrome { 14a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 15a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// Convenience class for creating an IOThread object in unittests. 16a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// Usual usage is to create one of these in the test fixture, after the 17a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// BrowserThreadBundle and TestingBrowserProcess have been initialized. 18a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// 19a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// If code requires the use of io thread globals, those can be set by 20a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// accessing io_thread_state()->globals() on the IO thread during test setup. 21a3f7b4e666c476898878fa745f637129375cd889Ben Murdochclass TestingIOThreadState { 22a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch public: 23a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch TestingIOThreadState(); 24a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch ~TestingIOThreadState(); 25a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch IOThread* io_thread_state() { return io_thread_state_.get(); } 26a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 27a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch private: 28a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch void Initialize(const base::Closure& done); 29a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch void Shutdown(const base::Closure& done); 30a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 31a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch scoped_ptr<IOThread> io_thread_state_; 32a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 33a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch DISALLOW_COPY_AND_ASSIGN(TestingIOThreadState); 34a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch}; 35a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 36a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch} // namespace chrome 37a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 38a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#endif // CHROME_TEST_BASE_TESTING_IO_THREAD_STATE_H_ 39