#include "third_party/blink/renderer/modules/webaudio/audio_worklet_messaging_proxy.h"
#include <utility>
#include "base/feature_list.h"
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/messaging/message_port.h"
#include "third_party/blink/renderer/modules/webaudio/audio_context.h"
#include "third_party/blink/renderer/modules/webaudio/audio_worklet.h"
#include "third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope.h"
#include "third_party/blink/renderer/modules/webaudio/audio_worklet_node.h"
#include "third_party/blink/renderer/modules/webaudio/audio_worklet_object_proxy.h"
#include "third_party/blink/renderer/modules/webaudio/audio_worklet_processor.h"
#include "third_party/blink/renderer/modules/webaudio/cross_thread_audio_worklet_processor_info.h"
#include "third_party/blink/renderer/modules/webaudio/offline_audio_worklet_thread.h"
#include "third_party/blink/renderer/modules/webaudio/realtime_audio_worklet_thread.h"
#include "third_party/blink/renderer/modules/webaudio/semi_realtime_audio_worklet_thread.h"
#include "third_party/blink/renderer/platform/audio/audio_utilities.h"
#include "third_party/blink/renderer/platform/wtf/cross_thread_copier_base.h"
#include "third_party/blink/renderer/platform/wtf/cross_thread_copier_public.h"
namespace blink {
AudioWorkletMessagingProxy::AudioWorkletMessagingProxy(
ExecutionContext* execution_context,
AudioWorklet* worklet)
: … { … }
void AudioWorkletMessagingProxy::CreateProcessor(
scoped_refptr<AudioWorkletHandler> handler,
MessagePortChannel message_port_channel,
scoped_refptr<SerializedScriptValue> node_options) { … }
void AudioWorkletMessagingProxy::CreateProcessorOnRenderingThread(
WorkerThread* worker_thread,
scoped_refptr<AudioWorkletHandler> handler,
const String& name,
MessagePortChannel message_port_channel,
scoped_refptr<SerializedScriptValue> node_options) { … }
void AudioWorkletMessagingProxy::SynchronizeWorkletProcessorInfoList(
std::unique_ptr<Vector<CrossThreadAudioWorkletProcessorInfo>> info_list) { … }
bool AudioWorkletMessagingProxy::IsProcessorRegistered(
const String& name) const { … }
const Vector<CrossThreadAudioParamInfo>
AudioWorkletMessagingProxy::GetParamInfoListForProcessor(
const String& name) const { … }
WorkerThread* AudioWorkletMessagingProxy::GetBackingWorkerThread() { … }
std::unique_ptr<ThreadedWorkletObjectProxy>
AudioWorkletMessagingProxy::CreateObjectProxy(
ThreadedWorkletMessagingProxy* messaging_proxy,
ParentExecutionContextTaskRunners* parent_execution_context_task_runners,
scoped_refptr<base::SingleThreadTaskRunner>
parent_agent_group_task_runner) { … }
std::unique_ptr<WorkerThread> AudioWorkletMessagingProxy::CreateWorkerThread() { … }
std::unique_ptr<WorkerThread>
AudioWorkletMessagingProxy::CreateWorkletThreadWithConstraints(
WorkerReportingProxy& worker_reporting_proxy,
std::optional<base::TimeDelta> realtime_buffer_duration,
const bool is_outermost_main_frame) { … }
void AudioWorkletMessagingProxy::Trace(Visitor* visitor) const { … }
}