From 35ca7f82b0db63ddab7903dd7006be4b0ba56a45 Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Fri, 25 Jul 2025 09:45:13 +0200 Subject: [PATCH] LibWeb: Add BaseAudioContext::createScriptProcessor() This is a deprecated node, but it's still widely used on the web. --- Libraries/LibWeb/CMakeLists.txt | 1 + Libraries/LibWeb/HTML/EventNames.h | 1 + .../LibWeb/WebAudio/BaseAudioContext.cpp | 15 + Libraries/LibWeb/WebAudio/BaseAudioContext.h | 3 + .../LibWeb/WebAudio/BaseAudioContext.idl | 2 +- .../LibWeb/WebAudio/ScriptProcessorNode.cpp | 125 ++ .../LibWeb/WebAudio/ScriptProcessorNode.h | 51 + .../LibWeb/WebAudio/ScriptProcessorNode.idl | 9 + Libraries/LibWeb/idl_files.cmake | 3 +- .../Text/expected/all-window-properties.txt | 1 + .../webaudio/idlharness.https.window.txt | 1163 +++++++++++++++++ .../audioparam-nominal-range.txt | 10 +- .../interfaces/mediacapture-streams.idl | 261 ++++ .../input/wpt-import/interfaces/uievents.idl | 237 ++++ .../input/wpt-import/interfaces/webaudio.idl | 657 ++++++++++ .../webaudio/idlharness.https.window.html | 9 + .../webaudio/idlharness.https.window.js | 72 + 17 files changed, 2614 insertions(+), 6 deletions(-) create mode 100644 Libraries/LibWeb/WebAudio/ScriptProcessorNode.cpp create mode 100644 Libraries/LibWeb/WebAudio/ScriptProcessorNode.h create mode 100644 Libraries/LibWeb/WebAudio/ScriptProcessorNode.idl create mode 100644 Tests/LibWeb/Text/expected/wpt-import/webaudio/idlharness.https.window.txt create mode 100644 Tests/LibWeb/Text/input/wpt-import/interfaces/mediacapture-streams.idl create mode 100644 Tests/LibWeb/Text/input/wpt-import/interfaces/uievents.idl create mode 100644 Tests/LibWeb/Text/input/wpt-import/interfaces/webaudio.idl create mode 100644 Tests/LibWeb/Text/input/wpt-import/webaudio/idlharness.https.window.html create mode 100644 Tests/LibWeb/Text/input/wpt-import/webaudio/idlharness.https.window.js diff --git a/Libraries/LibWeb/CMakeLists.txt b/Libraries/LibWeb/CMakeLists.txt index 3a07161b4aa..0a04c845779 100644 --- a/Libraries/LibWeb/CMakeLists.txt +++ b/Libraries/LibWeb/CMakeLists.txt @@ -919,6 +919,7 @@ set(SOURCES WebAudio/OscillatorNode.cpp WebAudio/PannerNode.cpp WebAudio/PeriodicWave.cpp + WebAudio/ScriptProcessorNode.cpp WebAudio/StereoPannerNode.cpp WebDriver/Actions.cpp WebDriver/Capabilities.cpp diff --git a/Libraries/LibWeb/HTML/EventNames.h b/Libraries/LibWeb/HTML/EventNames.h index 3515a1fd346..44bc5505ea2 100644 --- a/Libraries/LibWeb/HTML/EventNames.h +++ b/Libraries/LibWeb/HTML/EventNames.h @@ -18,6 +18,7 @@ namespace Web::HTML::EventNames { __ENUMERATE_HTML_EVENT(animationend) \ __ENUMERATE_HTML_EVENT(animationiteration) \ __ENUMERATE_HTML_EVENT(animationstart) \ + __ENUMERATE_HTML_EVENT(audioprocess) \ __ENUMERATE_HTML_EVENT(beforeinput) \ __ENUMERATE_HTML_EVENT(beforematch) \ __ENUMERATE_HTML_EVENT(beforeprint) \ diff --git a/Libraries/LibWeb/WebAudio/BaseAudioContext.cpp b/Libraries/LibWeb/WebAudio/BaseAudioContext.cpp index 597754774d8..2cda9de8249 100644 --- a/Libraries/LibWeb/WebAudio/BaseAudioContext.cpp +++ b/Libraries/LibWeb/WebAudio/BaseAudioContext.cpp @@ -160,6 +160,21 @@ WebIDL::ExceptionOr> BaseAudioContext::create_periodic_wav return PeriodicWave::construct_impl(realm(), *this, options); } +// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createscriptprocessor +WebIDL::ExceptionOr> BaseAudioContext::create_script_processor( + WebIDL::UnsignedLong buffer_size, WebIDL::UnsignedLong number_of_input_channels, + WebIDL::UnsignedLong number_of_output_channels) +{ + // The bufferSize parameter determines the buffer size in units of sample-frames. If it’s not passed in, or if the + // value is 0, then the implementation will choose the best buffer size for the given environment, which will be + // constant power of 2 throughout the lifetime of the node. + if (buffer_size == 0) + buffer_size = ScriptProcessorNode::DEFAULT_BUFFER_SIZE; + + return ScriptProcessorNode::create(realm(), *this, buffer_size, number_of_input_channels, + number_of_output_channels); +} + // https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createstereopanner WebIDL::ExceptionOr> BaseAudioContext::create_stereo_panner() { diff --git a/Libraries/LibWeb/WebAudio/BaseAudioContext.h b/Libraries/LibWeb/WebAudio/BaseAudioContext.h index 30922e9e1c5..cab3e65e671 100644 --- a/Libraries/LibWeb/WebAudio/BaseAudioContext.h +++ b/Libraries/LibWeb/WebAudio/BaseAudioContext.h @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -75,6 +76,8 @@ public: WebIDL::ExceptionOr> create_gain(); WebIDL::ExceptionOr> create_panner(); WebIDL::ExceptionOr> create_periodic_wave(Vector const& real, Vector const& imag, Optional const& constraints = {}); + WebIDL::ExceptionOr> create_script_processor(WebIDL::UnsignedLong buffer_size, + WebIDL::UnsignedLong number_of_input_channels, WebIDL::UnsignedLong number_of_output_channels); WebIDL::ExceptionOr> create_stereo_panner(); GC::Ref decode_audio_data(GC::Root, GC::Ptr, GC::Ptr); diff --git a/Libraries/LibWeb/WebAudio/BaseAudioContext.idl b/Libraries/LibWeb/WebAudio/BaseAudioContext.idl index 7aadb6dff56..4677a3c941a 100644 --- a/Libraries/LibWeb/WebAudio/BaseAudioContext.idl +++ b/Libraries/LibWeb/WebAudio/BaseAudioContext.idl @@ -45,7 +45,7 @@ interface BaseAudioContext : EventTarget { OscillatorNode createOscillator(); PannerNode createPanner(); PeriodicWave createPeriodicWave (sequence real, sequence imag, optional PeriodicWaveConstraints constraints = {}); - [FIXME] ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize = 0, optional unsigned long numberOfInputChannels = 2, optional unsigned long numberOfOutputChannels = 2); + ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize = 0, optional unsigned long numberOfInputChannels = 2, optional unsigned long numberOfOutputChannels = 2); StereoPannerNode createStereoPanner (); [FIXME] WaveShaperNode createWaveShaper (); diff --git a/Libraries/LibWeb/WebAudio/ScriptProcessorNode.cpp b/Libraries/LibWeb/WebAudio/ScriptProcessorNode.cpp new file mode 100644 index 00000000000..1da0a06d8fa --- /dev/null +++ b/Libraries/LibWeb/WebAudio/ScriptProcessorNode.cpp @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2025, Jelle Raaijmakers + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include "BaseAudioContext.h" + +#include +#include +#include +#include +#include + +namespace Web::WebAudio { + +GC_DEFINE_ALLOCATOR(ScriptProcessorNode); + +ScriptProcessorNode::ScriptProcessorNode(JS::Realm& realm, GC::Ref context, + u8 number_of_input_channels, u8 number_of_output_channels) + : AudioNode(realm, context) + , m_number_of_input_channels(number_of_input_channels) + , m_number_of_output_channels(number_of_output_channels) +{ +} + +ScriptProcessorNode::~ScriptProcessorNode() = default; + +WebIDL::ExceptionOr> ScriptProcessorNode::create(JS::Realm& realm, + GC::Ref context, WebIDL::Long buffer_size, WebIDL::UnsignedLong number_of_input_channels, + WebIDL::UnsignedLong number_of_output_channels) +{ + // https://webaudio.github.io/web-audio-api/#ScriptProcessorNode + // It is invalid for both numberOfInputChannels and numberOfOutputChannels to be zero. In this case an + // IndexSizeError MUST be thrown. + if (number_of_input_channels == 0 && number_of_output_channels == 0) { + return WebIDL::IndexSizeError::create(realm, + "Number of input and output channels cannot both be zero in a ScriptProcessorNode"_string); + } + + // This parameter determines the number of channels for this node’s input. The default value is 2. Values of up to + // 32 must be supported. A NotSupportedError must be thrown if the number of channels is not supported. + if (number_of_input_channels > BaseAudioContext::MAX_NUMBER_OF_CHANNELS) + return WebIDL::NotSupportedError::create(realm, "Invalid number of input channels"_string); + + // This parameter determines the number of channels for this node’s output. The default value is 2. Values of up to + // 32 must be supported. A NotSupportedError must be thrown if the number of channels is not supported. + if (number_of_output_channels > BaseAudioContext::MAX_NUMBER_OF_CHANNELS) + return WebIDL::NotSupportedError::create(realm, "Invalid number of output channels"_string); + + auto script_processor_node = realm.create(realm, context, + number_of_input_channels, number_of_output_channels); + + TRY(script_processor_node->set_buffer_size(buffer_size)); + + // https://webaudio.github.io/web-audio-api/#dom-audionode-channelcountmode + // The channel count mode cannot be changed from "explicit" and an NotSupportedError exception MUST be thrown for + // any attempt to change the value. + TRY(script_processor_node->set_channel_count_mode(Bindings::ChannelCountMode::Explicit)); + + return script_processor_node; +} + +void ScriptProcessorNode::initialize(JS::Realm& realm) +{ + WEB_SET_PROTOTYPE_FOR_INTERFACE(ScriptProcessorNode); + Base::initialize(realm); +} + +// https://webaudio.github.io/web-audio-api/#ScriptProcessorNode +WebIDL::UnsignedLong ScriptProcessorNode::channel_count() const +{ + // This is the number of channels specified when constructing this node. + return m_number_of_input_channels; +} + +// https://webaudio.github.io/web-audio-api/#dom-audionode-channelcount +WebIDL::ExceptionOr ScriptProcessorNode::set_channel_count(WebIDL::UnsignedLong) +{ + // ScriptProcessorNode: The channel count cannot be changed, and an NotSupportedError exception MUST be thrown for + // any attempt to change the value. + return WebIDL::InvalidStateError::create(realm(), + "Cannot modify channel count in a ScriptProcessorNode"_string); +} + +WebIDL::ExceptionOr ScriptProcessorNode::set_channel_count_mode(Bindings::ChannelCountMode channel_count_mode) +{ + // https://webaudio.github.io/web-audio-api/#audionode-channelcountmode-constraints + // ScriptProcessorNode: The channel count mode cannot be changed from "explicit" and an NotSupportedError exception + // MUST be thrown for any attempt to change the value. + if (channel_count_mode != Bindings::ChannelCountMode::Explicit) + return WebIDL::InvalidStateError::create(realm(), "Channel count mode must be 'explicit'"_string); + + return AudioNode::set_channel_count_mode(channel_count_mode); +} + +// https://webaudio.github.io/web-audio-api/#dom-scriptprocessornode-onaudioprocess +GC::Ptr ScriptProcessorNode::onaudioprocess() +{ + return event_handler_attribute(HTML::EventNames::audioprocess); +} + +// https://webaudio.github.io/web-audio-api/#dom-scriptprocessornode-onaudioprocess +void ScriptProcessorNode::set_onaudioprocess(GC::Ptr value) +{ + set_event_handler_attribute(HTML::EventNames::audioprocess, value); +} + +// https://webaudio.github.io/web-audio-api/#dom-scriptprocessornode-buffersize +WebIDL::ExceptionOr ScriptProcessorNode::set_buffer_size(WebIDL::Long buffer_size) +{ + // The size of the buffer (in sample-frames) which needs to be processed each time audioprocess is fired. Legal + // values are (256, 512, 1024, 2048, 4096, 8192, 16384). + + // https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createscriptprocessor + // If the value of this parameter is not one of the allowed power-of-2 values listed above, an IndexSizeError MUST + // be thrown. + if (!first_is_one_of(buffer_size, 256, 512, 1024, 2048, 4096, 8192, 16384)) + return WebIDL::IndexSizeError::create(realm(), "Unsupported buffer size for a ScriptProcessorNode"_string); + + m_buffer_size = buffer_size; + return {}; +} + +} diff --git a/Libraries/LibWeb/WebAudio/ScriptProcessorNode.h b/Libraries/LibWeb/WebAudio/ScriptProcessorNode.h new file mode 100644 index 00000000000..78f2788cd82 --- /dev/null +++ b/Libraries/LibWeb/WebAudio/ScriptProcessorNode.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2025, Jelle Raaijmakers + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Web::WebAudio { + +// https://webaudio.github.io/web-audio-api/#ScriptProcessorNode +class ScriptProcessorNode final : public AudioNode { + WEB_PLATFORM_OBJECT(ScriptProcessorNode, AudioNode); + GC_DECLARE_ALLOCATOR(ScriptProcessorNode); + +public: + static constexpr WebIDL::Long DEFAULT_BUFFER_SIZE = 1024; + + virtual ~ScriptProcessorNode() override; + + static WebIDL::ExceptionOr> create(JS::Realm&, GC::Ref, + WebIDL::Long buffer_size, WebIDL::UnsignedLong number_of_input_channels, + WebIDL::UnsignedLong number_of_output_channel); + + // ^AudioNode + virtual WebIDL::UnsignedLong channel_count() const override; + virtual WebIDL::ExceptionOr set_channel_count(WebIDL::UnsignedLong) override; + virtual WebIDL::ExceptionOr set_channel_count_mode(Bindings::ChannelCountMode) override; + virtual WebIDL::UnsignedLong number_of_inputs() override { return 1; } + virtual WebIDL::UnsignedLong number_of_outputs() override { return 1; } + + GC::Ptr onaudioprocess(); + void set_onaudioprocess(GC::Ptr); + + WebIDL::Long buffer_size() const { return m_buffer_size; } + WebIDL::ExceptionOr set_buffer_size(WebIDL::Long buffer_size); + +private: + ScriptProcessorNode(JS::Realm&, GC::Ref, u8 number_of_input_channels, + u8 number_of_output_channels); + + virtual void initialize(JS::Realm&) override; + + WebIDL::Long m_buffer_size { 0 }; + u8 m_number_of_input_channels { 0 }; + u8 m_number_of_output_channels { 0 }; +}; + +} diff --git a/Libraries/LibWeb/WebAudio/ScriptProcessorNode.idl b/Libraries/LibWeb/WebAudio/ScriptProcessorNode.idl new file mode 100644 index 00000000000..5fa7d5e4a8f --- /dev/null +++ b/Libraries/LibWeb/WebAudio/ScriptProcessorNode.idl @@ -0,0 +1,9 @@ +#import +#import + +// https://webaudio.github.io/web-audio-api/#ScriptProcessorNode +[Exposed=Window] +interface ScriptProcessorNode : AudioNode { + attribute EventHandler onaudioprocess; + readonly attribute long bufferSize; +}; diff --git a/Libraries/LibWeb/idl_files.cmake b/Libraries/LibWeb/idl_files.cmake index 22cfc20ba1c..8c9f36ade1b 100644 --- a/Libraries/LibWeb/idl_files.cmake +++ b/Libraries/LibWeb/idl_files.cmake @@ -404,16 +404,17 @@ libweb_js_bindings(WebAudio/AudioScheduledSourceNode) libweb_js_bindings(WebAudio/BaseAudioContext) libweb_js_bindings(WebAudio/BiquadFilterNode) libweb_js_bindings(WebAudio/DynamicsCompressorNode) -libweb_js_bindings(WebAudio/GainNode) libweb_js_bindings(WebAudio/ChannelMergerNode) libweb_js_bindings(WebAudio/ChannelSplitterNode) libweb_js_bindings(WebAudio/ConstantSourceNode) libweb_js_bindings(WebAudio/DelayNode) +libweb_js_bindings(WebAudio/GainNode) libweb_js_bindings(WebAudio/MediaElementAudioSourceNode) libweb_js_bindings(WebAudio/OfflineAudioContext) libweb_js_bindings(WebAudio/OscillatorNode) libweb_js_bindings(WebAudio/PannerNode) libweb_js_bindings(WebAudio/PeriodicWave) +libweb_js_bindings(WebAudio/ScriptProcessorNode) libweb_js_bindings(WebAudio/StereoPannerNode) libweb_js_bindings(WebGL/Extensions/ANGLEInstancedArrays) libweb_js_bindings(WebGL/Extensions/EXTBlendMinMax) diff --git a/Tests/LibWeb/Text/expected/all-window-properties.txt b/Tests/LibWeb/Text/expected/all-window-properties.txt index fa40dd46d83..a5a0f8005bc 100644 --- a/Tests/LibWeb/Text/expected/all-window-properties.txt +++ b/Tests/LibWeb/Text/expected/all-window-properties.txt @@ -380,6 +380,7 @@ SVGUseElement SVGViewElement Screen ScreenOrientation +ScriptProcessorNode SecurityPolicyViolationEvent Selection ServiceWorker diff --git a/Tests/LibWeb/Text/expected/wpt-import/webaudio/idlharness.https.window.txt b/Tests/LibWeb/Text/expected/wpt-import/webaudio/idlharness.https.window.txt new file mode 100644 index 00000000000..45c10e27f8c --- /dev/null +++ b/Tests/LibWeb/Text/expected/wpt-import/webaudio/idlharness.https.window.txt @@ -0,0 +1,1163 @@ +Harness status: OK + +Found 1147 tests + +879 Pass +268 Fail +Fail idl_test setup +Pass idl_test validation +Pass Partial interface Element: member names are unique +Pass HTMLElement includes GlobalEventHandlers: member names are unique +Pass HTMLElement includes ElementContentEditable: member names are unique +Pass HTMLElement includes HTMLOrSVGElement: member names are unique +Pass MessagePort includes MessageEventTarget: member names are unique +Pass Element includes ParentNode: member names are unique +Pass Element includes NonDocumentTypeChildNode: member names are unique +Pass Element includes ChildNode: member names are unique +Pass Element includes Slottable: member names are unique +Pass BaseAudioContext interface: existence and properties of interface object +Pass BaseAudioContext interface object length +Pass BaseAudioContext interface object name +Pass BaseAudioContext interface: existence and properties of interface prototype object +Pass BaseAudioContext interface: existence and properties of interface prototype object's "constructor" property +Pass BaseAudioContext interface: existence and properties of interface prototype object's @@unscopables property +Pass BaseAudioContext interface: attribute destination +Pass BaseAudioContext interface: attribute sampleRate +Pass BaseAudioContext interface: attribute currentTime +Pass BaseAudioContext interface: attribute listener +Pass BaseAudioContext interface: attribute state +Fail BaseAudioContext interface: attribute renderQuantumSize +Fail BaseAudioContext interface: attribute audioWorklet +Pass BaseAudioContext interface: attribute onstatechange +Pass BaseAudioContext interface: operation createAnalyser() +Pass BaseAudioContext interface: operation createBiquadFilter() +Pass BaseAudioContext interface: operation createBuffer(unsigned long, unsigned long, float) +Pass BaseAudioContext interface: operation createBufferSource() +Pass BaseAudioContext interface: operation createChannelMerger(optional unsigned long) +Pass BaseAudioContext interface: operation createChannelSplitter(optional unsigned long) +Pass BaseAudioContext interface: operation createConstantSource() +Fail BaseAudioContext interface: operation createConvolver() +Pass BaseAudioContext interface: operation createDelay(optional double) +Pass BaseAudioContext interface: operation createDynamicsCompressor() +Pass BaseAudioContext interface: operation createGain() +Fail BaseAudioContext interface: operation createIIRFilter(sequence, sequence) +Pass BaseAudioContext interface: operation createOscillator() +Pass BaseAudioContext interface: operation createPanner() +Pass BaseAudioContext interface: operation createPeriodicWave(sequence, sequence, optional PeriodicWaveConstraints) +Pass BaseAudioContext interface: operation createScriptProcessor(optional unsigned long, optional unsigned long, optional unsigned long) +Pass BaseAudioContext interface: operation createStereoPanner() +Fail BaseAudioContext interface: operation createWaveShaper() +Pass BaseAudioContext interface: operation decodeAudioData(ArrayBuffer, optional DecodeSuccessCallback?, optional DecodeErrorCallback?) +Pass AudioContext interface: existence and properties of interface object +Pass AudioContext interface object length +Pass AudioContext interface object name +Pass AudioContext interface: existence and properties of interface prototype object +Pass AudioContext interface: existence and properties of interface prototype object's "constructor" property +Pass AudioContext interface: existence and properties of interface prototype object's @@unscopables property +Pass AudioContext interface: attribute baseLatency +Pass AudioContext interface: attribute outputLatency +Fail AudioContext interface: attribute sinkId +Fail AudioContext interface: attribute onsinkchange +Fail AudioContext interface: attribute onerror +Pass AudioContext interface: operation getOutputTimestamp() +Pass AudioContext interface: operation resume() +Pass AudioContext interface: operation suspend() +Pass AudioContext interface: operation close() +Fail AudioContext interface: operation setSinkId((DOMString or AudioSinkOptions)) +Pass AudioContext interface: operation createMediaElementSource(HTMLMediaElement) +Fail AudioContext interface: operation createMediaStreamSource(MediaStream) +Fail AudioContext interface: operation createMediaStreamTrackSource(MediaStreamTrack) +Fail AudioContext interface: operation createMediaStreamDestination() +Pass AudioContext must be primary interface of context +Pass Stringification of context +Pass AudioContext interface: context must inherit property "baseLatency" with the proper type +Pass AudioContext interface: context must inherit property "outputLatency" with the proper type +Fail AudioContext interface: context must inherit property "sinkId" with the proper type +Fail AudioContext interface: context must inherit property "onsinkchange" with the proper type +Fail AudioContext interface: context must inherit property "onerror" with the proper type +Pass AudioContext interface: context must inherit property "getOutputTimestamp()" with the proper type +Pass AudioContext interface: context must inherit property "resume()" with the proper type +Pass AudioContext interface: context must inherit property "suspend()" with the proper type +Pass AudioContext interface: context must inherit property "close()" with the proper type +Fail AudioContext interface: context must inherit property "setSinkId((DOMString or AudioSinkOptions))" with the proper type +Fail AudioContext interface: calling setSinkId((DOMString or AudioSinkOptions)) on context with too few arguments must throw TypeError +Pass AudioContext interface: context must inherit property "createMediaElementSource(HTMLMediaElement)" with the proper type +Pass AudioContext interface: calling createMediaElementSource(HTMLMediaElement) on context with too few arguments must throw TypeError +Fail AudioContext interface: context must inherit property "createMediaStreamSource(MediaStream)" with the proper type +Pass AudioContext interface: calling createMediaStreamSource(MediaStream) on context with too few arguments must throw TypeError +Fail AudioContext interface: context must inherit property "createMediaStreamTrackSource(MediaStreamTrack)" with the proper type +Pass AudioContext interface: calling createMediaStreamTrackSource(MediaStreamTrack) on context with too few arguments must throw TypeError +Fail AudioContext interface: context must inherit property "createMediaStreamDestination()" with the proper type +Pass BaseAudioContext interface: context must inherit property "destination" with the proper type +Pass BaseAudioContext interface: context must inherit property "sampleRate" with the proper type +Pass BaseAudioContext interface: context must inherit property "currentTime" with the proper type +Pass BaseAudioContext interface: context must inherit property "listener" with the proper type +Pass BaseAudioContext interface: context must inherit property "state" with the proper type +Fail BaseAudioContext interface: context must inherit property "renderQuantumSize" with the proper type +Fail BaseAudioContext interface: context must inherit property "audioWorklet" with the proper type +Pass BaseAudioContext interface: context must inherit property "onstatechange" with the proper type +Pass BaseAudioContext interface: context must inherit property "createAnalyser()" with the proper type +Pass BaseAudioContext interface: context must inherit property "createBiquadFilter()" with the proper type +Pass BaseAudioContext interface: context must inherit property "createBuffer(unsigned long, unsigned long, float)" with the proper type +Pass BaseAudioContext interface: calling createBuffer(unsigned long, unsigned long, float) on context with too few arguments must throw TypeError +Pass BaseAudioContext interface: context must inherit property "createBufferSource()" with the proper type +Pass BaseAudioContext interface: context must inherit property "createChannelMerger(optional unsigned long)" with the proper type +Pass BaseAudioContext interface: calling createChannelMerger(optional unsigned long) on context with too few arguments must throw TypeError +Pass BaseAudioContext interface: context must inherit property "createChannelSplitter(optional unsigned long)" with the proper type +Pass BaseAudioContext interface: calling createChannelSplitter(optional unsigned long) on context with too few arguments must throw TypeError +Pass BaseAudioContext interface: context must inherit property "createConstantSource()" with the proper type +Fail BaseAudioContext interface: context must inherit property "createConvolver()" with the proper type +Pass BaseAudioContext interface: context must inherit property "createDelay(optional double)" with the proper type +Pass BaseAudioContext interface: calling createDelay(optional double) on context with too few arguments must throw TypeError +Pass BaseAudioContext interface: context must inherit property "createDynamicsCompressor()" with the proper type +Pass BaseAudioContext interface: context must inherit property "createGain()" with the proper type +Fail BaseAudioContext interface: context must inherit property "createIIRFilter(sequence, sequence)" with the proper type +Pass BaseAudioContext interface: calling createIIRFilter(sequence, sequence) on context with too few arguments must throw TypeError +Pass BaseAudioContext interface: context must inherit property "createOscillator()" with the proper type +Pass BaseAudioContext interface: context must inherit property "createPanner()" with the proper type +Pass BaseAudioContext interface: context must inherit property "createPeriodicWave(sequence, sequence, optional PeriodicWaveConstraints)" with the proper type +Pass BaseAudioContext interface: calling createPeriodicWave(sequence, sequence, optional PeriodicWaveConstraints) on context with too few arguments must throw TypeError +Pass BaseAudioContext interface: context must inherit property "createScriptProcessor(optional unsigned long, optional unsigned long, optional unsigned long)" with the proper type +Pass BaseAudioContext interface: calling createScriptProcessor(optional unsigned long, optional unsigned long, optional unsigned long) on context with too few arguments must throw TypeError +Pass BaseAudioContext interface: context must inherit property "createStereoPanner()" with the proper type +Fail BaseAudioContext interface: context must inherit property "createWaveShaper()" with the proper type +Pass BaseAudioContext interface: context must inherit property "decodeAudioData(ArrayBuffer, optional DecodeSuccessCallback?, optional DecodeErrorCallback?)" with the proper type +Pass BaseAudioContext interface: calling decodeAudioData(ArrayBuffer, optional DecodeSuccessCallback?, optional DecodeErrorCallback?) on context with too few arguments must throw TypeError +Fail AudioSinkInfo interface: existence and properties of interface object +Fail AudioSinkInfo interface object length +Fail AudioSinkInfo interface object name +Fail AudioSinkInfo interface: existence and properties of interface prototype object +Fail AudioSinkInfo interface: existence and properties of interface prototype object's "constructor" property +Fail AudioSinkInfo interface: existence and properties of interface prototype object's @@unscopables property +Fail AudioSinkInfo interface: attribute type +Pass OfflineAudioContext interface: existence and properties of interface object +Pass OfflineAudioContext interface object length +Pass OfflineAudioContext interface object name +Pass OfflineAudioContext interface: existence and properties of interface prototype object +Pass OfflineAudioContext interface: existence and properties of interface prototype object's "constructor" property +Pass OfflineAudioContext interface: existence and properties of interface prototype object's @@unscopables property +Pass OfflineAudioContext interface: operation startRendering() +Pass OfflineAudioContext interface: operation resume() +Pass OfflineAudioContext interface: operation suspend(double) +Pass OfflineAudioContext interface: attribute length +Pass OfflineAudioContext interface: attribute oncomplete +Pass OfflineAudioContext must be primary interface of new OfflineAudioContext(1, 1, sample_rate) +Pass Stringification of new OfflineAudioContext(1, 1, sample_rate) +Pass OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "startRendering()" with the proper type +Pass OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "resume()" with the proper type +Pass OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "suspend(double)" with the proper type +Pass OfflineAudioContext interface: calling suspend(double) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError +Pass OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "length" with the proper type +Pass OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "oncomplete" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "destination" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "sampleRate" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "currentTime" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "listener" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "state" with the proper type +Fail BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "renderQuantumSize" with the proper type +Fail BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "audioWorklet" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "onstatechange" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createAnalyser()" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createBiquadFilter()" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createBuffer(unsigned long, unsigned long, float)" with the proper type +Pass BaseAudioContext interface: calling createBuffer(unsigned long, unsigned long, float) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createBufferSource()" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createChannelMerger(optional unsigned long)" with the proper type +Pass BaseAudioContext interface: calling createChannelMerger(optional unsigned long) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createChannelSplitter(optional unsigned long)" with the proper type +Pass BaseAudioContext interface: calling createChannelSplitter(optional unsigned long) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createConstantSource()" with the proper type +Fail BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createConvolver()" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createDelay(optional double)" with the proper type +Pass BaseAudioContext interface: calling createDelay(optional double) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createDynamicsCompressor()" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createGain()" with the proper type +Fail BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createIIRFilter(sequence, sequence)" with the proper type +Pass BaseAudioContext interface: calling createIIRFilter(sequence, sequence) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createOscillator()" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createPanner()" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createPeriodicWave(sequence, sequence, optional PeriodicWaveConstraints)" with the proper type +Pass BaseAudioContext interface: calling createPeriodicWave(sequence, sequence, optional PeriodicWaveConstraints) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createScriptProcessor(optional unsigned long, optional unsigned long, optional unsigned long)" with the proper type +Pass BaseAudioContext interface: calling createScriptProcessor(optional unsigned long, optional unsigned long, optional unsigned long) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createStereoPanner()" with the proper type +Fail BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createWaveShaper()" with the proper type +Pass BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "decodeAudioData(ArrayBuffer, optional DecodeSuccessCallback?, optional DecodeErrorCallback?)" with the proper type +Pass BaseAudioContext interface: calling decodeAudioData(ArrayBuffer, optional DecodeSuccessCallback?, optional DecodeErrorCallback?) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError +Fail OfflineAudioCompletionEvent interface: existence and properties of interface object +Fail OfflineAudioCompletionEvent interface object length +Fail OfflineAudioCompletionEvent interface object name +Fail OfflineAudioCompletionEvent interface: existence and properties of interface prototype object +Fail OfflineAudioCompletionEvent interface: existence and properties of interface prototype object's "constructor" property +Fail OfflineAudioCompletionEvent interface: existence and properties of interface prototype object's @@unscopables property +Fail OfflineAudioCompletionEvent interface: attribute renderedBuffer +Fail OfflineAudioCompletionEvent must be primary interface of new OfflineAudioCompletionEvent("", {renderedBuffer: buffer}) +Fail Stringification of new OfflineAudioCompletionEvent("", {renderedBuffer: buffer}) +Fail OfflineAudioCompletionEvent interface: new OfflineAudioCompletionEvent("", {renderedBuffer: buffer}) must inherit property "renderedBuffer" with the proper type +Pass AudioBuffer interface: existence and properties of interface object +Pass AudioBuffer interface object length +Pass AudioBuffer interface object name +Pass AudioBuffer interface: existence and properties of interface prototype object +Pass AudioBuffer interface: existence and properties of interface prototype object's "constructor" property +Pass AudioBuffer interface: existence and properties of interface prototype object's @@unscopables property +Pass AudioBuffer interface: attribute sampleRate +Pass AudioBuffer interface: attribute length +Pass AudioBuffer interface: attribute duration +Pass AudioBuffer interface: attribute numberOfChannels +Pass AudioBuffer interface: operation getChannelData(unsigned long) +Pass AudioBuffer interface: operation copyFromChannel(Float32Array, unsigned long, optional unsigned long) +Pass AudioBuffer interface: operation copyToChannel(Float32Array, unsigned long, optional unsigned long) +Pass AudioBuffer must be primary interface of buffer +Pass Stringification of buffer +Pass AudioBuffer interface: buffer must inherit property "sampleRate" with the proper type +Pass AudioBuffer interface: buffer must inherit property "length" with the proper type +Pass AudioBuffer interface: buffer must inherit property "duration" with the proper type +Pass AudioBuffer interface: buffer must inherit property "numberOfChannels" with the proper type +Pass AudioBuffer interface: buffer must inherit property "getChannelData(unsigned long)" with the proper type +Pass AudioBuffer interface: calling getChannelData(unsigned long) on buffer with too few arguments must throw TypeError +Pass AudioBuffer interface: buffer must inherit property "copyFromChannel(Float32Array, unsigned long, optional unsigned long)" with the proper type +Pass AudioBuffer interface: calling copyFromChannel(Float32Array, unsigned long, optional unsigned long) on buffer with too few arguments must throw TypeError +Pass AudioBuffer interface: buffer must inherit property "copyToChannel(Float32Array, unsigned long, optional unsigned long)" with the proper type +Pass AudioBuffer interface: calling copyToChannel(Float32Array, unsigned long, optional unsigned long) on buffer with too few arguments must throw TypeError +Pass AudioNode interface: existence and properties of interface object +Pass AudioNode interface object length +Pass AudioNode interface object name +Pass AudioNode interface: existence and properties of interface prototype object +Pass AudioNode interface: existence and properties of interface prototype object's "constructor" property +Pass AudioNode interface: existence and properties of interface prototype object's @@unscopables property +Pass AudioNode interface: operation connect(AudioNode, optional unsigned long, optional unsigned long) +Pass AudioNode interface: operation connect(AudioParam, optional unsigned long) +Pass AudioNode interface: operation disconnect() +Pass AudioNode interface: operation disconnect(unsigned long) +Pass AudioNode interface: operation disconnect(AudioNode) +Pass AudioNode interface: operation disconnect(AudioNode, unsigned long) +Pass AudioNode interface: operation disconnect(AudioNode, unsigned long, unsigned long) +Pass AudioNode interface: operation disconnect(AudioParam) +Pass AudioNode interface: operation disconnect(AudioParam, unsigned long) +Pass AudioNode interface: attribute context +Pass AudioNode interface: attribute numberOfInputs +Pass AudioNode interface: attribute numberOfOutputs +Pass AudioNode interface: attribute channelCount +Pass AudioNode interface: attribute channelCountMode +Pass AudioNode interface: attribute channelInterpretation +Pass AudioParam interface: existence and properties of interface object +Pass AudioParam interface object length +Pass AudioParam interface object name +Pass AudioParam interface: existence and properties of interface prototype object +Pass AudioParam interface: existence and properties of interface prototype object's "constructor" property +Pass AudioParam interface: existence and properties of interface prototype object's @@unscopables property +Pass AudioParam interface: attribute value +Pass AudioParam interface: attribute automationRate +Pass AudioParam interface: attribute defaultValue +Pass AudioParam interface: attribute minValue +Pass AudioParam interface: attribute maxValue +Pass AudioParam interface: operation setValueAtTime(float, double) +Pass AudioParam interface: operation linearRampToValueAtTime(float, double) +Pass AudioParam interface: operation exponentialRampToValueAtTime(float, double) +Pass AudioParam interface: operation setTargetAtTime(float, double, float) +Pass AudioParam interface: operation setValueCurveAtTime(sequence, double, double) +Pass AudioParam interface: operation cancelScheduledValues(double) +Pass AudioParam interface: operation cancelAndHoldAtTime(double) +Pass AudioParam must be primary interface of new AudioBufferSourceNode(context).playbackRate +Pass Stringification of new AudioBufferSourceNode(context).playbackRate +Pass AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "value" with the proper type +Pass AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "automationRate" with the proper type +Pass AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "defaultValue" with the proper type +Pass AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "minValue" with the proper type +Pass AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "maxValue" with the proper type +Pass AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "setValueAtTime(float, double)" with the proper type +Pass AudioParam interface: calling setValueAtTime(float, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError +Pass AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "linearRampToValueAtTime(float, double)" with the proper type +Pass AudioParam interface: calling linearRampToValueAtTime(float, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError +Pass AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "exponentialRampToValueAtTime(float, double)" with the proper type +Pass AudioParam interface: calling exponentialRampToValueAtTime(float, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError +Pass AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "setTargetAtTime(float, double, float)" with the proper type +Pass AudioParam interface: calling setTargetAtTime(float, double, float) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError +Pass AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "setValueCurveAtTime(sequence, double, double)" with the proper type +Pass AudioParam interface: calling setValueCurveAtTime(sequence, double, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError +Pass AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "cancelScheduledValues(double)" with the proper type +Pass AudioParam interface: calling cancelScheduledValues(double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError +Pass AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "cancelAndHoldAtTime(double)" with the proper type +Pass AudioParam interface: calling cancelAndHoldAtTime(double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError +Pass AudioScheduledSourceNode interface: existence and properties of interface object +Pass AudioScheduledSourceNode interface object length +Pass AudioScheduledSourceNode interface object name +Pass AudioScheduledSourceNode interface: existence and properties of interface prototype object +Pass AudioScheduledSourceNode interface: existence and properties of interface prototype object's "constructor" property +Pass AudioScheduledSourceNode interface: existence and properties of interface prototype object's @@unscopables property +Pass AudioScheduledSourceNode interface: attribute onended +Pass AudioScheduledSourceNode interface: operation start(optional double) +Pass AudioScheduledSourceNode interface: operation stop(optional double) +Pass AnalyserNode interface: existence and properties of interface object +Pass AnalyserNode interface object length +Pass AnalyserNode interface object name +Pass AnalyserNode interface: existence and properties of interface prototype object +Pass AnalyserNode interface: existence and properties of interface prototype object's "constructor" property +Pass AnalyserNode interface: existence and properties of interface prototype object's @@unscopables property +Pass AnalyserNode interface: operation getFloatFrequencyData(Float32Array) +Pass AnalyserNode interface: operation getByteFrequencyData(Uint8Array) +Pass AnalyserNode interface: operation getFloatTimeDomainData(Float32Array) +Pass AnalyserNode interface: operation getByteTimeDomainData(Uint8Array) +Pass AnalyserNode interface: attribute fftSize +Pass AnalyserNode interface: attribute frequencyBinCount +Pass AnalyserNode interface: attribute minDecibels +Pass AnalyserNode interface: attribute maxDecibels +Pass AnalyserNode interface: attribute smoothingTimeConstant +Pass AnalyserNode must be primary interface of new AnalyserNode(context) +Pass Stringification of new AnalyserNode(context) +Pass AnalyserNode interface: new AnalyserNode(context) must inherit property "getFloatFrequencyData(Float32Array)" with the proper type +Pass AnalyserNode interface: calling getFloatFrequencyData(Float32Array) on new AnalyserNode(context) with too few arguments must throw TypeError +Pass AnalyserNode interface: new AnalyserNode(context) must inherit property "getByteFrequencyData(Uint8Array)" with the proper type +Pass AnalyserNode interface: calling getByteFrequencyData(Uint8Array) on new AnalyserNode(context) with too few arguments must throw TypeError +Pass AnalyserNode interface: new AnalyserNode(context) must inherit property "getFloatTimeDomainData(Float32Array)" with the proper type +Pass AnalyserNode interface: calling getFloatTimeDomainData(Float32Array) on new AnalyserNode(context) with too few arguments must throw TypeError +Pass AnalyserNode interface: new AnalyserNode(context) must inherit property "getByteTimeDomainData(Uint8Array)" with the proper type +Pass AnalyserNode interface: calling getByteTimeDomainData(Uint8Array) on new AnalyserNode(context) with too few arguments must throw TypeError +Pass AnalyserNode interface: new AnalyserNode(context) must inherit property "fftSize" with the proper type +Pass AnalyserNode interface: new AnalyserNode(context) must inherit property "frequencyBinCount" with the proper type +Pass AnalyserNode interface: new AnalyserNode(context) must inherit property "minDecibels" with the proper type +Pass AnalyserNode interface: new AnalyserNode(context) must inherit property "maxDecibels" with the proper type +Pass AnalyserNode interface: new AnalyserNode(context) must inherit property "smoothingTimeConstant" with the proper type +Pass AudioNode interface: new AnalyserNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AnalyserNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AnalyserNode(context) must inherit property "disconnect()" with the proper type +Pass AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on new AnalyserNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on new AnalyserNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AnalyserNode(context) must inherit property "context" with the proper type +Pass AudioNode interface: new AnalyserNode(context) must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: new AnalyserNode(context) must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: new AnalyserNode(context) must inherit property "channelCount" with the proper type +Pass AudioNode interface: new AnalyserNode(context) must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: new AnalyserNode(context) must inherit property "channelInterpretation" with the proper type +Pass AudioBufferSourceNode interface: existence and properties of interface object +Pass AudioBufferSourceNode interface object length +Pass AudioBufferSourceNode interface object name +Pass AudioBufferSourceNode interface: existence and properties of interface prototype object +Pass AudioBufferSourceNode interface: existence and properties of interface prototype object's "constructor" property +Pass AudioBufferSourceNode interface: existence and properties of interface prototype object's @@unscopables property +Pass AudioBufferSourceNode interface: attribute buffer +Pass AudioBufferSourceNode interface: attribute playbackRate +Pass AudioBufferSourceNode interface: attribute detune +Pass AudioBufferSourceNode interface: attribute loop +Pass AudioBufferSourceNode interface: attribute loopStart +Pass AudioBufferSourceNode interface: attribute loopEnd +Pass AudioBufferSourceNode interface: operation start(optional double, optional double, optional double) +Pass AudioBufferSourceNode must be primary interface of new AudioBufferSourceNode(context) +Pass Stringification of new AudioBufferSourceNode(context) +Pass AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "buffer" with the proper type +Pass AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "playbackRate" with the proper type +Pass AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "detune" with the proper type +Pass AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "loop" with the proper type +Pass AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "loopStart" with the proper type +Pass AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "loopEnd" with the proper type +Pass AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "start(optional double, optional double, optional double)" with the proper type +Pass AudioBufferSourceNode interface: calling start(optional double, optional double, optional double) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError +Pass AudioScheduledSourceNode interface: new AudioBufferSourceNode(context) must inherit property "onended" with the proper type +Pass AudioScheduledSourceNode interface: new AudioBufferSourceNode(context) must inherit property "start(optional double)" with the proper type +Pass AudioScheduledSourceNode interface: calling start(optional double) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError +Pass AudioScheduledSourceNode interface: new AudioBufferSourceNode(context) must inherit property "stop(optional double)" with the proper type +Pass AudioScheduledSourceNode interface: calling stop(optional double) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect()" with the proper type +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "context" with the proper type +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "channelCount" with the proper type +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: new AudioBufferSourceNode(context) must inherit property "channelInterpretation" with the proper type +Pass AudioDestinationNode interface: existence and properties of interface object +Pass AudioDestinationNode interface object length +Pass AudioDestinationNode interface object name +Pass AudioDestinationNode interface: existence and properties of interface prototype object +Pass AudioDestinationNode interface: existence and properties of interface prototype object's "constructor" property +Pass AudioDestinationNode interface: existence and properties of interface prototype object's @@unscopables property +Pass AudioDestinationNode interface: attribute maxChannelCount +Pass AudioDestinationNode must be primary interface of context.destination +Pass Stringification of context.destination +Pass AudioDestinationNode interface: context.destination must inherit property "maxChannelCount" with the proper type +Pass AudioNode interface: context.destination must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on context.destination with too few arguments must throw TypeError +Pass AudioNode interface: context.destination must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on context.destination with too few arguments must throw TypeError +Pass AudioNode interface: context.destination must inherit property "disconnect()" with the proper type +Pass AudioNode interface: context.destination must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on context.destination with too few arguments must throw TypeError +Pass AudioNode interface: context.destination must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on context.destination with too few arguments must throw TypeError +Pass AudioNode interface: context.destination must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on context.destination with too few arguments must throw TypeError +Pass AudioNode interface: context.destination must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on context.destination with too few arguments must throw TypeError +Pass AudioNode interface: context.destination must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on context.destination with too few arguments must throw TypeError +Pass AudioNode interface: context.destination must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on context.destination with too few arguments must throw TypeError +Pass AudioNode interface: context.destination must inherit property "context" with the proper type +Pass AudioNode interface: context.destination must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: context.destination must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: context.destination must inherit property "channelCount" with the proper type +Pass AudioNode interface: context.destination must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: context.destination must inherit property "channelInterpretation" with the proper type +Pass AudioListener interface: existence and properties of interface object +Pass AudioListener interface object length +Pass AudioListener interface object name +Pass AudioListener interface: existence and properties of interface prototype object +Pass AudioListener interface: existence and properties of interface prototype object's "constructor" property +Pass AudioListener interface: existence and properties of interface prototype object's @@unscopables property +Pass AudioListener interface: attribute positionX +Pass AudioListener interface: attribute positionY +Pass AudioListener interface: attribute positionZ +Pass AudioListener interface: attribute forwardX +Pass AudioListener interface: attribute forwardY +Pass AudioListener interface: attribute forwardZ +Pass AudioListener interface: attribute upX +Pass AudioListener interface: attribute upY +Pass AudioListener interface: attribute upZ +Pass AudioListener interface: operation setPosition(float, float, float) +Pass AudioListener interface: operation setOrientation(float, float, float, float, float, float) +Pass AudioListener must be primary interface of context.listener +Pass Stringification of context.listener +Pass AudioListener interface: context.listener must inherit property "positionX" with the proper type +Pass AudioListener interface: context.listener must inherit property "positionY" with the proper type +Pass AudioListener interface: context.listener must inherit property "positionZ" with the proper type +Pass AudioListener interface: context.listener must inherit property "forwardX" with the proper type +Pass AudioListener interface: context.listener must inherit property "forwardY" with the proper type +Pass AudioListener interface: context.listener must inherit property "forwardZ" with the proper type +Pass AudioListener interface: context.listener must inherit property "upX" with the proper type +Pass AudioListener interface: context.listener must inherit property "upY" with the proper type +Pass AudioListener interface: context.listener must inherit property "upZ" with the proper type +Pass AudioListener interface: context.listener must inherit property "setPosition(float, float, float)" with the proper type +Pass AudioListener interface: calling setPosition(float, float, float) on context.listener with too few arguments must throw TypeError +Pass AudioListener interface: context.listener must inherit property "setOrientation(float, float, float, float, float, float)" with the proper type +Pass AudioListener interface: calling setOrientation(float, float, float, float, float, float) on context.listener with too few arguments must throw TypeError +Fail AudioProcessingEvent interface: existence and properties of interface object +Fail AudioProcessingEvent interface object length +Fail AudioProcessingEvent interface object name +Fail AudioProcessingEvent interface: existence and properties of interface prototype object +Fail AudioProcessingEvent interface: existence and properties of interface prototype object's "constructor" property +Fail AudioProcessingEvent interface: existence and properties of interface prototype object's @@unscopables property +Fail AudioProcessingEvent interface: attribute playbackTime +Fail AudioProcessingEvent interface: attribute inputBuffer +Fail AudioProcessingEvent interface: attribute outputBuffer +Fail AudioProcessingEvent must be primary interface of new AudioProcessingEvent('', { + playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer + }) +Fail Stringification of new AudioProcessingEvent('', { + playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer + }) +Fail AudioProcessingEvent interface: new AudioProcessingEvent('', { + playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer + }) must inherit property "playbackTime" with the proper type +Fail AudioProcessingEvent interface: new AudioProcessingEvent('', { + playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer + }) must inherit property "inputBuffer" with the proper type +Fail AudioProcessingEvent interface: new AudioProcessingEvent('', { + playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer + }) must inherit property "outputBuffer" with the proper type +Pass BiquadFilterNode interface: existence and properties of interface object +Pass BiquadFilterNode interface object length +Pass BiquadFilterNode interface object name +Pass BiquadFilterNode interface: existence and properties of interface prototype object +Pass BiquadFilterNode interface: existence and properties of interface prototype object's "constructor" property +Pass BiquadFilterNode interface: existence and properties of interface prototype object's @@unscopables property +Pass BiquadFilterNode interface: attribute type +Pass BiquadFilterNode interface: attribute frequency +Pass BiquadFilterNode interface: attribute detune +Pass BiquadFilterNode interface: attribute Q +Pass BiquadFilterNode interface: attribute gain +Pass BiquadFilterNode interface: operation getFrequencyResponse(Float32Array, Float32Array, Float32Array) +Pass BiquadFilterNode must be primary interface of new BiquadFilterNode(context) +Pass Stringification of new BiquadFilterNode(context) +Pass BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "type" with the proper type +Pass BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "frequency" with the proper type +Pass BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "detune" with the proper type +Pass BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "Q" with the proper type +Pass BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "gain" with the proper type +Pass BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "getFrequencyResponse(Float32Array, Float32Array, Float32Array)" with the proper type +Pass BiquadFilterNode interface: calling getFrequencyResponse(Float32Array, Float32Array, Float32Array) on new BiquadFilterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect()" with the proper type +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on new BiquadFilterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on new BiquadFilterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "context" with the proper type +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "channelCount" with the proper type +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: new BiquadFilterNode(context) must inherit property "channelInterpretation" with the proper type +Pass ChannelMergerNode interface: existence and properties of interface object +Pass ChannelMergerNode interface object length +Pass ChannelMergerNode interface object name +Pass ChannelMergerNode interface: existence and properties of interface prototype object +Pass ChannelMergerNode interface: existence and properties of interface prototype object's "constructor" property +Pass ChannelMergerNode interface: existence and properties of interface prototype object's @@unscopables property +Pass ChannelMergerNode must be primary interface of new ChannelMergerNode(context) +Pass Stringification of new ChannelMergerNode(context) +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect()" with the proper type +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on new ChannelMergerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on new ChannelMergerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "context" with the proper type +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "channelCount" with the proper type +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: new ChannelMergerNode(context) must inherit property "channelInterpretation" with the proper type +Pass ChannelSplitterNode interface: existence and properties of interface object +Pass ChannelSplitterNode interface object length +Pass ChannelSplitterNode interface object name +Pass ChannelSplitterNode interface: existence and properties of interface prototype object +Pass ChannelSplitterNode interface: existence and properties of interface prototype object's "constructor" property +Pass ChannelSplitterNode interface: existence and properties of interface prototype object's @@unscopables property +Pass ChannelSplitterNode must be primary interface of new ChannelSplitterNode(context) +Pass Stringification of new ChannelSplitterNode(context) +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect()" with the proper type +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on new ChannelSplitterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on new ChannelSplitterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "context" with the proper type +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "channelCount" with the proper type +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: new ChannelSplitterNode(context) must inherit property "channelInterpretation" with the proper type +Pass ConstantSourceNode interface: existence and properties of interface object +Pass ConstantSourceNode interface object length +Pass ConstantSourceNode interface object name +Pass ConstantSourceNode interface: existence and properties of interface prototype object +Pass ConstantSourceNode interface: existence and properties of interface prototype object's "constructor" property +Pass ConstantSourceNode interface: existence and properties of interface prototype object's @@unscopables property +Pass ConstantSourceNode interface: attribute offset +Pass ConstantSourceNode must be primary interface of new ConstantSourceNode(context) +Pass Stringification of new ConstantSourceNode(context) +Pass ConstantSourceNode interface: new ConstantSourceNode(context) must inherit property "offset" with the proper type +Pass AudioScheduledSourceNode interface: new ConstantSourceNode(context) must inherit property "onended" with the proper type +Pass AudioScheduledSourceNode interface: new ConstantSourceNode(context) must inherit property "start(optional double)" with the proper type +Pass AudioScheduledSourceNode interface: calling start(optional double) on new ConstantSourceNode(context) with too few arguments must throw TypeError +Pass AudioScheduledSourceNode interface: new ConstantSourceNode(context) must inherit property "stop(optional double)" with the proper type +Pass AudioScheduledSourceNode interface: calling stop(optional double) on new ConstantSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect()" with the proper type +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on new ConstantSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on new ConstantSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "context" with the proper type +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "channelCount" with the proper type +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: new ConstantSourceNode(context) must inherit property "channelInterpretation" with the proper type +Fail ConvolverNode interface: existence and properties of interface object +Fail ConvolverNode interface object length +Fail ConvolverNode interface object name +Fail ConvolverNode interface: existence and properties of interface prototype object +Fail ConvolverNode interface: existence and properties of interface prototype object's "constructor" property +Fail ConvolverNode interface: existence and properties of interface prototype object's @@unscopables property +Fail ConvolverNode interface: attribute buffer +Fail ConvolverNode interface: attribute normalize +Fail ConvolverNode must be primary interface of new ConvolverNode(context) +Fail Stringification of new ConvolverNode(context) +Fail ConvolverNode interface: new ConvolverNode(context) must inherit property "buffer" with the proper type +Fail ConvolverNode interface: new ConvolverNode(context) must inherit property "normalize" with the proper type +Fail AudioNode interface: new ConvolverNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Fail AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new ConvolverNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Fail AudioNode interface: calling connect(AudioParam, optional unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new ConvolverNode(context) must inherit property "disconnect()" with the proper type +Fail AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode) on new ConvolverNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Fail AudioNode interface: calling disconnect(AudioParam) on new ConvolverNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new ConvolverNode(context) must inherit property "context" with the proper type +Fail AudioNode interface: new ConvolverNode(context) must inherit property "numberOfInputs" with the proper type +Fail AudioNode interface: new ConvolverNode(context) must inherit property "numberOfOutputs" with the proper type +Fail AudioNode interface: new ConvolverNode(context) must inherit property "channelCount" with the proper type +Fail AudioNode interface: new ConvolverNode(context) must inherit property "channelCountMode" with the proper type +Fail AudioNode interface: new ConvolverNode(context) must inherit property "channelInterpretation" with the proper type +Pass DelayNode interface: existence and properties of interface object +Pass DelayNode interface object length +Pass DelayNode interface object name +Pass DelayNode interface: existence and properties of interface prototype object +Pass DelayNode interface: existence and properties of interface prototype object's "constructor" property +Pass DelayNode interface: existence and properties of interface prototype object's @@unscopables property +Pass DelayNode interface: attribute delayTime +Pass DelayNode must be primary interface of new DelayNode(context) +Pass Stringification of new DelayNode(context) +Pass DelayNode interface: new DelayNode(context) must inherit property "delayTime" with the proper type +Pass AudioNode interface: new DelayNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new DelayNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DelayNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on new DelayNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DelayNode(context) must inherit property "disconnect()" with the proper type +Pass AudioNode interface: new DelayNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on new DelayNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on new DelayNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on new DelayNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DelayNode(context) must inherit property "context" with the proper type +Pass AudioNode interface: new DelayNode(context) must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: new DelayNode(context) must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: new DelayNode(context) must inherit property "channelCount" with the proper type +Pass AudioNode interface: new DelayNode(context) must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: new DelayNode(context) must inherit property "channelInterpretation" with the proper type +Pass DynamicsCompressorNode interface: existence and properties of interface object +Pass DynamicsCompressorNode interface object length +Pass DynamicsCompressorNode interface object name +Pass DynamicsCompressorNode interface: existence and properties of interface prototype object +Pass DynamicsCompressorNode interface: existence and properties of interface prototype object's "constructor" property +Pass DynamicsCompressorNode interface: existence and properties of interface prototype object's @@unscopables property +Pass DynamicsCompressorNode interface: attribute threshold +Pass DynamicsCompressorNode interface: attribute knee +Pass DynamicsCompressorNode interface: attribute ratio +Pass DynamicsCompressorNode interface: attribute reduction +Pass DynamicsCompressorNode interface: attribute attack +Pass DynamicsCompressorNode interface: attribute release +Pass DynamicsCompressorNode must be primary interface of new DynamicsCompressorNode(context) +Pass Stringification of new DynamicsCompressorNode(context) +Pass DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "threshold" with the proper type +Pass DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "knee" with the proper type +Pass DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "ratio" with the proper type +Pass DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "reduction" with the proper type +Pass DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "attack" with the proper type +Pass DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "release" with the proper type +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect()" with the proper type +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "context" with the proper type +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "channelCount" with the proper type +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: new DynamicsCompressorNode(context) must inherit property "channelInterpretation" with the proper type +Pass GainNode interface: existence and properties of interface object +Pass GainNode interface object length +Pass GainNode interface object name +Pass GainNode interface: existence and properties of interface prototype object +Pass GainNode interface: existence and properties of interface prototype object's "constructor" property +Pass GainNode interface: existence and properties of interface prototype object's @@unscopables property +Pass GainNode interface: attribute gain +Pass GainNode must be primary interface of new GainNode(context) +Pass Stringification of new GainNode(context) +Pass GainNode interface: new GainNode(context) must inherit property "gain" with the proper type +Pass AudioNode interface: new GainNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new GainNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new GainNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on new GainNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new GainNode(context) must inherit property "disconnect()" with the proper type +Pass AudioNode interface: new GainNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on new GainNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on new GainNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on new GainNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new GainNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on new GainNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on new GainNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new GainNode(context) must inherit property "context" with the proper type +Pass AudioNode interface: new GainNode(context) must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: new GainNode(context) must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: new GainNode(context) must inherit property "channelCount" with the proper type +Pass AudioNode interface: new GainNode(context) must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: new GainNode(context) must inherit property "channelInterpretation" with the proper type +Fail IIRFilterNode interface: existence and properties of interface object +Fail IIRFilterNode interface object length +Fail IIRFilterNode interface object name +Fail IIRFilterNode interface: existence and properties of interface prototype object +Fail IIRFilterNode interface: existence and properties of interface prototype object's "constructor" property +Fail IIRFilterNode interface: existence and properties of interface prototype object's @@unscopables property +Fail IIRFilterNode interface: operation getFrequencyResponse(Float32Array, Float32Array, Float32Array) +Fail IIRFilterNode must be primary interface of new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) +Fail Stringification of new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) +Fail IIRFilterNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "getFrequencyResponse(Float32Array, Float32Array, Float32Array)" with the proper type +Fail IIRFilterNode interface: calling getFrequencyResponse(Float32Array, Float32Array, Float32Array) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Fail AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Fail AudioNode interface: calling connect(AudioParam, optional unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect()" with the proper type +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioNode)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioParam)" with the proper type +Fail AudioNode interface: calling disconnect(AudioParam) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioParam, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "context" with the proper type +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "numberOfInputs" with the proper type +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "numberOfOutputs" with the proper type +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "channelCount" with the proper type +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "channelCountMode" with the proper type +Fail AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "channelInterpretation" with the proper type +Pass MediaElementAudioSourceNode interface: existence and properties of interface object +Pass MediaElementAudioSourceNode interface object length +Pass MediaElementAudioSourceNode interface object name +Pass MediaElementAudioSourceNode interface: existence and properties of interface prototype object +Pass MediaElementAudioSourceNode interface: existence and properties of interface prototype object's "constructor" property +Pass MediaElementAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property +Pass MediaElementAudioSourceNode interface: attribute mediaElement +Pass MediaElementAudioSourceNode must be primary interface of new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) +Pass Stringification of new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) +Pass MediaElementAudioSourceNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "mediaElement" with the proper type +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect()" with the proper type +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "context" with the proper type +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "channelCount" with the proper type +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "channelInterpretation" with the proper type +Fail MediaStreamAudioDestinationNode interface: existence and properties of interface object +Fail MediaStreamAudioDestinationNode interface object length +Fail MediaStreamAudioDestinationNode interface object name +Fail MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object +Fail MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object's "constructor" property +Fail MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object's @@unscopables property +Fail MediaStreamAudioDestinationNode interface: attribute stream +Fail MediaStreamAudioDestinationNode must be primary interface of new MediaStreamAudioDestinationNode(context) +Fail Stringification of new MediaStreamAudioDestinationNode(context) +Fail MediaStreamAudioDestinationNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "stream" with the proper type +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Fail AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Fail AudioNode interface: calling connect(AudioParam, optional unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect()" with the proper type +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Fail AudioNode interface: calling disconnect(AudioParam) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioParam, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "context" with the proper type +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "numberOfInputs" with the proper type +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "numberOfOutputs" with the proper type +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "channelCount" with the proper type +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "channelCountMode" with the proper type +Fail AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "channelInterpretation" with the proper type +Fail MediaStreamAudioSourceNode interface: existence and properties of interface object +Fail MediaStreamAudioSourceNode interface object length +Fail MediaStreamAudioSourceNode interface object name +Fail MediaStreamAudioSourceNode interface: existence and properties of interface prototype object +Fail MediaStreamAudioSourceNode interface: existence and properties of interface prototype object's "constructor" property +Fail MediaStreamAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property +Fail MediaStreamAudioSourceNode interface: attribute mediaStream +Fail MediaStreamTrackAudioSourceNode interface: existence and properties of interface object +Fail MediaStreamTrackAudioSourceNode interface object length +Fail MediaStreamTrackAudioSourceNode interface object name +Fail MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object +Fail MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object's "constructor" property +Fail MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property +Pass OscillatorNode interface: existence and properties of interface object +Pass OscillatorNode interface object length +Pass OscillatorNode interface object name +Pass OscillatorNode interface: existence and properties of interface prototype object +Pass OscillatorNode interface: existence and properties of interface prototype object's "constructor" property +Pass OscillatorNode interface: existence and properties of interface prototype object's @@unscopables property +Pass OscillatorNode interface: attribute type +Pass OscillatorNode interface: attribute frequency +Pass OscillatorNode interface: attribute detune +Pass OscillatorNode interface: operation setPeriodicWave(PeriodicWave) +Pass OscillatorNode must be primary interface of new OscillatorNode(context) +Pass Stringification of new OscillatorNode(context) +Pass OscillatorNode interface: new OscillatorNode(context) must inherit property "type" with the proper type +Pass OscillatorNode interface: new OscillatorNode(context) must inherit property "frequency" with the proper type +Pass OscillatorNode interface: new OscillatorNode(context) must inherit property "detune" with the proper type +Pass OscillatorNode interface: new OscillatorNode(context) must inherit property "setPeriodicWave(PeriodicWave)" with the proper type +Pass OscillatorNode interface: calling setPeriodicWave(PeriodicWave) on new OscillatorNode(context) with too few arguments must throw TypeError +Pass AudioScheduledSourceNode interface: new OscillatorNode(context) must inherit property "onended" with the proper type +Pass AudioScheduledSourceNode interface: new OscillatorNode(context) must inherit property "start(optional double)" with the proper type +Pass AudioScheduledSourceNode interface: calling start(optional double) on new OscillatorNode(context) with too few arguments must throw TypeError +Pass AudioScheduledSourceNode interface: new OscillatorNode(context) must inherit property "stop(optional double)" with the proper type +Pass AudioScheduledSourceNode interface: calling stop(optional double) on new OscillatorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new OscillatorNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new OscillatorNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new OscillatorNode(context) must inherit property "disconnect()" with the proper type +Pass AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on new OscillatorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on new OscillatorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new OscillatorNode(context) must inherit property "context" with the proper type +Pass AudioNode interface: new OscillatorNode(context) must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: new OscillatorNode(context) must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: new OscillatorNode(context) must inherit property "channelCount" with the proper type +Pass AudioNode interface: new OscillatorNode(context) must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: new OscillatorNode(context) must inherit property "channelInterpretation" with the proper type +Pass PannerNode interface: existence and properties of interface object +Pass PannerNode interface object length +Pass PannerNode interface object name +Pass PannerNode interface: existence and properties of interface prototype object +Pass PannerNode interface: existence and properties of interface prototype object's "constructor" property +Pass PannerNode interface: existence and properties of interface prototype object's @@unscopables property +Pass PannerNode interface: attribute panningModel +Pass PannerNode interface: attribute positionX +Pass PannerNode interface: attribute positionY +Pass PannerNode interface: attribute positionZ +Pass PannerNode interface: attribute orientationX +Pass PannerNode interface: attribute orientationY +Pass PannerNode interface: attribute orientationZ +Pass PannerNode interface: attribute distanceModel +Pass PannerNode interface: attribute refDistance +Pass PannerNode interface: attribute maxDistance +Pass PannerNode interface: attribute rolloffFactor +Pass PannerNode interface: attribute coneInnerAngle +Pass PannerNode interface: attribute coneOuterAngle +Pass PannerNode interface: attribute coneOuterGain +Pass PannerNode interface: operation setPosition(float, float, float) +Pass PannerNode interface: operation setOrientation(float, float, float) +Pass PannerNode must be primary interface of new PannerNode(context) +Pass Stringification of new PannerNode(context) +Pass PannerNode interface: new PannerNode(context) must inherit property "panningModel" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "positionX" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "positionY" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "positionZ" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "orientationX" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "orientationY" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "orientationZ" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "distanceModel" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "refDistance" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "maxDistance" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "rolloffFactor" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "coneInnerAngle" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "coneOuterAngle" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "coneOuterGain" with the proper type +Pass PannerNode interface: new PannerNode(context) must inherit property "setPosition(float, float, float)" with the proper type +Pass PannerNode interface: calling setPosition(float, float, float) on new PannerNode(context) with too few arguments must throw TypeError +Pass PannerNode interface: new PannerNode(context) must inherit property "setOrientation(float, float, float)" with the proper type +Pass PannerNode interface: calling setOrientation(float, float, float) on new PannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new PannerNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new PannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new PannerNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on new PannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new PannerNode(context) must inherit property "disconnect()" with the proper type +Pass AudioNode interface: new PannerNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on new PannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on new PannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on new PannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new PannerNode(context) must inherit property "context" with the proper type +Pass AudioNode interface: new PannerNode(context) must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: new PannerNode(context) must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: new PannerNode(context) must inherit property "channelCount" with the proper type +Pass AudioNode interface: new PannerNode(context) must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: new PannerNode(context) must inherit property "channelInterpretation" with the proper type +Pass PeriodicWave interface: existence and properties of interface object +Pass PeriodicWave interface object length +Pass PeriodicWave interface object name +Pass PeriodicWave interface: existence and properties of interface prototype object +Pass PeriodicWave interface: existence and properties of interface prototype object's "constructor" property +Pass PeriodicWave interface: existence and properties of interface prototype object's @@unscopables property +Pass PeriodicWave must be primary interface of new PeriodicWave(context) +Pass Stringification of new PeriodicWave(context) +Pass ScriptProcessorNode interface: existence and properties of interface object +Pass ScriptProcessorNode interface object length +Pass ScriptProcessorNode interface object name +Pass ScriptProcessorNode interface: existence and properties of interface prototype object +Pass ScriptProcessorNode interface: existence and properties of interface prototype object's "constructor" property +Pass ScriptProcessorNode interface: existence and properties of interface prototype object's @@unscopables property +Pass ScriptProcessorNode interface: attribute onaudioprocess +Pass ScriptProcessorNode interface: attribute bufferSize +Pass ScriptProcessorNode must be primary interface of context.createScriptProcessor() +Pass Stringification of context.createScriptProcessor() +Pass ScriptProcessorNode interface: context.createScriptProcessor() must inherit property "onaudioprocess" with the proper type +Pass ScriptProcessorNode interface: context.createScriptProcessor() must inherit property "bufferSize" with the proper type +Pass AudioNode interface: context.createScriptProcessor() must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError +Pass AudioNode interface: context.createScriptProcessor() must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError +Pass AudioNode interface: context.createScriptProcessor() must inherit property "disconnect()" with the proper type +Pass AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError +Pass AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on context.createScriptProcessor() with too few arguments must throw TypeError +Pass AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError +Pass AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError +Pass AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on context.createScriptProcessor() with too few arguments must throw TypeError +Pass AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError +Pass AudioNode interface: context.createScriptProcessor() must inherit property "context" with the proper type +Pass AudioNode interface: context.createScriptProcessor() must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: context.createScriptProcessor() must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: context.createScriptProcessor() must inherit property "channelCount" with the proper type +Pass AudioNode interface: context.createScriptProcessor() must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: context.createScriptProcessor() must inherit property "channelInterpretation" with the proper type +Pass StereoPannerNode interface: existence and properties of interface object +Pass StereoPannerNode interface object length +Pass StereoPannerNode interface object name +Pass StereoPannerNode interface: existence and properties of interface prototype object +Pass StereoPannerNode interface: existence and properties of interface prototype object's "constructor" property +Pass StereoPannerNode interface: existence and properties of interface prototype object's @@unscopables property +Pass StereoPannerNode interface: attribute pan +Pass StereoPannerNode must be primary interface of new StereoPannerNode(context) +Pass Stringification of new StereoPannerNode(context) +Pass StereoPannerNode interface: new StereoPannerNode(context) must inherit property "pan" with the proper type +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Pass AudioNode interface: calling connect(AudioParam, optional unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect()" with the proper type +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode) on new StereoPannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam) on new StereoPannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Pass AudioNode interface: calling disconnect(AudioParam, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "context" with the proper type +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "numberOfInputs" with the proper type +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "numberOfOutputs" with the proper type +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "channelCount" with the proper type +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "channelCountMode" with the proper type +Pass AudioNode interface: new StereoPannerNode(context) must inherit property "channelInterpretation" with the proper type +Fail WaveShaperNode interface: existence and properties of interface object +Fail WaveShaperNode interface object length +Fail WaveShaperNode interface object name +Fail WaveShaperNode interface: existence and properties of interface prototype object +Fail WaveShaperNode interface: existence and properties of interface prototype object's "constructor" property +Fail WaveShaperNode interface: existence and properties of interface prototype object's @@unscopables property +Fail WaveShaperNode interface: attribute curve +Fail WaveShaperNode interface: attribute oversample +Fail WaveShaperNode must be primary interface of new WaveShaperNode(context) +Fail Stringification of new WaveShaperNode(context) +Fail WaveShaperNode interface: new WaveShaperNode(context) must inherit property "curve" with the proper type +Fail WaveShaperNode interface: new WaveShaperNode(context) must inherit property "oversample" with the proper type +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Fail AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Fail AudioNode interface: calling connect(AudioParam, optional unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect()" with the proper type +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioNode)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode) on new WaveShaperNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioParam)" with the proper type +Fail AudioNode interface: calling disconnect(AudioParam) on new WaveShaperNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioParam, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "context" with the proper type +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "numberOfInputs" with the proper type +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "numberOfOutputs" with the proper type +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "channelCount" with the proper type +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "channelCountMode" with the proper type +Fail AudioNode interface: new WaveShaperNode(context) must inherit property "channelInterpretation" with the proper type +Fail AudioWorklet interface: existence and properties of interface object +Fail AudioWorklet interface object length +Fail AudioWorklet interface object name +Fail AudioWorklet interface: existence and properties of interface prototype object +Fail AudioWorklet interface: existence and properties of interface prototype object's "constructor" property +Fail AudioWorklet interface: existence and properties of interface prototype object's @@unscopables property +Fail AudioWorklet interface: attribute port +Fail AudioWorklet must be primary interface of context.audioWorklet +Fail Stringification of context.audioWorklet +Fail AudioWorklet interface: context.audioWorklet must inherit property "port" with the proper type +Pass AudioWorkletGlobalScope interface: existence and properties of interface object +Fail AudioParamMap interface: existence and properties of interface object +Fail AudioParamMap interface object length +Fail AudioParamMap interface object name +Fail AudioParamMap interface: existence and properties of interface prototype object +Fail AudioParamMap interface: existence and properties of interface prototype object's "constructor" property +Fail AudioParamMap interface: existence and properties of interface prototype object's @@unscopables property +Fail AudioParamMap interface: maplike +Fail AudioParamMap must be primary interface of worklet_node.parameters +Fail Stringification of worklet_node.parameters +Fail AudioWorkletNode interface: existence and properties of interface object +Fail AudioWorkletNode interface object length +Fail AudioWorkletNode interface object name +Fail AudioWorkletNode interface: existence and properties of interface prototype object +Fail AudioWorkletNode interface: existence and properties of interface prototype object's "constructor" property +Fail AudioWorkletNode interface: existence and properties of interface prototype object's @@unscopables property +Fail AudioWorkletNode interface: attribute parameters +Fail AudioWorkletNode interface: attribute port +Fail AudioWorkletNode interface: attribute onprocessorerror +Fail AudioWorkletNode must be primary interface of worklet_node +Fail Stringification of worklet_node +Fail AudioWorkletNode interface: worklet_node must inherit property "parameters" with the proper type +Fail AudioWorkletNode interface: worklet_node must inherit property "port" with the proper type +Fail AudioWorkletNode interface: worklet_node must inherit property "onprocessorerror" with the proper type +Fail AudioNode interface: worklet_node must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type +Fail AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on worklet_node with too few arguments must throw TypeError +Fail AudioNode interface: worklet_node must inherit property "connect(AudioParam, optional unsigned long)" with the proper type +Fail AudioNode interface: calling connect(AudioParam, optional unsigned long) on worklet_node with too few arguments must throw TypeError +Fail AudioNode interface: worklet_node must inherit property "disconnect()" with the proper type +Fail AudioNode interface: worklet_node must inherit property "disconnect(unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(unsigned long) on worklet_node with too few arguments must throw TypeError +Fail AudioNode interface: worklet_node must inherit property "disconnect(AudioNode)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode) on worklet_node with too few arguments must throw TypeError +Fail AudioNode interface: worklet_node must inherit property "disconnect(AudioNode, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode, unsigned long) on worklet_node with too few arguments must throw TypeError +Fail AudioNode interface: worklet_node must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on worklet_node with too few arguments must throw TypeError +Fail AudioNode interface: worklet_node must inherit property "disconnect(AudioParam)" with the proper type +Fail AudioNode interface: calling disconnect(AudioParam) on worklet_node with too few arguments must throw TypeError +Fail AudioNode interface: worklet_node must inherit property "disconnect(AudioParam, unsigned long)" with the proper type +Fail AudioNode interface: calling disconnect(AudioParam, unsigned long) on worklet_node with too few arguments must throw TypeError +Fail AudioNode interface: worklet_node must inherit property "context" with the proper type +Fail AudioNode interface: worklet_node must inherit property "numberOfInputs" with the proper type +Fail AudioNode interface: worklet_node must inherit property "numberOfOutputs" with the proper type +Fail AudioNode interface: worklet_node must inherit property "channelCount" with the proper type +Fail AudioNode interface: worklet_node must inherit property "channelCountMode" with the proper type +Fail AudioNode interface: worklet_node must inherit property "channelInterpretation" with the proper type +Pass AudioWorkletProcessor interface: existence and properties of interface object \ No newline at end of file diff --git a/Tests/LibWeb/Text/expected/wpt-import/webaudio/the-audio-api/the-audioparam-interface/audioparam-nominal-range.txt b/Tests/LibWeb/Text/expected/wpt-import/webaudio/the-audio-api/the-audioparam-interface/audioparam-nominal-range.txt index 5d22edbe9a2..9a66dfaf849 100644 --- a/Tests/LibWeb/Text/expected/wpt-import/webaudio/the-audio-api/the-audioparam-interface/audioparam-nominal-range.txt +++ b/Tests/LibWeb/Text/expected/wpt-import/webaudio/the-audio-api/the-audioparam-interface/audioparam-nominal-range.txt @@ -1,9 +1,9 @@ Harness status: OK -Found 317 tests +Found 319 tests -312 Pass -5 Fail +315 Pass +4 Fail Pass # AUDIT TASK RUNNER STARTED. Pass Executing "initialize" Pass Executing "Offline createGain" @@ -20,7 +20,7 @@ Fail Executing "Offline createIIRFilter" Fail Executing "Offline createWaveShaper" Fail Executing "Offline createConvolver" Pass Executing "Offline createAnalyser" -Fail Executing "Offline createScriptProcessor" +Pass Executing "Offline createScriptProcessor" Pass Executing "Offline createPeriodicWave" Pass Executing "Offline createChannelSplitter" Pass Executing "Offline createChannelMerger" @@ -244,6 +244,8 @@ Pass > [Offline createAnalyser] Pass AnalyserNode has no AudioParams as expected Pass < [Offline createAnalyser] All assertions passed. (total 1 assertions) Pass > [Offline createScriptProcessor] +Pass ScriptProcessorNode has no AudioParams as expected +Pass < [Offline createScriptProcessor] All assertions passed. (total 1 assertions) Pass > [Offline createPeriodicWave] Pass PeriodicWave has no AudioParams as expected Pass < [Offline createPeriodicWave] All assertions passed. (total 1 assertions) diff --git a/Tests/LibWeb/Text/input/wpt-import/interfaces/mediacapture-streams.idl b/Tests/LibWeb/Text/input/wpt-import/interfaces/mediacapture-streams.idl new file mode 100644 index 00000000000..6000b0f2ae3 --- /dev/null +++ b/Tests/LibWeb/Text/input/wpt-import/interfaces/mediacapture-streams.idl @@ -0,0 +1,261 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Media Capture and Streams (https://w3c.github.io/mediacapture-main/) + +[Exposed=Window] +interface MediaStream : EventTarget { + constructor(); + constructor(MediaStream stream); + constructor(sequence tracks); + readonly attribute DOMString id; + sequence getAudioTracks(); + sequence getVideoTracks(); + sequence getTracks(); + MediaStreamTrack? getTrackById(DOMString trackId); + undefined addTrack(MediaStreamTrack track); + undefined removeTrack(MediaStreamTrack track); + MediaStream clone(); + readonly attribute boolean active; + attribute EventHandler onaddtrack; + attribute EventHandler onremovetrack; +}; + +[Exposed=Window] +interface MediaStreamTrack : EventTarget { + readonly attribute DOMString kind; + readonly attribute DOMString id; + readonly attribute DOMString label; + attribute boolean enabled; + readonly attribute boolean muted; + attribute EventHandler onmute; + attribute EventHandler onunmute; + readonly attribute MediaStreamTrackState readyState; + attribute EventHandler onended; + MediaStreamTrack clone(); + undefined stop(); + MediaTrackCapabilities getCapabilities(); + MediaTrackConstraints getConstraints(); + MediaTrackSettings getSettings(); + Promise applyConstraints(optional MediaTrackConstraints constraints = {}); +}; + +enum MediaStreamTrackState { + "live", + "ended" +}; + +dictionary MediaTrackSupportedConstraints { + boolean width = true; + boolean height = true; + boolean aspectRatio = true; + boolean frameRate = true; + boolean facingMode = true; + boolean resizeMode = true; + boolean sampleRate = true; + boolean sampleSize = true; + boolean echoCancellation = true; + boolean autoGainControl = true; + boolean noiseSuppression = true; + boolean latency = true; + boolean channelCount = true; + boolean deviceId = true; + boolean groupId = true; + boolean backgroundBlur = true; +}; + +dictionary MediaTrackCapabilities { + ULongRange width; + ULongRange height; + DoubleRange aspectRatio; + DoubleRange frameRate; + sequence facingMode; + sequence resizeMode; + ULongRange sampleRate; + ULongRange sampleSize; + sequence<(boolean or DOMString)> echoCancellation; + sequence autoGainControl; + sequence noiseSuppression; + DoubleRange latency; + ULongRange channelCount; + DOMString deviceId; + DOMString groupId; + sequence backgroundBlur; +}; + +dictionary MediaTrackConstraints : MediaTrackConstraintSet { + sequence advanced; +}; + +dictionary MediaTrackConstraintSet { + ConstrainULong width; + ConstrainULong height; + ConstrainDouble aspectRatio; + ConstrainDouble frameRate; + ConstrainDOMString facingMode; + ConstrainDOMString resizeMode; + ConstrainULong sampleRate; + ConstrainULong sampleSize; + ConstrainBooleanOrDOMString echoCancellation; + ConstrainBoolean autoGainControl; + ConstrainBoolean noiseSuppression; + ConstrainDouble latency; + ConstrainULong channelCount; + ConstrainDOMString deviceId; + ConstrainDOMString groupId; + ConstrainBoolean backgroundBlur; +}; + +dictionary MediaTrackSettings { + unsigned long width; + unsigned long height; + double aspectRatio; + double frameRate; + DOMString facingMode; + DOMString resizeMode; + unsigned long sampleRate; + unsigned long sampleSize; + (boolean or DOMString) echoCancellation; + boolean autoGainControl; + boolean noiseSuppression; + double latency; + unsigned long channelCount; + DOMString deviceId; + DOMString groupId; + boolean backgroundBlur; +}; + +enum VideoFacingModeEnum { + "user", + "environment", + "left", + "right" +}; + +enum VideoResizeModeEnum { + "none", + "crop-and-scale" +}; + +enum EchoCancellationModeEnum { + "all", + "remote-only" +}; + +[Exposed=Window] +interface MediaStreamTrackEvent : Event { + constructor(DOMString type, MediaStreamTrackEventInit eventInitDict); + [SameObject] readonly attribute MediaStreamTrack track; +}; + +dictionary MediaStreamTrackEventInit : EventInit { + required MediaStreamTrack track; +}; + +[Exposed=Window] +interface OverconstrainedError : DOMException { + constructor(DOMString constraint, optional DOMString message = ""); + readonly attribute DOMString constraint; +}; + +partial interface Navigator { + [SameObject, SecureContext] readonly attribute MediaDevices mediaDevices; +}; + +[Exposed=Window, SecureContext] +interface MediaDevices : EventTarget { + attribute EventHandler ondevicechange; + Promise> enumerateDevices(); +}; + +[Exposed=Window, SecureContext] +interface MediaDeviceInfo { + readonly attribute DOMString deviceId; + readonly attribute MediaDeviceKind kind; + readonly attribute DOMString label; + readonly attribute DOMString groupId; + [Default] object toJSON(); +}; + +enum MediaDeviceKind { + "audioinput", + "audiooutput", + "videoinput" +}; + +[Exposed=Window, SecureContext] +interface InputDeviceInfo : MediaDeviceInfo { + MediaTrackCapabilities getCapabilities(); +}; + +[Exposed=Window] +interface DeviceChangeEvent : Event { + constructor(DOMString type, optional DeviceChangeEventInit eventInitDict = {}); + [SameObject] readonly attribute FrozenArray devices; + [SameObject] readonly attribute FrozenArray userInsertedDevices; +}; + +dictionary DeviceChangeEventInit : EventInit { + sequence devices = []; +}; + +partial interface MediaDevices { + MediaTrackSupportedConstraints getSupportedConstraints(); + Promise getUserMedia(optional MediaStreamConstraints constraints = {}); +}; + +dictionary MediaStreamConstraints { + (boolean or MediaTrackConstraints) video = false; + (boolean or MediaTrackConstraints) audio = false; +}; + +dictionary DoubleRange { + double max; + double min; +}; + +dictionary ConstrainDoubleRange : DoubleRange { + double exact; + double ideal; +}; + +dictionary ULongRange { + [Clamp] unsigned long max; + [Clamp] unsigned long min; +}; + +dictionary ConstrainULongRange : ULongRange { + [Clamp] unsigned long exact; + [Clamp] unsigned long ideal; +}; + +dictionary ConstrainBooleanParameters { + boolean exact; + boolean ideal; +}; + +dictionary ConstrainDOMStringParameters { + (DOMString or sequence) exact; + (DOMString or sequence) ideal; +}; + +dictionary ConstrainBooleanOrDOMStringParameters { + (boolean or DOMString) exact; + (boolean or DOMString) ideal; +}; + +typedef ([Clamp] unsigned long or ConstrainULongRange) ConstrainULong; + +typedef (double or ConstrainDoubleRange) ConstrainDouble; + +typedef (boolean or ConstrainBooleanParameters) ConstrainBoolean; + +typedef (DOMString or +sequence or +ConstrainDOMStringParameters) ConstrainDOMString; + +typedef (boolean or DOMString or ConstrainBooleanOrDOMStringParameters) ConstrainBooleanOrDOMString; + +dictionary CameraDevicePermissionDescriptor : PermissionDescriptor { + boolean panTiltZoom = false; +}; diff --git a/Tests/LibWeb/Text/input/wpt-import/interfaces/uievents.idl b/Tests/LibWeb/Text/input/wpt-import/interfaces/uievents.idl new file mode 100644 index 00000000000..aea38778326 --- /dev/null +++ b/Tests/LibWeb/Text/input/wpt-import/interfaces/uievents.idl @@ -0,0 +1,237 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: UI Events (https://w3c.github.io/uievents/) + +[Exposed=Window] +interface UIEvent : Event { + constructor(DOMString type, optional UIEventInit eventInitDict = {}); + readonly attribute Window? view; + readonly attribute long detail; +}; + +dictionary UIEventInit : EventInit { + Window? view = null; + long detail = 0; +}; + +[Exposed=Window] +interface FocusEvent : UIEvent { + constructor(DOMString type, optional FocusEventInit eventInitDict = {}); + readonly attribute EventTarget? relatedTarget; +}; + +dictionary FocusEventInit : UIEventInit { + EventTarget? relatedTarget = null; +}; + +[Exposed=Window] +interface MouseEvent : UIEvent { + constructor(DOMString type, optional MouseEventInit eventInitDict = {}); + readonly attribute long screenX; + readonly attribute long screenY; + readonly attribute long clientX; + readonly attribute long clientY; + readonly attribute long layerX; + readonly attribute long layerY; + + readonly attribute boolean ctrlKey; + readonly attribute boolean shiftKey; + readonly attribute boolean altKey; + readonly attribute boolean metaKey; + + readonly attribute short button; + readonly attribute unsigned short buttons; + + readonly attribute EventTarget? relatedTarget; + + boolean getModifierState(DOMString keyArg); +}; + +dictionary MouseEventInit : EventModifierInit { + long screenX = 0; + long screenY = 0; + long clientX = 0; + long clientY = 0; + + short button = 0; + unsigned short buttons = 0; + EventTarget? relatedTarget = null; +}; + +dictionary EventModifierInit : UIEventInit { + boolean ctrlKey = false; + boolean shiftKey = false; + boolean altKey = false; + boolean metaKey = false; + + boolean modifierAltGraph = false; + boolean modifierCapsLock = false; + boolean modifierFn = false; + boolean modifierFnLock = false; + boolean modifierHyper = false; + boolean modifierNumLock = false; + boolean modifierScrollLock = false; + boolean modifierSuper = false; + boolean modifierSymbol = false; + boolean modifierSymbolLock = false; +}; + +[Exposed=Window] +interface WheelEvent : MouseEvent { + constructor(DOMString type, optional WheelEventInit eventInitDict = {}); + // DeltaModeCode + const unsigned long DOM_DELTA_PIXEL = 0x00; + const unsigned long DOM_DELTA_LINE = 0x01; + const unsigned long DOM_DELTA_PAGE = 0x02; + + readonly attribute double deltaX; + readonly attribute double deltaY; + readonly attribute double deltaZ; + readonly attribute unsigned long deltaMode; +}; + +dictionary WheelEventInit : MouseEventInit { + double deltaX = 0.0; + double deltaY = 0.0; + double deltaZ = 0.0; + unsigned long deltaMode = 0; +}; + +[Exposed=Window] +interface InputEvent : UIEvent { + constructor(DOMString type, optional InputEventInit eventInitDict = {}); + readonly attribute USVString? data; + readonly attribute boolean isComposing; + readonly attribute DOMString inputType; +}; + +dictionary InputEventInit : UIEventInit { + DOMString? data = null; + boolean isComposing = false; + DOMString inputType = ""; +}; + +[Exposed=Window] +interface KeyboardEvent : UIEvent { + constructor(DOMString type, optional KeyboardEventInit eventInitDict = {}); + // KeyLocationCode + const unsigned long DOM_KEY_LOCATION_STANDARD = 0x00; + const unsigned long DOM_KEY_LOCATION_LEFT = 0x01; + const unsigned long DOM_KEY_LOCATION_RIGHT = 0x02; + const unsigned long DOM_KEY_LOCATION_NUMPAD = 0x03; + + readonly attribute DOMString key; + readonly attribute DOMString code; + readonly attribute unsigned long location; + + readonly attribute boolean ctrlKey; + readonly attribute boolean shiftKey; + readonly attribute boolean altKey; + readonly attribute boolean metaKey; + + readonly attribute boolean repeat; + readonly attribute boolean isComposing; + + boolean getModifierState(DOMString keyArg); +}; + +dictionary KeyboardEventInit : EventModifierInit { + DOMString key = ""; + DOMString code = ""; + unsigned long location = 0; + boolean repeat = false; + boolean isComposing = false; +}; + +[Exposed=Window] +interface CompositionEvent : UIEvent { + constructor(DOMString type, optional CompositionEventInit eventInitDict = {}); + readonly attribute USVString data; +}; + +dictionary CompositionEventInit : UIEventInit { + DOMString data = ""; +}; + +partial interface UIEvent { + // Deprecated in this specification + undefined initUIEvent(DOMString typeArg, + optional boolean bubblesArg = false, + optional boolean cancelableArg = false, + optional Window? viewArg = null, + optional long detailArg = 0); +}; + +partial interface MouseEvent { + // Deprecated in this specification + undefined initMouseEvent(DOMString typeArg, + optional boolean bubblesArg = false, + optional boolean cancelableArg = false, + optional Window? viewArg = null, + optional long detailArg = 0, + optional long screenXArg = 0, + optional long screenYArg = 0, + optional long clientXArg = 0, + optional long clientYArg = 0, + optional boolean ctrlKeyArg = false, + optional boolean altKeyArg = false, + optional boolean shiftKeyArg = false, + optional boolean metaKeyArg = false, + optional short buttonArg = 0, + optional EventTarget? relatedTargetArg = null); +}; + +partial interface KeyboardEvent { + // Originally introduced (and deprecated) in this specification + undefined initKeyboardEvent(DOMString typeArg, + optional boolean bubblesArg = false, + optional boolean cancelableArg = false, + optional Window? viewArg = null, + optional DOMString keyArg = "", + optional unsigned long locationArg = 0, + optional boolean ctrlKey = false, + optional boolean altKey = false, + optional boolean shiftKey = false, + optional boolean metaKey = false); +}; + +partial interface CompositionEvent { + // Originally introduced (and deprecated) in this specification + undefined initCompositionEvent(DOMString typeArg, + optional boolean bubblesArg = false, + optional boolean cancelableArg = false, + optional WindowProxy? viewArg = null, + optional DOMString dataArg = ""); +}; + +partial interface UIEvent { + // The following support legacy user agents + readonly attribute unsigned long which; +}; + +partial dictionary UIEventInit { + unsigned long which = 0; +}; + +partial interface KeyboardEvent { + // The following support legacy user agents + readonly attribute unsigned long charCode; + readonly attribute unsigned long keyCode; +}; + +partial dictionary KeyboardEventInit { + // The following support legacy user agents + unsigned long charCode = 0; + unsigned long keyCode = 0; +}; + +[Exposed=Window] +interface TextEvent : UIEvent { + readonly attribute DOMString data; + undefined initTextEvent(DOMString type, + optional boolean bubbles = false, + optional boolean cancelable = false, + optional Window? view = null, + optional DOMString data = "undefined"); +}; diff --git a/Tests/LibWeb/Text/input/wpt-import/interfaces/webaudio.idl b/Tests/LibWeb/Text/input/wpt-import/interfaces/webaudio.idl new file mode 100644 index 00000000000..286aeba4069 --- /dev/null +++ b/Tests/LibWeb/Text/input/wpt-import/interfaces/webaudio.idl @@ -0,0 +1,657 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Audio API 1.1 (https://webaudio.github.io/web-audio-api/) + +enum AudioContextState { + "suspended", + "running", + "closed", + "interrupted" +}; + +enum AudioContextRenderSizeCategory { + "default", + "hardware" +}; + +callback DecodeErrorCallback = undefined (DOMException error); + +callback DecodeSuccessCallback = undefined (AudioBuffer decodedData); + +[Exposed=Window] +interface BaseAudioContext : EventTarget { + readonly attribute AudioDestinationNode destination; + readonly attribute float sampleRate; + readonly attribute double currentTime; + readonly attribute AudioListener listener; + readonly attribute AudioContextState state; + readonly attribute unsigned long renderQuantumSize; + [SameObject, SecureContext] + readonly attribute AudioWorklet audioWorklet; + attribute EventHandler onstatechange; + + AnalyserNode createAnalyser (); + BiquadFilterNode createBiquadFilter (); + AudioBuffer createBuffer (unsigned long numberOfChannels, + unsigned long length, + float sampleRate); + AudioBufferSourceNode createBufferSource (); + ChannelMergerNode createChannelMerger (optional unsigned long numberOfInputs = 6); + ChannelSplitterNode createChannelSplitter ( + optional unsigned long numberOfOutputs = 6); + ConstantSourceNode createConstantSource (); + ConvolverNode createConvolver (); + DelayNode createDelay (optional double maxDelayTime = 1.0); + DynamicsCompressorNode createDynamicsCompressor (); + GainNode createGain (); + IIRFilterNode createIIRFilter (sequence feedforward, + sequence feedback); + OscillatorNode createOscillator (); + PannerNode createPanner (); + PeriodicWave createPeriodicWave (sequence real, + sequence imag, + optional PeriodicWaveConstraints constraints = {}); + ScriptProcessorNode createScriptProcessor( + optional unsigned long bufferSize = 0, + optional unsigned long numberOfInputChannels = 2, + optional unsigned long numberOfOutputChannels = 2); + StereoPannerNode createStereoPanner (); + WaveShaperNode createWaveShaper (); + + Promise decodeAudioData ( + ArrayBuffer audioData, + optional DecodeSuccessCallback? successCallback, + optional DecodeErrorCallback? errorCallback); +}; + +enum AudioContextLatencyCategory { + "balanced", + "interactive", + "playback" +}; + +enum AudioSinkType { + "none" +}; + +[Exposed=Window] +interface AudioContext : BaseAudioContext { + constructor (optional AudioContextOptions contextOptions = {}); + readonly attribute double baseLatency; + readonly attribute double outputLatency; + [SecureContext] readonly attribute (DOMString or AudioSinkInfo) sinkId; + attribute EventHandler onsinkchange; + attribute EventHandler onerror; + AudioTimestamp getOutputTimestamp (); + Promise resume (); + Promise suspend (); + Promise close (); + [SecureContext] Promise setSinkId ((DOMString or AudioSinkOptions) sinkId); + MediaElementAudioSourceNode createMediaElementSource (HTMLMediaElement mediaElement); + MediaStreamAudioSourceNode createMediaStreamSource (MediaStream mediaStream); + MediaStreamTrackAudioSourceNode createMediaStreamTrackSource ( + MediaStreamTrack mediaStreamTrack); + MediaStreamAudioDestinationNode createMediaStreamDestination (); +}; + +dictionary AudioContextOptions { + (AudioContextLatencyCategory or double) latencyHint = "interactive"; + float sampleRate; + (DOMString or AudioSinkOptions) sinkId; + (AudioContextRenderSizeCategory or unsigned long) renderSizeHint = "default"; +}; + +dictionary AudioSinkOptions { + required AudioSinkType type; +}; + +[Exposed=Window] +interface AudioSinkInfo { + readonly attribute AudioSinkType type; +}; + +dictionary AudioTimestamp { + double contextTime; + DOMHighResTimeStamp performanceTime; +}; + +[Exposed=Window] +interface OfflineAudioContext : BaseAudioContext { + constructor(OfflineAudioContextOptions contextOptions); + constructor(unsigned long numberOfChannels, unsigned long length, float sampleRate); + Promise startRendering(); + Promise resume(); + Promise suspend(double suspendTime); + readonly attribute unsigned long length; + attribute EventHandler oncomplete; +}; + +dictionary OfflineAudioContextOptions { + unsigned long numberOfChannels = 1; + required unsigned long length; + required float sampleRate; + (AudioContextRenderSizeCategory or unsigned long) renderSizeHint = "default"; +}; + +[Exposed=Window] +interface OfflineAudioCompletionEvent : Event { + constructor (DOMString type, OfflineAudioCompletionEventInit eventInitDict); + readonly attribute AudioBuffer renderedBuffer; +}; + +dictionary OfflineAudioCompletionEventInit : EventInit { + required AudioBuffer renderedBuffer; +}; + +[Exposed=Window] +interface AudioBuffer { + constructor (AudioBufferOptions options); + readonly attribute float sampleRate; + readonly attribute unsigned long length; + readonly attribute double duration; + readonly attribute unsigned long numberOfChannels; + Float32Array getChannelData (unsigned long channel); + undefined copyFromChannel (Float32Array destination, + unsigned long channelNumber, + optional unsigned long bufferOffset = 0); + undefined copyToChannel (Float32Array source, + unsigned long channelNumber, + optional unsigned long bufferOffset = 0); +}; + +dictionary AudioBufferOptions { + unsigned long numberOfChannels = 1; + required unsigned long length; + required float sampleRate; +}; + +[Exposed=Window] +interface AudioNode : EventTarget { + AudioNode connect (AudioNode destinationNode, + optional unsigned long output = 0, + optional unsigned long input = 0); + undefined connect (AudioParam destinationParam, optional unsigned long output = 0); + undefined disconnect (); + undefined disconnect (unsigned long output); + undefined disconnect (AudioNode destinationNode); + undefined disconnect (AudioNode destinationNode, unsigned long output); + undefined disconnect (AudioNode destinationNode, + unsigned long output, + unsigned long input); + undefined disconnect (AudioParam destinationParam); + undefined disconnect (AudioParam destinationParam, unsigned long output); + readonly attribute BaseAudioContext context; + readonly attribute unsigned long numberOfInputs; + readonly attribute unsigned long numberOfOutputs; + attribute unsigned long channelCount; + attribute ChannelCountMode channelCountMode; + attribute ChannelInterpretation channelInterpretation; +}; + +enum ChannelCountMode { + "max", + "clamped-max", + "explicit" +}; + +enum ChannelInterpretation { + "speakers", + "discrete" +}; + +dictionary AudioNodeOptions { + unsigned long channelCount; + ChannelCountMode channelCountMode; + ChannelInterpretation channelInterpretation; +}; + +enum AutomationRate { + "a-rate", + "k-rate" +}; + +[Exposed=Window] +interface AudioParam { + attribute float value; + attribute AutomationRate automationRate; + readonly attribute float defaultValue; + readonly attribute float minValue; + readonly attribute float maxValue; + AudioParam setValueAtTime (float value, double startTime); + AudioParam linearRampToValueAtTime (float value, double endTime); + AudioParam exponentialRampToValueAtTime (float value, double endTime); + AudioParam setTargetAtTime (float target, double startTime, float timeConstant); + AudioParam setValueCurveAtTime (sequence values, + double startTime, + double duration); + AudioParam cancelScheduledValues (double cancelTime); + AudioParam cancelAndHoldAtTime (double cancelTime); +}; + +[Exposed=Window] +interface AudioScheduledSourceNode : AudioNode { + attribute EventHandler onended; + undefined start(optional double when = 0); + undefined stop(optional double when = 0); +}; + +[Exposed=Window] +interface AnalyserNode : AudioNode { + constructor (BaseAudioContext context, optional AnalyserOptions options = {}); + undefined getFloatFrequencyData (Float32Array array); + undefined getByteFrequencyData (Uint8Array array); + undefined getFloatTimeDomainData (Float32Array array); + undefined getByteTimeDomainData (Uint8Array array); + attribute unsigned long fftSize; + readonly attribute unsigned long frequencyBinCount; + attribute double minDecibels; + attribute double maxDecibels; + attribute double smoothingTimeConstant; +}; + +dictionary AnalyserOptions : AudioNodeOptions { + unsigned long fftSize = 2048; + double maxDecibels = -30; + double minDecibels = -100; + double smoothingTimeConstant = 0.8; +}; + +[Exposed=Window] +interface AudioBufferSourceNode : AudioScheduledSourceNode { + constructor (BaseAudioContext context, + optional AudioBufferSourceOptions options = {}); + attribute AudioBuffer? buffer; + readonly attribute AudioParam playbackRate; + readonly attribute AudioParam detune; + attribute boolean loop; + attribute double loopStart; + attribute double loopEnd; + undefined start (optional double when = 0, + optional double offset, + optional double duration); +}; + +dictionary AudioBufferSourceOptions { + AudioBuffer? buffer; + float detune = 0; + boolean loop = false; + double loopEnd = 0; + double loopStart = 0; + float playbackRate = 1; +}; + +[Exposed=Window] +interface AudioDestinationNode : AudioNode { + readonly attribute unsigned long maxChannelCount; +}; + +[Exposed=Window] +interface AudioListener { + readonly attribute AudioParam positionX; + readonly attribute AudioParam positionY; + readonly attribute AudioParam positionZ; + readonly attribute AudioParam forwardX; + readonly attribute AudioParam forwardY; + readonly attribute AudioParam forwardZ; + readonly attribute AudioParam upX; + readonly attribute AudioParam upY; + readonly attribute AudioParam upZ; + undefined setPosition (float x, float y, float z); + undefined setOrientation (float x, float y, float z, float xUp, float yUp, float zUp); +}; + +[Exposed=Window] +interface AudioProcessingEvent : Event { + constructor (DOMString type, AudioProcessingEventInit eventInitDict); + readonly attribute double playbackTime; + readonly attribute AudioBuffer inputBuffer; + readonly attribute AudioBuffer outputBuffer; +}; + +dictionary AudioProcessingEventInit : EventInit { + required double playbackTime; + required AudioBuffer inputBuffer; + required AudioBuffer outputBuffer; +}; + +enum BiquadFilterType { + "lowpass", + "highpass", + "bandpass", + "lowshelf", + "highshelf", + "peaking", + "notch", + "allpass" +}; + +[Exposed=Window] +interface BiquadFilterNode : AudioNode { + constructor (BaseAudioContext context, optional BiquadFilterOptions options = {}); + attribute BiquadFilterType type; + readonly attribute AudioParam frequency; + readonly attribute AudioParam detune; + readonly attribute AudioParam Q; + readonly attribute AudioParam gain; + undefined getFrequencyResponse (Float32Array frequencyHz, + Float32Array magResponse, + Float32Array phaseResponse); +}; + +dictionary BiquadFilterOptions : AudioNodeOptions { + BiquadFilterType type = "lowpass"; + float Q = 1; + float detune = 0; + float frequency = 350; + float gain = 0; +}; + +[Exposed=Window] +interface ChannelMergerNode : AudioNode { + constructor (BaseAudioContext context, optional ChannelMergerOptions options = {}); +}; + +dictionary ChannelMergerOptions : AudioNodeOptions { + unsigned long numberOfInputs = 6; +}; + +[Exposed=Window] +interface ChannelSplitterNode : AudioNode { + constructor (BaseAudioContext context, optional ChannelSplitterOptions options = {}); +}; + +dictionary ChannelSplitterOptions : AudioNodeOptions { + unsigned long numberOfOutputs = 6; +}; + +[Exposed=Window] +interface ConstantSourceNode : AudioScheduledSourceNode { + constructor (BaseAudioContext context, optional ConstantSourceOptions options = {}); + readonly attribute AudioParam offset; +}; + +dictionary ConstantSourceOptions { + float offset = 1; +}; + +[Exposed=Window] +interface ConvolverNode : AudioNode { + constructor (BaseAudioContext context, optional ConvolverOptions options = {}); + attribute AudioBuffer? buffer; + attribute boolean normalize; +}; + +dictionary ConvolverOptions : AudioNodeOptions { + AudioBuffer? buffer; + boolean disableNormalization = false; +}; + +[Exposed=Window] +interface DelayNode : AudioNode { + constructor (BaseAudioContext context, optional DelayOptions options = {}); + readonly attribute AudioParam delayTime; +}; + +dictionary DelayOptions : AudioNodeOptions { + double maxDelayTime = 1; + double delayTime = 0; +}; + +[Exposed=Window] +interface DynamicsCompressorNode : AudioNode { + constructor (BaseAudioContext context, + optional DynamicsCompressorOptions options = {}); + readonly attribute AudioParam threshold; + readonly attribute AudioParam knee; + readonly attribute AudioParam ratio; + readonly attribute float reduction; + readonly attribute AudioParam attack; + readonly attribute AudioParam release; +}; + +dictionary DynamicsCompressorOptions : AudioNodeOptions { + float attack = 0.003; + float knee = 30; + float ratio = 12; + float release = 0.25; + float threshold = -24; +}; + +[Exposed=Window] +interface GainNode : AudioNode { + constructor (BaseAudioContext context, optional GainOptions options = {}); + readonly attribute AudioParam gain; +}; + +dictionary GainOptions : AudioNodeOptions { + float gain = 1.0; +}; + +[Exposed=Window] +interface IIRFilterNode : AudioNode { + constructor (BaseAudioContext context, IIRFilterOptions options); + undefined getFrequencyResponse (Float32Array frequencyHz, + Float32Array magResponse, + Float32Array phaseResponse); +}; + +dictionary IIRFilterOptions : AudioNodeOptions { + required sequence feedforward; + required sequence feedback; +}; + +[Exposed=Window] +interface MediaElementAudioSourceNode : AudioNode { + constructor (AudioContext context, MediaElementAudioSourceOptions options); + [SameObject] readonly attribute HTMLMediaElement mediaElement; +}; + +dictionary MediaElementAudioSourceOptions { + required HTMLMediaElement mediaElement; +}; + +[Exposed=Window] +interface MediaStreamAudioDestinationNode : AudioNode { + constructor (AudioContext context, optional AudioNodeOptions options = {}); + readonly attribute MediaStream stream; +}; + +[Exposed=Window] +interface MediaStreamAudioSourceNode : AudioNode { + constructor (AudioContext context, MediaStreamAudioSourceOptions options); + [SameObject] readonly attribute MediaStream mediaStream; +}; + +dictionary MediaStreamAudioSourceOptions { + required MediaStream mediaStream; +}; + +[Exposed=Window] +interface MediaStreamTrackAudioSourceNode : AudioNode { + constructor (AudioContext context, MediaStreamTrackAudioSourceOptions options); +}; + +dictionary MediaStreamTrackAudioSourceOptions { + required MediaStreamTrack mediaStreamTrack; +}; + +enum OscillatorType { + "sine", + "square", + "sawtooth", + "triangle", + "custom" +}; + +[Exposed=Window] +interface OscillatorNode : AudioScheduledSourceNode { + constructor (BaseAudioContext context, optional OscillatorOptions options = {}); + attribute OscillatorType type; + readonly attribute AudioParam frequency; + readonly attribute AudioParam detune; + undefined setPeriodicWave (PeriodicWave periodicWave); +}; + +dictionary OscillatorOptions : AudioNodeOptions { + OscillatorType type = "sine"; + float frequency = 440; + float detune = 0; + PeriodicWave periodicWave; +}; + +enum PanningModelType { + "equalpower", + "HRTF" +}; + +enum DistanceModelType { + "linear", + "inverse", + "exponential" +}; + +[Exposed=Window] +interface PannerNode : AudioNode { + constructor (BaseAudioContext context, optional PannerOptions options = {}); + attribute PanningModelType panningModel; + readonly attribute AudioParam positionX; + readonly attribute AudioParam positionY; + readonly attribute AudioParam positionZ; + readonly attribute AudioParam orientationX; + readonly attribute AudioParam orientationY; + readonly attribute AudioParam orientationZ; + attribute DistanceModelType distanceModel; + attribute double refDistance; + attribute double maxDistance; + attribute double rolloffFactor; + attribute double coneInnerAngle; + attribute double coneOuterAngle; + attribute double coneOuterGain; + undefined setPosition (float x, float y, float z); + undefined setOrientation (float x, float y, float z); +}; + +dictionary PannerOptions : AudioNodeOptions { + PanningModelType panningModel = "equalpower"; + DistanceModelType distanceModel = "inverse"; + float positionX = 0; + float positionY = 0; + float positionZ = 0; + float orientationX = 1; + float orientationY = 0; + float orientationZ = 0; + double refDistance = 1; + double maxDistance = 10000; + double rolloffFactor = 1; + double coneInnerAngle = 360; + double coneOuterAngle = 360; + double coneOuterGain = 0; +}; + +[Exposed=Window] +interface PeriodicWave { + constructor (BaseAudioContext context, optional PeriodicWaveOptions options = {}); +}; + +dictionary PeriodicWaveConstraints { + boolean disableNormalization = false; +}; + +dictionary PeriodicWaveOptions : PeriodicWaveConstraints { + sequence real; + sequence imag; +}; + +[Exposed=Window] +interface ScriptProcessorNode : AudioNode { + attribute EventHandler onaudioprocess; + readonly attribute long bufferSize; +}; + +[Exposed=Window] +interface StereoPannerNode : AudioNode { + constructor (BaseAudioContext context, optional StereoPannerOptions options = {}); + readonly attribute AudioParam pan; +}; + +dictionary StereoPannerOptions : AudioNodeOptions { + float pan = 0; +}; + +enum OverSampleType { + "none", + "2x", + "4x" +}; + +[Exposed=Window] +interface WaveShaperNode : AudioNode { + constructor (BaseAudioContext context, optional WaveShaperOptions options = {}); + attribute Float32Array? curve; + attribute OverSampleType oversample; +}; + +dictionary WaveShaperOptions : AudioNodeOptions { + sequence curve; + OverSampleType oversample = "none"; +}; + +[Exposed=Window, SecureContext] +interface AudioWorklet : Worklet { + readonly attribute MessagePort port; +}; + +callback AudioWorkletProcessorConstructor = AudioWorkletProcessor (object options); + +[Global=(Worklet, AudioWorklet), Exposed=AudioWorklet] +interface AudioWorkletGlobalScope : WorkletGlobalScope { + undefined registerProcessor (DOMString name, + AudioWorkletProcessorConstructor processorCtor); + readonly attribute unsigned long long currentFrame; + readonly attribute double currentTime; + readonly attribute float sampleRate; + readonly attribute unsigned long renderQuantumSize; + readonly attribute MessagePort port; +}; + +[Exposed=Window] +interface AudioParamMap { + readonly maplike; +}; + +[Exposed=Window, SecureContext] +interface AudioWorkletNode : AudioNode { + constructor (BaseAudioContext context, DOMString name, + optional AudioWorkletNodeOptions options = {}); + readonly attribute AudioParamMap parameters; + readonly attribute MessagePort port; + attribute EventHandler onprocessorerror; +}; + +dictionary AudioWorkletNodeOptions : AudioNodeOptions { + unsigned long numberOfInputs = 1; + unsigned long numberOfOutputs = 1; + sequence outputChannelCount; + record parameterData; + object processorOptions; +}; + +[Exposed=AudioWorklet] +interface AudioWorkletProcessor { + constructor (); + readonly attribute MessagePort port; +}; + +callback AudioWorkletProcessCallback = + boolean (FrozenArray> inputs, + FrozenArray> outputs, + object parameters); + +dictionary AudioParamDescriptor { + required DOMString name; + float defaultValue = 0; + float minValue = -3.4028235e38; + float maxValue = 3.4028235e38; + AutomationRate automationRate = "a-rate"; +}; diff --git a/Tests/LibWeb/Text/input/wpt-import/webaudio/idlharness.https.window.html b/Tests/LibWeb/Text/input/wpt-import/webaudio/idlharness.https.window.html new file mode 100644 index 00000000000..c24903851f4 --- /dev/null +++ b/Tests/LibWeb/Text/input/wpt-import/webaudio/idlharness.https.window.html @@ -0,0 +1,9 @@ + + + + + + + +
+ diff --git a/Tests/LibWeb/Text/input/wpt-import/webaudio/idlharness.https.window.js b/Tests/LibWeb/Text/input/wpt-import/webaudio/idlharness.https.window.js new file mode 100644 index 00000000000..e941a75c267 --- /dev/null +++ b/Tests/LibWeb/Text/input/wpt-import/webaudio/idlharness.https.window.js @@ -0,0 +1,72 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js +// META: timeout=long + +// https://webaudio.github.io/web-audio-api/ + +'use strict'; + +idl_test( + ['webaudio'], + ['cssom', 'uievents', 'mediacapture-streams', 'html', 'dom'], + async idl_array => { + idl_array.add_untested_idls('interface SVGElement {};'); + + idl_array.add_objects({ + BaseAudioContext: [], + AudioContext: ['context'], + OfflineAudioContext: ['new OfflineAudioContext(1, 1, sample_rate)'], + OfflineAudioCompletionEvent: [ + 'new OfflineAudioCompletionEvent("", {renderedBuffer: buffer})' + ], + AudioBuffer: ['buffer'], + AudioNode: [], + AudioParam: ['new AudioBufferSourceNode(context).playbackRate'], + AudioScheduledSourceNode: [], + AnalyserNode: ['new AnalyserNode(context)'], + AudioBufferSourceNode: ['new AudioBufferSourceNode(context)'], + AudioDestinationNode: ['context.destination'], + AudioListener: ['context.listener'], + AudioProcessingEvent: [`new AudioProcessingEvent('', { + playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer + })`], + BiquadFilterNode: ['new BiquadFilterNode(context)'], + ChannelMergerNode: ['new ChannelMergerNode(context)'], + ChannelSplitterNode: ['new ChannelSplitterNode(context)'], + ConstantSourceNode: ['new ConstantSourceNode(context)'], + ConvolverNode: ['new ConvolverNode(context)'], + DelayNode: ['new DelayNode(context)'], + DynamicsCompressorNode: ['new DynamicsCompressorNode(context)'], + GainNode: ['new GainNode(context)'], + IIRFilterNode: [ + 'new IIRFilterNode(context, {feedforward: [1], feedback: [1]})' + ], + MediaElementAudioSourceNode: [ + 'new MediaElementAudioSourceNode(context, {mediaElement: new Audio})' + ], + MediaStreamAudioDestinationNode: [ + 'new MediaStreamAudioDestinationNode(context)' + ], + MediaStreamAudioSourceNode: [], + MediaStreamTrackAudioSourceNode: [], + OscillatorNode: ['new OscillatorNode(context)'], + PannerNode: ['new PannerNode(context)'], + PeriodicWave: ['new PeriodicWave(context)'], + ScriptProcessorNode: ['context.createScriptProcessor()'], + StereoPannerNode: ['new StereoPannerNode(context)'], + WaveShaperNode: ['new WaveShaperNode(context)'], + AudioWorklet: ['context.audioWorklet'], + AudioWorkletGlobalScope: [], + AudioParamMap: ['worklet_node.parameters'], + AudioWorkletNode: ['worklet_node'], + AudioWorkletProcessor: [], + }); + + self.sample_rate = 44100; + self.context = new AudioContext; + self.buffer = new AudioBuffer({length: 1, sampleRate: sample_rate}); + await context.audioWorklet.addModule( + 'the-audio-api/the-audioworklet-interface/processors/dummy-processor.js'); + self.worklet_node = new AudioWorkletNode(context, 'dummy'); + } +);