| Index: third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/syntax-mediakeys.js
|
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/syntax-mediakeys.js b/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/syntax-mediakeys.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4ec6551e8fd73e6dd6007dc8483a0fed9939b76c
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/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.');
|
| +}
|
|
|