diff options
12 files changed, 173 insertions, 109 deletions
diff --git a/components/script/dom/audionode.rs b/components/script/dom/audionode.rs index 48751dabeac..64aa46f008e 100644 --- a/components/script/dom/audionode.rs +++ b/components/script/dom/audionode.rs @@ -10,7 +10,9 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ ChannelCountMode, ChannelInterpretation, }; -use crate::dom::bindings::codegen::InheritTypes::{AudioNodeTypeId, EventTargetTypeId}; +use crate::dom::bindings::codegen::InheritTypes::{ + AudioNodeTypeId, AudioScheduledSourceNodeTypeId, EventTargetTypeId, +}; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::root::{Dom, DomRoot}; @@ -236,6 +238,13 @@ impl AudioNodeMethods for AudioNode { return Err(Error::NotSupported); } }, + EventTargetTypeId::AudioNode(AudioNodeTypeId::AudioScheduledSourceNode( + AudioScheduledSourceNodeTypeId::StereoPannerNode, + )) => { + if value > 2 { + return Err(Error::NotSupported); + } + }, EventTargetTypeId::AudioNode(AudioNodeTypeId::ChannelMergerNode) => { return Err(Error::InvalidState); }, @@ -280,6 +289,13 @@ impl AudioNodeMethods for AudioNode { return Err(Error::NotSupported); } }, + EventTargetTypeId::AudioNode(AudioNodeTypeId::AudioScheduledSourceNode( + AudioScheduledSourceNodeTypeId::StereoPannerNode, + )) => { + if value == ChannelCountMode::Max { + return Err(Error::NotSupported); + } + }, EventTargetTypeId::AudioNode(AudioNodeTypeId::ChannelMergerNode) => { return Err(Error::InvalidState); }, diff --git a/components/script/dom/baseaudiocontext.rs b/components/script/dom/baseaudiocontext.rs index 1d69532c8b1..28096a9c287 100644 --- a/components/script/dom/baseaudiocontext.rs +++ b/components/script/dom/baseaudiocontext.rs @@ -27,6 +27,7 @@ use crate::dom::bindings::codegen::Bindings::ChannelSplitterNodeBinding::Channel use crate::dom::bindings::codegen::Bindings::GainNodeBinding::GainOptions; use crate::dom::bindings::codegen::Bindings::OscillatorNodeBinding::OscillatorOptions; use crate::dom::bindings::codegen::Bindings::PannerNodeBinding::PannerOptions; +use crate::dom::bindings::codegen::Bindings::StereoPannerNodeBinding::StereoPannerOptions; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; @@ -42,6 +43,7 @@ use crate::dom::gainnode::GainNode; use crate::dom::oscillatornode::OscillatorNode; use crate::dom::pannernode::PannerNode; use crate::dom::promise::Promise; +use crate::dom::stereopannernode::StereoPannerNode; use crate::dom::window::Window; use crate::task_source::TaskSource; use dom_struct::dom_struct; @@ -361,6 +363,15 @@ impl BaseAudioContextMethods for BaseAudioContext { ) } + /// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createstereopanner + fn CreateStereoPanner(&self) -> Fallible<DomRoot<StereoPannerNode>> { + StereoPannerNode::new( + &self.global().as_window(), + &self, + &StereoPannerOptions::empty(), + ) + } + /// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createchannelmerger fn CreateChannelMerger(&self, count: u32) -> Fallible<DomRoot<ChannelMergerNode>> { let mut opts = ChannelMergerOptions::empty(); diff --git a/components/script/dom/mod.rs b/components/script/dom/mod.rs index 776d20299c1..ff1688fb6c3 100644 --- a/components/script/dom/mod.rs +++ b/components/script/dom/mod.rs @@ -457,6 +457,7 @@ pub mod serviceworkerglobalscope; pub mod serviceworkerregistration; pub mod servoparser; pub mod shadowroot; +pub mod stereopannernode; pub mod storage; pub mod storageevent; pub mod stylepropertymapreadonly; diff --git a/components/script/dom/stereopannernode.rs b/components/script/dom/stereopannernode.rs new file mode 100644 index 00000000000..3d57993889d --- /dev/null +++ b/components/script/dom/stereopannernode.rs @@ -0,0 +1,106 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ + +use crate::dom::audioparam::AudioParam; +use crate::dom::audioscheduledsourcenode::AudioScheduledSourceNode; +use crate::dom::baseaudiocontext::BaseAudioContext; +use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ + ChannelCountMode, ChannelInterpretation, +}; +use crate::dom::bindings::codegen::Bindings::AudioParamBinding::AutomationRate; +use crate::dom::bindings::codegen::Bindings::StereoPannerNodeBinding::StereoPannerNodeMethods; +use crate::dom::bindings::codegen::Bindings::StereoPannerNodeBinding::{self, StereoPannerOptions}; +use crate::dom::bindings::error::{Error, Fallible}; +use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::root::{Dom, DomRoot}; +use crate::dom::window::Window; +use dom_struct::dom_struct; +use servo_media::audio::node::AudioNodeInit; +use servo_media::audio::param::ParamType; +use servo_media::audio::stereo_panner::StereoPannerOptions as ServoMediaStereoPannerOptions; + +#[dom_struct] +pub struct StereoPannerNode { + source_node: AudioScheduledSourceNode, + pan: Dom<AudioParam>, +} + +impl StereoPannerNode { + #[allow(unrooted_must_root)] + pub fn new_inherited( + window: &Window, + context: &BaseAudioContext, + options: &StereoPannerOptions, + ) -> Fallible<StereoPannerNode> { + let node_options = options.parent.unwrap_or( + 2, + ChannelCountMode::Clamped_max, + ChannelInterpretation::Speakers, + ); + if node_options.mode == ChannelCountMode::Max { + return Err(Error::NotSupported); + } + if node_options.count > 2 || node_options.count == 0 { + return Err(Error::NotSupported); + } + let source_node = AudioScheduledSourceNode::new_inherited( + AudioNodeInit::StereoPannerNode(options.into()), + context, + node_options, + 1, /* inputs */ + 1, /* outputs */ + )?; + let node_id = source_node.node().node_id(); + let pan = AudioParam::new( + window, + context, + node_id, + ParamType::Pan, + AutomationRate::A_rate, + *options.pan, + -1., + 1., + ); + + Ok(StereoPannerNode { + source_node, + pan: Dom::from_ref(&pan), + }) + } + + #[allow(unrooted_must_root)] + pub fn new( + window: &Window, + context: &BaseAudioContext, + options: &StereoPannerOptions, + ) -> Fallible<DomRoot<StereoPannerNode>> { + let node = StereoPannerNode::new_inherited(window, context, options)?; + Ok(reflect_dom_object( + Box::new(node), + window, + StereoPannerNodeBinding::Wrap, + )) + } + + pub fn Constructor( + window: &Window, + context: &BaseAudioContext, + options: &StereoPannerOptions, + ) -> Fallible<DomRoot<StereoPannerNode>> { + StereoPannerNode::new(window, context, options) + } +} + +impl StereoPannerNodeMethods for StereoPannerNode { + // https://webaudio.github.io/web-audio-api/#dom-stereopannernode-pan + fn Pan(&self) -> DomRoot<AudioParam> { + DomRoot::from_ref(&self.pan) + } +} + +impl<'a> From<&'a StereoPannerOptions> for ServoMediaStereoPannerOptions { + fn from(options: &'a StereoPannerOptions) -> Self { + Self { pan: *options.pan } + } +} diff --git a/components/script/dom/webidls/BaseAudioContext.webidl b/components/script/dom/webidls/BaseAudioContext.webidl index 0f645177d31..ee2cbc7c2d3 100644 --- a/components/script/dom/webidls/BaseAudioContext.webidl +++ b/components/script/dom/webidls/BaseAudioContext.webidl @@ -43,7 +43,7 @@ interface BaseAudioContext : EventTarget { // sequence<double> feedback); // WaveShaperNode createWaveShaper(); [Throws] PannerNode createPanner(); - // StereoPannerNode createStereoPanner(); + [Throws] StereoPannerNode createStereoPanner(); // ConvolverNode createConvolver(); [Throws] ChannelSplitterNode createChannelSplitter(optional unsigned long numberOfOutputs = 6); [Throws] ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs = 6); diff --git a/components/script/dom/webidls/StereoPannerNode.webidl b/components/script/dom/webidls/StereoPannerNode.webidl new file mode 100644 index 00000000000..69b58a408c1 --- /dev/null +++ b/components/script/dom/webidls/StereoPannerNode.webidl @@ -0,0 +1,17 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ +/* + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/#StereoPannerNode + */ + +dictionary StereoPannerOptions: AudioNodeOptions { + float pan = 0; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional StereoPannerOptions options)] +interface StereoPannerNode : AudioScheduledSourceNode { + readonly attribute AudioParam pan; +}; diff --git a/tests/wpt/metadata/webaudio/idlharness.https.window.js.ini b/tests/wpt/metadata/webaudio/idlharness.https.window.js.ini index 80142d5c661..19c39cdb633 100644 --- a/tests/wpt/metadata/webaudio/idlharness.https.window.js.ini +++ b/tests/wpt/metadata/webaudio/idlharness.https.window.js.ini @@ -2,9 +2,6 @@ [AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError] expected: FAIL - [StereoPannerNode interface: attribute pan] - expected: FAIL - [AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioParam)" with the proper type] expected: FAIL @@ -80,9 +77,6 @@ [AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type] - expected: FAIL - [AudioNode interface: new ConstantSourceNode(context) must inherit property "numberOfInputs" with the proper type] expected: FAIL @@ -113,9 +107,6 @@ [ConstantSourceNode interface object length] expected: FAIL - [Stringification of new StereoPannerNode(context)] - expected: FAIL - [AudioContext interface: operation close()] expected: FAIL @@ -194,18 +185,12 @@ [AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(unsigned long)" with the proper type] expected: FAIL - [AudioNode interface: calling disconnect(AudioNode) on new StereoPannerNode(context) with too few arguments must throw TypeError] - expected: FAIL - [Stringification of worklet_node] expected: FAIL [AudioNode interface: context.createScriptProcessor() must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type] expected: FAIL - [StereoPannerNode interface: new StereoPannerNode(context) must inherit property "pan" with the proper type] - expected: FAIL - [MediaStreamAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property] expected: FAIL @@ -215,9 +200,6 @@ [AudioNode interface: new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) must inherit property "disconnect()" with the proper type] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioParam)" with the proper type] - expected: FAIL - [BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createDelay(double)" with the proper type] expected: FAIL @@ -248,18 +230,12 @@ [AudioNode interface: calling disconnect(AudioNode, unsigned long) on new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) with too few arguments must throw TypeError] expected: FAIL - [BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createStereoPanner()" with the proper type] - expected: FAIL - [ScriptProcessorNode interface: existence and properties of interface prototype object] expected: FAIL [AudioContext interface: calling createMediaElementSource(HTMLMediaElement) on context with too few arguments must throw TypeError] expected: FAIL - [AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError] - expected: FAIL - [AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError] expected: FAIL @@ -299,9 +275,6 @@ [AudioNode interface: calling connect(AudioParam, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioNode)" with the proper type] - expected: FAIL - [AudioNode interface: new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type] expected: FAIL @@ -377,9 +350,6 @@ [AudioNode interface: calling disconnect(AudioParam) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "numberOfOutputs" with the proper type] - expected: FAIL - [AudioWorklet interface object name] expected: FAIL @@ -416,9 +386,6 @@ [AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect()" with the proper type] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type] - expected: FAIL - [MediaStreamAudioSourceNode interface: existence and properties of interface prototype object's "constructor" property] expected: FAIL @@ -464,18 +431,12 @@ [PeriodicWave interface: existence and properties of interface object] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "context" with the proper type] - expected: FAIL - [AudioNode interface: new ConstantSourceNode(context) must inherit property "context" with the proper type] expected: FAIL [AudioNode interface: calling disconnect(AudioParam) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "channelCountMode" with the proper type] - expected: FAIL - [AudioNode interface: calling disconnect(AudioNode) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError] expected: FAIL @@ -494,15 +455,9 @@ [AudioNode interface: calling disconnect(AudioParam) on new ConstantSourceNode(context) with too few arguments must throw TypeError] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "channelInterpretation" with the proper type] - expected: FAIL - [AudioProcessingEvent interface: attribute inputBuffer] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type] - expected: FAIL - [AudioParamMap interface object length] expected: FAIL @@ -518,9 +473,6 @@ [BaseAudioContext interface: attribute audioWorklet] expected: FAIL - [AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError] - expected: FAIL - [BaseAudioContext interface: operation createWaveShaper()] expected: FAIL @@ -539,9 +491,6 @@ [AudioNode interface: new ConvolverNode(context) must inherit property "disconnect()" with the proper type] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect()" with the proper type] - expected: FAIL - [Stringification of new PeriodicWave(context)] expected: FAIL @@ -734,9 +683,6 @@ [MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object's "constructor" property] expected: FAIL - [StereoPannerNode interface object name] - expected: FAIL - [AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "channelInterpretation" with the proper type] expected: FAIL @@ -848,9 +794,6 @@ [AudioNode interface: new WaveShaperNode(context) must inherit property "channelCount" with the proper type] expected: FAIL - [StereoPannerNode interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - [DynamicsCompressorNode interface: attribute release] expected: FAIL @@ -881,9 +824,6 @@ [AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(unsigned long)" with the proper type] - expected: FAIL - [AudioNode interface: calling disconnect(AudioParam, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError] expected: FAIL @@ -893,12 +833,6 @@ [AudioProcessingEvent interface: attribute playbackTime] expected: FAIL - [AudioNode interface: calling connect(AudioParam, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError] - expected: FAIL - - [AudioNode interface: calling disconnect(unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError] - expected: FAIL - [BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createConvolver()" with the proper type] expected: FAIL @@ -929,9 +863,6 @@ [AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioParam)" with the proper type] expected: FAIL - [AudioNode interface: calling disconnect(AudioParam, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError] - expected: FAIL - [OfflineAudioContext interface: calling suspend(double) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError] expected: FAIL @@ -947,9 +878,6 @@ [AudioNode interface: calling disconnect(AudioNode, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type] - expected: FAIL - [MediaElementAudioSourceNode must be primary interface of new MediaElementAudioSourceNode(context, {mediaElement: new Audio})] expected: FAIL @@ -1025,9 +953,6 @@ [OscillatorNode interface: calling setPeriodicWave(PeriodicWave) on new OscillatorNode(context) with too few arguments must throw TypeError] expected: FAIL - [BaseAudioContext interface: context must inherit property "createStereoPanner()" with the proper type] - expected: FAIL - [MediaElementAudioSourceNode interface: existence and properties of interface prototype object's "constructor" property] expected: FAIL @@ -1073,18 +998,12 @@ [AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioParam)" with the proper type] expected: FAIL - [StereoPannerNode must be primary interface of new StereoPannerNode(context)] - expected: FAIL - [AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "numberOfOutputs" with the proper type] expected: FAIL [DynamicsCompressorNode interface: attribute attack] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "numberOfInputs" with the proper type] - expected: FAIL - [AudioContext interface: calling createMediaStreamTrackSource(MediaStreamTrack) on context with too few arguments must throw TypeError] expected: FAIL @@ -1103,9 +1022,6 @@ [AudioNode interface: calling disconnect(AudioParam) on new WaveShaperNode(context) with too few arguments must throw TypeError] expected: FAIL - [StereoPannerNode interface object length] - expected: FAIL - [AudioContext interface: operation createMediaStreamDestination()] expected: FAIL @@ -1142,9 +1058,6 @@ [AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioParam)" with the proper type] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type] - expected: FAIL - [AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "channelInterpretation" with the proper type] expected: FAIL @@ -1319,9 +1232,6 @@ [IIRFilterNode interface: existence and properties of interface prototype object's @@unscopables property] expected: FAIL - [AudioNode interface: calling disconnect(AudioParam) on new StereoPannerNode(context) with too few arguments must throw TypeError] - expected: FAIL - [AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type] expected: FAIL @@ -1343,12 +1253,6 @@ [Stringification of new DynamicsCompressorNode(context)] expected: FAIL - [StereoPannerNode interface: existence and properties of interface prototype object's @@unscopables property] - expected: FAIL - - [AudioNode interface: calling disconnect(AudioNode, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError] - expected: FAIL - [BaseAudioContext interface: context must inherit property "createWaveShaper()" with the proper type] expected: FAIL @@ -1358,9 +1262,6 @@ [AudioNode interface: new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) must inherit property "channelInterpretation" with the proper type] expected: FAIL - [BaseAudioContext interface: operation createStereoPanner()] - expected: FAIL - [AudioWorkletNode interface object length] expected: FAIL @@ -1373,9 +1274,6 @@ [BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createWaveShaper()" with the proper type] expected: FAIL - [AudioNode interface: new StereoPannerNode(context) must inherit property "channelCount" with the proper type] - expected: FAIL - [AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type] expected: FAIL diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html.ini index 55a222696ce..8207c1c62b6 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html.ini @@ -1,5 +1,4 @@ [ctor-stereopanner.html] - expected: ERROR [X node0 = new StereoPannerNode(context) incorrectly threw TypeError: "window[name\] is not a constructor".] expected: FAIL diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/stereopannernode-basic.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/stereopannernode-basic.html.ini deleted file mode 100644 index 5c2eca1884f..00000000000 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/stereopannernode-basic.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[stereopannernode-basic.html] - expected: ERROR diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/stereopannernode-panning.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/stereopannernode-panning.html.ini index 318073e0211..971813d46d1 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/stereopannernode-panning.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/stereopannernode-panning.html.ini @@ -1,2 +1,19 @@ [stereopannernode-panning.html] - expected: ERROR + [# AUDIT TASK RUNNER FINISHED: 2 out of 2 tasks were failed.] + expected: FAIL + + [< [mono-test\] 1 out of 4 assertions were failed.] + expected: FAIL + + [< [stereo-test\] 2 out of 4 assertions were failed.] + expected: FAIL + + [X Stereo: Right channel error magnitude is not less than or equal to 9.8015e-8. Got 1.0266453775997775e-7.] + expected: FAIL + + [X Mono: Left channel error magnitude is not less than or equal to 9.8015e-8. Got 1.3439545697158106e-7.] + expected: FAIL + + [X Stereo: Left channel error magnitude is not less than or equal to 9.8015e-8. Got 1.4099019063351648e-7.] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index 662740e9f0b..f12353058f9 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -20306,7 +20306,7 @@ "testharness" ], "mozilla/interfaces.html": [ - "c7e1929c626007e2ef3cdf9f2276620aa995c5b7", + "2effd46f565c4787e8632f5e898e1b43d457672f", "testharness" ], "mozilla/interfaces.js": [ diff --git a/tests/wpt/mozilla/tests/mozilla/interfaces.html b/tests/wpt/mozilla/tests/mozilla/interfaces.html index c7e1929c626..2effd46f565 100644 --- a/tests/wpt/mozilla/tests/mozilla/interfaces.html +++ b/tests/wpt/mozilla/tests/mozilla/interfaces.html @@ -203,6 +203,7 @@ test_interfaces([ "Response", "Screen", "ShadowRoot", + "StereoPannerNode", "Storage", "StorageEvent", "StyleSheet", |