mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Auto merge of #27143 - Manishearth:streamnodes, r=ferjm
Implement MediaStreamAudioDestinationNode, MediaStreamAudioSourceNode, MediaStreamTrackAudioSourceNode Progress in https://github.com/servo/servo/issues/26097 This is a draft since we need the data channels stuff to land first (also I need to make sure we're passing WPT)
This commit is contained in:
commit
4504eebdc3
21 changed files with 348 additions and 213 deletions
24
Cargo.lock
generated
24
Cargo.lock
generated
|
@ -4894,7 +4894,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media"
|
name = "servo-media"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#18ece081a071b1b6b323f8d7b2684a76a7df203e"
|
source = "git+https://github.com/servo/media#beb8ce056e438c2166055897a8f21496ba596af7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"servo-media-audio",
|
"servo-media-audio",
|
||||||
"servo-media-player",
|
"servo-media-player",
|
||||||
|
@ -4906,7 +4906,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-audio"
|
name = "servo-media-audio"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#18ece081a071b1b6b323f8d7b2684a76a7df203e"
|
source = "git+https://github.com/servo/media#beb8ce056e438c2166055897a8f21496ba596af7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"boxfnonce",
|
"boxfnonce",
|
||||||
"byte-slice-cast",
|
"byte-slice-cast",
|
||||||
|
@ -4928,7 +4928,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-dummy"
|
name = "servo-media-dummy"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#18ece081a071b1b6b323f8d7b2684a76a7df203e"
|
source = "git+https://github.com/servo/media#beb8ce056e438c2166055897a8f21496ba596af7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"boxfnonce",
|
"boxfnonce",
|
||||||
"ipc-channel",
|
"ipc-channel",
|
||||||
|
@ -4943,7 +4943,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-gstreamer"
|
name = "servo-media-gstreamer"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#18ece081a071b1b6b323f8d7b2684a76a7df203e"
|
source = "git+https://github.com/servo/media#beb8ce056e438c2166055897a8f21496ba596af7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"boxfnonce",
|
"boxfnonce",
|
||||||
"byte-slice-cast",
|
"byte-slice-cast",
|
||||||
|
@ -4979,7 +4979,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-gstreamer-render"
|
name = "servo-media-gstreamer-render"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#18ece081a071b1b6b323f8d7b2684a76a7df203e"
|
source = "git+https://github.com/servo/media#beb8ce056e438c2166055897a8f21496ba596af7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"gstreamer",
|
"gstreamer",
|
||||||
"gstreamer-video",
|
"gstreamer-video",
|
||||||
|
@ -4989,7 +4989,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-gstreamer-render-android"
|
name = "servo-media-gstreamer-render-android"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#18ece081a071b1b6b323f8d7b2684a76a7df203e"
|
source = "git+https://github.com/servo/media#beb8ce056e438c2166055897a8f21496ba596af7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"glib",
|
"glib",
|
||||||
"gstreamer",
|
"gstreamer",
|
||||||
|
@ -5002,7 +5002,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-gstreamer-render-unix"
|
name = "servo-media-gstreamer-render-unix"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#18ece081a071b1b6b323f8d7b2684a76a7df203e"
|
source = "git+https://github.com/servo/media#beb8ce056e438c2166055897a8f21496ba596af7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"glib",
|
"glib",
|
||||||
"gstreamer",
|
"gstreamer",
|
||||||
|
@ -5015,7 +5015,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-player"
|
name = "servo-media-player"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#18ece081a071b1b6b323f8d7b2684a76a7df203e"
|
source = "git+https://github.com/servo/media#beb8ce056e438c2166055897a8f21496ba596af7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ipc-channel",
|
"ipc-channel",
|
||||||
"serde",
|
"serde",
|
||||||
|
@ -5027,7 +5027,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-streams"
|
name = "servo-media-streams"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#18ece081a071b1b6b323f8d7b2684a76a7df203e"
|
source = "git+https://github.com/servo/media#beb8ce056e438c2166055897a8f21496ba596af7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"uuid",
|
"uuid",
|
||||||
|
@ -5036,12 +5036,12 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-traits"
|
name = "servo-media-traits"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#18ece081a071b1b6b323f8d7b2684a76a7df203e"
|
source = "git+https://github.com/servo/media#beb8ce056e438c2166055897a8f21496ba596af7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-webrtc"
|
name = "servo-media-webrtc"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#18ece081a071b1b6b323f8d7b2684a76a7df203e"
|
source = "git+https://github.com/servo/media#beb8ce056e438c2166055897a8f21496ba596af7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"boxfnonce",
|
"boxfnonce",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
|
@ -5119,7 +5119,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo_media_derive"
|
name = "servo_media_derive"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#18ece081a071b1b6b323f8d7b2684a76a7df203e"
|
source = "git+https://github.com/servo/media#beb8ce056e438c2166055897a8f21496ba596af7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.17",
|
"proc-macro2 1.0.17",
|
||||||
"quote 1.0.2",
|
"quote 1.0.2",
|
||||||
|
|
|
@ -9,6 +9,7 @@ use crate::dom::bindings::codegen::Bindings::AudioContextBinding::{
|
||||||
use crate::dom::bindings::codegen::Bindings::AudioContextBinding::{
|
use crate::dom::bindings::codegen::Bindings::AudioContextBinding::{
|
||||||
AudioContextOptions, AudioTimestamp,
|
AudioContextOptions, AudioTimestamp,
|
||||||
};
|
};
|
||||||
|
use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::AudioNodeOptions;
|
||||||
use crate::dom::bindings::codegen::Bindings::BaseAudioContextBinding::AudioContextState;
|
use crate::dom::bindings::codegen::Bindings::BaseAudioContextBinding::AudioContextState;
|
||||||
use crate::dom::bindings::codegen::Bindings::BaseAudioContextBinding::BaseAudioContextBinding::BaseAudioContextMethods;
|
use crate::dom::bindings::codegen::Bindings::BaseAudioContextBinding::BaseAudioContextBinding::BaseAudioContextMethods;
|
||||||
use crate::dom::bindings::codegen::UnionTypes::AudioContextLatencyCategoryOrDouble;
|
use crate::dom::bindings::codegen::UnionTypes::AudioContextLatencyCategoryOrDouble;
|
||||||
|
@ -20,6 +21,11 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject};
|
||||||
use crate::dom::bindings::root::DomRoot;
|
use crate::dom::bindings::root::DomRoot;
|
||||||
use crate::dom::htmlmediaelement::HTMLMediaElement;
|
use crate::dom::htmlmediaelement::HTMLMediaElement;
|
||||||
use crate::dom::mediaelementaudiosourcenode::MediaElementAudioSourceNode;
|
use crate::dom::mediaelementaudiosourcenode::MediaElementAudioSourceNode;
|
||||||
|
use crate::dom::mediastream::MediaStream;
|
||||||
|
use crate::dom::mediastreamaudiodestinationnode::MediaStreamAudioDestinationNode;
|
||||||
|
use crate::dom::mediastreamaudiosourcenode::MediaStreamAudioSourceNode;
|
||||||
|
use crate::dom::mediastreamtrack::MediaStreamTrack;
|
||||||
|
use crate::dom::mediastreamtrackaudiosourcenode::MediaStreamTrackAudioSourceNode;
|
||||||
use crate::dom::promise::Promise;
|
use crate::dom::promise::Promise;
|
||||||
use crate::dom::window::Window;
|
use crate::dom::window::Window;
|
||||||
use crate::realms::InRealm;
|
use crate::realms::InRealm;
|
||||||
|
@ -254,6 +260,33 @@ impl AudioContextMethods for AudioContext {
|
||||||
let window = global.as_window();
|
let window = global.as_window();
|
||||||
MediaElementAudioSourceNode::new(window, self, media_element)
|
MediaElementAudioSourceNode::new(window, self, media_element)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// https://webaudio.github.io/web-audio-api/#dom-audiocontext-createmediastreamsource
|
||||||
|
fn CreateMediaStreamSource(
|
||||||
|
&self,
|
||||||
|
stream: &MediaStream,
|
||||||
|
) -> Fallible<DomRoot<MediaStreamAudioSourceNode>> {
|
||||||
|
let global = self.global();
|
||||||
|
let window = global.as_window();
|
||||||
|
MediaStreamAudioSourceNode::new(window, self, stream)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// https://webaudio.github.io/web-audio-api/#dom-audiocontext-createmediastreamtracksource
|
||||||
|
fn CreateMediaStreamTrackSource(
|
||||||
|
&self,
|
||||||
|
track: &MediaStreamTrack,
|
||||||
|
) -> Fallible<DomRoot<MediaStreamTrackAudioSourceNode>> {
|
||||||
|
let global = self.global();
|
||||||
|
let window = global.as_window();
|
||||||
|
MediaStreamTrackAudioSourceNode::new(window, self, track)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// https://webaudio.github.io/web-audio-api/#dom-audiocontext-createmediastreamdestination
|
||||||
|
fn CreateMediaStreamDestination(&self) -> Fallible<DomRoot<MediaStreamAudioDestinationNode>> {
|
||||||
|
let global = self.global();
|
||||||
|
let window = global.as_window();
|
||||||
|
MediaStreamAudioDestinationNode::new(window, self, &AudioNodeOptions::empty())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<AudioContextLatencyCategory> for LatencyCategory {
|
impl From<AudioContextLatencyCategory> for LatencyCategory {
|
||||||
|
|
|
@ -13,6 +13,7 @@ use crate::dom::globalscope::GlobalScope;
|
||||||
use crate::dom::mediastreamtrack::MediaStreamTrack;
|
use crate::dom::mediastreamtrack::MediaStreamTrack;
|
||||||
use crate::dom::window::Window;
|
use crate::dom::window::Window;
|
||||||
use dom_struct::dom_struct;
|
use dom_struct::dom_struct;
|
||||||
|
use servo_media::streams::registry::MediaStreamId;
|
||||||
use servo_media::streams::MediaStreamType;
|
use servo_media::streams::MediaStreamType;
|
||||||
|
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
|
@ -34,6 +35,17 @@ impl MediaStream {
|
||||||
reflect_dom_object(Box::new(MediaStream::new_inherited()), global)
|
reflect_dom_object(Box::new(MediaStream::new_inherited()), global)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn new_single(
|
||||||
|
global: &GlobalScope,
|
||||||
|
id: MediaStreamId,
|
||||||
|
ty: MediaStreamType,
|
||||||
|
) -> DomRoot<MediaStream> {
|
||||||
|
let this = Self::new(global);
|
||||||
|
let track = MediaStreamTrack::new(global, id, ty);
|
||||||
|
this.AddTrack(&track);
|
||||||
|
this
|
||||||
|
}
|
||||||
|
|
||||||
pub fn Constructor(global: &Window) -> Fallible<DomRoot<MediaStream>> {
|
pub fn Constructor(global: &Window) -> Fallible<DomRoot<MediaStream>> {
|
||||||
Ok(MediaStream::new(&global.global()))
|
Ok(MediaStream::new(&global.global()))
|
||||||
}
|
}
|
||||||
|
|
81
components/script/dom/mediastreamaudiodestinationnode.rs
Normal file
81
components/script/dom/mediastreamaudiodestinationnode.rs
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
/* 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::audiocontext::AudioContext;
|
||||||
|
use crate::dom::audionode::AudioNode;
|
||||||
|
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, 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;
|
||||||
|
use servo_media::streams::MediaStreamType;
|
||||||
|
use servo_media::ServoMedia;
|
||||||
|
|
||||||
|
#[dom_struct]
|
||||||
|
pub struct MediaStreamAudioDestinationNode {
|
||||||
|
node: AudioNode,
|
||||||
|
stream: Dom<MediaStream>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl MediaStreamAudioDestinationNode {
|
||||||
|
#[allow(unrooted_must_root)]
|
||||||
|
pub fn new_inherited(
|
||||||
|
context: &AudioContext,
|
||||||
|
options: &AudioNodeOptions,
|
||||||
|
) -> Fallible<MediaStreamAudioDestinationNode> {
|
||||||
|
let media = ServoMedia::get().unwrap();
|
||||||
|
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,
|
||||||
|
ChannelInterpretation::Speakers,
|
||||||
|
);
|
||||||
|
let node = AudioNode::new_inherited(
|
||||||
|
AudioNodeInit::MediaStreamDestinationNode(socket),
|
||||||
|
&context.upcast(),
|
||||||
|
node_options,
|
||||||
|
1, // inputs
|
||||||
|
0, // outputs
|
||||||
|
)?;
|
||||||
|
Ok(MediaStreamAudioDestinationNode {
|
||||||
|
node,
|
||||||
|
stream: Dom::from_ref(&stream),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(unrooted_must_root)]
|
||||||
|
pub fn new(
|
||||||
|
window: &Window,
|
||||||
|
context: &AudioContext,
|
||||||
|
options: &AudioNodeOptions,
|
||||||
|
) -> Fallible<DomRoot<MediaStreamAudioDestinationNode>> {
|
||||||
|
let node = MediaStreamAudioDestinationNode::new_inherited(context, options)?;
|
||||||
|
Ok(reflect_dom_object(Box::new(node), window))
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(non_snake_case)]
|
||||||
|
pub fn Constructor(
|
||||||
|
window: &Window,
|
||||||
|
context: &AudioContext,
|
||||||
|
options: &AudioNodeOptions,
|
||||||
|
) -> Fallible<DomRoot<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)
|
||||||
|
}
|
||||||
|
}
|
76
components/script/dom/mediastreamaudiosourcenode.rs
Normal file
76
components/script/dom/mediastreamaudiosourcenode.rs
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
/* 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::audiocontext::AudioContext;
|
||||||
|
use crate::dom::audionode::AudioNode;
|
||||||
|
use crate::dom::bindings::codegen::Bindings::MediaStreamAudioSourceNodeBinding::{
|
||||||
|
MediaStreamAudioSourceNodeMethods, MediaStreamAudioSourceOptions,
|
||||||
|
};
|
||||||
|
use crate::dom::bindings::error::{Error, Fallible};
|
||||||
|
use crate::dom::bindings::inheritance::Castable;
|
||||||
|
use crate::dom::bindings::reflector::reflect_dom_object;
|
||||||
|
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;
|
||||||
|
use servo_media::streams::MediaStreamType;
|
||||||
|
|
||||||
|
#[dom_struct]
|
||||||
|
pub struct MediaStreamAudioSourceNode {
|
||||||
|
node: AudioNode,
|
||||||
|
stream: Dom<MediaStream>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl MediaStreamAudioSourceNode {
|
||||||
|
#[allow(unrooted_must_root)]
|
||||||
|
pub fn new_inherited(
|
||||||
|
context: &AudioContext,
|
||||||
|
stream: &MediaStream,
|
||||||
|
) -> Fallible<MediaStreamAudioSourceNode> {
|
||||||
|
let track = stream
|
||||||
|
.get_tracks()
|
||||||
|
.iter()
|
||||||
|
.find(|t| t.ty() == MediaStreamType::Audio)
|
||||||
|
.ok_or(Error::InvalidState)?
|
||||||
|
.id();
|
||||||
|
let node = AudioNode::new_inherited(
|
||||||
|
AudioNodeInit::MediaStreamSourceNode(track),
|
||||||
|
&context.upcast(),
|
||||||
|
Default::default(),
|
||||||
|
0, // inputs
|
||||||
|
1, // outputs
|
||||||
|
)?;
|
||||||
|
Ok(MediaStreamAudioSourceNode {
|
||||||
|
node,
|
||||||
|
stream: Dom::from_ref(&stream),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(unrooted_must_root)]
|
||||||
|
pub fn new(
|
||||||
|
window: &Window,
|
||||||
|
context: &AudioContext,
|
||||||
|
stream: &MediaStream,
|
||||||
|
) -> Fallible<DomRoot<MediaStreamAudioSourceNode>> {
|
||||||
|
let node = MediaStreamAudioSourceNode::new_inherited(context, stream)?;
|
||||||
|
Ok(reflect_dom_object(Box::new(node), window))
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(non_snake_case)]
|
||||||
|
pub fn Constructor(
|
||||||
|
window: &Window,
|
||||||
|
context: &AudioContext,
|
||||||
|
options: &MediaStreamAudioSourceOptions,
|
||||||
|
) -> Fallible<DomRoot<MediaStreamAudioSourceNode>> {
|
||||||
|
MediaStreamAudioSourceNode::new(window, context, &options.mediaStream)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl MediaStreamAudioSourceNodeMethods for MediaStreamAudioSourceNode {
|
||||||
|
/// https://webaudio.github.io/web-audio-api/#dom-MediaStreamAudioSourceNode-stream
|
||||||
|
fn MediaStream(&self) -> DomRoot<MediaStream> {
|
||||||
|
DomRoot::from_ref(&self.stream)
|
||||||
|
}
|
||||||
|
}
|
60
components/script/dom/mediastreamtrackaudiosourcenode.rs
Normal file
60
components/script/dom/mediastreamtrackaudiosourcenode.rs
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
/* 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::audiocontext::AudioContext;
|
||||||
|
use crate::dom::audionode::AudioNode;
|
||||||
|
use crate::dom::bindings::codegen::Bindings::MediaStreamTrackAudioSourceNodeBinding::MediaStreamTrackAudioSourceOptions;
|
||||||
|
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::{Dom, DomRoot};
|
||||||
|
use crate::dom::mediastreamtrack::MediaStreamTrack;
|
||||||
|
use crate::dom::window::Window;
|
||||||
|
use dom_struct::dom_struct;
|
||||||
|
use servo_media::audio::node::AudioNodeInit;
|
||||||
|
|
||||||
|
#[dom_struct]
|
||||||
|
pub struct MediaStreamTrackAudioSourceNode {
|
||||||
|
node: AudioNode,
|
||||||
|
track: Dom<MediaStreamTrack>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl MediaStreamTrackAudioSourceNode {
|
||||||
|
#[allow(unrooted_must_root)]
|
||||||
|
pub fn new_inherited(
|
||||||
|
context: &AudioContext,
|
||||||
|
track: &MediaStreamTrack,
|
||||||
|
) -> Fallible<MediaStreamTrackAudioSourceNode> {
|
||||||
|
let node = AudioNode::new_inherited(
|
||||||
|
AudioNodeInit::MediaStreamSourceNode(track.id()),
|
||||||
|
&context.upcast(),
|
||||||
|
Default::default(),
|
||||||
|
0, // inputs
|
||||||
|
1, // outputs
|
||||||
|
)?;
|
||||||
|
Ok(MediaStreamTrackAudioSourceNode {
|
||||||
|
node,
|
||||||
|
track: Dom::from_ref(&track),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(unrooted_must_root)]
|
||||||
|
pub fn new(
|
||||||
|
window: &Window,
|
||||||
|
context: &AudioContext,
|
||||||
|
track: &MediaStreamTrack,
|
||||||
|
) -> Fallible<DomRoot<MediaStreamTrackAudioSourceNode>> {
|
||||||
|
let node = MediaStreamTrackAudioSourceNode::new_inherited(context, track)?;
|
||||||
|
Ok(reflect_dom_object(Box::new(node), window))
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(non_snake_case)]
|
||||||
|
pub fn Constructor(
|
||||||
|
window: &Window,
|
||||||
|
context: &AudioContext,
|
||||||
|
options: &MediaStreamTrackAudioSourceOptions,
|
||||||
|
) -> Fallible<DomRoot<MediaStreamTrackAudioSourceNode>> {
|
||||||
|
MediaStreamTrackAudioSourceNode::new(window, context, &options.mediaStreamTrack)
|
||||||
|
}
|
||||||
|
}
|
|
@ -435,7 +435,10 @@ pub mod mediaquerylist;
|
||||||
pub mod mediaquerylistevent;
|
pub mod mediaquerylistevent;
|
||||||
pub mod mediasession;
|
pub mod mediasession;
|
||||||
pub mod mediastream;
|
pub mod mediastream;
|
||||||
|
pub mod mediastreamaudiodestinationnode;
|
||||||
|
pub mod mediastreamaudiosourcenode;
|
||||||
pub mod mediastreamtrack;
|
pub mod mediastreamtrack;
|
||||||
|
pub mod mediastreamtrackaudiosourcenode;
|
||||||
pub mod messagechannel;
|
pub mod messagechannel;
|
||||||
pub mod messageevent;
|
pub mod messageevent;
|
||||||
pub mod messageport;
|
pub mod messageport;
|
||||||
|
|
|
@ -34,7 +34,7 @@ interface AudioContext : BaseAudioContext {
|
||||||
Promise<void> close();
|
Promise<void> close();
|
||||||
|
|
||||||
[Throws] MediaElementAudioSourceNode createMediaElementSource(HTMLMediaElement mediaElement);
|
[Throws] MediaElementAudioSourceNode createMediaElementSource(HTMLMediaElement mediaElement);
|
||||||
// MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream);
|
[Throws] MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream);
|
||||||
// MediaStreamTrackAudioSourceNode createMediaStreamTrackSource(MediaStreamTrack mediaStreamTrack);
|
[Throws] MediaStreamTrackAudioSourceNode createMediaStreamTrackSource(MediaStreamTrack mediaStreamTrack);
|
||||||
// MediaStreamAudioDestinationNode createMediaStreamDestination();
|
[Throws] MediaStreamAudioDestinationNode createMediaStreamDestination();
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,8 +4,7 @@
|
||||||
|
|
||||||
// https://w3c.github.io/mediacapture-main/#dom-mediastream
|
// https://w3c.github.io/mediacapture-main/#dom-mediastream
|
||||||
|
|
||||||
[Exposed=Window,
|
[Exposed=Window]
|
||||||
Pref="dom.webrtc.enabled"]
|
|
||||||
interface MediaStream : EventTarget {
|
interface MediaStream : EventTarget {
|
||||||
[Throws] constructor();
|
[Throws] constructor();
|
||||||
[Throws] constructor(MediaStream stream);
|
[Throws] constructor(MediaStream stream);
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
/* 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/#mediastreamaudiodestinationnode
|
||||||
|
*/
|
||||||
|
|
||||||
|
[Exposed=Window]
|
||||||
|
interface MediaStreamAudioDestinationNode : AudioNode {
|
||||||
|
[Throws] constructor (AudioContext context, optional AudioNodeOptions options = {});
|
||||||
|
readonly attribute MediaStream stream;
|
||||||
|
};
|
|
@ -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/#mediastreamaudiosourcenode
|
||||||
|
*/
|
||||||
|
|
||||||
|
dictionary MediaStreamAudioSourceOptions {
|
||||||
|
required MediaStream mediaStream;
|
||||||
|
};
|
||||||
|
|
||||||
|
[Exposed=Window]
|
||||||
|
interface MediaStreamAudioSourceNode : AudioNode {
|
||||||
|
[Throws] constructor (AudioContext context, MediaStreamAudioSourceOptions options);
|
||||||
|
[SameObject] readonly attribute MediaStream mediaStream;
|
||||||
|
};
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
// https://w3c.github.io/mediacapture-main/#dom-mediastreamtrack
|
// https://w3c.github.io/mediacapture-main/#dom-mediastreamtrack
|
||||||
|
|
||||||
[Exposed=Window, Pref="dom.webrtc.enabled"]
|
[Exposed=Window]
|
||||||
interface MediaStreamTrack : EventTarget {
|
interface MediaStreamTrack : EventTarget {
|
||||||
readonly attribute DOMString kind;
|
readonly attribute DOMString kind;
|
||||||
readonly attribute DOMString id;
|
readonly attribute DOMString id;
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
/* 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/#mediastreamtrackaudiosourcenode
|
||||||
|
*/
|
||||||
|
|
||||||
|
dictionary MediaStreamTrackAudioSourceOptions {
|
||||||
|
required MediaStreamTrack mediaStreamTrack;
|
||||||
|
};
|
||||||
|
|
||||||
|
[Exposed=Window]
|
||||||
|
interface MediaStreamTrackAudioSourceNode : AudioNode {
|
||||||
|
[Throws] constructor (AudioContext context, MediaStreamTrackAudioSourceOptions options);
|
||||||
|
};
|
12
tests/html/media_stream_audio_nodes_loopback.html
Normal file
12
tests/html/media_stream_audio_nodes_loopback.html
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<script type="text/javascript">
|
||||||
|
let a1 = new AudioContext();
|
||||||
|
let osc1 = a1.createOscillator();
|
||||||
|
let dest1 = a1.createMediaStreamDestination();
|
||||||
|
osc1.connect(dest1);
|
||||||
|
osc1.start(0);
|
||||||
|
|
||||||
|
let a2 = new AudioContext();
|
||||||
|
let source2 = a2.createMediaStreamSource(dest1.stream);
|
||||||
|
source2.connect(a2.destination);
|
||||||
|
|
||||||
|
</script>
|
|
@ -20,9 +20,6 @@
|
||||||
[AudioProcessingEvent interface: new AudioProcessingEvent('', {\n playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n }) must inherit property "outputBuffer" with the proper type]
|
[AudioProcessingEvent interface: new AudioProcessingEvent('', {\n playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n }) must inherit property "outputBuffer" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioContext interface: context must inherit property "createMediaStreamSource(MediaStream)" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioWorkletNode interface: worklet_node must inherit property "port" with the proper type]
|
[AudioWorkletNode interface: worklet_node must inherit property "port" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -56,9 +53,6 @@
|
||||||
[AudioNode interface: context.createScriptProcessor() must inherit property "disconnect()" with the proper type]
|
[AudioNode interface: context.createScriptProcessor() must inherit property "disconnect()" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "context" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Stringification of context.audioWorklet]
|
[Stringification of context.audioWorklet]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -83,12 +77,6 @@
|
||||||
[AudioWorkletNode interface: attribute onprocessorerror]
|
[AudioWorkletNode interface: attribute onprocessorerror]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioContext interface: context must inherit property "createMediaStreamDestination()" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[MediaStreamAudioSourceNode interface: attribute mediaStream]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[ScriptProcessorNode must be primary interface of context.createScriptProcessor()]
|
[ScriptProcessorNode must be primary interface of context.createScriptProcessor()]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -98,9 +86,6 @@
|
||||||
[AudioNode interface: calling connect(AudioParam, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError]
|
[AudioNode interface: calling connect(AudioParam, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamAudioDestinationNode interface: attribute stream]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: calling connect(AudioParam, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError]
|
[AudioNode interface: calling connect(AudioParam, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -116,9 +101,6 @@
|
||||||
[idl_test setup]
|
[idl_test setup]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioContext interface: calling createMediaStreamSource(MediaStream) on context with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[DynamicsCompressorNode must be primary interface of new DynamicsCompressorNode(context)]
|
[DynamicsCompressorNode must be primary interface of new DynamicsCompressorNode(context)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -143,9 +125,6 @@
|
||||||
[AudioNode interface: context.createScriptProcessor() must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type]
|
[AudioNode interface: context.createScriptProcessor() must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: new DynamicsCompressorNode(context) must inherit property "context" with the proper type]
|
[AudioNode interface: new DynamicsCompressorNode(context) must inherit property "context" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -215,12 +194,6 @@
|
||||||
[AudioNode interface: new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type]
|
[AudioNode interface: new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamAudioSourceNode interface object name]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioContext interface: context must inherit property "createMediaStreamTrackSource(MediaStreamTrack)" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: new ConvolverNode(context) must inherit property "channelInterpretation" with the proper type]
|
[AudioNode interface: new ConvolverNode(context) must inherit property "channelInterpretation" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -239,9 +212,6 @@
|
||||||
[AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(unsigned long)" with the proper type]
|
[AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object's @@unscopables property]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioParamMap interface: existence and properties of interface object]
|
[AudioParamMap interface: existence and properties of interface object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -269,12 +239,6 @@
|
||||||
[AudioNode interface: calling disconnect(unsigned long) on new DelayNode(context) with too few arguments must throw TypeError]
|
[AudioNode interface: calling disconnect(unsigned long) on new DelayNode(context) with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioContext interface: operation createMediaStreamSource(MediaStream)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[MediaStreamAudioSourceNode interface object length]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioWorklet interface object name]
|
[AudioWorklet interface object name]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -299,9 +263,6 @@
|
||||||
[StereoPannerNode interface: existence and properties of interface object]
|
[StereoPannerNode interface: existence and properties of interface object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamAudioSourceNode interface: existence and properties of interface prototype object's "constructor" property]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[WaveShaperNode interface object length]
|
[WaveShaperNode interface object length]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -320,24 +281,15 @@
|
||||||
[AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) with too few arguments must throw TypeError]
|
[AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[BaseAudioContext interface: context must inherit property "createIIRFilter([object Object\], [object Object\])" with the proper type]
|
[BaseAudioContext interface: context must inherit property "createIIRFilter([object Object\], [object Object\])" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: calling disconnect(unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError]
|
[AudioNode interface: calling disconnect(unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: calling disconnect(AudioNode) on new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) with too few arguments must throw TypeError]
|
[AudioNode interface: calling disconnect(AudioNode) on new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: calling connect(AudioParam, unsigned long) on worklet_node with too few arguments must throw TypeError]
|
[AudioNode interface: calling connect(AudioParam, unsigned long) on worklet_node with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -368,9 +320,6 @@
|
||||||
[AudioParamMap interface object length]
|
[AudioParamMap interface object length]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioContext interface: operation createMediaStreamTrackSource(MediaStreamTrack)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: worklet_node must inherit property "disconnect()" with the proper type]
|
[AudioNode interface: worklet_node must inherit property "disconnect()" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -386,9 +335,6 @@
|
||||||
[DelayNode interface: existence and properties of interface prototype object's "constructor" property]
|
[DelayNode interface: existence and properties of interface prototype object's "constructor" property]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: new WaveShaperNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type]
|
[AudioNode interface: new WaveShaperNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -410,18 +356,12 @@
|
||||||
[DynamicsCompressorNode interface: existence and properties of interface prototype object's @@unscopables property]
|
[DynamicsCompressorNode interface: existence and properties of interface prototype object's @@unscopables property]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamAudioSourceNode interface: existence and properties of interface object]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type]
|
[AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: context.createScriptProcessor() must inherit property "channelCount" with the proper type]
|
[AudioNode interface: context.createScriptProcessor() must inherit property "channelCount" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "channelCountMode" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type]
|
[AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -509,9 +449,6 @@
|
||||||
[AudioNode interface: worklet_node must inherit property "channelCount" with the proper type]
|
[AudioNode interface: worklet_node must inherit property "channelCount" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamAudioDestinationNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "stream" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[DynamicsCompressorNode interface: existence and properties of interface prototype object's "constructor" property]
|
[DynamicsCompressorNode interface: existence and properties of interface prototype object's "constructor" property]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -539,9 +476,6 @@
|
||||||
[AudioNode interface: worklet_node must inherit property "connect(AudioParam, unsigned long)" with the proper type]
|
[AudioNode interface: worklet_node must inherit property "connect(AudioParam, unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object's "constructor" property]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[BaseAudioContext interface: operation createIIRFilter([object Object\], [object Object\])]
|
[BaseAudioContext interface: operation createIIRFilter([object Object\], [object Object\])]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -578,9 +512,6 @@
|
||||||
[WaveShaperNode interface: existence and properties of interface object]
|
[WaveShaperNode interface: existence and properties of interface object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamAudioDestinationNode interface: existence and properties of interface object]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[OfflineAudioContext interface: operation suspend(double)]
|
[OfflineAudioContext interface: operation suspend(double)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -590,15 +521,6 @@
|
||||||
[AudioNode interface: calling disconnect(AudioParam, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError]
|
[AudioNode interface: calling disconnect(AudioParam, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect()" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(unsigned long)" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[MediaStreamAudioDestinationNode must be primary interface of new MediaStreamAudioDestinationNode(context)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[WaveShaperNode interface: new WaveShaperNode(context) must inherit property "curve" with the proper type]
|
[WaveShaperNode interface: new WaveShaperNode(context) must inherit property "curve" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -623,9 +545,6 @@
|
||||||
[DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "ratio" with the proper type]
|
[DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "ratio" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "numberOfOutputs" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: new ConvolverNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type]
|
[AudioNode interface: new ConvolverNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -695,9 +614,6 @@
|
||||||
[ScriptProcessorNode interface: attribute bufferSize]
|
[ScriptProcessorNode interface: attribute bufferSize]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: calling disconnect(AudioNode, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[ScriptProcessorNode interface: attribute onaudioprocess]
|
[ScriptProcessorNode interface: attribute onaudioprocess]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -716,9 +632,6 @@
|
||||||
[BaseAudioContext interface: context must inherit property "createDynamicsCompressor()" with the proper type]
|
[BaseAudioContext interface: context must inherit property "createDynamicsCompressor()" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: calling disconnect(AudioParam, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioParamMap interface object name]
|
[AudioParamMap interface object name]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -743,9 +656,6 @@
|
||||||
[AudioNode interface: new ConvolverNode(context) must inherit property "numberOfInputs" with the proper type]
|
[AudioNode interface: new ConvolverNode(context) must inherit property "numberOfInputs" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "channelCount" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioProcessingEvent interface object name]
|
[AudioProcessingEvent interface object name]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -779,9 +689,6 @@
|
||||||
[AudioNode interface: calling disconnect(AudioNode, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError]
|
[AudioNode interface: calling disconnect(AudioNode, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: new DynamicsCompressorNode(context) must inherit property "channelInterpretation" with the proper type]
|
[AudioNode interface: new DynamicsCompressorNode(context) must inherit property "channelInterpretation" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -800,9 +707,6 @@
|
||||||
[DynamicsCompressorNode interface: attribute attack]
|
[DynamicsCompressorNode interface: attribute attack]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioContext interface: calling createMediaStreamTrackSource(MediaStreamTrack) on context with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: calling disconnect(AudioParam, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError]
|
[AudioNode interface: calling disconnect(AudioParam, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -815,15 +719,9 @@
|
||||||
[AudioNode interface: calling disconnect(AudioParam) on new WaveShaperNode(context) with too few arguments must throw TypeError]
|
[AudioNode interface: calling disconnect(AudioParam) on new WaveShaperNode(context) with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioContext interface: operation createMediaStreamDestination()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[WaveShaperNode must be primary interface of new WaveShaperNode(context)]
|
[WaveShaperNode must be primary interface of new WaveShaperNode(context)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: calling disconnect(unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[BaseAudioContext interface: calling createScriptProcessor(unsigned long, unsigned long, unsigned long) on context with too few arguments must throw TypeError]
|
[BaseAudioContext interface: calling createScriptProcessor(unsigned long, unsigned long, unsigned long) on context with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -836,27 +734,15 @@
|
||||||
[AudioProcessingEvent must be primary interface of new AudioProcessingEvent('', {\n playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n })]
|
[AudioProcessingEvent must be primary interface of new AudioProcessingEvent('', {\n playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n })]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: calling disconnect(AudioNode) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: new WaveShaperNode(context) must inherit property "channelInterpretation" with the proper type]
|
[AudioNode interface: new WaveShaperNode(context) must inherit property "channelInterpretation" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[IIRFilterNode interface object length]
|
[IIRFilterNode interface object length]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "channelInterpretation" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: new WaveShaperNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type]
|
[AudioNode interface: new WaveShaperNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioNode)" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: calling disconnect(AudioParam) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Stringification of new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]})]
|
[Stringification of new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]})]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -905,9 +791,6 @@
|
||||||
[AudioNode interface: new DynamicsCompressorNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type]
|
[AudioNode interface: new DynamicsCompressorNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamTrackAudioSourceNode interface object name]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Stringification of context.createScriptProcessor()]
|
[Stringification of context.createScriptProcessor()]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -950,18 +833,12 @@
|
||||||
[AudioNode interface: new DelayNode(context) must inherit property "numberOfOutputs" with the proper type]
|
[AudioNode interface: new DelayNode(context) must inherit property "numberOfOutputs" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioParam)" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type]
|
[AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "knee" with the proper type]
|
[DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "knee" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamAudioDestinationNode interface object name]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[DelayNode interface object name]
|
[DelayNode interface object name]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -974,9 +851,6 @@
|
||||||
[ConvolverNode interface: existence and properties of interface object]
|
[ConvolverNode interface: existence and properties of interface object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamAudioDestinationNode interface object length]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type]
|
[AudioNode interface: new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -1007,9 +881,6 @@
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type]
|
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Stringification of new MediaStreamAudioDestinationNode(context)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) must inherit property "disconnect(AudioParam)" with the proper type]
|
[AudioNode interface: new IIRFilterNode(context, {feedforward: [1\], feedback: [1\]}) must inherit property "disconnect(AudioParam)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -1037,24 +908,15 @@
|
||||||
[AudioWorkletNode interface object length]
|
[AudioWorkletNode interface object length]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object's "constructor" property]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[DelayNode must be primary interface of new DelayNode(context)]
|
[DelayNode must be primary interface of new DelayNode(context)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createWaveShaper()" with the proper type]
|
[BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createWaveShaper()" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[DynamicsCompressorNode interface: attribute reduction]
|
[DynamicsCompressorNode interface: attribute reduction]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamAudioSourceNode interface: existence and properties of interface prototype object]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError]
|
[AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -1067,15 +929,9 @@
|
||||||
[BaseAudioContext interface: operation createDelay(double)]
|
[BaseAudioContext interface: operation createDelay(double)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamTrackAudioSourceNode interface: existence and properties of interface object]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "release" with the proper type]
|
[DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "release" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MediaStreamTrackAudioSourceNode interface object length]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[BaseAudioContext interface: context must inherit property "createConvolver()" with the proper type]
|
[BaseAudioContext interface: context must inherit property "createConvolver()" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -1097,9 +953,6 @@
|
||||||
[AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError]
|
[AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[ScriptProcessorNode interface: existence and properties of interface prototype object's @@unscopables property]
|
[ScriptProcessorNode interface: existence and properties of interface prototype object's @@unscopables property]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -1136,9 +989,6 @@
|
||||||
[DelayNode interface: attribute delayTime]
|
[DelayNode interface: attribute delayTime]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "numberOfInputs" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioContext interface: operation resume()]
|
[AudioContext interface: operation resume()]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -1217,9 +1067,6 @@
|
||||||
[AudioNode interface: new DynamicsCompressorNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type]
|
[AudioNode interface: new DynamicsCompressorNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "connect(AudioParam, optional unsigned long)" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createIIRFilter(sequence<double>, sequence<double>)" with the proper type]
|
[BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createIIRFilter(sequence<double>, sequence<double>)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -1232,9 +1079,6 @@
|
||||||
[AudioNode interface: new DynamicsCompressorNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type]
|
[AudioNode interface: new DynamicsCompressorNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on worklet_node with too few arguments must throw TypeError]
|
[AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on worklet_node with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -1265,9 +1109,6 @@
|
||||||
[BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createPeriodicWave(sequence<float>, sequence<float>, optional PeriodicWaveConstraints)" with the proper type]
|
[BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createPeriodicWave(sequence<float>, sequence<float>, optional PeriodicWaveConstraints)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "connect(AudioNode, optional unsigned long, optional unsigned long)" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AudioNode interface: calling connect(AudioParam, optional unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError]
|
[AudioNode interface: calling connect(AudioParam, optional unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -1307,9 +1148,6 @@
|
||||||
[AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError]
|
[AudioNode interface: calling connect(AudioNode, optional unsigned long, optional unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[AudioNode interface: calling connect(AudioParam, optional unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[BaseAudioContext interface: context must inherit property "createPeriodicWave(sequence<float>, sequence<float>, optional PeriodicWaveConstraints)" with the proper type]
|
[BaseAudioContext interface: context must inherit property "createPeriodicWave(sequence<float>, sequence<float>, optional PeriodicWaveConstraints)" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,3 @@
|
||||||
[Executing "from-dictionary"]
|
[Executing "from-dictionary"]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Executing "media-group"]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
[ctor-mediastreamaudiodestination.html]
|
|
||||||
[X node0 = new MediaStreamAudioDestinationNode(context) incorrectly threw TypeError: "window[name\] is not a constructor".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[< [test AudioNodeOptions\] 1 out of 1 assertions were failed.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Executing "default constructor"]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[X new MediaStreamAudioDestinationNode(c, {channelCount: 7}} incorrectly threw TypeError: "window[nodeName\] is not a constructor".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[< [default constructor\] 1 out of 1 assertions were failed.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Executing "test AudioNodeOptions"]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[# AUDIT TASK RUNNER FINISHED: 2 out of 4 tasks were failed.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[X new MediaStreamAudioDestinationNode(c, {channelCount: 7}) incorrectly threw TypeError: "window[nodeName\] is not a constructor".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,2 @@
|
||||||
[mediastreamaudiosourcenode-ctor.html]
|
[mediastreamaudiosourcenode-ctor.html]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
[MediaStreamAudioSourceNode]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[mediastreamaudiosourcenode-routing.html]
|
[mediastreamaudiosourcenode-routing.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[MediaStreamAudioSourceNode captures the right track.]
|
[MediaStreamAudioSourceNode captures the right track.]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -13952,7 +13952,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"interfaces.html": [
|
"interfaces.html": [
|
||||||
"145c902ff033ba1de46b41dec07992fae4fd2f13",
|
"d988b7939f83cef16a51a4ae5502ed029f31df99",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
|
|
@ -173,6 +173,11 @@ test_interfaces([
|
||||||
"MediaQueryList",
|
"MediaQueryList",
|
||||||
"MediaQueryListEvent",
|
"MediaQueryListEvent",
|
||||||
"MediaSession",
|
"MediaSession",
|
||||||
|
"MediaStream",
|
||||||
|
"MediaStreamAudioDestinationNode",
|
||||||
|
"MediaStreamAudioSourceNode",
|
||||||
|
"MediaStreamTrack",
|
||||||
|
"MediaStreamTrackAudioSourceNode",
|
||||||
"MessageChannel",
|
"MessageChannel",
|
||||||
"MessageEvent",
|
"MessageEvent",
|
||||||
"MessagePort",
|
"MessagePort",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue