diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeys.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeys.js')
-rw-r--r-- | testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeys.js | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeys.js b/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeys.js new file mode 100644 index 000000000..4ec6551e8 --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeys.js @@ -0,0 +1,184 @@ +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'] + }; + + function createMediaKeysAttributeTest() { + return new Promise(function (resolve, reject) { + var access; + isInitDataTypeSupported(keysystem, initDataType).then(function (isTypeSupported) { + assert_equals(typeof navigator.requestMediaKeySystemAccess, 'function'); + assert_true(isTypeSupported, "initDataType should be supported"); + return navigator.requestMediaKeySystemAccess(keysystem, [configuration]); + }).then(function (result) { + access = result; + assert_equals(access.keySystem, keysystem); + return access.createMediaKeys(); + }).then(function (mediaKeys) { + assert_not_equals(mediaKeys, null); + assert_equals(typeof mediaKeys, 'object'); + assert_equals(typeof mediaKeys.createSession, 'function'); + assert_equals(typeof mediaKeys.setServerCertificate, 'function'); + + // Test creation of a second MediaKeys. + // The extra parameter is ignored. + return access.createMediaKeys('extra'); + }).then(function (mediaKeys) { + assert_not_equals(mediaKeys, null); + assert_equals(typeof mediaKeys, 'object'); + assert_equals(typeof mediaKeys.createSession, 'function'); + assert_equals(typeof mediaKeys.setServerCertificate, 'function'); + resolve(); + }).catch(function (error) { + reject(error); + }); + }) + } + + promise_test(function() { + return createMediaKeysAttributeTest(); + }, testname + ' test MediaKeys attribute syntax'); + + var kSetServerCertificateExceptionsTestCases = [ + // Too few parameters. + { + exception: 'TypeError', + func: function (mk) { + return mk.setServerCertificate(); + } + }, + // Invalid parameters. + { + exception: 'TypeError', + func: function (mk) { + return mk.setServerCertificate(''); + } + }, + { + exception: 'TypeError', + func: function (mk) { + return mk.setServerCertificate(null); + } + }, + { + exception: 'TypeError', + func: function (mk) { + return mk.setServerCertificate(undefined); + } + }, + { + exception: 'TypeError', + func: function (mk) { + return mk.setServerCertificate(1); + } + }, + // Empty array. + { + exception: 'TypeError', + func: function (mk) { + return mk.setServerCertificate(new Uint8Array(0)); + } + } + ]; + + + function setServerCertificateTestExceptions() { + 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) { + return access.createMediaKeys(); + }).then(function (mediaKeys) { + var promises = kSetServerCertificateExceptionsTestCases.map(function (testCase) { + return test_exception(testCase, mediaKeys); + }); + assert_not_equals(promises.length, 0); + return Promise.all(promises); + }).then(function () { + resolve(); + }).catch(function (error) { + reject(error); + }); + }) + } + promise_test(function() { + return setServerCertificateTestExceptions(); + }, testname + ' test MediaKeys setServerCertificate() exceptions.'); + + // All calls to |func| in this group resolve. setServerCertificate with these cert may either resolve with true + // for clearkey or throw a DOMException. + var kSetServerCertificateTestCases = [ + { + // Pass in ArrayBufferView + func: function (mk) { + var cert = new Uint8Array(200); + assert_true(ArrayBuffer.isView(cert)); + + return new Promise(function (resolve, reject) { + mk.setServerCertificate(cert).then(function (value) { + resolve(value); + }).catch(function (error) { + if (Object.prototype.toString.call(error) === "[object DOMException]") { + resolve(false); + } + }); + }) + }, + expected: false + }, + { + // Pass in ArrayBuffer. + func: function (mk) { + var cert = new ArrayBuffer(200); + assert_false(ArrayBuffer.isView(cert)); + return new Promise(function (resolve) { + mk.setServerCertificate(cert).then(function (resolveValue) { + resolve(resolveValue); + }).catch(function (error) { + if (Object.prototype.toString.call(error) === "[object DOMException]") { + resolve(false); + } + }); + }) + }, + expected: false + } + ]; + function setServerCertificateTest(){ + return new Promise(function(resolve, reject){ + var expected_result; + 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) { + return access.createMediaKeys(); + }).then(function (mediaKeys) { + var promises = kSetServerCertificateTestCases.map(function (testCase) { + return testCase.func.call(null, mediaKeys); + }); + expected_result = kSetServerCertificateTestCases.map(function (testCase) { + return testCase.expected; + }); + assert_not_equals(promises.length, 0); + return Promise.all(promises); + }).then(function (result) { + assert_array_equals(result, expected_result); + resolve(); + }).catch(function (error) { + reject(error); + }); + }) + } + promise_test(function() { + return setServerCertificateTest(); + }, testname + ' test MediaKeys setServerCertificate() syntax with non-empty certificate.'); +} |