OLD | NEW |
(Empty) | |
| 1 function runTest(config) { |
| 2 var keysystem = config.keysystem; |
| 3 var testname = testnamePrefix(null, config.keysystem); |
| 4 var initDataType = config.initDataType; |
| 5 var configuration = { |
| 6 initDataTypes: [config.initDataType], |
| 7 audioCapabilities: [{contentType: config.audioType}], |
| 8 videoCapabilities: [{contentType: config.videoType}], |
| 9 sessionTypes: ['temporary'] |
| 10 }; |
| 11 |
| 12 function createMediaKeysAttributeTest() { |
| 13 return new Promise(function (resolve, reject) { |
| 14 var access; |
| 15 isInitDataTypeSupported(keysystem, initDataType).then(function (isTy
peSupported) { |
| 16 assert_equals(typeof navigator.requestMediaKeySystemAccess, 'fun
ction'); |
| 17 assert_true(isTypeSupported, "initDataType should be supported")
; |
| 18 return navigator.requestMediaKeySystemAccess(keysystem, [configu
ration]); |
| 19 }).then(function (result) { |
| 20 access = result; |
| 21 assert_equals(access.keySystem, keysystem); |
| 22 return access.createMediaKeys(); |
| 23 }).then(function (mediaKeys) { |
| 24 assert_not_equals(mediaKeys, null); |
| 25 assert_equals(typeof mediaKeys, 'object'); |
| 26 assert_equals(typeof mediaKeys.createSession, 'function'); |
| 27 assert_equals(typeof mediaKeys.setServerCertificate, 'function')
; |
| 28 |
| 29 // Test creation of a second MediaKeys. |
| 30 // The extra parameter is ignored. |
| 31 return access.createMediaKeys('extra'); |
| 32 }).then(function (mediaKeys) { |
| 33 assert_not_equals(mediaKeys, null); |
| 34 assert_equals(typeof mediaKeys, 'object'); |
| 35 assert_equals(typeof mediaKeys.createSession, 'function'); |
| 36 assert_equals(typeof mediaKeys.setServerCertificate, 'function')
; |
| 37 resolve(); |
| 38 }).catch(function (error) { |
| 39 reject(error); |
| 40 }); |
| 41 }) |
| 42 } |
| 43 |
| 44 promise_test(function() { |
| 45 return createMediaKeysAttributeTest(); |
| 46 }, testname + ' test MediaKeys attribute syntax'); |
| 47 |
| 48 var kSetServerCertificateExceptionsTestCases = [ |
| 49 // Too few parameters. |
| 50 { |
| 51 exception: 'TypeError', |
| 52 func: function (mk) { |
| 53 return mk.setServerCertificate(); |
| 54 } |
| 55 }, |
| 56 // Invalid parameters. |
| 57 { |
| 58 exception: 'TypeError', |
| 59 func: function (mk) { |
| 60 return mk.setServerCertificate(''); |
| 61 } |
| 62 }, |
| 63 { |
| 64 exception: 'TypeError', |
| 65 func: function (mk) { |
| 66 return mk.setServerCertificate(null); |
| 67 } |
| 68 }, |
| 69 { |
| 70 exception: 'TypeError', |
| 71 func: function (mk) { |
| 72 return mk.setServerCertificate(undefined); |
| 73 } |
| 74 }, |
| 75 { |
| 76 exception: 'TypeError', |
| 77 func: function (mk) { |
| 78 return mk.setServerCertificate(1); |
| 79 } |
| 80 }, |
| 81 // Empty array. |
| 82 { |
| 83 exception: 'TypeError', |
| 84 func: function (mk) { |
| 85 return mk.setServerCertificate(new Uint8Array(0)); |
| 86 } |
| 87 } |
| 88 ]; |
| 89 |
| 90 |
| 91 function setServerCertificateTestExceptions() { |
| 92 return new Promise(function(resolve, reject) { |
| 93 isInitDataTypeSupported(keysystem, initDataType).then(function (isTy
peSupported) { |
| 94 assert_equals(typeof navigator.requestMediaKeySystemAcce
ss, 'function'); |
| 95 assert_true(isTypeSupported, "initDataType not supported
"); |
| 96 return navigator.requestMediaKeySystemAccess(keysystem,
[configuration]); |
| 97 }).then(function (access) { |
| 98 return access.createMediaKeys(); |
| 99 }).then(function (mediaKeys) { |
| 100 var promises = kSetServerCertificateExceptionsTestCases.
map(function (testCase) { |
| 101 return test_exception(testCase, mediaKeys); |
| 102 }); |
| 103 assert_not_equals(promises.length, 0); |
| 104 return Promise.all(promises); |
| 105 }).then(function () { |
| 106 resolve(); |
| 107 }).catch(function (error) { |
| 108 reject(error); |
| 109 }); |
| 110 }) |
| 111 } |
| 112 promise_test(function() { |
| 113 return setServerCertificateTestExceptions(); |
| 114 }, testname + ' test MediaKeys setServerCertificate() exceptions.'); |
| 115 |
| 116 // All calls to |func| in this group resolve. setServerCertificate with thes
e cert may either resolve with true |
| 117 // for clearkey or throw a DOMException. |
| 118 var kSetServerCertificateTestCases = [ |
| 119 { |
| 120 // Pass in ArrayBufferView |
| 121 func: function (mk) { |
| 122 var cert = new Uint8Array(200); |
| 123 assert_true(ArrayBuffer.isView(cert)); |
| 124 |
| 125 return new Promise(function (resolve, reject) { |
| 126 mk.setServerCertificate(cert).then(function (value) { |
| 127 resolve(value); |
| 128 }).catch(function (error) { |
| 129 if (Object.prototype.toString.call(error) === "[object D
OMException]") { |
| 130 resolve(false); |
| 131 } |
| 132 }); |
| 133 }) |
| 134 }, |
| 135 expected: false |
| 136 }, |
| 137 { |
| 138 // Pass in ArrayBuffer. |
| 139 func: function (mk) { |
| 140 var cert = new ArrayBuffer(200); |
| 141 assert_false(ArrayBuffer.isView(cert)); |
| 142 return new Promise(function (resolve) { |
| 143 mk.setServerCertificate(cert).then(function (resolveValue) { |
| 144 resolve(resolveValue); |
| 145 }).catch(function (error) { |
| 146 if (Object.prototype.toString.call(error) === "[object D
OMException]") { |
| 147 resolve(false); |
| 148 } |
| 149 }); |
| 150 }) |
| 151 }, |
| 152 expected: false |
| 153 } |
| 154 ]; |
| 155 function setServerCertificateTest(){ |
| 156 return new Promise(function(resolve, reject){ |
| 157 var expected_result; |
| 158 isInitDataTypeSupported(keysystem, initDataType).then(function (isTy
peSupported) { |
| 159 assert_equals(typeof navigator.requestMediaKeySystemAccess,
'function'); |
| 160 assert_true(isTypeSupported, "initDataType not supported"); |
| 161 return navigator.requestMediaKeySystemAccess(keysystem, [con
figuration]); |
| 162 }).then(function (access) { |
| 163 return access.createMediaKeys(); |
| 164 }).then(function (mediaKeys) { |
| 165 var promises = kSetServerCertificateTestCases.map(function (
testCase) { |
| 166 return testCase.func.call(null, mediaKeys); |
| 167 }); |
| 168 expected_result = kSetServerCertificateTestCases.map(functio
n (testCase) { |
| 169 return testCase.expected; |
| 170 }); |
| 171 assert_not_equals(promises.length, 0); |
| 172 return Promise.all(promises); |
| 173 }).then(function (result) { |
| 174 assert_array_equals(result, expected_result); |
| 175 resolve(); |
| 176 }).catch(function (error) { |
| 177 reject(error); |
| 178 }); |
| 179 }) |
| 180 } |
| 181 promise_test(function() { |
| 182 return setServerCertificateTest(); |
| 183 }, testname + ' test MediaKeys setServerCertificate() syntax with non-empty
certificate.'); |
| 184 } |
OLD | NEW |