v8_foreground_task_runner.cc 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // 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. #include "gin/v8_foreground_task_runner.h"
  5. #include "base/bind.h"
  6. #include "base/callback_helpers.h"
  7. #include "base/task/single_thread_task_runner.h"
  8. #include "base/threading/thread_task_runner_handle.h"
  9. #include "base/time/time.h"
  10. namespace gin {
  11. V8ForegroundTaskRunner::V8ForegroundTaskRunner(
  12. scoped_refptr<base::SingleThreadTaskRunner> task_runner)
  13. : task_runner_(std::move(task_runner)) {
  14. DCHECK(task_runner_);
  15. }
  16. V8ForegroundTaskRunner::~V8ForegroundTaskRunner() = default;
  17. void V8ForegroundTaskRunner::PostTask(std::unique_ptr<v8::Task> task) {
  18. task_runner_->PostTask(FROM_HERE,
  19. base::BindOnce(&v8::Task::Run, std::move(task)));
  20. }
  21. void V8ForegroundTaskRunner::PostNonNestableTask(
  22. std::unique_ptr<v8::Task> task) {
  23. task_runner_->PostNonNestableTask(
  24. FROM_HERE, base::BindOnce(&v8::Task::Run, std::move(task)));
  25. }
  26. void V8ForegroundTaskRunner::PostDelayedTask(std::unique_ptr<v8::Task> task,
  27. double delay_in_seconds) {
  28. task_runner_->PostDelayedTask(FROM_HERE,
  29. base::BindOnce(&v8::Task::Run, std::move(task)),
  30. base::Seconds(delay_in_seconds));
  31. }
  32. void V8ForegroundTaskRunner::PostNonNestableDelayedTask(
  33. std::unique_ptr<v8::Task> task,
  34. double delay_in_seconds) {
  35. task_runner_->PostNonNestableDelayedTask(
  36. FROM_HERE, base::BindOnce(&v8::Task::Run, std::move(task)),
  37. base::Seconds(delay_in_seconds));
  38. }
  39. void V8ForegroundTaskRunner::PostIdleTask(std::unique_ptr<v8::IdleTask> task) {
  40. DCHECK(IdleTasksEnabled());
  41. idle_task_runner()->PostIdleTask(std::move(task));
  42. }
  43. bool V8ForegroundTaskRunner::NonNestableTasksEnabled() const {
  44. return true;
  45. }
  46. bool V8ForegroundTaskRunner::NonNestableDelayedTasksEnabled() const {
  47. return true;
  48. }
  49. } // namespace gin