aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/mediastreamaudiodestinationnode.rs
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2020-07-01 16:10:13 -0700
committerManish Goregaokar <manishsmail@gmail.com>2020-07-02 13:26:55 -0700
commit2a838d935bdb3ac2d74be619a183cacb3fd17bcd (patch)
treeeab0e768433f4ac240bab0c1083e58ca1b84dd74 /components/script/dom/mediastreamaudiodestinationnode.rs
parentbf9614edf77c4e7aa0a74a5a98923b3d2f77821b (diff)
downloadservo-2a838d935bdb3ac2d74be619a183cacb3fd17bcd.tar.gz
servo-2a838d935bdb3ac2d74be619a183cacb3fd17bcd.zip
Add MedaStreamAudioDestinationNode::stream
Diffstat (limited to 'components/script/dom/mediastreamaudiodestinationnode.rs')
-rw-r--r--components/script/dom/mediastreamaudiodestinationnode.rs22
1 files changed, 18 insertions, 4 deletions
diff --git a/components/script/dom/mediastreamaudiodestinationnode.rs b/components/script/dom/mediastreamaudiodestinationnode.rs
index 88edbf052dd..d402f07b590 100644
--- a/components/script/dom/mediastreamaudiodestinationnode.rs
+++ b/components/script/dom/mediastreamaudiodestinationnode.rs
@@ -8,10 +8,12 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::AudioNodeOptions;
use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{
ChannelCountMode, ChannelInterpretation,
};
+use crate::dom::bindings::codegen::Bindings::MediaStreamAudioDestinationNodeBinding::MediaStreamAudioDestinationNodeMethods;
use crate::dom::bindings::error::Fallible;
use crate::dom::bindings::inheritance::Castable;
-use crate::dom::bindings::reflector::reflect_dom_object;
-use crate::dom::bindings::root::DomRoot;
+use crate::dom::bindings::reflector::{reflect_dom_object, DomObject};
+use crate::dom::bindings::root::{Dom, DomRoot};
+use crate::dom::mediastream::MediaStream;
use crate::dom::window::Window;
use dom_struct::dom_struct;
use servo_media::audio::node::AudioNodeInit;
@@ -21,6 +23,7 @@ use servo_media::ServoMedia;
#[dom_struct]
pub struct MediaStreamAudioDestinationNode {
node: AudioNode,
+ stream: Dom<MediaStream>,
}
impl MediaStreamAudioDestinationNode {
@@ -30,7 +33,8 @@ impl MediaStreamAudioDestinationNode {
options: &AudioNodeOptions,
) -> Fallible<MediaStreamAudioDestinationNode> {
let media = ServoMedia::get().unwrap();
- let (socket, _id) = media.create_stream_and_socket(MediaStreamType::Audio);
+ let (socket, id) = media.create_stream_and_socket(MediaStreamType::Audio);
+ let stream = MediaStream::new_single(&context.global(), id, MediaStreamType::Audio);
let node_options = options.unwrap_or(
2,
ChannelCountMode::Explicit,
@@ -43,7 +47,10 @@ impl MediaStreamAudioDestinationNode {
1, // inputs
0, // outputs
)?;
- Ok(MediaStreamAudioDestinationNode { node })
+ Ok(MediaStreamAudioDestinationNode {
+ node,
+ stream: Dom::from_ref(&stream),
+ })
}
#[allow(unrooted_must_root)]
@@ -65,3 +72,10 @@ impl MediaStreamAudioDestinationNode {
MediaStreamAudioDestinationNode::new(window, context, options)
}
}
+
+impl MediaStreamAudioDestinationNodeMethods for MediaStreamAudioDestinationNode {
+ /// https://webaudio.github.io/web-audio-api/#dom-mediastreamaudiodestinationnode-stream
+ fn Stream(&self) -> DomRoot<MediaStream> {
+ DomRoot::from_ref(&self.stream)
+ }
+}