| Index: LayoutTests/media/encrypted-media/encrypted-media-utils.js
|
| diff --git a/LayoutTests/media/encrypted-media/encrypted-media-utils.js b/LayoutTests/media/encrypted-media/encrypted-media-utils.js
|
| index 970f07affec42e42ec0ca709c7c607a64c1083c7..755c6d22f9d5280a38aa5dd15f495960289856b6 100644
|
| --- a/LayoutTests/media/encrypted-media/encrypted-media-utils.js
|
| +++ b/LayoutTests/media/encrypted-media/encrypted-media-utils.js
|
| @@ -12,47 +12,57 @@ function consoleWrite(text)
|
| console.appendChild(span);
|
| }
|
|
|
| -// FIXME: Detect EME support rather than just general container support.
|
| -// http://crbug.com/441585
|
| -// For now, assume that implementations that support a container type for clear
|
| -// content and are running these tests also support that container with EME.
|
| -// The element used for this will is not released to avoid interfering with the
|
| -// ActiveDOMObject counts in the lifetime tests.
|
| -var canPlayTypeElement = new Audio();
|
| -var isWebMSupported = ('' != canPlayTypeElement.canPlayType('video/webm'));
|
| -var isCencSupported = ('' != canPlayTypeElement.canPlayType('video/mp4'));
|
| -
|
| +// Returns a promise that is fulfilled with true if |initDataType| is supported,
|
| +// or false if not.
|
| function isInitDataTypeSupported(initDataType)
|
| {
|
| - var result = false;
|
| - switch (initDataType) {
|
| - case 'webm':
|
| - result = isWebMSupported;
|
| - break;
|
| - case 'cenc':
|
| - result = isCencSupported;
|
| - break;
|
| - default:
|
| - result = false;
|
| - }
|
| -
|
| - return result;
|
| + return navigator.requestMediaKeySystemAccess(
|
| + "org.w3.clearkey", [{ initDataTypes : [initDataType] }])
|
| + .then(function() { return(true); }, function() { return(false); });
|
| }
|
|
|
| -
|
| -function getInitDataType()
|
| +// Returns a promise that is fulfilled with an initDataType that is supported,
|
| +// rejected if neither 'webm' or 'cenc' are supported.
|
| +function getSupportedInitDataType()
|
| {
|
| - if (isInitDataTypeSupported('webm'))
|
| - return 'webm';
|
| - if (isInitDataTypeSupported('cenc'))
|
| - return 'cenc';
|
| - throw 'No supported Initialization Data Types';
|
| + return isInitDataTypeSupported('webm').then(function(result) {
|
| + if (result) {
|
| + return Promise.resolve('webm');
|
| + }
|
| + return isInitDataTypeSupported('cenc').then(function(result) {
|
| + if (result) {
|
| + return Promise.resolve('cenc');
|
| + }
|
| + return Promise.reject('No supported initDataType.');
|
| + });
|
| + });
|
| }
|
|
|
| function getInitData(initDataType)
|
| {
|
| - // FIXME: This should be dependent on initDataType.
|
| - return new Uint8Array([ 0, 1, 2, 3, 4, 5, 6, 7 ]);
|
| + if (initDataType == 'webm') {
|
| + return new Uint8Array([
|
| + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
| + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
|
| + ]);
|
| + }
|
| +
|
| + if (initDataType == 'cenc') {
|
| + return new Uint8Array([
|
| + 0x00, 0x00, 0x00, 0x00, // size = 0
|
| + 0x70, 0x73, 0x73, 0x68, // 'pssh'
|
| + 0x01, // version = 1
|
| + 0x00, 0x00, 0x00, // flags
|
| + 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID
|
| + 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B,
|
| + 0x00, 0x00, 0x00, 0x01, // key count
|
| + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, // key
|
| + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
| + 0x00, 0x00, 0x00, 0x00 // datasize
|
| + ]);
|
| + }
|
| +
|
| + throw 'initDataType ' + initDataType + ' not supported.';
|
| }
|
|
|
| function waitForEventAndRunStep(eventName, element, func, stepTest)
|
| @@ -212,7 +222,7 @@ function forceTestFailureFromPromise(test, error, message)
|
| if (message)
|
| consoleWrite(message + ': ' + error.message);
|
| else if (error)
|
| - consoleWrite(error.message);
|
| + consoleWrite(error);
|
|
|
| test.force_timeout();
|
| test.done();
|
|
|