aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/audionode.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2018-09-04 02:38:08 -0400
committerGitHub <noreply@github.com>2018-09-04 02:38:08 -0400
commit81f6ac8f9298c437389a875b12b2de162510d1ef (patch)
tree00868a2309ecce4fb7a0d0fe4483f431dd335b4f /components/script/dom/audionode.rs
parent75c0bdaf1b3a26ee8ae50d4cf3fb6b7546d3ccb8 (diff)
parentaf5b1c4011c2658fe554b32f1816083da88cd51e (diff)
downloadservo-81f6ac8f9298c437389a875b12b2de162510d1ef.tar.gz
servo-81f6ac8f9298c437389a875b12b2de162510d1ef.zip
Auto merge of #21591 - Manishearth:channelmergernode, r=ferjm
Implement ChannelMergerNode partial https://github.com/servo/servo/issues/21558 Haven't yet tested, wanted to get this up as an example for https://github.com/servo/servo/issues/21558 <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21591) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/audionode.rs')
-rw-r--r--components/script/dom/audionode.rs19
1 files changed, 17 insertions, 2 deletions
diff --git a/components/script/dom/audionode.rs b/components/script/dom/audionode.rs
index 4690f74245e..5a149dd814f 100644
--- a/components/script/dom/audionode.rs
+++ b/components/script/dom/audionode.rs
@@ -44,9 +44,14 @@ impl AudioNode {
options: &AudioNodeOptions,
number_of_inputs: u32,
number_of_outputs: u32,
- ) -> AudioNode {
+ ) -> Fallible<AudioNode> {
+ if let Some(c) = options.channelCount {
+ if c == 0 || c > MAX_CHANNEL_COUNT {
+ return Err(Error::NotSupported);
+ }
+ }
let node_id = context.audio_context_impl().create_node(node_type);
- AudioNode::new_inherited_for_id(node_id, context, options, number_of_inputs, number_of_outputs)
+ Ok(AudioNode::new_inherited_for_id(node_id, context, options, number_of_inputs, number_of_outputs))
}
pub fn new_inherited_for_id(
@@ -218,6 +223,11 @@ impl AudioNodeMethods for AudioNode {
return Err(Error::NotSupported)
}
}
+ EventTargetTypeId::AudioNode(AudioNodeTypeId::ChannelMergerNode) => {
+ if value != 1 {
+ return Err(Error::InvalidState)
+ }
+ }
// XXX We do not support any of the other AudioNodes with
// constraints yet. Add more cases here as we add support
// for new AudioNodes.
@@ -256,6 +266,11 @@ impl AudioNodeMethods for AudioNode {
return Err(Error::NotSupported)
}
}
+ EventTargetTypeId::AudioNode(AudioNodeTypeId::ChannelMergerNode) => {
+ if value != ChannelCountMode::Explicit {
+ return Err(Error::InvalidState)
+ }
+ }
// XXX We do not support any of the other AudioNodes with
// constraints yet. Add more cases here as we add support
// for new AudioNodes.