test_browser_thread_bundle.cc revision 868fa2fe829687343ffae624259930155e16dbd8
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_browser_thread_bundle.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/message_loop.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/run_loop.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/test/test_browser_thread.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)TestBrowserThreadBundle::TestBrowserThreadBundle() {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Init(DEFAULT);
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestBrowserThreadBundle::TestBrowserThreadBundle(int options) {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Init(options);
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestBrowserThreadBundle::~TestBrowserThreadBundle() {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::RunLoop().RunUntilIdle();
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestBrowserThreadBundle::Init(int options) {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (options & IO_MAINLOOP) {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    message_loop_.reset(new base::MessageLoopForIO());
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    message_loop_.reset(new base::MessageLoopForUI());
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui_thread_.reset(new TestBrowserThread(BrowserThread::UI,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         message_loop_.get()));
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (options & REAL_DB_THREAD) {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    db_thread_.reset(new TestBrowserThread(BrowserThread::DB));
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    db_thread_->Start();
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    db_thread_.reset(new TestBrowserThread(BrowserThread::DB,
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           message_loop_.get()));
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (options & REAL_WEBKIT_DEPRECATED_THREAD) {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    webkit_deprecated_thread_.reset(
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        new TestBrowserThread(BrowserThread::WEBKIT_DEPRECATED));
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    webkit_deprecated_thread_->Start();
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    webkit_deprecated_thread_.reset(
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        new TestBrowserThread(BrowserThread::WEBKIT_DEPRECATED,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              message_loop_.get()));
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (options & REAL_FILE_THREAD) {
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file_thread_.reset(new TestBrowserThread(BrowserThread::FILE));
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file_thread_->Start();
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file_thread_.reset(new TestBrowserThread(BrowserThread::FILE,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             message_loop_.get()));
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (options & REAL_FILE_USER_BLOCKING_THREAD) {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file_user_blocking_thread_.reset(
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        new TestBrowserThread(BrowserThread::FILE_USER_BLOCKING));
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file_user_blocking_thread_->Start();
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file_user_blocking_thread_.reset(
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        new TestBrowserThread(BrowserThread::FILE_USER_BLOCKING,
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              message_loop_.get()));
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (options & REAL_PROCESS_LAUNCHER_THREAD) {
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    process_launcher_thread_.reset(
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        new TestBrowserThread(BrowserThread::PROCESS_LAUNCHER));
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    process_launcher_thread_->Start();
75ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  } else {
76ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    process_launcher_thread_.reset(
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        new TestBrowserThread(BrowserThread::PROCESS_LAUNCHER,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              message_loop_.get()));
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (options & REAL_CACHE_THREAD) {
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    cache_thread_.reset(new TestBrowserThread(BrowserThread::CACHE));
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    cache_thread_->Start();
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    cache_thread_.reset(new TestBrowserThread(BrowserThread::CACHE,
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                              message_loop_.get()));
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (options & REAL_IO_THREAD) {
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    io_thread_.reset(new TestBrowserThread(BrowserThread::IO));
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    io_thread_->StartIOThread();
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    io_thread_.reset(
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        new TestBrowserThread(BrowserThread::IO, message_loop_.get()));
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)