Chromium Code Reviews| Index: base/test/scoped_async_task_scheduler.cc |
| diff --git a/base/test/scoped_async_task_scheduler.cc b/base/test/scoped_async_task_scheduler.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..824b07fba930680f9a019f4a10fc044a1269ba55 |
| --- /dev/null |
| +++ b/base/test/scoped_async_task_scheduler.cc |
| @@ -0,0 +1,39 @@ |
| +// Copyright 2017 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/scoped_async_task_scheduler.h" |
| + |
| +#include <vector> |
| + |
| +#include "base/bind.h" |
| +#include "base/logging.h" |
| +#include "base/task_scheduler/scheduler_worker_pool_params.h" |
| +#include "base/task_scheduler/task_scheduler.h" |
| + |
| +namespace base { |
| +namespace test { |
| + |
| +ScopedAsyncTaskScheduler::ScopedAsyncTaskScheduler() { |
| + DCHECK(!TaskScheduler::GetInstance()); |
| + constexpr int kMaxThreads = 1; |
| + const TimeDelta kSuggestedReclaimTime = TimeDelta::Max(); |
|
gab
2017/01/09 19:55:46
constexpr
fdoray
2017/01/09 20:23:48
TimeDelta::Max is not constexpr (yet) :(
gab
2017/01/09 20:27:11
Ah weird, the rest of TimeDeltas are...
|
| + std::vector<SchedulerWorkerPoolParams> worker_pool_params_vector; |
| + worker_pool_params_vector.emplace_back( |
| + "ScopedAsyncTaskScheduler", ThreadPriority::NORMAL, |
| + SchedulerWorkerPoolParams::StandbyThreadPolicy::LAZY, kMaxThreads, |
| + kSuggestedReclaimTime); |
| + TaskScheduler::CreateAndSetDefaultTaskScheduler( |
| + worker_pool_params_vector, |
| + Bind([](const TaskTraits&) -> size_t { return 0; })); |
| + task_scheduler_ = TaskScheduler::GetInstance(); |
| +} |
| + |
| +ScopedAsyncTaskScheduler::~ScopedAsyncTaskScheduler() { |
| + DCHECK_EQ(TaskScheduler::GetInstance(), task_scheduler_); |
| + TaskScheduler::GetInstance()->Shutdown(); |
| + TaskScheduler::SetInstance(nullptr); |
| +} |
| + |
| +} // namespace test |
| +} // namespace base |