// Encrypted Media Extensions WebIDL // // NOTE: Please update the link below to the specification version from // which this IDL was extracted. // // https://www.w3.org/TR/2016/WD-encrypted-media-20160610/ // + commit 5499821932391ae2c2e53756ae7ab9fae89d5863 // partial interface Navigator { Promise requestMediaKeySystemAccess (DOMString keySystem, sequence supportedConfigurations); }; enum MediaKeysRequirement { "required", "optional", "not-allowed" }; dictionary MediaKeySystemConfiguration { DOMString label = ""; sequence initDataTypes = []; sequence audioCapabilities = []; sequence videoCapabilities = []; MediaKeysRequirement distinctiveIdentifier = "optional"; MediaKeysRequirement persistentState = "optional"; sequence sessionTypes; }; dictionary MediaKeySystemMediaCapability { DOMString contentType = ""; DOMString robustness = ""; }; interface MediaKeySystemAccess { readonly attribute DOMString keySystem; MediaKeySystemConfiguration getConfiguration (); Promise createMediaKeys (); }; enum MediaKeySessionType { "temporary", "persistent-usage-record", "persistent-license" }; interface MediaKeys { MediaKeySession createSession (optional MediaKeySessionType sessionType = "temporary"); Promise setServerCertificate (BufferSource serverCertificate); }; interface MediaKeySession : EventTarget { readonly attribute DOMString sessionId; readonly attribute unrestricted double expiration; readonly attribute Promise closed; readonly attribute MediaKeyStatusMap keyStatuses; attribute EventHandler onkeystatuseschange; attribute EventHandler onmessage; Promise generateRequest (DOMString initDataType, BufferSource initData); Promise load (DOMString sessionId); Promise update (BufferSource response); Promise close (); Promise remove (); }; interface MediaKeyStatusMap { iterable; readonly attribute unsigned long size; boolean has (BufferSource keyId); any get (BufferSource keyId); }; enum MediaKeyStatus { "usable", "expired", "released", "output-restricted", "output-downscaled", "status-pending", "internal-error" }; enum MediaKeyMessageType { "license-request", "license-renewal", "license-release", "individualization-request" }; [Constructor(DOMString type, MediaKeyMessageEventInit eventInitDict)] interface MediaKeyMessageEvent : Event { readonly attribute MediaKeyMessageType messageType; readonly attribute ArrayBuffer message; }; dictionary MediaKeyMessageEventInit : EventInit { required MediaKeyMessageType messageType; required ArrayBuffer message; }; // partial interface HTMLMediaElement : EventTarget { partial interface HTMLMediaElement { readonly attribute MediaKeys? mediaKeys; attribute EventHandler onencrypted; attribute EventHandler onwaitingforkey; Promise setMediaKeys (MediaKeys? mediaKeys); }; [Constructor(DOMString type, optional MediaEncryptedEventInit eventInitDict)] interface MediaEncryptedEvent : Event { readonly attribute DOMString initDataType; readonly attribute ArrayBuffer? initData; }; dictionary MediaEncryptedEventInit : EventInit { DOMString initDataType = ""; ArrayBuffer? initData = null; };