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

Side by Side Diff: LayoutTests/media/encrypted-media/encrypted-media-v2-syntax.html

Issue 568033003: Implement MediaKeySession close() and remove() (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 3 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 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head> 3 <head>
4 <title>Test EME syntax</title> 4 <title>Test EME syntax</title>
5 <script src="encrypted-media-utils.js"></script> 5 <script src="encrypted-media-utils.js"></script>
6 <script src="../../resources/testharness.js"></script> 6 <script src="../../resources/testharness.js"></script>
7 <script src="../../resources/testharnessreport.js"></script> 7 <script src="../../resources/testharnessreport.js"></script>
8 </head> 8 </head>
9 <body> 9 <body>
10 <div id="log"></div> 10 <div id="log"></div>
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 assert_true(testCase.isNotSupportedAllowed); 371 assert_true(testCase.isNotSupportedAllowed);
372 return; 372 return;
373 } 373 }
374 374
375 // FIXME: Update this set of tests when done 375 // FIXME: Update this set of tests when done
376 // implementing the latest spec. 376 // implementing the latest spec.
377 assert_equals(typeof mediaKeySession, 'object'); 377 assert_equals(typeof mediaKeySession, 'object');
378 assert_equals(typeof mediaKeySession.addEventListener, 'function '); 378 assert_equals(typeof mediaKeySession.addEventListener, 'function ');
379 assert_equals(typeof mediaKeySession.generateRequest, 'function' ); 379 assert_equals(typeof mediaKeySession.generateRequest, 'function' );
380 assert_equals(typeof mediaKeySession.update, 'function'); 380 assert_equals(typeof mediaKeySession.update, 'function');
381 assert_equals(typeof mediaKeySession.release, 'function'); 381 assert_equals(typeof mediaKeySession.close, 'function');
382 assert_equals(typeof mediaKeySession.remove, 'function');
382 assert_equals(mediaKeySession.error, null); 383 assert_equals(mediaKeySession.error, null);
383 assert_equals(mediaKeySession.sessionId, ''); 384 assert_equals(mediaKeySession.sessionId, '');
384 assert_equals(typeof mediaKeySession.sessionId, 'string'); 385 assert_equals(typeof mediaKeySession.sessionId, 'string');
385 assert_equals(typeof mediaKeySession.onopen, 'undefined'); 386 assert_equals(typeof mediaKeySession.onopen, 'undefined');
386 assert_equals(typeof mediaKeySession.onmessage, 'undefined'); 387 assert_equals(typeof mediaKeySession.onmessage, 'undefined');
387 assert_equals(typeof mediaKeySession.onclose, 'undefined'); 388 assert_equals(typeof mediaKeySession.onclose, 'undefined');
388 assert_equals(typeof mediaKeySession.onerror, 'undefined'); 389 assert_equals(typeof mediaKeySession.onerror, 'undefined');
389 } 390 }
390 391
391 async_test(function(test) 392 async_test(function(test)
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 547
547 assert_not_equals(promises.length, 0); 548 assert_not_equals(promises.length, 0);
548 return Promise.all(promises); 549 return Promise.all(promises);
549 }).then(function(result) { 550 }).then(function(result) {
550 test.done(); 551 test.done();
551 }).catch(function(error) { 552 }).catch(function(error) {
552 forceTestFailureFromPromise(test, error, 'update() tests fai led'); 553 forceTestFailureFromPromise(test, error, 'update() tests fai led');
553 }); 554 });
554 }, 'Test MediaKeySession update().'); 555 }, 'Test MediaKeySession update().');
555 556
556 function create_release_test(mediaKeys, type, initData) 557 function create_close_exception_test(mediaKeys, type, initData)
558 {
559 var mediaKeySession = mediaKeys.createSession();
560 return mediaKeySession.close().then(function(result) {
561 assert_unreached('close() should not succeed if session unin itialized');
562 }).catch(function(error) {
563 assert_equals(error.name, 'InvalidStateError');
564 // Return something so the promise resolves.
565 return Promise.resolve();
566 });
567 }
568
569 async_test(function(test)
570 {
571 MediaKeys.create('org.w3.clearkey').then(function(mediaKeys) {
572 var promises = [];
573
574 if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/webm ')) {
575 promises.push(create_close_exception_test(mediaKeys, 'we bm', getInitData('webm')));
576 }
577
578 if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/mp4' )) {
579 promises.push(create_close_exception_test(mediaKeys, 'ce nc', getInitData('cenc')));
580 }
581
582 assert_not_equals(promises.length, 0);
583 return Promise.all(promises);
584 }).then(function(result) {
585 test.done();
586 }).catch(function(error) {
587 forceTestFailureFromPromise(test, error, 'close() exception tests failed');
588 });
589 }, 'Test MediaKeySession close() exceptions.');
590
591
592 function create_close_test(mediaKeys, type, initData)
557 { 593 {
558 var mediaKeySession = mediaKeys.createSession(); 594 var mediaKeySession = mediaKeys.createSession();
559 var promise = mediaKeySession.generateRequest(type, initData).th en(function(result) { 595 var promise = mediaKeySession.generateRequest(type, initData).th en(function(result) {
560 return mediaKeySession.release(); 596 return mediaKeySession.close();
561 // FIXME: Uncomment once the code supports multiple release() ca lls. 597 }).then(function(result) {
562 // }).then(function(result) { 598 // Call close() again with an extra parameter. The extra
563 // // Call release() again with an extra parameter. The extra 599 // parameter is ignored.
564 // // parameter is ignored. 600 return mediaKeySession.close('extra');
565 // return mediaKeySession.release('extra');
566 }); 601 });
567 return promise; 602 return promise;
568 } 603 }
569 604
570 async_test(function(test) 605 async_test(function(test)
571 { 606 {
572 MediaKeys.create('org.w3.clearkey').then(function(mediaKeys) { 607 MediaKeys.create('org.w3.clearkey').then(function(mediaKeys) {
573 var promises = []; 608 var promises = [];
574 609
575 if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/webm ')) { 610 if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/webm ')) {
576 promises.push(create_release_test(mediaKeys, 'webm', get InitData('webm'))); 611 promises.push(create_close_test(mediaKeys, 'webm', getIn itData('webm')));
577 } 612 }
578 613
579 if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/mp4' )) { 614 if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/mp4' )) {
580 promises.push(create_release_test(mediaKeys, 'cenc', get InitData('cenc'))); 615 promises.push(create_close_test(mediaKeys, 'cenc', getIn itData('cenc')));
581 } 616 }
582 617
583 assert_not_equals(promises.length, 0); 618 assert_not_equals(promises.length, 0);
619 return Promise.all(promises);
620 }).then(function(result) {
621 test.done();
622 }).catch(function(error) {
623 forceTestFailureFromPromise(test, error, 'close() tests fail ed');
624 });
625 }, 'Test MediaKeySession close().');
626
627 function create_remove_exception_test(mediaKeys, type, initData)
628 {
629 // remove() on an uninitialized session should fail.
630 var mediaKeySession = mediaKeys.createSession('temporary');
631 return mediaKeySession.remove().then(function(result) {
632 assert_unreached('remove() should not succeed if session uni nitialized');
633 }).catch(function(error) {
634 assert_equals(error.name, 'InvalidStateError');
635
636 // remove() on a temporary session should fail.
637 return mediaKeySession.generateRequest(type, initData);
638 }).then(function(result) {
639 return mediaKeySession.remove();
640 }).then(function(result) {
641 assert_unreached('remove() should not succeed for temporary sessions');
642 }).catch(function(error) {
643 assert_equals(error.name, 'InvalidAccessError');
644
645 // remove() on a closed persistent session should also fail.
646 mediaKeySession = mediaKeys.createSession('persistent');
647 return mediaKeySession.generateRequest(type, initData);
648 }).then(function(result) {
649 return mediaKeySession.close();
650 }).then(function(result) {
651 return mediaKeySession.remove();
652 }).then(function(result) {
653 assert_unreached('remove() should not succeed for closed per sistent sessions');
654 }).catch(function(error) {
655 assert_equals(error.name, 'InvalidStateError');
656
657 // Return something so the promise resolves.
658 return Promise.resolve();
659 });
660 }
661
662 async_test(function(test)
663 {
664 MediaKeys.create('org.w3.clearkey').then(function(mediaKeys) {
665 var promises = [];
666
667 if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/webm ')) {
668 promises.push(create_remove_exception_test(mediaKeys, 'w ebm', getInitData('webm')));
669 }
670
671 if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/mp4' )) {
672 promises.push(create_remove_exception_test(mediaKeys, 'c enc', getInitData('cenc')));
673 }
674
675 assert_not_equals(promises.length, 0);
676 return Promise.all(promises);
677 }).then(function(result) {
678 test.done();
679 }).catch(function(error) {
680 forceTestFailureFromPromise(test, error, 'remove() exception tests failed');
681 });
682 }, 'Test MediaKeySession remove() exceptions.');
683
684 function create_remove_test(mediaKeys, type, initData)
685 {
686 // ClearKey may not support persistent sessions.
687 var mediaKeySession;
688 try {
689 mediaKeySession = mediaKeys.createSession('persistent');
690 } catch (error) {
691 // Not supported, so return a resolved promise.
692 assert_equals(error.name, 'NotSupportedError');
693 return Promise.resolve();
694 }
695 return mediaKeySession.generateRequest(type, initData).then(func tion(result) {
696 return mediaKeySession.remove();
697 });
698 }
699
700 async_test(function(test)
701 {
702 MediaKeys.create('org.w3.clearkey').then(function(mediaKeys) {
703 var promises = [];
704
705 if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/webm ')) {
706 promises.push(create_remove_test(mediaKeys, 'webm', getI nitData('webm')));
707 }
708
709 if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/mp4' )) {
710 promises.push(create_remove_test(mediaKeys, 'cenc', getI nitData('cenc')));
711 }
712
713 assert_not_equals(promises.length, 0);
584 return Promise.all(promises); 714 return Promise.all(promises);
585 }).then(function(result) { 715 }).then(function(result) {
586 test.done(); 716 test.done();
587 }).catch(function(error) { 717 }).catch(function(error) {
588 forceTestFailureFromPromise(test, error, 'release() tests fa iled'); 718 forceTestFailureFromPromise(test, error, 'remove() tests fai led');
589 }); 719 });
590 }, 'Test MediaKeySession release().'); 720 }, 'Test MediaKeySession remove().');
591 721
592 // FIXME: Add syntax checks for MediaKeys.IsTypeSupported(). 722 // FIXME: Add syntax checks for MediaKeys.IsTypeSupported().
593 // FIXME: Add syntax checks for MediaKeyError and MediaKeySession ev ents. 723 // FIXME: Add syntax checks for MediaKeyError and MediaKeySession ev ents.
594 // FIXME: Add HTMLMediaElement syntax checks, e.g. setMediaKeys, med iakeys, onneedkey. 724 // FIXME: Add HTMLMediaElement syntax checks, e.g. setMediaKeys, med iakeys, onneedkey.
595 </script> 725 </script>
596 </body> 726 </body>
597 </html> 727 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698