From 106cc4a1f7a9454e0f551d13806cf44a02bc32c9 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Tue, 7 May 2019 12:49:47 -0700 Subject: [PATCH] Add MediaStreamTrack interface --- components/script/dom/mediastreamtrack.rs | 35 +++++++++++++++++++ components/script/dom/mod.rs | 1 + .../dom/webidls/MediaStreamTrack.webidl | 24 +++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 components/script/dom/mediastreamtrack.rs create mode 100644 components/script/dom/webidls/MediaStreamTrack.webidl diff --git a/components/script/dom/mediastreamtrack.rs b/components/script/dom/mediastreamtrack.rs new file mode 100644 index 00000000000..13ca065bc9f --- /dev/null +++ b/components/script/dom/mediastreamtrack.rs @@ -0,0 +1,35 @@ +/* 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::bindings::codegen::Bindings::MediaStreamTrackBinding; +use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::root::DomRoot; +use crate::dom::eventtarget::EventTarget; +use crate::dom::globalscope::GlobalScope; +use dom_struct::dom_struct; +use servo_media::streams::registry::MediaStreamId; + +#[dom_struct] +pub struct MediaStreamTrack { + eventtarget: EventTarget, + #[ignore_malloc_size_of = "defined in servo-media"] + id: MediaStreamId, +} + +impl MediaStreamTrack { + pub fn new_inherited(id: MediaStreamId) -> MediaStreamTrack { + MediaStreamTrack { + eventtarget: EventTarget::new_inherited(), + id, + } + } + + pub fn new(global: &GlobalScope, id: MediaStreamId) -> DomRoot { + reflect_dom_object( + Box::new(MediaStreamTrack::new_inherited(id)), + global, + MediaStreamTrackBinding::Wrap, + ) + } +} diff --git a/components/script/dom/mod.rs b/components/script/dom/mod.rs index ff1688fb6c3..576c288d6f4 100644 --- a/components/script/dom/mod.rs +++ b/components/script/dom/mod.rs @@ -399,6 +399,7 @@ pub mod medialist; pub mod mediaquerylist; pub mod mediaquerylistevent; pub mod mediastream; +pub mod mediastreamtrack; pub mod messageevent; pub mod mimetype; pub mod mimetypearray; diff --git a/components/script/dom/webidls/MediaStreamTrack.webidl b/components/script/dom/webidls/MediaStreamTrack.webidl new file mode 100644 index 00000000000..03180966b9f --- /dev/null +++ b/components/script/dom/webidls/MediaStreamTrack.webidl @@ -0,0 +1,24 @@ +/* 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/. */ + +// https://w3c.github.io/mediacapture-main/#dom-mediastreamtrack + +[Exposed=Window, Pref="dom.webrtc.enabled"] +interface MediaStreamTrack : EventTarget { + // readonly attribute DOMString kind; + // readonly attribute DOMString id; + // readonly attribute DOMString label; + // attribute boolean enabled; + // readonly attribute boolean muted; + // attribute EventHandler onmute; + // attribute EventHandler onunmute; + // readonly attribute MediaStreamTrackState readyState; + // attribute EventHandler onended; + // MediaStreamTrack clone(); + // void stop(); + // MediaTrackCapabilities getCapabilities(); + // MediaTrackConstraints getConstraints(); + // MediaTrackSettings getSettings(); + // Promise applyConstraints(optional MediaTrackConstraints constraints); +};