Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Side by Side Diff: third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/syntax-mediakeys.js

Issue 2546853003: Add W3C encrypted-media tests (Closed)
Patch Set: rebase now that content files landed Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698