diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2019-01-28 12:52:12 -0800 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2019-01-29 11:36:27 -0800 |
commit | bafbc0e1c075ffad842984e2d23a1c68e94442b2 (patch) | |
tree | c83396a3ce1b76938c0d223afc55f0d9d656ee32 | |
parent | 93a359e528a3813feaa338fc6020614d3bd7b99b (diff) | |
download | servo-bafbc0e1c075ffad842984e2d23a1c68e94442b2.tar.gz servo-bafbc0e1c075ffad842984e2d23a1c68e94442b2.zip |
Add empty MediaDevices interface
-rw-r--r-- | components/script/dom/mediadevices.rs | 34 | ||||
-rw-r--r-- | components/script/dom/mod.rs | 1 | ||||
-rw-r--r-- | components/script/dom/webidls/MediaDevices.webidl | 88 |
3 files changed, 123 insertions, 0 deletions
diff --git a/components/script/dom/mediadevices.rs b/components/script/dom/mediadevices.rs new file mode 100644 index 00000000000..5897ad576eb --- /dev/null +++ b/components/script/dom/mediadevices.rs @@ -0,0 +1,34 @@ +/* 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::MediaDevicesBinding; +use crate::dom::bindings::error::Fallible; +use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::DomObject; +use crate::dom::bindings::root::DomRoot; +use crate::dom::eventtarget::EventTarget; +use crate::dom::globalscope::GlobalScope; +use crate::dom::window::Window; +use dom_struct::dom_struct; + +#[dom_struct] +pub struct MediaDevices { + eventtarget: EventTarget, +} + +impl MediaDevices { + pub fn new_inherited() -> MediaDevices { + MediaDevices { + eventtarget: EventTarget::new_inherited(), + } + } + + pub fn new(global: &GlobalScope) -> DomRoot<MediaDevices> { + reflect_dom_object( + Box::new(MediaDevices::new_inherited()), + global, + MediaDevicesBinding::Wrap, + ) + } +} diff --git a/components/script/dom/mod.rs b/components/script/dom/mod.rs index 3dc7f530933..6d7dbcc92ab 100644 --- a/components/script/dom/mod.rs +++ b/components/script/dom/mod.rs @@ -389,6 +389,7 @@ pub mod imagedata; pub mod inputevent; pub mod keyboardevent; pub mod location; +pub mod mediadevices; pub mod mediaerror; pub mod medialist; pub mod mediaquerylist; diff --git a/components/script/dom/webidls/MediaDevices.webidl b/components/script/dom/webidls/MediaDevices.webidl new file mode 100644 index 00000000000..d22dbb2dff4 --- /dev/null +++ b/components/script/dom/webidls/MediaDevices.webidl @@ -0,0 +1,88 @@ +/* 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-mediadevices + +[Exposed=Window, +SecureContext, Pref="dom.webrtc.enabled"] +interface MediaDevices : EventTarget { + // attribute EventHandler ondevicechange; + // Promise<sequence<MediaDeviceInfo>> enumerateDevices(); +}; + +partial interface Navigator { + // [SameObject, SecureContext] + // readonly attribute MediaDevices mediaDevices; +}; + +partial interface MediaDevices { + // MediaTrackSupportedConstraints getSupportedConstraints(); + // Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints); +}; + + +dictionary MediaStreamConstraints { + // (boolean or MediaTrackConstraints) video = false; + // (boolean or MediaTrackConstraints) audio = false; + boolean video = false; + boolean audio = false; +}; + +// dictionary DoubleRange { +// double max; +// double min; +// }; + +// dictionary ConstrainDoubleRange : DoubleRange { +// double exact; +// double ideal; +// }; + +// dictionary ULongRange { +// [Clamp] unsigned long max; +// [Clamp] unsigned long min; +// }; + +// dictionary ConstrainULongRange : ULongRange { +// [Clamp] unsigned long exact; +// [Clamp] unsigned long ideal; +// }; + +// dictionary ConstrainBooleanParameters { +// boolean exact; +// boolean ideal; +// }; + +// dictionary ConstrainDOMStringParameters { +// (DOMString or sequence<DOMString>) exact; +// (DOMString or sequence<DOMString>) ideal; +// }; + +// dictionary MediaTrackConstraints : MediaTrackConstraintSet { +// sequence<MediaTrackConstraintSet> advanced; +// }; + +// typedef ([Clamp] unsigned long or ConstrainULongRange) ConstrainULong; +// typedef (double or ConstrainDoubleRange) ConstrainDouble; +// typedef (boolean or ConstrainBooleanParameters) ConstrainBoolean; +// typedef (DOMString or sequence<DOMString> or ConstrainDOMStringParameters) ConstrainDOMString; + +// dictionary MediaTrackConstraintSet { +// ConstrainULong width; +// ConstrainULong height; +// ConstrainDouble aspectRatio; +// ConstrainDouble frameRate; +// ConstrainDOMString facingMode; +// ConstrainDOMString resizeMode; +// ConstrainDouble volume; +// ConstrainULong sampleRate; +// ConstrainULong sampleSize; +// ConstrainBoolean echoCancellation; +// ConstrainBoolean autoGainControl; +// ConstrainBoolean noiseSuppression; +// ConstrainDouble latency; +// ConstrainULong channelCount; +// ConstrainDOMString deviceId; +// ConstrainDOMString groupId; +// }; |