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 #include "modules/webaudio/AudioWorkletThread.h" | 5 #include "modules/webaudio/AudioWorkletThread.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include "core/workers/WorkerBackingThread.h" | 8 #include "core/workers/WorkerBackingThread.h" |
9 #include "core/workers/WorkerThreadStartupData.h" | 9 #include "core/workers/WorkerThreadStartupData.h" |
10 #include "modules/webaudio/AudioWorkletGlobalScope.h" | 10 #include "modules/webaudio/AudioWorkletGlobalScope.h" |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 BLINK_FROM_HERE, CrossThreadBind(&CollectAllGarbageOnAudioWorkletThread, | 58 BLINK_FROM_HERE, CrossThreadBind(&CollectAllGarbageOnAudioWorkletThread, |
59 CrossThreadUnretained(&done_event))); | 59 CrossThreadUnretained(&done_event))); |
60 done_event.Wait(); | 60 done_event.Wait(); |
61 } | 61 } |
62 | 62 |
63 void AudioWorkletThread::EnsureSharedBackingThread() { | 63 void AudioWorkletThread::EnsureSharedBackingThread() { |
64 DCHECK(IsMainThread()); | 64 DCHECK(IsMainThread()); |
65 WorkletThreadHolder<AudioWorkletThread>::EnsureInstance("AudioWorkletThread"); | 65 WorkletThreadHolder<AudioWorkletThread>::EnsureInstance("AudioWorkletThread"); |
66 } | 66 } |
67 | 67 |
| 68 void AudioWorkletThread::SetSharedBackingThread(WebThread* thread) { |
| 69 DCHECK(IsMainThread()); |
| 70 WorkletThreadHolder<AudioWorkletThread>::EnsureInstance(thread); |
| 71 } |
| 72 |
68 void AudioWorkletThread::ClearSharedBackingThread() { | 73 void AudioWorkletThread::ClearSharedBackingThread() { |
69 DCHECK(IsMainThread()); | 74 DCHECK(IsMainThread()); |
70 WorkletThreadHolder<AudioWorkletThread>::ClearInstance(); | 75 WorkletThreadHolder<AudioWorkletThread>::ClearInstance(); |
71 } | 76 } |
72 | 77 |
73 void AudioWorkletThread::CreateSharedBackingThreadForTest() { | 78 void AudioWorkletThread::CreateSharedBackingThreadForTest() { |
74 WorkletThreadHolder<AudioWorkletThread>::CreateForTest("AudioWorkletThread"); | 79 WorkletThreadHolder<AudioWorkletThread>::CreateForTest("AudioWorkletThread"); |
75 } | 80 } |
76 | 81 |
77 WorkerOrWorkletGlobalScope* AudioWorkletThread::CreateWorkerGlobalScope( | 82 WorkerOrWorkletGlobalScope* AudioWorkletThread::CreateWorkerGlobalScope( |
78 std::unique_ptr<WorkerThreadStartupData> startup_data) { | 83 std::unique_ptr<WorkerThreadStartupData> startup_data) { |
79 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("audio-worklet"), | 84 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("audio-worklet"), |
80 "AudioWorkletThread::createWorkerGlobalScope"); | 85 "AudioWorkletThread::createWorkerGlobalScope"); |
81 | 86 |
82 RefPtr<SecurityOrigin> security_origin = | 87 RefPtr<SecurityOrigin> security_origin = |
83 SecurityOrigin::Create(startup_data->script_url_); | 88 SecurityOrigin::Create(startup_data->script_url_); |
84 if (startup_data->starter_origin_privilege_data_) { | 89 if (startup_data->starter_origin_privilege_data_) { |
85 security_origin->TransferPrivilegesFrom( | 90 security_origin->TransferPrivilegesFrom( |
86 std::move(startup_data->starter_origin_privilege_data_)); | 91 std::move(startup_data->starter_origin_privilege_data_)); |
87 } | 92 } |
88 | 93 |
89 return AudioWorkletGlobalScope::Create( | 94 return AudioWorkletGlobalScope::Create( |
90 startup_data->script_url_, startup_data->user_agent_, | 95 startup_data->script_url_, startup_data->user_agent_, |
91 std::move(security_origin), this->GetIsolate(), this, | 96 std::move(security_origin), this->GetIsolate(), this, |
92 startup_data->worker_clients_); | 97 startup_data->worker_clients_); |
93 } | 98 } |
94 | 99 |
95 } // namespace blink | 100 } // namespace blink |
OLD | NEW |