diff options
Diffstat (limited to 'testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeysystemaccess.js')
-rw-r--r-- | testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeysystemaccess.js | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeysystemaccess.js b/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeysystemaccess.js new file mode 100644 index 0000000000..bbc7b6700b --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeysystemaccess.js @@ -0,0 +1,147 @@ +function runTest(config) { + var keysystem = config.keysystem; + var testname = testnamePrefix(null, config.keysystem); + var initDataType = config.initDataType; + var configuration = { + initDataTypes: [config.initDataType], + audioCapabilities: [{contentType: config.audioType}], + videoCapabilities: [{contentType: config.videoType}], + sessionTypes: ['temporary'] + }; + + var kRequestMediaKeySystemAccessExceptionsTestCases = [ + // Too few parameters. + { + exception: 'TypeError', + func: function () { + return navigator.requestMediaKeySystemAccess(); + } + }, + { + exception: 'TypeError', + func: function () { + return navigator.requestMediaKeySystemAccess(keysystem); + } + }, + // Invalid key systems. Note that JavaScript converts all these + // values into strings by calling toString(), so they fail due + // to the key system not being supported, not due to the type. + { + exception: 'NotSupportedError', + func: function () { + return navigator.requestMediaKeySystemAccess(null, [{}]); + } + }, + { + exception: 'NotSupportedError', + func: function () { + return navigator.requestMediaKeySystemAccess(undefined, [{}]); + } + }, + { + exception: 'NotSupportedError', + func: function () { + return navigator.requestMediaKeySystemAccess(1, [{}]); + } + }, + { + exception: 'NotSupportedError', + func: function () { + return navigator.requestMediaKeySystemAccess('unsupported', [{}]); + } + }, + // Empty keysystem string should be rejected with TypeError. + { + exception: 'TypeError', + func: function () { + return navigator.requestMediaKeySystemAccess('', [{}]); + } + }, + // (new Uint8Array(0)).toString() should return ''. So this case should be the same + // as the above. + { + exception: 'TypeError', + func: function () { + return navigator.requestMediaKeySystemAccess(new Uint8Array(0), [{}]); + } + }, + // Non-ASCII names. + { + exception: 'NotSupportedError', + func: function () { + return navigator.requestMediaKeySystemAccess(keysystem + '\u263A', [{}]); + } + }, + // Empty sequence of MediaKeySystemConfiguration. + { + exception: 'TypeError', + func: function () { + return navigator.requestMediaKeySystemAccess(keysystem, []); + } + }, + // Things that don't convert to valid sequences of MediaKeySystemConfigurations. + { + exception: 'TypeError', + func: function () { + return navigator.requestMediaKeySystemAccess(keysystem, {}); + } + }, + { + exception: 'TypeError', + func: function () { + return navigator.requestMediaKeySystemAccess(keysystem, "invalid"); + } + }, + { + exception: 'TypeError', + func: function () { + return navigator.requestMediaKeySystemAccess(keysystem, [{}, 6]); + } + }, + { + exception: 'TypeError', + func: function () { + return navigator.requestMediaKeySystemAccess(keysystem, ["invalid", "upsupported"]); + } + } + ]; + + function requestMediaKeySystemAccessTestExceptions(){ + return new Promise(function(resolve, reject){ + var createPromises = kRequestMediaKeySystemAccessExceptionsTestCases.map(function (testCase) { + return test_exception(testCase); + }); + Promise.all(createPromises).then(function (result) { + resolve(); + }).catch(function (error) { + reject(error); + }); + }) + } + promise_test(function() { + return requestMediaKeySystemAccessTestExceptions(); + }, testname + ' test requestMediaKeySystemAccess() exceptions.'); + + function requestMediaKeySystemAccessTestAttributes(){ + return new Promise(function(resolve, reject){ + isInitDataTypeSupported(keysystem, initDataType).then(function (isTypeSupported) { + assert_equals(typeof navigator.requestMediaKeySystemAccess, 'function'); + assert_true(isTypeSupported, "initDataType not supported"); + return navigator.requestMediaKeySystemAccess(keysystem, [configuration]); + }).then(function (access) { + assert_not_equals(access, null); + assert_equals(typeof access, 'object'); + assert_equals(access.keySystem, keysystem); + assert_equals(typeof access.getConfiguration, 'function'); + assert_equals(typeof access.createMediaKeys, 'function'); + resolve(); + }).catch(function(error){ + reject(error); + }) + }) + } + promise_test(function() { + return requestMediaKeySystemAccessTestAttributes(); + }, testname + ' test MediaKeySystemAccess attribute syntax.'); + +} |