From af5b1c4011c2658fe554b32f1816083da88cd51e Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Tue, 4 Sep 2018 11:11:27 +0530 Subject: [PATCH] Add createChannelMerger() --- components/script/dom/baseaudiocontext.rs | 8 ++++++++ .../script/dom/webidls/BaseAudioContext.webidl | 2 +- .../webaudio/idlharness.https.window.js.ini | 15 --------------- .../audiochannelmerger-basic.html.ini | 1 - .../audiochannelmerger-input-non-default.html.ini | 2 -- .../audiochannelmerger-input.html.ini | 2 -- .../iirfilter.html.ini | 2 +- 7 files changed, 10 insertions(+), 22 deletions(-) delete mode 100644 tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-input-non-default.html.ini delete mode 100644 tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-input.html.ini diff --git a/components/script/dom/baseaudiocontext.rs b/components/script/dom/baseaudiocontext.rs index 15316e1b89d..8cd9afa00ce 100644 --- a/components/script/dom/baseaudiocontext.rs +++ b/components/script/dom/baseaudiocontext.rs @@ -16,6 +16,7 @@ use dom::bindings::codegen::Bindings::BaseAudioContextBinding::AudioContextState use dom::bindings::codegen::Bindings::BaseAudioContextBinding::BaseAudioContextMethods; use dom::bindings::codegen::Bindings::BaseAudioContextBinding::DecodeErrorCallback; use dom::bindings::codegen::Bindings::BaseAudioContextBinding::DecodeSuccessCallback; +use dom::bindings::codegen::Bindings::ChannelMergerNodeBinding::ChannelMergerOptions; use dom::bindings::codegen::Bindings::GainNodeBinding::GainOptions; use dom::bindings::codegen::Bindings::OscillatorNodeBinding::OscillatorOptions; use dom::bindings::codegen::Bindings::PannerNodeBinding::PannerOptions; @@ -25,6 +26,7 @@ use dom::bindings::num::Finite; use dom::bindings::refcounted::Trusted; use dom::bindings::reflector::DomObject; use dom::bindings::root::{DomRoot, MutNullableDom}; +use dom::channelmergernode::ChannelMergerNode; use dom::domexception::{DOMErrorName, DOMException}; use dom::eventtarget::EventTarget; use dom::gainnode::GainNode; @@ -335,6 +337,12 @@ impl BaseAudioContextMethods for BaseAudioContext { PannerNode::new(&self.global().as_window(), &self, &PannerOptions::empty()) } + /// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createchannelmerger + fn CreateChannelMerger(&self, count: u32) -> Fallible> { + let mut opts = ChannelMergerOptions::empty(); + opts.numberOfInputs = count; + ChannelMergerNode::new(&self.global().as_window(), &self, &opts) + } /// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createbuffer fn CreateBuffer( diff --git a/components/script/dom/webidls/BaseAudioContext.webidl b/components/script/dom/webidls/BaseAudioContext.webidl index 14dd4bb6d5e..f8b85007a64 100644 --- a/components/script/dom/webidls/BaseAudioContext.webidl +++ b/components/script/dom/webidls/BaseAudioContext.webidl @@ -46,7 +46,7 @@ interface BaseAudioContext : EventTarget { // StereoPannerNode createStereoPanner(); // ConvolverNode createConvolver(); // ChannelSplitterNode createChannelSplitter(optional unsigned long numberOfOutputs = 6); - // ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs = 6); + [Throws] ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs = 6); // DynamicsCompressorNode createDynamicsCompressor(); [Throws] OscillatorNode createOscillator(); // PeriodicWave createPeriodicWave(sequence real, diff --git a/tests/wpt/metadata/webaudio/idlharness.https.window.js.ini b/tests/wpt/metadata/webaudio/idlharness.https.window.js.ini index 58938c128d8..4114b54f0a6 100644 --- a/tests/wpt/metadata/webaudio/idlharness.https.window.js.ini +++ b/tests/wpt/metadata/webaudio/idlharness.https.window.js.ini @@ -14,9 +14,6 @@ [BaseAudioContext interface: operation createBiquadFilter()] expected: FAIL - [BaseAudioContext interface: operation createChannelMerger(unsigned long)] - expected: FAIL - [BaseAudioContext interface: operation createChannelSplitter(unsigned long)] expected: FAIL @@ -101,12 +98,6 @@ [BaseAudioContext interface: context must inherit property "createBiquadFilter()" with the proper type] expected: FAIL - [BaseAudioContext interface: context must inherit property "createChannelMerger(unsigned long)" with the proper type] - expected: FAIL - - [BaseAudioContext interface: calling createChannelMerger(unsigned long) on context with too few arguments must throw TypeError] - expected: FAIL - [BaseAudioContext interface: context must inherit property "createChannelSplitter(unsigned long)" with the proper type] expected: FAIL @@ -176,12 +167,6 @@ [BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createBiquadFilter()" with the proper type] expected: FAIL - [BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createChannelMerger(unsigned long)" with the proper type] - expected: FAIL - - [BaseAudioContext interface: calling createChannelMerger(unsigned long) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError] - expected: FAIL - [BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createChannelSplitter(unsigned long)" with the proper type] expected: FAIL diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-basic.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-basic.html.ini index 48cab18a7da..548315c2d1b 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-basic.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-basic.html.ini @@ -1,5 +1,4 @@ [audiochannelmerger-basic.html] - expected: ERROR [< [exceptions-channels\] 4 out of 4 assertions were failed.] expected: FAIL diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-input-non-default.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-input-non-default.html.ini deleted file mode 100644 index 307a5731949..00000000000 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-input-non-default.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[audiochannelmerger-input-non-default.html] - expected: ERROR diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-input.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-input.html.ini deleted file mode 100644 index 4c0f0dd12a1..00000000000 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-input.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[audiochannelmerger-input.html] - expected: ERROR diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter.html.ini index 4aac1bfcd15..76179331f58 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter.html.ini @@ -1,5 +1,5 @@ [iirfilter.html] - expected: ERROR + expected: CRASH [X createIIRFilter with normalized coefficients incorrectly threw TypeError: "context.createIIRFilter is not a function".] expected: FAIL