Bug 1278198 - Update MediaKeySystemConfiguration and MediaKeys to match draft EME spec. r=smaug
The only thing we're now not up to date on (in terms of WebIDL) is the
"persistent-usage-record" MediaKeySessionType.
MozReview-Commit-ID: 4CKK35HAxKK
--- a/dom/webidl/MediaKeySystemAccess.webidl
+++ b/dom/webidl/MediaKeySystemAccess.webidl
@@ -5,28 +5,35 @@
*
* The origin of this IDL file is
* https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypted-media.html
*
* Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved.
* W3C liability, trademark and document use rules apply.
*/
+enum MediaKeysRequirement {
+ "required",
+ "optional",
+ "not-allowed"
+};
+
dictionary MediaKeySystemMediaCapability {
DOMString contentType = "";
- // TODO: robustness
+ DOMString robustness = "";
};
dictionary MediaKeySystemConfiguration {
DOMString label = "";
- sequence<DOMString> initDataTypes;
- sequence<MediaKeySystemMediaCapability> audioCapabilities;
- sequence<MediaKeySystemMediaCapability> videoCapabilities;
-
- // TODO: distinctiveIdentifier, persistentState, sessionTypes
+ sequence<DOMString> initDataTypes = [];
+ sequence<MediaKeySystemMediaCapability> audioCapabilities = [];
+ sequence<MediaKeySystemMediaCapability> videoCapabilities = [];
+ MediaKeysRequirement distinctiveIdentifier = "optional";
+ MediaKeysRequirement persistentState = "optional";
+ sequence<DOMString> sessionTypes;
};
[Pref="media.eme.apiVisible"]
interface MediaKeySystemAccess {
readonly attribute DOMString keySystem;
[NewObject]
MediaKeySystemConfiguration getConfiguration();
[NewObject]
--- a/dom/webidl/MediaKeys.webidl
+++ b/dom/webidl/MediaKeys.webidl
@@ -5,20 +5,26 @@
*
* The origin of this IDL file is
* https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypted-media.html
*
* Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved.
* W3C liability, trademark and document use rules apply.
*/
-enum SessionType { "temporary", "persistent" };
+// Note: "persistent-usage-record" session type is unsupported yet, as
+// it's marked as "at risk" in the spec, and Chrome doesn't support it.
+enum MediaKeySessionType {
+ "temporary",
+ "persistent-license",
+ // persistent-usage-record,
+};
[Pref="media.eme.apiVisible"]
interface MediaKeys {
readonly attribute DOMString keySystem;
[NewObject, Throws]
- MediaKeySession createSession(optional SessionType sessionType = "temporary");
+ MediaKeySession createSession(optional MediaKeySessionType sessionType = "temporary");
[NewObject]
Promise<void> setServerCertificate((ArrayBufferView or ArrayBuffer) serverCertificate);
};