Fix FullScreen crash in Webapp
[platform/framework/web/chromium-efl.git] / gin / v8_foreground_task_runner_with_locker.h
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.
4
5 #ifndef GIN_V8_FOREGROUND_TASK_RUNNER_WITH_LOCKER_H_
6 #define GIN_V8_FOREGROUND_TASK_RUNNER_WITH_LOCKER_H_
7
8 #include "base/memory/raw_ptr.h"
9 #include "base/memory/ref_counted.h"
10 #include "gin/v8_foreground_task_runner_base.h"
11
12 namespace base {
13 class SingleThreadTaskRunner;
14 }
15
16 namespace gin {
17
18 class V8ForegroundTaskRunnerWithLocker : public V8ForegroundTaskRunnerBase {
19  public:
20   V8ForegroundTaskRunnerWithLocker(
21       v8::Isolate* isolate,
22       scoped_refptr<base::SingleThreadTaskRunner> task_runner);
23
24   ~V8ForegroundTaskRunnerWithLocker() override;
25
26   // v8::Platform implementation.
27   void PostTask(std::unique_ptr<v8::Task> task) override;
28
29   void PostNonNestableTask(std::unique_ptr<v8::Task> task) override;
30
31   void PostDelayedTask(std::unique_ptr<v8::Task> task,
32                        double delay_in_seconds) override;
33
34   void PostIdleTask(std::unique_ptr<v8::IdleTask> task) override;
35
36   bool NonNestableTasksEnabled() const override;
37
38  private:
39   raw_ptr<v8::Isolate> isolate_;
40   scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
41 };
42
43 }  // namespace gin
44
45 #endif  // GIN_V8_FOREGROUND_TASK_RUNNER_WITH_LOCKER_H_