test_browser_thread_bundle.cc revision 868fa2fe829687343ffae624259930155e16dbd8
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#include "content/public/test/test_browser_thread_bundle.h"
6
7#include "base/message_loop.h"
8#include "base/run_loop.h"
9#include "content/public/test/test_browser_thread.h"
10
11namespace content {
12
13TestBrowserThreadBundle::TestBrowserThreadBundle() {
14  Init(DEFAULT);
15}
16
17TestBrowserThreadBundle::TestBrowserThreadBundle(int options) {
18  Init(options);
19}
20
21TestBrowserThreadBundle::~TestBrowserThreadBundle() {
22  base::RunLoop().RunUntilIdle();
23}
24
25void TestBrowserThreadBundle::Init(int options) {
26  if (options & IO_MAINLOOP) {
27    message_loop_.reset(new base::MessageLoopForIO());
28  } else {
29    message_loop_.reset(new base::MessageLoopForUI());
30  }
31
32  ui_thread_.reset(new TestBrowserThread(BrowserThread::UI,
33                                         message_loop_.get()));
34
35  if (options & REAL_DB_THREAD) {
36    db_thread_.reset(new TestBrowserThread(BrowserThread::DB));
37    db_thread_->Start();
38  } else {
39    db_thread_.reset(new TestBrowserThread(BrowserThread::DB,
40                                           message_loop_.get()));
41  }
42
43  if (options & REAL_WEBKIT_DEPRECATED_THREAD) {
44    webkit_deprecated_thread_.reset(
45        new TestBrowserThread(BrowserThread::WEBKIT_DEPRECATED));
46    webkit_deprecated_thread_->Start();
47  } else {
48    webkit_deprecated_thread_.reset(
49        new TestBrowserThread(BrowserThread::WEBKIT_DEPRECATED,
50                              message_loop_.get()));
51  }
52
53  if (options & REAL_FILE_THREAD) {
54    file_thread_.reset(new TestBrowserThread(BrowserThread::FILE));
55    file_thread_->Start();
56  } else {
57    file_thread_.reset(new TestBrowserThread(BrowserThread::FILE,
58                                             message_loop_.get()));
59  }
60
61  if (options & REAL_FILE_USER_BLOCKING_THREAD) {
62    file_user_blocking_thread_.reset(
63        new TestBrowserThread(BrowserThread::FILE_USER_BLOCKING));
64    file_user_blocking_thread_->Start();
65  } else {
66    file_user_blocking_thread_.reset(
67        new TestBrowserThread(BrowserThread::FILE_USER_BLOCKING,
68                              message_loop_.get()));
69  }
70
71  if (options & REAL_PROCESS_LAUNCHER_THREAD) {
72    process_launcher_thread_.reset(
73        new TestBrowserThread(BrowserThread::PROCESS_LAUNCHER));
74    process_launcher_thread_->Start();
75  } else {
76    process_launcher_thread_.reset(
77        new TestBrowserThread(BrowserThread::PROCESS_LAUNCHER,
78                              message_loop_.get()));
79  }
80
81  if (options & REAL_CACHE_THREAD) {
82    cache_thread_.reset(new TestBrowserThread(BrowserThread::CACHE));
83    cache_thread_->Start();
84  } else {
85    cache_thread_.reset(new TestBrowserThread(BrowserThread::CACHE,
86                                              message_loop_.get()));
87  }
88
89  if (options & REAL_IO_THREAD) {
90    io_thread_.reset(new TestBrowserThread(BrowserThread::IO));
91    io_thread_->StartIOThread();
92  } else {
93    io_thread_.reset(
94        new TestBrowserThread(BrowserThread::IO, message_loop_.get()));
95  }
96}
97
98}  // namespace content
99