Add empty MediaDevices interface

This commit is contained in:
Manish Goregaokar 2019-01-28 12:52:12 -08:00
parent 93a359e528
commit bafbc0e1c0
3 changed files with 123 additions and 0 deletions

View file

@ -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,
)
}
}

View file

@ -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;

View file

@ -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;
// };