Update mediacapture-main IDL file (#9794)
diff --git a/interfaces/mediacapture-main.idl b/interfaces/mediacapture-main.idl
index 0513f8f..d5e39e3 100644
--- a/interfaces/mediacapture-main.idl
+++ b/interfaces/mediacapture-main.idl
@@ -1,39 +1,43 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the Media Capture and Streams spec.
+// See https://w3c.github.io/mediacapture-main/
+
[Exposed=Window,
Constructor,
- Constructor(MediaStream stream),
- Constructor(sequence<MediaStreamTrack> tracks)]
+ Constructor (MediaStream stream),
+ Constructor (sequence<MediaStreamTrack> tracks)]
interface MediaStream : EventTarget {
- readonly attribute DOMString id;
- sequence<MediaStreamTrack> getAudioTracks();
- sequence<MediaStreamTrack> getVideoTracks();
- sequence<MediaStreamTrack> getTracks();
- MediaStreamTrack? getTrackById(DOMString trackId);
- void addTrack(MediaStreamTrack track);
- void removeTrack(MediaStreamTrack track);
- MediaStream clone();
- readonly attribute boolean active;
- attribute EventHandler onaddtrack;
- attribute EventHandler onremovetrack;
+ readonly attribute DOMString id;
+ sequence<MediaStreamTrack> getAudioTracks ();
+ sequence<MediaStreamTrack> getVideoTracks ();
+ sequence<MediaStreamTrack> getTracks ();
+ MediaStreamTrack? getTrackById (DOMString trackId);
+ void addTrack (MediaStreamTrack track);
+ void removeTrack (MediaStreamTrack track);
+ MediaStream clone ();
+ readonly attribute boolean active;
+ attribute EventHandler onaddtrack;
+ attribute EventHandler onremovetrack;
};
[Exposed=Window]
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<void> applyConstraints(optional MediaTrackConstraints constraints);
- attribute EventHandler onoverconstrained;
+ 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<void> applyConstraints (optional MediaTrackConstraints constraints);
+ attribute EventHandler onoverconstrained;
};
enum MediaStreamTrackState {
@@ -42,71 +46,83 @@
};
dictionary MediaTrackSupportedConstraints {
- boolean width = true;
- boolean height = true;
- boolean aspectRatio = true;
- boolean frameRate = true;
- boolean facingMode = true;
- boolean volume = true;
- boolean sampleRate = true;
- boolean sampleSize = true;
- boolean echoCancellation = true;
- boolean latency = true;
- boolean channelCount = true;
- boolean deviceId = true;
- boolean groupId = true;
+ boolean width = true;
+ boolean height = true;
+ boolean aspectRatio = true;
+ boolean frameRate = true;
+ boolean facingMode = true;
+ boolean resizeMode = true;
+ boolean volume = true;
+ boolean sampleRate = true;
+ boolean sampleSize = true;
+ boolean echoCancellation = true;
+ boolean autoGainControl = true;
+ boolean noiseSuppression = true;
+ boolean latency = true;
+ boolean channelCount = true;
+ boolean deviceId = true;
+ boolean groupId = true;
};
dictionary MediaTrackCapabilities {
- LongRange width;
- LongRange height;
- DoubleRange aspectRatio;
- DoubleRange frameRate;
- sequence<DOMString> facingMode;
- DoubleRange volume;
- LongRange sampleRate;
- LongRange sampleSize;
- sequence<boolean> echoCancellation;
- DoubleRange latency;
- LongRange channelCount;
- DOMString deviceId;
- DOMString groupId;
+ ULongRange width;
+ ULongRange height;
+ DoubleRange aspectRatio;
+ DoubleRange frameRate;
+ sequence<DOMString> facingMode;
+ sequence<DOMString> resizeMode;
+ DoubleRange volume;
+ ULongRange sampleRate;
+ ULongRange sampleSize;
+ sequence<boolean> echoCancellation;
+ sequence<boolean> autoGainControl;
+ sequence<boolean> noiseSuppression;
+ DoubleRange latency;
+ ULongRange channelCount;
+ DOMString deviceId;
+ DOMString groupId;
};
-dictionary MediaTrackConstraints : MediaTrackConstraintSet {
- sequence<MediaTrackConstraintSet> advanced;
+ dictionary MediaTrackConstraints : MediaTrackConstraintSet {
+ sequence<MediaTrackConstraintSet> advanced;
};
dictionary MediaTrackConstraintSet {
- ConstrainLong width;
- ConstrainLong height;
- ConstrainDouble aspectRatio;
- ConstrainDouble frameRate;
- ConstrainDOMString facingMode;
- ConstrainDouble volume;
- ConstrainLong sampleRate;
- ConstrainLong sampleSize;
- ConstrainBoolean echoCancellation;
- ConstrainDouble latency;
- ConstrainLong channelCount;
- ConstrainDOMString deviceId;
- ConstrainDOMString groupId;
+ 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;
};
dictionary MediaTrackSettings {
- long width;
- long height;
- double aspectRatio;
- double frameRate;
- DOMString facingMode;
- double volume;
- long sampleRate;
- long sampleSize;
- boolean echoCancellation;
- double latency;
- long channelCount;
- DOMString deviceId;
- DOMString groupId;
+ long width;
+ long height;
+ double aspectRatio;
+ double frameRate;
+ DOMString facingMode;
+ DOMString resizeMode;
+ double volume;
+ long sampleRate;
+ long sampleSize;
+ boolean echoCancellation;
+ boolean autoGainControl;
+ boolean noiseSuppression;
+ double latency;
+ long channelCount;
+ DOMString deviceId;
+ DOMString groupId;
};
enum VideoFacingModeEnum {
@@ -116,11 +132,16 @@
"right"
};
+enum VideoResizeModeEnum {
+ "none",
+ "crop-and-scale"
+};
+
[Exposed=Window,
- Constructor(DOMString type, MediaStreamTrackEventInit eventInitDict)]
+ Constructor (DOMString type, MediaStreamTrackEventInit eventInitDict)]
interface MediaStreamTrackEvent : Event {
[SameObject]
- readonly attribute MediaStreamTrack track;
+ readonly attribute MediaStreamTrack track;
};
dictionary MediaStreamTrackEventInit : EventInit {
@@ -128,36 +149,35 @@
};
[Exposed=Window,
- Constructor(DOMString type, OverconstrainedErrorEventInit eventInitDict)]
+ Constructor (DOMString type, OverconstrainedErrorEventInit eventInitDict)]
interface OverconstrainedErrorEvent : Event {
- readonly attribute OverconstrainedError? error;
+ readonly attribute OverconstrainedError? error;
};
dictionary OverconstrainedErrorEventInit : EventInit {
- OverconstrainedError? error = null;
+ OverconstrainedError? error = null;
};
-[Exposed=Window,
- NoInterfaceObject]
+[Exposed=Window, NoInterfaceObject]
interface NavigatorUserMedia {
[SameObject]
- readonly attribute MediaDevices mediaDevices;
+ readonly attribute MediaDevices mediaDevices;
};
Navigator implements NavigatorUserMedia;
[Exposed=Window]
interface MediaDevices : EventTarget {
- attribute EventHandler ondevicechange;
- Promise<sequence<MediaDeviceInfo>> enumerateDevices();
+ attribute EventHandler ondevicechange;
+ Promise<sequence<MediaDeviceInfo>> enumerateDevices ();
};
[Exposed=Window]
interface MediaDeviceInfo {
- readonly attribute DOMString deviceId;
- readonly attribute MediaDeviceKind kind;
- readonly attribute DOMString label;
- readonly attribute DOMString groupId;
+ readonly attribute DOMString deviceId;
+ readonly attribute MediaDeviceKind kind;
+ readonly attribute DOMString label;
+ readonly attribute DOMString groupId;
[Default] object toJSON();
};
@@ -167,25 +187,22 @@
"videoinput"
};
-[Exposed=Window]
-interface InputDeviceInfo : MediaDeviceInfo {
- MediaTrackCapabilities getCapabilities();
+ [Exposed=Window] interface InputDeviceInfo : MediaDeviceInfo {
+ MediaTrackCapabilities getCapabilities ();
};
partial interface NavigatorUserMedia {
- void getUserMedia(MediaStreamConstraints constraints,
- NavigatorUserMediaSuccessCallback successCallback,
- NavigatorUserMediaErrorCallback errorCallback);
+ void getUserMedia (MediaStreamConstraints constraints, NavigatorUserMediaSuccessCallback successCallback, NavigatorUserMediaErrorCallback errorCallback);
};
partial interface MediaDevices {
- MediaTrackSupportedConstraints getSupportedConstraints();
- Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints);
+ MediaTrackSupportedConstraints getSupportedConstraints ();
+ Promise<MediaStream> getUserMedia (optional MediaStreamConstraints constraints);
};
dictionary MediaStreamConstraints {
- (boolean or MediaTrackConstraints) video = false;
- (boolean or MediaTrackConstraints) audio = false;
+ (boolean or MediaTrackConstraints) video = false;
+ (boolean or MediaTrackConstraints) audio = false;
};
callback NavigatorUserMediaSuccessCallback = void (MediaStream stream);
@@ -196,44 +213,44 @@
[NoInterfaceObject]
interface ConstrainablePattern {
- Capabilities getCapabilities();
- Constraints getConstraints();
- Settings getSettings();
- Promise<void> applyConstraints(optional Constraints constraints);
- attribute EventHandler onoverconstrained;
+ Capabilities getCapabilities ();
+ Constraints getConstraints ();
+ Settings getSettings ();
+ Promise<void> applyConstraints (optional Constraints constraints);
+ attribute EventHandler onoverconstrained;
};
dictionary DoubleRange {
- double max;
- double min;
+ double max;
+ double min;
};
dictionary ConstrainDoubleRange : DoubleRange {
- double exact;
- double ideal;
+ double exact;
+ double ideal;
};
-dictionary LongRange {
- long max;
- long min;
+dictionary ULongRange {
+ [Clamp] unsigned long max;
+ [Clamp] unsigned long min;
};
-dictionary ConstrainLongRange : LongRange {
- long exact;
- long ideal;
+dictionary ConstrainULongRange : ULongRange {
+ [Clamp] unsigned long exact;
+ [Clamp] unsigned long ideal;
};
dictionary ConstrainBooleanParameters {
- boolean exact;
- boolean ideal;
+ boolean exact;
+ boolean ideal;
};
dictionary ConstrainDOMStringParameters {
- (DOMString or sequence<DOMString>) exact;
- (DOMString or sequence<DOMString>) ideal;
+ (DOMString or sequence<DOMString>) exact;
+ (DOMString or sequence<DOMString>) ideal;
};
-typedef (long or ConstrainLongRange) ConstrainLong;
+typedef ([Clamp] unsigned long or ConstrainULongRange) ConstrainULong;
typedef (double or ConstrainDoubleRange) ConstrainDouble;
@@ -251,5 +268,5 @@
};
dictionary Constraints : ConstraintSet {
- sequence<ConstraintSet> advanced;
+ sequence<ConstraintSet> advanced;
};
diff --git a/mediacapture-fromelement/idlharness.html b/mediacapture-fromelement/idlharness.html
index 1dad5c4..500720b 100644
--- a/mediacapture-fromelement/idlharness.html
+++ b/mediacapture-fromelement/idlharness.html
@@ -13,12 +13,6 @@
<media id='media' width=10 height=10/>
<canvas id='canvas' width=10 height=10/>
- <pre id="untested_idl" style="display: none">
- interface HTMLCanvasElement {};
- interface HTMLMediaElement {};
- interface MediaStream {};
- interface MediaStreamTrack {};
- </pre>
<pre id="idl" style="display: none">
// https://w3c.github.io/mediacapture-fromelement/
@@ -37,18 +31,25 @@
</pre>
<script>
- var canvas = document.getElementById('canvas');
- var media = document.getElementById('media');
+ 'use strict';
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
- idl_array.add_idls(document.getElementById("idl").textContent);
- idl_array.add_objects({
- HTMLMediaElement: [media],
- HTMLCanvasElement: [canvas],
- CanvasCaptureMediaStreamTrack: [canvas.captureStream().getTracks()[0]],
- });
- idl_array.test();
+ promise_test(async () => {
+ const main = await fetch('/interfaces/mediacapture-main.idl').then(r => r.text());
+ const html = await fetch('/interfaces/html.idl').then(r => r.text());
+ const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
+
+ var idl_array = new IdlArray();
+ idl_array.add_idls(document.getElementById("idl").textContent);
+ idl_array.add_dependency_idls(main);
+ idl_array.add_dependency_idls(html);
+ idl_array.add_dependency_idls(dom);
+ idl_array.add_objects({
+ HTMLMediaElement: ['document.getElementById("media")'],
+ HTMLCanvasElement: ['document.getElementById("canvas")'],
+ CanvasCaptureMediaStreamTrack: ['canvas.captureStream().getTracks()[0]'],
+ });
+ idl_array.test();
+ }, 'Test mediacapture-fromelement IDL interfaces');
</script>
<div id="log"></div>
</body>
diff --git a/mediacapture-image/idlharness.html b/mediacapture-image/idlharness.html
index 146e0e8..46e82a0 100644
--- a/mediacapture-image/idlharness.html
+++ b/mediacapture-image/idlharness.html
@@ -13,12 +13,6 @@
<body>
<canvas id='canvas' width=10 height=10/>
- <pre id="untested_idl" style="display: none">
- interface Event {};
- interface EventHandler {};
- interface EventTarget {};
- interface MediaStreamTrack {};
- </pre>
<pre id="idl" style="display: none">
// https://w3c.github.io/mediacapture-image
@@ -164,7 +158,14 @@
};
</pre>
- <script>
+<script>
+ 'use strict';
+
+ promise_test(async () => {
+ const main = await fetch('/interfaces/mediacapture-main.idl').then(r => r.text());
+ const html = await fetch('/interfaces/html.idl').then(r => r.text());
+ const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
+
var canvas = document.getElementById('canvas');
var context = canvas.getContext("2d");
context.fillStyle = "red";
@@ -172,13 +173,15 @@
var track = canvas.captureStream().getVideoTracks()[0];
var idl_array = new IdlArray();
- idl_array.add_untested_idls(
- document.getElementById("untested_idl").textContent);
idl_array.add_idls(document.getElementById("idl").textContent);
+ idl_array.add_dependency_idls(main);
+ idl_array.add_dependency_idls(html);
+ idl_array.add_dependency_idls(dom);
idl_array.add_objects({
ImageCapturer : [new ImageCapture(track)]
});
idl_array.test();
+ }, 'Test mediacapture-image IDL interfaces');
</script>
<div id="log"></div>
</body>
diff --git a/mediacapture-record/idlharness.html b/mediacapture-record/idlharness.html
index 2da20a1..01cc151 100644
--- a/mediacapture-record/idlharness.html
+++ b/mediacapture-record/idlharness.html
@@ -13,12 +13,6 @@
<body>
<canvas id='canvas' width=10 height=10/>
- <pre id="untested_idl" style="display: none">
- interface Event {};
- interface EventHandler {};
- interface EventTarget {};
- interface MediaStream {};
- </pre>
<pre id="idl" style="display: none">
// https://w3c.github.io/mediacapture-record/MediaRecorder.html
@@ -81,6 +75,8 @@
</pre>
<script>
promise_test(async function() {
+ const main = await fetch('/interfaces/mediacapture-main.idl').then(r => r.text());
+ const html = await fetch('/interfaces/html.idl').then(r => r.text());
const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
var canvas = document.getElementById('canvas');
@@ -90,9 +86,10 @@
var stream = canvas.captureStream();
var idl_array = new IdlArray();
- idl_array.add_untested_idls(dom, { only: ['EventInit'] });
- idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
idl_array.add_idls(document.getElementById("idl").textContent);
+ idl_array.add_dependency_idls(main);
+ idl_array.add_dependency_idls(html);
+ idl_array.add_dependency_idls(dom);
idl_array.add_objects({
MediaRecorder: [new MediaRecorder(stream)],
});
diff --git a/mediacapture-streams/MediaDevices-IDL-all.html b/mediacapture-streams/MediaDevices-IDL-all.html
index a793bed..e398c8b 100644
--- a/mediacapture-streams/MediaDevices-IDL-all.html
+++ b/mediacapture-streams/MediaDevices-IDL-all.html
@@ -19,29 +19,20 @@
<script>
'use strict';
- function doIdlTest([dom, idlText]) {
+ promise_test(async () => {
+ const main = await fetch('/interfaces/mediacapture-main.idl').then(r => r.text());
+ const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
+ const html = await fetch('/interfaces/html.idl').then(r => r.text());
+
var idl_array = new IdlArray();
-
- // dummies
- idl_array.add_untested_idls(dom, { only: ['Event', 'EventInit']});
- idl_array.add_untested_idls("interface Navigator {};");
- idl_array.add_untested_idls("interface EventTarget {};");
- idl_array.add_untested_idls("interface EventHandler {};");
-
- idl_array.add_idls(idlText);
-
- idl_array.add_objects({"Navigator": ["navigator"]});
- idl_array.add_objects({"MediaDevices":["navigator.mediaDevices"]});
+ idl_array.add_idls(main);
+ idl_array.add_dependency_idls(html);
+ idl_array.add_dependency_idls(dom);
+ idl_array.add_objects({
+ Navigator: ["navigator"],
+ MediaDevices: ["navigator.mediaDevices"]
+ });
idl_array.test();
- }
-
- promise_test(() => {
- return Promise.all(
- [
- '/interfaces/dom.idl',
- '/interfaces/mediacapture-main.idl',
- ].map(url => fetch(url).then(r => r.text())))
- .then(doIdlTest);
}, 'Test driver')
</script>
</body>