Index: third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-utils.js |
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-utils.js b/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-utils.js |
index b1e6c9207f295fb506d400ff9161e0960c9b470a..d270037922c1296df69ede2cb60bdf88c7b5a0fa 100644 |
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-utils.js |
+++ b/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-utils.js |
@@ -17,23 +17,8 @@ function consoleWrite(text) |
function isInitDataTypeSupported(initDataType) |
{ |
return navigator.requestMediaKeySystemAccess( |
- "org.w3.clearkey", [{ initDataTypes : [initDataType] }]) |
- .then(function() { return(true); }, function() { return(false); }); |
-} |
- |
-// Returns a promise that is fulfilled with an initDataType that is supported, |
-// rejected if none are supported. |
-function getSupportedInitDataType() |
-{ |
- var configuration = [{ initDataTypes : [ 'webm', 'cenc', 'keyids' ] }]; |
- return navigator.requestMediaKeySystemAccess('org.w3.clearkey', configuration) |
- .then(function(access) { |
- var initDataTypes = access.getConfiguration().initDataTypes; |
- assert_greater_than(initDataTypes.length, 0); |
- return Promise.resolve(initDataTypes[0]); |
- }, function(error) { |
- return Promise.reject('No supported initDataType.'); |
- }); |
+ "org.w3.clearkey", getSimpleConfigurationForInitDataType(initDataType)) |
+ .then(function() { return true; }, function() { return false; }); |
} |
function getInitData(initDataType) |
@@ -71,6 +56,54 @@ function getInitData(initDataType) |
throw 'initDataType ' + initDataType + ' not supported.'; |
} |
+// Returns an array of audioCapabilities that includes entries for a set of |
+// codecs that should cover all user agents. |
+function getPossibleAudioCapabilities() |
+{ |
+ return [ |
+ { contentType: 'audio/mp4; codecs="mp4a.40.2"' }, |
+ { contentType: 'audio/webm; codecs="opus"' }, |
+ ]; |
+} |
+ |
+// Returns a trivial MediaKeySystemConfiguration that should be accepted, |
+// possibly as a subset of the specified capabilities, by all user agents. |
+function getSimpleConfiguration() |
+{ |
+ return [ { |
+ initDataTypes : [ 'webm', 'cenc', 'keyids' ], |
+ audioCapabilities: getPossibleAudioCapabilities() |
+ } ]; |
+} |
+ |
+// Returns a MediaKeySystemConfiguration for |initDataType| that should be |
+// accepted, possibly as a subset of the specified capabilities, by all |
+// user agents. |
+function getSimpleConfigurationForInitDataType(initDataType) |
+{ |
+ return [ { |
+ initDataTypes: [ initDataType ], |
+ audioCapabilities: getPossibleAudioCapabilities() |
+ } ]; |
+} |
+ |
+// Returns a MediaKeySystemConfiguration for |mediaFile| that specifies |
+// both audio and video capabilities for the specified file.. |
+function getConfigurationForFile(mediaFile) |
+{ |
+ if (mediaFile.toLowerCase().endsWith('webm')) { |
ddorwin
2016/07/20 19:34:20
It would be slightly better if this was .webm.
|
+ return [ { |
+ initDataTypes: [ 'webm' ], |
+ audioCapabilities: [ { contentType: 'audio/webm; codecs="opus"' } ], |
+ videoCapabilities: [ { contentType: 'video/webm; codecs="vp8"' } ] |
+ } ]; |
+ } |
+ |
+ // NOTE: Supporting other mediaFormats is not currently implemented as |
+ // Chromium only tests with WebM files. |
+ throw 'mediaFile ' + mediaFile + ' not supported.'; |
+} |
+ |
function waitForEventAndRunStep(eventName, element, func, stepTest) |
{ |
var eventCallback = function(event) { |
@@ -268,7 +301,7 @@ function createMediaKeys(keyId, key) |
var request = stringToUint8Array(createKeyIDs(keyId)); |
var jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, key))); |
- return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { |
+ return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfigurationForInitDataType('keyids')).then(function(access) { |
return access.createMediaKeys(); |
}).then(function(result) { |
mediaKeys = result; |