| // 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<MediaKeySystemAccess> requestMediaKeySystemAccess (DOMString keySystem, sequence<MediaKeySystemConfiguration> supportedConfigurations); |
| }; |
| |
| enum MediaKeysRequirement { |
| "required", |
| "optional", |
| "not-allowed" |
| }; |
| |
| dictionary MediaKeySystemConfiguration { |
| DOMString label = ""; |
| sequence<DOMString> initDataTypes = []; |
| sequence<MediaKeySystemMediaCapability> audioCapabilities = []; |
| sequence<MediaKeySystemMediaCapability> videoCapabilities = []; |
| MediaKeysRequirement distinctiveIdentifier = "optional"; |
| MediaKeysRequirement persistentState = "optional"; |
| sequence<DOMString> sessionTypes; |
| }; |
| |
| dictionary MediaKeySystemMediaCapability { |
| DOMString contentType = ""; |
| DOMString robustness = ""; |
| }; |
| |
| interface MediaKeySystemAccess { |
| readonly attribute DOMString keySystem; |
| MediaKeySystemConfiguration getConfiguration (); |
| Promise<MediaKeys> createMediaKeys (); |
| }; |
| |
| enum MediaKeySessionType { |
| "temporary", |
| "persistent-usage-record", |
| "persistent-license" |
| }; |
| |
| interface MediaKeys { |
| MediaKeySession createSession (optional MediaKeySessionType sessionType = "temporary"); |
| Promise<boolean> setServerCertificate (BufferSource serverCertificate); |
| }; |
| |
| interface MediaKeySession : EventTarget { |
| readonly attribute DOMString sessionId; |
| readonly attribute unrestricted double expiration; |
| readonly attribute Promise<void> closed; |
| readonly attribute MediaKeyStatusMap keyStatuses; |
| attribute EventHandler onkeystatuseschange; |
| attribute EventHandler onmessage; |
| Promise<void> generateRequest (DOMString initDataType, BufferSource initData); |
| Promise<boolean> load (DOMString sessionId); |
| Promise<void> update (BufferSource response); |
| Promise<void> close (); |
| Promise<void> remove (); |
| }; |
| |
| interface MediaKeyStatusMap { |
| iterable<BufferSource,MediaKeyStatus>; |
| 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<void> 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; |
| }; |
| |