diff --git a/Tests/LibWeb/Text/expected/all-window-properties.txt b/Tests/LibWeb/Text/expected/all-window-properties.txt index 8966a2f1182..dc6d14cbce6 100644 --- a/Tests/LibWeb/Text/expected/all-window-properties.txt +++ b/Tests/LibWeb/Text/expected/all-window-properties.txt @@ -14,6 +14,7 @@ Audio AudioBuffer AudioBufferSourceNode AudioContext +AudioDestinationNode AudioNode AudioParam AudioScheduledSourceNode diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 27764aa1bb8..aabb576791a 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -684,6 +684,7 @@ set(SOURCES WebAudio/AudioBuffer.cpp WebAudio/AudioBufferSourceNode.cpp WebAudio/AudioContext.cpp + WebAudio/AudioDestinationNode.cpp WebAudio/AudioNode.cpp WebAudio/AudioParam.cpp WebAudio/AudioScheduledSourceNode.cpp diff --git a/Userland/Libraries/LibWeb/Forward.h b/Userland/Libraries/LibWeb/Forward.h index c4a3abb6fe7..e72ebfd9eda 100644 --- a/Userland/Libraries/LibWeb/Forward.h +++ b/Userland/Libraries/LibWeb/Forward.h @@ -712,6 +712,7 @@ class Table; namespace Web::WebAudio { class AudioBuffer; class AudioBufferSourceNode; +class AudioDestinationNode; class AudioContext; class AudioNode; class AudioParam; diff --git a/Userland/Libraries/LibWeb/WebAudio/AudioDestinationNode.cpp b/Userland/Libraries/LibWeb/WebAudio/AudioDestinationNode.cpp new file mode 100644 index 00000000000..679b0f44ee1 --- /dev/null +++ b/Userland/Libraries/LibWeb/WebAudio/AudioDestinationNode.cpp @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024, Shannon Booth + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include +#include + +namespace Web::WebAudio { + +JS_DEFINE_ALLOCATOR(AudioDestinationNode); + +AudioDestinationNode::AudioDestinationNode(JS::Realm& realm, JS::NonnullGCPtr context) + : AudioNode(realm, context) +{ +} + +AudioDestinationNode::~AudioDestinationNode() = default; + +void AudioDestinationNode::initialize(JS::Realm& realm) +{ + Base::initialize(realm); + WEB_SET_PROTOTYPE_FOR_INTERFACE(AudioDestinationNode); +} + +void AudioDestinationNode::visit_edges(Cell::Visitor& visitor) +{ + Base::visit_edges(visitor); +} + +} diff --git a/Userland/Libraries/LibWeb/WebAudio/AudioDestinationNode.h b/Userland/Libraries/LibWeb/WebAudio/AudioDestinationNode.h new file mode 100644 index 00000000000..481c9691637 --- /dev/null +++ b/Userland/Libraries/LibWeb/WebAudio/AudioDestinationNode.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2024, Shannon Booth + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Web::WebAudio { + +// https://webaudio.github.io/web-audio-api/#AudioDestinationNode +class AudioDestinationNode : public AudioNode { + WEB_PLATFORM_OBJECT(AudioDestinationNode, AudioNode); + JS_DECLARE_ALLOCATOR(AudioDestinationNode); + +public: + virtual ~AudioDestinationNode() override; + +protected: + AudioDestinationNode(JS::Realm&, JS::NonnullGCPtr); + + virtual void initialize(JS::Realm&) override; + virtual void visit_edges(Cell::Visitor&) override; +}; + +} diff --git a/Userland/Libraries/LibWeb/WebAudio/AudioDestinationNode.idl b/Userland/Libraries/LibWeb/WebAudio/AudioDestinationNode.idl new file mode 100644 index 00000000000..d72748c4c5e --- /dev/null +++ b/Userland/Libraries/LibWeb/WebAudio/AudioDestinationNode.idl @@ -0,0 +1,7 @@ +#import + +// https://webaudio.github.io/web-audio-api/#AudioDestinationNode +[Exposed=Window] +interface AudioDestinationNode : AudioNode { + [FIXME] readonly attribute unsigned long maxChannelCount; +}; diff --git a/Userland/Libraries/LibWeb/idl_files.cmake b/Userland/Libraries/LibWeb/idl_files.cmake index e1a691146c6..2d4d61b7572 100644 --- a/Userland/Libraries/LibWeb/idl_files.cmake +++ b/Userland/Libraries/LibWeb/idl_files.cmake @@ -312,6 +312,7 @@ libweb_js_bindings(WebAssembly/WebAssembly NAMESPACE) libweb_js_bindings(WebAudio/AudioBuffer) libweb_js_bindings(WebAudio/AudioBufferSourceNode) libweb_js_bindings(WebAudio/AudioContext) +libweb_js_bindings(WebAudio/AudioDestinationNode) libweb_js_bindings(WebAudio/AudioNode) libweb_js_bindings(WebAudio/AudioParam) libweb_js_bindings(WebAudio/AudioScheduledSourceNode)