Skip to content

Commit d48fa8c

Browse files
committed
add Media Capture and Streams types
1 parent 54cad7d commit d48fa8c

File tree

6 files changed

+375
-81
lines changed

6 files changed

+375
-81
lines changed

baselines/dom.generated.d.ts

Lines changed: 76 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ interface ConstrainDoubleRange extends DoubleRange {
236236
ideal?: number;
237237
}
238238

239-
interface ConstrainLongRange extends LongRange {
239+
interface ConstrainULongRange extends ULongRange {
240240
exact?: number;
241241
ideal?: number;
242242
}
@@ -606,11 +606,6 @@ interface KeyframeEffectOptions extends EffectTiming {
606606
iterationComposite?: IterationCompositeOperation;
607607
}
608608

609-
interface LongRange {
610-
max?: number;
611-
min?: number;
612-
}
613-
614609
interface MediaElementAudioSourceOptions {
615610
mediaElement: HTMLMediaElement;
616611
}
@@ -668,39 +663,45 @@ interface MediaStreamTrackAudioSourceOptions {
668663
}
669664

670665
interface MediaStreamTrackEventInit extends EventInit {
671-
track?: MediaStreamTrack | null;
666+
track: MediaStreamTrack;
672667
}
673668

674669
interface MediaTrackCapabilities {
675-
aspectRatio?: number | DoubleRange;
670+
aspectRatio?: DoubleRange;
671+
autoGainControl?: boolean[];
672+
channelCount?: ULongRange;
676673
deviceId?: string;
677674
echoCancellation?: boolean[];
678-
facingMode?: string;
679-
frameRate?: number | DoubleRange;
675+
facingMode?: string[];
676+
frameRate?: DoubleRange;
680677
groupId?: string;
681-
height?: number | LongRange;
682-
sampleRate?: number | LongRange;
683-
sampleSize?: number | LongRange;
684-
volume?: number | DoubleRange;
685-
width?: number | LongRange;
678+
height?: ULongRange;
679+
latency?: DoubleRange;
680+
noiseSuppression?: boolean[];
681+
resizeMode?: string[];
682+
sampleRate?: ULongRange;
683+
sampleSize?: ULongRange;
684+
volume?: DoubleRange;
685+
width?: ULongRange;
686686
}
687687

688688
interface MediaTrackConstraintSet {
689-
aspectRatio?: number | ConstrainDoubleRange;
690-
channelCount?: number | ConstrainLongRange;
691-
deviceId?: string | string[] | ConstrainDOMStringParameters;
692-
displaySurface?: string | string[] | ConstrainDOMStringParameters;
693-
echoCancellation?: boolean | ConstrainBooleanParameters;
694-
facingMode?: string | string[] | ConstrainDOMStringParameters;
695-
frameRate?: number | ConstrainDoubleRange;
696-
groupId?: string | string[] | ConstrainDOMStringParameters;
697-
height?: number | ConstrainLongRange;
698-
latency?: number | ConstrainDoubleRange;
699-
logicalSurface?: boolean | ConstrainBooleanParameters;
700-
sampleRate?: number | ConstrainLongRange;
701-
sampleSize?: number | ConstrainLongRange;
702-
volume?: number | ConstrainDoubleRange;
703-
width?: number | ConstrainLongRange;
689+
aspectRatio?: ConstrainDouble;
690+
autoGainControl?: ConstrainBoolean;
691+
channelCount?: ConstrainULong;
692+
deviceId?: ConstrainDOMString;
693+
echoCancellation?: ConstrainBoolean;
694+
facingMode?: ConstrainDOMString;
695+
frameRate?: ConstrainDouble;
696+
groupId?: ConstrainDOMString;
697+
height?: ConstrainULong;
698+
latency?: ConstrainDouble;
699+
noiseSuppression?: ConstrainBoolean;
700+
resizeMode?: ConstrainDOMString;
701+
sampleRate?: ConstrainULong;
702+
sampleSize?: ConstrainULong;
703+
volume?: ConstrainDouble;
704+
width?: ConstrainULong;
704705
}
705706

706707
interface MediaTrackConstraints extends MediaTrackConstraintSet {
@@ -709,12 +710,17 @@ interface MediaTrackConstraints extends MediaTrackConstraintSet {
709710

710711
interface MediaTrackSettings {
711712
aspectRatio?: number;
713+
autoGainControl?: boolean;
714+
channelCount?: number;
712715
deviceId?: string;
713716
echoCancellation?: boolean;
714717
facingMode?: string;
715718
frameRate?: number;
716719
groupId?: string;
717720
height?: number;
721+
latency?: number;
722+
noiseSuppression?: boolean;
723+
resizeMode?: string;
718724
sampleRate?: number;
719725
sampleSize?: number;
720726
volume?: number;
@@ -723,12 +729,17 @@ interface MediaTrackSettings {
723729

724730
interface MediaTrackSupportedConstraints {
725731
aspectRatio?: boolean;
732+
autoGainControl?: boolean;
733+
channelCount?: boolean;
726734
deviceId?: boolean;
727735
echoCancellation?: boolean;
728736
facingMode?: boolean;
729737
frameRate?: boolean;
730738
groupId?: boolean;
731739
height?: boolean;
740+
latency?: boolean;
741+
noiseSuppression?: boolean;
742+
resizeMode?: boolean;
732743
sampleRate?: boolean;
733744
sampleSize?: boolean;
734745
volume?: boolean;
@@ -1576,6 +1587,11 @@ interface UIEventInit extends EventInit {
15761587
view?: Window | null;
15771588
}
15781589

1590+
interface ULongRange {
1591+
max?: number;
1592+
min?: number;
1593+
}
1594+
15791595
interface UnderlyingByteSource {
15801596
autoAllocateChunkSize?: number;
15811597
cancel?: ReadableStreamErrorCallback;
@@ -9421,6 +9437,15 @@ interface InnerHTML {
94219437
innerHTML: string;
94229438
}
94239439

9440+
interface InputDeviceInfo extends MediaDeviceInfo {
9441+
getCapabilities(): MediaTrackCapabilities;
9442+
}
9443+
9444+
declare var InputDeviceInfo: {
9445+
prototype: InputDeviceInfo;
9446+
new(): InputDeviceInfo;
9447+
};
9448+
94249449
/** provides a way to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport. */
94259450
interface IntersectionObserver {
94269451
readonly root: Element | null;
@@ -9853,6 +9878,7 @@ interface MediaDeviceInfo {
98539878
readonly groupId: string;
98549879
readonly kind: MediaDeviceKind;
98559880
readonly label: string;
9881+
toJSON(): any;
98569882
}
98579883

98589884
declare var MediaDeviceInfo: {
@@ -9869,7 +9895,7 @@ interface MediaDevices extends EventTarget {
98699895
ondevicechange: ((this: MediaDevices, ev: Event) => any) | null;
98709896
enumerateDevices(): Promise<MediaDeviceInfo[]>;
98719897
getSupportedConstraints(): MediaTrackSupportedConstraints;
9872-
getUserMedia(constraints: MediaStreamConstraints): Promise<MediaStream>;
9898+
getUserMedia(constraints?: MediaStreamConstraints): Promise<MediaStream>;
98739899
addEventListener<K extends keyof MediaDevicesEventMap>(type: K, listener: (this: MediaDevices, ev: MediaDevicesEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
98749900
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
98759901
removeEventListener<K extends keyof MediaDevicesEventMap>(type: K, listener: (this: MediaDevices, ev: MediaDevicesEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
@@ -10081,19 +10107,15 @@ declare var MediaSource: {
1008110107
};
1008210108

1008310109
interface MediaStreamEventMap {
10084-
"active": Event;
1008510110
"addtrack": MediaStreamTrackEvent;
10086-
"inactive": Event;
1008710111
"removetrack": MediaStreamTrackEvent;
1008810112
}
1008910113

1009010114
/** A stream of media content. A stream consists of several tracks such as video or audio tracks. Each track is specified as an instance of MediaStreamTrack. */
1009110115
interface MediaStream extends EventTarget {
1009210116
readonly active: boolean;
1009310117
readonly id: string;
10094-
onactive: ((this: MediaStream, ev: Event) => any) | null;
1009510118
onaddtrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
10096-
oninactive: ((this: MediaStream, ev: Event) => any) | null;
1009710119
onremovetrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
1009810120
addTrack(track: MediaStreamTrack): void;
1009910121
clone(): MediaStream;
@@ -10102,7 +10124,6 @@ interface MediaStream extends EventTarget {
1010210124
getTracks(): MediaStreamTrack[];
1010310125
getVideoTracks(): MediaStreamTrack[];
1010410126
removeTrack(track: MediaStreamTrack): void;
10105-
stop(): void;
1010610127
addEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1010710128
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1010810129
removeEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
@@ -10166,7 +10187,7 @@ declare var MediaStreamEvent: {
1016610187
};
1016710188

1016810189
interface MediaStreamTrackEventMap {
10169-
"ended": MediaStreamErrorEvent;
10190+
"ended": Event;
1017010191
"isolationchange": Event;
1017110192
"mute": Event;
1017210193
"overconstrained": MediaStreamErrorEvent;
@@ -10181,15 +10202,13 @@ interface MediaStreamTrack extends EventTarget {
1018110202
readonly kind: string;
1018210203
readonly label: string;
1018310204
readonly muted: boolean;
10184-
onended: ((this: MediaStreamTrack, ev: MediaStreamErrorEvent) => any) | null;
10205+
onended: ((this: MediaStreamTrack, ev: Event) => any) | null;
1018510206
onisolationchange: ((this: MediaStreamTrack, ev: Event) => any) | null;
1018610207
onmute: ((this: MediaStreamTrack, ev: Event) => any) | null;
1018710208
onoverconstrained: ((this: MediaStreamTrack, ev: MediaStreamErrorEvent) => any) | null;
1018810209
onunmute: ((this: MediaStreamTrack, ev: Event) => any) | null;
10189-
readonly readonly: boolean;
1019010210
readonly readyState: MediaStreamTrackState;
10191-
readonly remote: boolean;
10192-
applyConstraints(constraints: MediaTrackConstraints): Promise<void>;
10211+
applyConstraints(constraints?: MediaTrackConstraints): Promise<void>;
1019310212
clone(): MediaStreamTrack;
1019410213
getCapabilities(): MediaTrackCapabilities;
1019510214
getConstraints(): MediaTrackConstraints;
@@ -10221,7 +10240,7 @@ interface MediaStreamTrackEvent extends Event {
1022110240

1022210241
declare var MediaStreamTrackEvent: {
1022310242
prototype: MediaStreamTrackEvent;
10224-
new(typeArg: string, eventInitDict?: MediaStreamTrackEventInit): MediaStreamTrackEvent;
10243+
new(type: string, eventInitDict: MediaStreamTrackEventInit): MediaStreamTrackEvent;
1022510244
};
1022610245

1022710246
/** An interface of the Channel Messaging API allows us to create a new message channel and send data through it via its two MessagePort properties. */
@@ -10521,6 +10540,7 @@ interface Navigator extends NavigatorID, NavigatorOnLine, NavigatorContentUtils,
1052110540
gamepadInputEmulation: GamepadInputEmulationType;
1052210541
readonly geolocation: Geolocation;
1052310542
readonly maxTouchPoints: number;
10543+
readonly mediaDevices: MediaDevices;
1052410544
readonly mimeTypes: MimeTypeArray;
1052510545
readonly msManipulationViewsEnabled: boolean;
1052610546
readonly msMaxTouchPoints: number;
@@ -10531,6 +10551,7 @@ interface Navigator extends NavigatorID, NavigatorOnLine, NavigatorContentUtils,
1053110551
readonly serviceWorker: ServiceWorkerContainer;
1053210552
readonly webdriver: boolean;
1053310553
getGamepads(): (Gamepad | null)[];
10554+
getUserMedia(constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void;
1053410555
getVRDisplays(): Promise<VRDisplay[]>;
1053510556
javaEnabled(): boolean;
1053610557
msLaunchUri(uri: string, successCallback?: MSLaunchUriCallback, noHandlerCallback?: MSLaunchUriCallback): void;
@@ -10962,6 +10983,15 @@ declare var OscillatorNode: {
1096210983
new(context: BaseAudioContext, options?: OscillatorOptions): OscillatorNode;
1096310984
};
1096410985

10986+
interface OverconstrainedError extends Error {
10987+
constraint: string;
10988+
}
10989+
10990+
declare var OverconstrainedError: {
10991+
prototype: OverconstrainedError;
10992+
new(): OverconstrainedError;
10993+
};
10994+
1096510995
interface OverflowEvent extends UIEvent {
1096610996
readonly horizontalOverflow: boolean;
1096710997
readonly orient: number;
@@ -18444,6 +18474,10 @@ type ImageBitmapSource = CanvasImageSource | Blob | ImageData;
1844418474
type OnErrorEventHandler = OnErrorEventHandlerNonNull | null;
1844518475
type OnBeforeUnloadEventHandler = OnBeforeUnloadEventHandlerNonNull | null;
1844618476
type TimerHandler = string | Function;
18477+
type ConstrainULong = number | ConstrainULongRange;
18478+
type ConstrainDouble = number | ConstrainDoubleRange;
18479+
type ConstrainBoolean = boolean | ConstrainBooleanParameters;
18480+
type ConstrainDOMString = string | string[] | ConstrainDOMStringParameters;
1844718481
type PerformanceEntryList = PerformanceEntry[];
1844818482
type VibratePattern = number | number[];
1844918483
type AlgorithmIdentifier = string | Algorithm;
@@ -18470,10 +18504,6 @@ type FormDataEntryValue = File | string;
1847018504
type InsertPosition = "beforebegin" | "afterbegin" | "beforeend" | "afterend";
1847118505
type IDBValidKey = number | string | Date | BufferSource | IDBArrayKey;
1847218506
type MutationRecordType = "attributes" | "characterData" | "childList";
18473-
type ConstrainBoolean = boolean | ConstrainBooleanParameters;
18474-
type ConstrainDOMString = string | string[] | ConstrainDOMStringParameters;
18475-
type ConstrainDouble = number | ConstrainDoubleRange;
18476-
type ConstrainLong = number | ConstrainLongRange;
1847718507
type IDBKeyPath = string;
1847818508
type Transferable = ArrayBuffer | MessagePort | ImageBitmap;
1847918509
type RTCIceGatherCandidate = RTCIceCandidateDictionary | RTCIceCandidateComplete;

inputfiles/addedTypes.json

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1848,6 +1848,43 @@
18481848
"name": "SVGAnimateMotionElement",
18491849
"extends": "SVGAnimationElement",
18501850
"exposed": "Window"
1851+
},
1852+
"MediaStream": {
1853+
"events": {
1854+
"event": [
1855+
{
1856+
"name": "addtrack",
1857+
"type": "MediaStreamTrackEvent"
1858+
},
1859+
{
1860+
"name": "removetrack",
1861+
"type": "MediaStreamTrackEvent"
1862+
}
1863+
]
1864+
}
1865+
},
1866+
"MediaStreamTrack": {
1867+
"events": {
1868+
"event": [
1869+
{
1870+
"name": "overconstrained",
1871+
"type": "MediaStreamErrorEvent"
1872+
}
1873+
]
1874+
}
1875+
},
1876+
"OverconstrainedError": {
1877+
"name": "OverconstrainedError",
1878+
"extends": "Error",
1879+
"exposed": "Window",
1880+
"properties": {
1881+
"property": {
1882+
"constraint": {
1883+
"name": "constraint",
1884+
"type": "DOMString"
1885+
}
1886+
}
1887+
}
18511888
}
18521889
}
18531890
},
@@ -1942,22 +1979,6 @@
19421979
"new-type": "MutationRecordType",
19431980
"override-type": "\"attributes\" | \"characterData\" | \"childList\""
19441981
},
1945-
{
1946-
"new-type": "ConstrainBoolean",
1947-
"override-type": "boolean | ConstrainBooleanParameters"
1948-
},
1949-
{
1950-
"new-type": "ConstrainDOMString",
1951-
"override-type": "string | string[] | ConstrainDOMStringParameters"
1952-
},
1953-
{
1954-
"new-type": "ConstrainDouble",
1955-
"override-type": "number | ConstrainDoubleRange"
1956-
},
1957-
{
1958-
"new-type": "ConstrainLong",
1959-
"override-type": "number | ConstrainLongRange"
1960-
},
19611982
{
19621983
"new-type": "IDBKeyPath",
19631984
"override-type": "string"

0 commit comments

Comments
 (0)