aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2019-01-28 12:52:12 -0800
committerManish Goregaokar <manishsmail@gmail.com>2019-01-29 11:36:27 -0800
commitbafbc0e1c075ffad842984e2d23a1c68e94442b2 (patch)
treec83396a3ce1b76938c0d223afc55f0d9d656ee32
parent93a359e528a3813feaa338fc6020614d3bd7b99b (diff)
downloadservo-bafbc0e1c075ffad842984e2d23a1c68e94442b2.tar.gz
servo-bafbc0e1c075ffad842984e2d23a1c68e94442b2.zip
Add empty MediaDevices interface
-rw-r--r--components/script/dom/mediadevices.rs34
-rw-r--r--components/script/dom/mod.rs1
-rw-r--r--components/script/dom/webidls/MediaDevices.webidl88
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;
+// };