OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef AudioWorkletThread_h | 5 #ifndef AudioWorkletThread_h |
6 #define AudioWorkletThread_h | 6 #define AudioWorkletThread_h |
7 | 7 |
8 #include "core/workers/WorkerLoaderProxy.h" | 8 #include "core/workers/WorkerLoaderProxy.h" |
9 #include "core/workers/WorkerThread.h" | 9 #include "core/workers/WorkerThread.h" |
10 #include "core/workers/WorkletThreadHolder.h" | 10 #include "core/workers/WorkletThreadHolder.h" |
11 #include "modules/ModulesExport.h" | 11 #include "modules/ModulesExport.h" |
12 #include <memory> | 12 #include <memory> |
13 | 13 |
14 namespace blink { | 14 namespace blink { |
15 | 15 |
16 class WorkerReportingProxy; | 16 class WorkerReportingProxy; |
17 | 17 |
18 // AudioWorkletThread is a per-frame singleton object that represents the | 18 // AudioWorkletThread is a per-frame singleton object that represents the |
19 // backing thread for the processing of AudioWorkletNode/AudioWorkletProcessor. | 19 // backing thread for the processing of AudioWorkletNode/AudioWorkletProcessor. |
20 // It is supposed to run an instance of V8 isolate. | 20 // It is supposed to run an instance of V8 isolate. |
21 | 21 |
22 class MODULES_EXPORT AudioWorkletThread final : public WorkerThread { | 22 class MODULES_EXPORT AudioWorkletThread final : public WorkerThread { |
23 public: | 23 public: |
24 static std::unique_ptr<AudioWorkletThread> create( | 24 static std::unique_ptr<AudioWorkletThread> create( |
25 PassRefPtr<WorkerLoaderProxy>, | 25 PassRefPtr<WorkerLoaderProxy>, |
26 WorkerReportingProxy&, | 26 WorkerReportingProxy&); |
27 ParentFrameTaskRunners*); | |
28 ~AudioWorkletThread() override; | 27 ~AudioWorkletThread() override; |
29 | 28 |
30 WorkerBackingThread& workerBackingThread() override; | 29 WorkerBackingThread& workerBackingThread() override; |
31 | 30 |
32 // The backing thread is cleared by clearSharedBackingThread(). | 31 // The backing thread is cleared by clearSharedBackingThread(). |
33 void clearWorkerBackingThread() override {} | 32 void clearWorkerBackingThread() override {} |
34 | 33 |
35 // This may block the main thread. | 34 // This may block the main thread. |
36 static void collectAllGarbage(); | 35 static void collectAllGarbage(); |
37 | 36 |
38 static void ensureSharedBackingThread(); | 37 static void ensureSharedBackingThread(); |
39 static void clearSharedBackingThread(); | 38 static void clearSharedBackingThread(); |
40 | 39 |
41 static void createSharedBackingThreadForTest(); | 40 static void createSharedBackingThreadForTest(); |
42 | 41 |
43 protected: | 42 protected: |
44 WorkerOrWorkletGlobalScope* createWorkerGlobalScope( | 43 WorkerOrWorkletGlobalScope* createWorkerGlobalScope( |
45 std::unique_ptr<WorkerThreadStartupData>) final; | 44 std::unique_ptr<WorkerThreadStartupData>) final; |
46 | 45 |
47 bool isOwningBackingThread() const override { return false; } | 46 bool isOwningBackingThread() const override { return false; } |
48 | 47 |
49 private: | 48 private: |
50 AudioWorkletThread(PassRefPtr<WorkerLoaderProxy>, | 49 AudioWorkletThread(PassRefPtr<WorkerLoaderProxy>, WorkerReportingProxy&); |
51 WorkerReportingProxy&, | |
52 ParentFrameTaskRunners*); | |
53 }; | 50 }; |
54 | 51 |
55 } // namespace blink | 52 } // namespace blink |
56 | 53 |
57 #endif // AudioWorkletThread_h | 54 #endif // AudioWorkletThread_h |
OLD | NEW |