blob: 7c66543a60534b8bdd774de49eac0bee89e7d259 [file] [log] [blame]
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
//
// API docs from [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web).
// Attributions and copyright licensing by Mozilla Contributors is licensed
// under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/.
// Generated from Web IDL definitions.
@JS()
library;
import 'dart:js_interop';
import 'dom.dart';
import 'html.dart';
import 'webidl.dart';
typedef MediaKeysRequirement = String;
typedef MediaKeySessionType = String;
typedef HDCPVersion = String;
typedef MediaKeySessionClosedReason = String;
typedef MediaKeyStatus = String;
typedef MediaKeyMessageType = String;
extension type MediaKeySystemConfiguration._(JSObject _) implements JSObject {
external factory MediaKeySystemConfiguration({
String label,
JSArray<JSString> initDataTypes,
JSArray<MediaKeySystemMediaCapability> audioCapabilities,
JSArray<MediaKeySystemMediaCapability> videoCapabilities,
MediaKeysRequirement distinctiveIdentifier,
MediaKeysRequirement persistentState,
JSArray<JSString> sessionTypes,
});
external set label(String value);
external String get label;
external set initDataTypes(JSArray<JSString> value);
external JSArray<JSString> get initDataTypes;
external set audioCapabilities(JSArray<MediaKeySystemMediaCapability> value);
external JSArray<MediaKeySystemMediaCapability> get audioCapabilities;
external set videoCapabilities(JSArray<MediaKeySystemMediaCapability> value);
external JSArray<MediaKeySystemMediaCapability> get videoCapabilities;
external set distinctiveIdentifier(MediaKeysRequirement value);
external MediaKeysRequirement get distinctiveIdentifier;
external set persistentState(MediaKeysRequirement value);
external MediaKeysRequirement get persistentState;
external set sessionTypes(JSArray<JSString> value);
external JSArray<JSString> get sessionTypes;
}
extension type MediaKeySystemMediaCapability._(JSObject _) implements JSObject {
external factory MediaKeySystemMediaCapability({
String contentType,
String? encryptionScheme,
String robustness,
});
external set contentType(String value);
external String get contentType;
external set encryptionScheme(String? value);
external String? get encryptionScheme;
external set robustness(String value);
external String get robustness;
}
/// The **`MediaKeySystemAccess`** interface of the
/// [Encrypted Media Extensions API](https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API)
/// provides access to a Key System for decryption and/or a content protection
/// provider. You can request an instance of this object using the
/// [Navigator.requestMediaKeySystemAccess] method.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess).
extension type MediaKeySystemAccess._(JSObject _) implements JSObject {
/// The `MediaKeySystemAccess.getConfiguration()` method returns an object
/// with the supported combination of
/// the following configuration options:
///
/// - `initDataTypes`
/// - : Returns a list of supported initialization data type names. An initialization data type is a string indicating the format of the initialization data.
/// - `audioCapabilities`
/// - : Returns a list of supported audio type and capability pairs.
/// - `videoCapabilities`
/// - : Returns a list of supported video type and capability pairs.
/// - `distinctiveIdentifier`
/// - : Indicates whether a persistent distinctive identifier is required.
/// - `persistentState`
/// - : Indicates whether the ability to persist state is required.
external MediaKeySystemConfiguration getConfiguration();
/// The `MediaKeySystemAccess.createMediaKeys()` method returns a
/// `Promise` that resolves to a new [MediaKeys] object.
external JSPromise<MediaKeys> createMediaKeys();
external String get keySystem;
}
/// The **`MediaKeys`** interface of
/// [Encrypted Media Extensions API](https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API)
/// represents a set of keys that an associated [HTMLMediaElement] can use for
/// decryption of media data during playback.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/MediaKeys).
extension type MediaKeys._(JSObject _) implements JSObject {
/// The `MediaKeys.createSession()` method returns a new
/// [MediaKeySession] object, which represents a context for message exchange
/// with a content decryption module (CDM).
external MediaKeySession createSession([MediaKeySessionType sessionType]);
external JSPromise<JSString> getStatusForPolicy([MediaKeysPolicy policy]);
/// The **`MediaKeys.setServerCertificate()`** method provides a
/// server certificate to be used to encrypt messages to the license server.
external JSPromise<JSBoolean> setServerCertificate(
BufferSource serverCertificate);
}
extension type MediaKeysPolicy._(JSObject _) implements JSObject {
external factory MediaKeysPolicy({HDCPVersion minHdcpVersion});
external set minHdcpVersion(HDCPVersion value);
external HDCPVersion get minHdcpVersion;
}
/// The **`MediaKeySession`** interface of the
/// [Encrypted Media Extensions API](https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API)
/// represents a context for message exchange with a content decryption module
/// (CDM).
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySession).
extension type MediaKeySession._(JSObject _) implements EventTarget, JSObject {
/// The `MediaKeySession.generateRequest()` method returns a
/// `Promise` after generating a media request based on initialization data.
external JSPromise<JSAny?> generateRequest(
String initDataType,
BufferSource initData,
);
/// The `MediaKeySession.load()` method returns a `Promise` that
/// resolves to a boolean value after loading data for a specified session
/// object.
external JSPromise<JSBoolean> load(String sessionId);
/// The `MediaKeySession.update()` method loads messages and licenses to the
/// CDM, and then returns a `Promise` .
external JSPromise<JSAny?> update(BufferSource response);
/// The `MediaKeySession.close()` method notifies that the current media
/// session
/// is no longer needed, and that the content decryption module should release
/// any resources
/// associated with this object and close it. Then, it returns a `Promise`.
external JSPromise<JSAny?> close();
/// The `MediaKeySession.remove()` method returns a `Promise` after removing
/// any session data associated with the current object.
external JSPromise<JSAny?> remove();
external String get sessionId;
external num get expiration;
external JSPromise<JSString> get closed;
external MediaKeyStatusMap get keyStatuses;
external set onkeystatuseschange(EventHandler value);
external EventHandler get onkeystatuseschange;
external set onmessage(EventHandler value);
external EventHandler get onmessage;
}
/// The **`MediaKeyStatusMap`** interface of the
/// [Encrypted Media Extensions API](https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API)
/// is a read-only map of media key statuses by key IDs.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap).
extension type MediaKeyStatusMap._(JSObject _) implements JSObject {
/// The **`has`** property of the
/// [MediaKeyStatusMap] interface returns a `Boolean`, asserting
/// whether a value has been associated with the given key.
external bool has(BufferSource keyId);
/// The **`get`** property of the
/// [MediaKeyStatusMap] interface returns the value associated with the given
/// key, or `undefined` if there is none.
external MediaKeyStatus? get(BufferSource keyId);
external int get size;
}
/// The **`MediaKeyMessageEvent`** interface of the
/// [Encrypted Media Extensions API](https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API)
/// contains the content and related data when the content decryption module
/// generates a message for the session.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyMessageEvent).
extension type MediaKeyMessageEvent._(JSObject _) implements Event, JSObject {
external factory MediaKeyMessageEvent(
String type,
MediaKeyMessageEventInit eventInitDict,
);
external MediaKeyMessageType get messageType;
external JSArrayBuffer get message;
}
extension type MediaKeyMessageEventInit._(JSObject _)
implements EventInit, JSObject {
external factory MediaKeyMessageEventInit({
bool bubbles,
bool cancelable,
bool composed,
required MediaKeyMessageType messageType,
required JSArrayBuffer message,
});
external set messageType(MediaKeyMessageType value);
external MediaKeyMessageType get messageType;
external set message(JSArrayBuffer value);
external JSArrayBuffer get message;
}
/// The **`MediaEncryptedEvent`** interface of the
/// [Encrypted Media Extensions API](https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API)
/// contains the information associated with an
/// [HTMLMediaElement/encrypted_event] event sent to a [HTMLMediaElement] when
/// some initialization data is encountered in the media.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent).
extension type MediaEncryptedEvent._(JSObject _) implements Event, JSObject {
external factory MediaEncryptedEvent(
String type, [
MediaEncryptedEventInit eventInitDict,
]);
external String get initDataType;
external JSArrayBuffer? get initData;
}
extension type MediaEncryptedEventInit._(JSObject _)
implements EventInit, JSObject {
external factory MediaEncryptedEventInit({
bool bubbles,
bool cancelable,
bool composed,
String initDataType,
JSArrayBuffer? initData,
});
external set initDataType(String value);
external String get initDataType;
external set initData(JSArrayBuffer? value);
external JSArrayBuffer? get initData;
}