blob: 4d93e27b64b652ccb0a5d54ea8eb99d7f8b37ef0 [file] [log] [blame]
Andreas Haasc13cae82017-11-16 12:54:381// Copyright 2017 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "gin/v8_foreground_task_runner.h"
6
7#include "base/bind.h"
danakjdb9ae7942020-11-11 16:01:358#include "base/callback_helpers.h"
Andreas Haasc13cae82017-11-16 12:54:389#include "base/single_thread_task_runner.h"
10#include "base/threading/thread_task_runner_handle.h"
11
12namespace gin {
13
14V8ForegroundTaskRunner::V8ForegroundTaskRunner(
15 scoped_refptr<base::SingleThreadTaskRunner> task_runner)
16 : task_runner_(std::move(task_runner)) {
17 DCHECK(task_runner_);
18}
19
Chris Watkins756035a2017-12-01 03:03:2720V8ForegroundTaskRunner::~V8ForegroundTaskRunner() = default;
Andreas Haasc13cae82017-11-16 12:54:3821
22void V8ForegroundTaskRunner::PostTask(std::unique_ptr<v8::Task> task) {
23 task_runner_->PostTask(FROM_HERE,
24 base::BindOnce(&v8::Task::Run, std::move(task)));
25}
26
Michael Lippautz98cc7792018-10-14 20:33:0427void V8ForegroundTaskRunner::PostNonNestableTask(
28 std::unique_ptr<v8::Task> task) {
29 task_runner_->PostNonNestableTask(
30 FROM_HERE, base::BindOnce(&v8::Task::Run, std::move(task)));
31}
32
Andreas Haasc13cae82017-11-16 12:54:3833void V8ForegroundTaskRunner::PostDelayedTask(std::unique_ptr<v8::Task> task,
34 double delay_in_seconds) {
35 task_runner_->PostDelayedTask(
36 FROM_HERE, base::BindOnce(&v8::Task::Run, std::move(task)),
37 base::TimeDelta::FromSecondsD(delay_in_seconds));
38}
39
Shu-yu Guobce979e2021-02-12 09:07:2440void 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::TimeDelta::FromSecondsD(delay_in_seconds));
46}
47
Andreas Haasc13cae82017-11-16 12:54:3848void V8ForegroundTaskRunner::PostIdleTask(std::unique_ptr<v8::IdleTask> task) {
49 DCHECK(IdleTasksEnabled());
Jeremy Roman4ab1ed72018-06-12 13:42:2150 idle_task_runner()->PostIdleTask(std::move(task));
Andreas Haasc13cae82017-11-16 12:54:3851}
52
Michael Lippautz98cc7792018-10-14 20:33:0453bool V8ForegroundTaskRunner::NonNestableTasksEnabled() const {
54 return true;
55}
56
Shu-yu Guobce979e2021-02-12 09:07:2457bool V8ForegroundTaskRunner::NonNestableDelayedTasksEnabled() const {
58 return true;
59}
60
Andreas Haasc13cae82017-11-16 12:54:3861} // namespace gin