// 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 #include "gin/v8_background_task_runner.h" #include "base/bind.h" #include "base/bind_helpers.h" #include "base/task_scheduler/post_task.h" #include "base/task_scheduler/task_scheduler.h" #include "base/task_scheduler/task_traits.h" namespace gin { namespace { constexpr base::TaskTraits kBackgroundThreadTaskTraits = { base::TaskPriority::USER_VISIBLE}; } // namespace void V8BackgroundTaskRunner::PostTask(std::unique_ptr task) { base::PostTaskWithTraits(FROM_HERE, kBackgroundThreadTaskTraits, base::BindOnce(&v8::Task::Run, std::move(task))); } void V8BackgroundTaskRunner::PostDelayedTask(std::unique_ptr task, double delay_in_seconds) { base::PostDelayedTaskWithTraits( FROM_HERE, kBackgroundThreadTaskTraits, base::BindOnce(&v8::Task::Run, std::move(task)), base::TimeDelta::FromSecondsD(delay_in_seconds)); } void V8BackgroundTaskRunner::PostIdleTask(std::unique_ptr task) { NOTREACHED() << "Idle tasks are not supported on background threads."; } bool V8BackgroundTaskRunner::IdleTasksEnabled() { // No idle tasks on background threads. return false; } // static size_t V8BackgroundTaskRunner::NumberOfAvailableBackgroundThreads() { return std::max(1, base::TaskScheduler::GetInstance() ->GetMaxConcurrentNonBlockedTasksWithTraitsDeprecated( kBackgroundThreadTaskTraits)); } } // namespace gin