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

Side by Side Diff: third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-utils.js

Issue 2831963003: EME: Allow temporary sessions to be removed for ClearKey only. (Closed)
Patch Set: rebase Created 3 years, 7 months 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
1 var consoleDiv = null; 1 var consoleDiv = null;
2 2
3 function consoleWrite(text) 3 function consoleWrite(text)
4 { 4 {
5 if (!consoleDiv && document.body) { 5 if (!consoleDiv && document.body) {
6 consoleDiv = document.createElement('div'); 6 consoleDiv = document.createElement('div');
7 document.body.appendChild(consoleDiv); 7 document.body.appendChild(consoleDiv);
8 } 8 }
9 var span = document.createElement('span'); 9 var span = document.createElement('span');
10 span.appendChild(document.createTextNode(text)); 10 span.appendChild(document.createTextNode(text));
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 for (var entry of keyStatuses.entries()) { 175 for (var entry of keyStatuses.entries()) {
176 consoleWrite(arrayBufferAsString(entry[0]) + ": " + entry[1]); 176 consoleWrite(arrayBufferAsString(entry[0]) + ": " + entry[1]);
177 } 177 }
178 consoleWrite("keyStatuses.forEach()"); 178 consoleWrite("keyStatuses.forEach()");
179 keyStatuses.forEach(function(status, keyId) { 179 keyStatuses.forEach(function(status, keyId) {
180 consoleWrite(arrayBufferAsString(keyId) + ": " + status); 180 consoleWrite(arrayBufferAsString(keyId) + ": " + status);
181 }); 181 });
182 } 182 }
183 183
184 // Verify that |keyStatuses| contains just the keys in |keys.expected| 184 // Verify that |keyStatuses| contains just the keys in |keys.expected|
185 // and none of the keys in |keys.unexpected|. All keys should have status 185 // and none of the keys in |keys.unexpected|. All expected keys should have
186 // 'usable'. Example call: verifyKeyStatuses(mediaKeySession.keyStatuses, 186 // status |status|. Example call: verifyKeyStatuses(mediaKeySession.keyStatuses,
187 // { expected: [key1], unexpected: [key2] }); 187 // { expected: [key1], unexpected: [key2] }, 'usable');
188 function verifyKeyStatuses(keyStatuses, keys) 188 function verifyKeyStatuses(keyStatuses, keys, status) {
189 { 189 var expected = keys.expected || [];
190 var expected = keys.expected || []; 190 var unexpected = keys.unexpected || [];
191 var unexpected = keys.unexpected || []; 191 status = status || 'usable';
192 192
193 // |keyStatuses| should have same size as number of |keys.expected|. 193 // |keyStatuses| should have same size as number of |keys.expected|.
194 assert_equals(keyStatuses.size, expected.length); 194 assert_equals(keyStatuses.size, expected.length);
195 195
196 // All |keys.expected| should be found. 196 // All |keys.expected| should be found.
197 expected.map(function(key) { 197 expected.map(function(key) {
198 assert_true(keyStatuses.has(key)); 198 assert_true(keyStatuses.has(key));
199 assert_equals(keyStatuses.get(key), 'usable'); 199 assert_equals(keyStatuses.get(key), status);
200 }); 200 });
201 201
202 // All |keys.unexpected| should not be found. 202 // All |keys.unexpected| should not be found.
203 unexpected.map(function(key) { 203 unexpected.map(function(key) {
204 assert_false(keyStatuses.has(key)); 204 assert_false(keyStatuses.has(key));
205 assert_equals(keyStatuses.get(key), undefined); 205 assert_equals(keyStatuses.get(key), undefined);
206 }); 206 });
207 } 207 }
208 208
209 // Encodes |data| into base64url string. There is no '=' padding, and the 209 // Encodes |data| into base64url string. There is no '=' padding, and the
210 // characters '-' and '_' must be used instead of '+' and '/', respectively. 210 // characters '-' and '_' must be used instead of '+' and '/', respectively.
211 function base64urlEncode(data) 211 function base64urlEncode(data)
212 { 212 {
213 var result = btoa(String.fromCharCode.apply(null, data)); 213 var result = btoa(String.fromCharCode.apply(null, data));
214 return result.replace(/=+$/g, '').replace(/\+/g, "-").replace(/\//g, "_"); 214 return result.replace(/=+$/g, '').replace(/\+/g, "-").replace(/\//g, "_");
215 } 215 }
216 216
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 mediaKeys = result; 307 mediaKeys = result;
308 mediaKeySession = mediaKeys.createSession(); 308 mediaKeySession = mediaKeys.createSession();
309 return mediaKeySession.generateRequest('keyids', request); 309 return mediaKeySession.generateRequest('keyids', request);
310 }).then(function() { 310 }).then(function() {
311 return mediaKeySession.update(jwkSet); 311 return mediaKeySession.update(jwkSet);
312 }).then(function() { 312 }).then(function() {
313 return Promise.resolve(mediaKeys); 313 return Promise.resolve(mediaKeys);
314 }); 314 });
315 } 315 }
316 316
317 // Convert an event into a promise. When |event| is fired on |object|,
318 // call |func| to handle the event and either resolve or reject the promise.
319 // The event is only fired once.
320 function waitForSingleEvent(object, event, func) {
321 return new Promise(function(resolve, reject) {
322 object.addEventListener(event, function listener(e) {
323 object.removeEventListener(event, listener);
324 func(e, resolve, reject);
325 });
326 });
327 };
328
317 // Play the specified |content| on |video|. Returns a promise that is resolved 329 // Play the specified |content| on |video|. Returns a promise that is resolved
318 // after the video plays for |duration| seconds. 330 // after the video plays for |duration| seconds.
319 function playVideoAndWaitForTimeupdate(video, content, duration) 331 function playVideoAndWaitForTimeupdate(video, content, duration)
320 { 332 {
321 video.src = content; 333 video.src = content;
322 video.play(); 334 video.play();
323 return new Promise(function(resolve) { 335 return new Promise(function(resolve) {
324 video.addEventListener('timeupdate', function listener(event) { 336 video.addEventListener('timeupdate', function listener(event) {
325 if (event.target.currentTime < duration) 337 if (event.target.currentTime < duration)
326 return; 338 return;
327 video.removeEventListener('timeupdate', listener); 339 video.removeEventListener('timeupdate', listener);
328 resolve('success'); 340 resolve('success');
329 }); 341 });
330 }); 342 });
331 } 343 }
332 344
333 // Verifies that the number of existing MediaKey and MediaKeySession objects 345 // Verifies that the number of existing MediaKey and MediaKeySession objects
334 // match what is expected. 346 // match what is expected.
335 function verifyMediaKeyAndMediaKeySessionCount( 347 function verifyMediaKeyAndMediaKeySessionCount(
336 expectedMediaKeysCount, expectedMediaKeySessionCount, description) 348 expectedMediaKeysCount, expectedMediaKeySessionCount, description)
337 { 349 {
338 assert_equals(window.internals.mediaKeysCount(), 350 assert_equals(window.internals.mediaKeysCount(),
339 expectedMediaKeysCount, 351 expectedMediaKeysCount,
340 description + ', MediaKeys:'); 352 description + ', MediaKeys:');
341 assert_equals(window.internals.mediaKeySessionCount(), 353 assert_equals(window.internals.mediaKeySessionCount(),
342 expectedMediaKeySessionCount, 354 expectedMediaKeySessionCount,
343 description + ', MediaKeySession:'); 355 description + ', MediaKeySession:');
344 } 356 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698