| Index: content/public/test/test_browser_thread_bundle.cc
|
| diff --git a/content/public/test/test_browser_thread_bundle.cc b/content/public/test/test_browser_thread_bundle.cc
|
| index fbcf6fcb5186d8098296e63df675eefe2b2caf91..23cc3b54934277f6bd2468197b9bd6e0daee3667 100644
|
| --- a/content/public/test/test_browser_thread_bundle.cc
|
| +++ b/content/public/test/test_browser_thread_bundle.cc
|
| @@ -8,10 +8,8 @@
|
| #include "base/memory/ptr_util.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/run_loop.h"
|
| -#include "base/task_scheduler/task_scheduler.h"
|
| #include "base/test/scoped_async_task_scheduler.h"
|
| #include "content/browser/browser_thread_impl.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| #include "content/public/test/test_browser_thread.h"
|
|
|
| namespace content {
|
| @@ -25,7 +23,7 @@
|
| }
|
|
|
| TestBrowserThreadBundle::~TestBrowserThreadBundle() {
|
| - CHECK(threads_created_);
|
| + DCHECK(threads_created_);
|
|
|
| // To avoid memory leaks, we must ensure that any tasks posted to the blocking
|
| // pool via PostTaskAndReply are able to reply back to the originating thread.
|
| @@ -61,38 +59,30 @@
|
| scoped_async_task_scheduler_.reset();
|
|
|
| base::RunLoop().RunUntilIdle();
|
| - CHECK(base::MessageLoop::current()->IsIdleForTesting());
|
|
|
| // |message_loop_| needs to explicitly go away before fake threads in order
|
| // for DestructionObservers hooked to |message_loop_| to be able to invoke
|
| // BrowserThread::CurrentlyOn() -- ref. ~TestBrowserThread().
|
| + CHECK(message_loop_->IsIdleForTesting());
|
| message_loop_.reset();
|
| }
|
|
|
| void TestBrowserThreadBundle::Init() {
|
| - // Check that the UI thread hasn't already been initialized. This will fail if
|
| - // multiple TestBrowserThreadBundles are initialized in the same scope.
|
| - CHECK(!BrowserThread::IsThreadInitialized(BrowserThread::UI));
|
| -
|
| // Check for conflicting options can't have two IO threads.
|
| CHECK(!(options_ & IO_MAINLOOP) || !(options_ & REAL_IO_THREAD));
|
| // There must be a thread to start to use DONT_CREATE_THREADS
|
| CHECK((options_ & ~IO_MAINLOOP) != DONT_CREATE_THREADS);
|
|
|
| - // Create the main MessageLoop, if it doesn't already exist, and set the
|
| - // current thread as the UI thread. In production, this work is done in
|
| - // BrowserMainLoop::MainMessageLoopStart(). The main MessageLoop may already
|
| - // exist if this TestBrowserThreadBundle is instantiated in a test whose
|
| - // parent fixture provides a base::test::ScopedTaskEnvironment.
|
| - const base::MessageLoop::Type message_loop_type =
|
| - options_ & IO_MAINLOOP ? base::MessageLoop::TYPE_IO
|
| - : base::MessageLoop::TYPE_UI;
|
| - if (!base::MessageLoop::current())
|
| - message_loop_ = base::MakeUnique<base::MessageLoop>(message_loop_type);
|
| - CHECK(base::MessageLoop::current()->IsType(message_loop_type));
|
| + // Create the UI thread. In production, this work is done in
|
| + // BrowserMainLoop::MainMessageLoopStart().
|
| + if (options_ & IO_MAINLOOP) {
|
| + message_loop_.reset(new base::MessageLoopForIO());
|
| + } else {
|
| + message_loop_.reset(new base::MessageLoopForUI());
|
| + }
|
|
|
| - ui_thread_ = base::MakeUnique<TestBrowserThread>(
|
| - BrowserThread::UI, base::MessageLoop::current());
|
| + ui_thread_.reset(
|
| + new TestBrowserThread(BrowserThread::UI, message_loop_.get()));
|
|
|
| if (!(options_ & DONT_CREATE_THREADS))
|
| CreateThreads();
|
| @@ -100,47 +90,40 @@
|
|
|
| // This method mimics the work done in BrowserMainLoop::CreateThreads().
|
| void TestBrowserThreadBundle::CreateThreads() {
|
| - CHECK(!threads_created_);
|
| + DCHECK(!threads_created_);
|
|
|
| - // TaskScheduler can sometimes be externally provided by a
|
| - // base::test::ScopedTaskEnvironment in a parent fixture. In that case it's
|
| - // expected to have provided the MessageLoop as well (in which case
|
| - // |message_loop_| remains null in Init()).
|
| - CHECK(!base::TaskScheduler::GetInstance() || !message_loop_);
|
| - if (!base::TaskScheduler::GetInstance()) {
|
| - scoped_async_task_scheduler_ =
|
| - base::MakeUnique<base::test::ScopedAsyncTaskScheduler>();
|
| - }
|
| + scoped_async_task_scheduler_ =
|
| + base::MakeUnique<base::test::ScopedAsyncTaskScheduler>();
|
|
|
| if (options_ & REAL_DB_THREAD) {
|
| - db_thread_ = base::MakeUnique<TestBrowserThread>(BrowserThread::DB);
|
| + db_thread_.reset(new TestBrowserThread(BrowserThread::DB));
|
| db_thread_->Start();
|
| } else {
|
| - db_thread_ = base::MakeUnique<TestBrowserThread>(
|
| - BrowserThread::DB, base::MessageLoop::current());
|
| + db_thread_.reset(
|
| + new TestBrowserThread(BrowserThread::DB, message_loop_.get()));
|
| }
|
|
|
| if (options_ & REAL_FILE_THREAD) {
|
| - file_thread_ = base::MakeUnique<TestBrowserThread>(BrowserThread::FILE);
|
| + file_thread_.reset(new TestBrowserThread(BrowserThread::FILE));
|
| file_thread_->Start();
|
| } else {
|
| - file_thread_ = base::MakeUnique<TestBrowserThread>(
|
| - BrowserThread::FILE, base::MessageLoop::current());
|
| + file_thread_.reset(
|
| + new TestBrowserThread(BrowserThread::FILE, message_loop_.get()));
|
| }
|
|
|
| - file_user_blocking_thread_ = base::MakeUnique<TestBrowserThread>(
|
| - BrowserThread::FILE_USER_BLOCKING, base::MessageLoop::current());
|
| - process_launcher_thread_ = base::MakeUnique<TestBrowserThread>(
|
| - BrowserThread::PROCESS_LAUNCHER, base::MessageLoop::current());
|
| - cache_thread_ = base::MakeUnique<TestBrowserThread>(
|
| - BrowserThread::CACHE, base::MessageLoop::current());
|
| + file_user_blocking_thread_.reset(new TestBrowserThread(
|
| + BrowserThread::FILE_USER_BLOCKING, message_loop_.get()));
|
| + process_launcher_thread_.reset(new TestBrowserThread(
|
| + BrowserThread::PROCESS_LAUNCHER, message_loop_.get()));
|
| + cache_thread_.reset(
|
| + new TestBrowserThread(BrowserThread::CACHE, message_loop_.get()));
|
|
|
| if (options_ & REAL_IO_THREAD) {
|
| - io_thread_ = base::MakeUnique<TestBrowserThread>(BrowserThread::IO);
|
| + io_thread_.reset(new TestBrowserThread(BrowserThread::IO));
|
| io_thread_->StartIOThread();
|
| } else {
|
| - io_thread_ = base::MakeUnique<TestBrowserThread>(
|
| - BrowserThread::IO, base::MessageLoop::current());
|
| + io_thread_.reset(
|
| + new TestBrowserThread(BrowserThread::IO, message_loop_.get()));
|
| }
|
|
|
| threads_created_ = true;
|
|
|