You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.1 KiB
46 lines
1.1 KiB
4 months ago
|
// Copyright 2013 The Chromium Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
#include "base/test/test_io_thread.h"
|
||
|
|
||
|
#include "base/logging.h"
|
||
|
#include "base/message_loop/message_loop.h"
|
||
|
|
||
|
namespace base {
|
||
|
|
||
|
TestIOThread::TestIOThread(Mode mode)
|
||
|
: io_thread_("test_io_thread"), io_thread_started_(false) {
|
||
|
switch (mode) {
|
||
|
case kAutoStart:
|
||
|
Start();
|
||
|
return;
|
||
|
case kManualStart:
|
||
|
return;
|
||
|
}
|
||
|
CHECK(false) << "Invalid mode";
|
||
|
}
|
||
|
|
||
|
TestIOThread::~TestIOThread() {
|
||
|
Stop();
|
||
|
}
|
||
|
|
||
|
void TestIOThread::Start() {
|
||
|
CHECK(!io_thread_started_);
|
||
|
io_thread_started_ = true;
|
||
|
CHECK(io_thread_.StartWithOptions(
|
||
|
base::Thread::Options(base::MessageLoop::TYPE_IO, 0)));
|
||
|
}
|
||
|
|
||
|
void TestIOThread::Stop() {
|
||
|
// Note: It's okay to call |Stop()| even if the thread isn't running.
|
||
|
io_thread_.Stop();
|
||
|
io_thread_started_ = false;
|
||
|
}
|
||
|
|
||
|
void TestIOThread::PostTask(const Location& from_here, base::OnceClosure task) {
|
||
|
task_runner()->PostTask(from_here, std::move(task));
|
||
|
}
|
||
|
|
||
|
} // namespace base
|