| Index: third_party/WebKit/Source/modules/webaudio/AudioWorkletObjectProxy.cpp
|
| diff --git a/third_party/WebKit/Source/modules/webaudio/AudioWorkletObjectProxy.cpp b/third_party/WebKit/Source/modules/webaudio/AudioWorkletObjectProxy.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0bb1c48255d4ef518a41ac3fcf37eac583a2a60f
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/modules/webaudio/AudioWorkletObjectProxy.cpp
|
| @@ -0,0 +1,69 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "modules/webaudio/AudioWorkletObjectProxy.h"
|
| +
|
| +#include <memory>
|
| +#include "bindings/core/v8/ScriptSourceCode.h"
|
| +#include "bindings/core/v8/WorkerOrWorkletScriptController.h"
|
| +#include "core/workers/WorkerThread.h"
|
| +#include "modules/webaudio/AudioWorkletGlobalScope.h"
|
| +#include "modules/webaudio/AudioWorkletMessagingProxy.h"
|
| +#include "modules/webaudio/AudioWorkletNode.h"
|
| +#include "modules/webaudio/AudioWorkletProcessor.h"
|
| +#include "modules/webaudio/AudioWorkletProcessorDefinition.h"
|
| +#include "platform/wtf/PtrUtil.h"
|
| +
|
| +
|
| +namespace blink {
|
| +
|
| +std::unique_ptr<AudioWorkletObjectProxy> AudioWorkletObjectProxy::Create(
|
| + const WeakPtr<AudioWorkletMessagingProxy>& messaging_proxy_weak_ptr,
|
| + ParentFrameTaskRunners* parent_frame_task_runners) {
|
| + DCHECK(messaging_proxy_weak_ptr);
|
| + return WTF::WrapUnique(new AudioWorkletObjectProxy(
|
| + messaging_proxy_weak_ptr, parent_frame_task_runners));
|
| +}
|
| +
|
| +AudioWorkletObjectProxy::~AudioWorkletObjectProxy() {}
|
| +
|
| +void AudioWorkletObjectProxy::EvaluateScript(const String& source,
|
| + const KURL& script_url,
|
| + WorkerThread* worker_thread) {
|
| + AudioWorkletGlobalScope* global_scope =
|
| + ToAudioWorkletGlobalScope(worker_thread->GlobalScope());
|
| + global_scope->ScriptController()->Evaluate(
|
| + ScriptSourceCode(source, script_url));
|
| +}
|
| +
|
| +void AudioWorkletObjectProxy::CreateProcessorInstance(
|
| + const String& name,
|
| + AudioWorkletHandler* handler,
|
| + WaitableEvent* done,
|
| + WorkerThread* worker_thread) {
|
| + AudioWorkletGlobalScope* global_scope =
|
| + ToAudioWorkletGlobalScope(worker_thread->GlobalScope());
|
| + ScriptState* script_state =
|
| + global_scope->ScriptController()->GetScriptState();
|
| +
|
| + ScriptState::Scope scope(script_state);
|
| +
|
| + AudioWorkletProcessor* processor = global_scope->CreateInstance(name);
|
| + handler->SetProcessor(processor);
|
| +
|
| + done->Signal();
|
| +}
|
| +
|
| +AudioWorkletObjectProxy::AudioWorkletObjectProxy(
|
| + const WeakPtr<AudioWorkletMessagingProxy>& messaging_proxy_weak_ptr,
|
| + ParentFrameTaskRunners* parent_frame_task_runners)
|
| + : ThreadedObjectProxyBase(parent_frame_task_runners),
|
| + messaging_proxy_weak_ptr_(messaging_proxy_weak_ptr) {}
|
| +
|
| +WeakPtr<ThreadedMessagingProxyBase>
|
| + AudioWorkletObjectProxy::MessagingProxyWeakPtr() {
|
| + return messaging_proxy_weak_ptr_;
|
| +}
|
| +
|
| +} // namespace blink
|
|
|