1 // Copyright 2017 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "gin/v8_foreground_task_runner.h"
7 #include "base/functional/bind.h"
8 #include "base/functional/callback_helpers.h"
9 #include "base/task/single_thread_task_runner.h"
10 #include "base/time/time.h"
14 V8ForegroundTaskRunner::V8ForegroundTaskRunner(
15 scoped_refptr<base::SingleThreadTaskRunner> task_runner)
16 : task_runner_(std::move(task_runner)) {
20 V8ForegroundTaskRunner::~V8ForegroundTaskRunner() = default;
22 void V8ForegroundTaskRunner::PostTask(std::unique_ptr<v8::Task> task) {
23 task_runner_->PostTask(FROM_HERE,
24 base::BindOnce(&v8::Task::Run, std::move(task)));
27 void V8ForegroundTaskRunner::PostNonNestableTask(
28 std::unique_ptr<v8::Task> task) {
29 task_runner_->PostNonNestableTask(
30 FROM_HERE, base::BindOnce(&v8::Task::Run, std::move(task)));
33 void V8ForegroundTaskRunner::PostDelayedTask(std::unique_ptr<v8::Task> task,
34 double delay_in_seconds) {
35 task_runner_->PostDelayedTask(FROM_HERE,
36 base::BindOnce(&v8::Task::Run, std::move(task)),
37 base::Seconds(delay_in_seconds));
40 void V8ForegroundTaskRunner::PostNonNestableDelayedTask(
41 std::unique_ptr<v8::Task> task,
42 double delay_in_seconds) {
43 task_runner_->PostNonNestableDelayedTask(
44 FROM_HERE, base::BindOnce(&v8::Task::Run, std::move(task)),
45 base::Seconds(delay_in_seconds));
48 void V8ForegroundTaskRunner::PostIdleTask(std::unique_ptr<v8::IdleTask> task) {
49 DCHECK(IdleTasksEnabled());
50 idle_task_runner()->PostIdleTask(std::move(task));
53 bool V8ForegroundTaskRunner::NonNestableTasksEnabled() const {
57 bool V8ForegroundTaskRunner::NonNestableDelayedTasksEnabled() const {