OLD | NEW |
---|---|
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 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
369 | 369 |
370 assert_not_equals(sessionPromises.length, 0); | 370 assert_not_equals(sessionPromises.length, 0); |
371 return Promise.all(sessionPromises); | 371 return Promise.all(sessionPromises); |
372 }).then(function(result) { | 372 }).then(function(result) { |
373 test.done(); | 373 test.done(); |
374 }).catch(function(error) { | 374 }).catch(function(error) { |
375 forceTestFailureFromPromise(test, error, 'generateRequest() tests failed'); | 375 forceTestFailureFromPromise(test, error, 'generateRequest() tests failed'); |
376 }); | 376 }); |
377 }, 'Test MediaKeys generateRequest() exceptions.'); | 377 }, 'Test MediaKeys generateRequest() exceptions.'); |
378 | 378 |
379 // FIXME: Add tests for 'persistent-release-message' once supported. | |
380 var kLoadExceptionsTestCases = [ | 379 var kLoadExceptionsTestCases = [ |
381 // Too few parameters. | 380 // Too few parameters. |
382 { | 381 { |
383 exception: 'TypeError', | 382 exception: 'TypeError', |
384 func: function(mk1) { return mk1.createSession('temporary'). load(); } | 383 func: function(mk1) { return mk1.createSession('temporary'). load(); } |
385 }, | 384 }, |
386 { | |
387 exception: 'TypeError', | |
388 func: function(mk2) { return mk2.createSession('persistent-l icense').load(); } | |
389 }, | |
390 // 'temporary' sessions are never allowed, so always return | 385 // 'temporary' sessions are never allowed, so always return |
391 // 'InvalidAccessError'. | 386 // 'InvalidAccessError'. |
392 { | 387 { |
393 exception: 'InvalidAccessError', | 388 exception: 'InvalidAccessError', |
394 func: function(mk3) { return mk3.createSession('temporary'). load(''); } | 389 func: function(mk3) { return mk3.createSession('temporary'). load(''); } |
395 }, | 390 }, |
396 { | 391 { |
397 exception: 'InvalidAccessError', | 392 exception: 'InvalidAccessError', |
398 func: function(mk4) { return mk4.createSession('temporary'). load(1); } | 393 func: function(mk4) { return mk4.createSession('temporary'). load(1); } |
399 }, | 394 }, |
400 { | 395 { |
401 exception: 'InvalidAccessError', | 396 exception: 'InvalidAccessError', |
402 func: function(mk5) { return mk5.createSession('temporary'). load('!@#$%^&*()'); } | 397 func: function(mk5) { return mk5.createSession('temporary'). load('!@#$%^&*()'); } |
403 }, | 398 }, |
404 { | 399 { |
405 exception: 'InvalidAccessError', | 400 exception: 'InvalidAccessError', |
406 func: function(mk6) { return mk6.createSession('temporary'). load('1234'); } | 401 func: function(mk6) { return mk6.createSession('temporary'). load('1234'); } |
407 }, | |
408 // Invalid parameters. | |
409 // For 'persistent' sessions, JS calls .toString() on the | |
410 // parameter if it is not already a string before passing it | |
411 // to code. So tests like mk8 or mk9 pass in "null" or | |
412 // "undefined" as the sessionId. | |
413 { | |
414 exception: 'InvalidAccessError', | |
415 func: function(mk7) { return mk7.createSession('persistent-l icense').load(''); } | |
416 }, | |
417 { | |
418 exception: 'NotSupportedError', | |
419 func: function(mk8) { return mk8.createSession('persistent-l icense').load(null); } | |
420 }, | |
421 { | |
422 exception: 'NotSupportedError', | |
423 func: function(mk9) { return mk9.createSession('persistent-l icense').load(undefined); } | |
424 }, | |
425 { | |
426 exception: 'NotSupportedError', | |
427 func: function(mk10) { return mk10.createSession('persistent -license').load(1); } | |
428 }, | |
429 { | |
430 exception: 'InvalidAccessError', | |
431 func: function(mk11) { return mk11.createSession('persistent -license').load(new Uint8Array(0)); } | |
432 }, | |
433 // Invalid session id. | |
434 { | |
435 exception: 'InvalidAccessError', | |
436 func: function(mk12) { return mk12.createSession('persistent -license').load('!@#$%^&*()'); } | |
437 }, | |
438 // Valid session id (but not supported by Clear Key). | |
439 { | |
440 exception: 'NotSupportedError', | |
441 func: function(mk13) { return mk13.createSession('persistent -license').load('1234'); } | |
442 } | 402 } |
443 ]; | 403 ]; |
444 | 404 |
445 async_test(function(test) | 405 async_test(function(test) |
446 { | 406 { |
447 navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).t hen(function(access) { | 407 navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).t hen(function(access) { |
448 return access.createMediaKeys(); | 408 return access.createMediaKeys(); |
449 }).then(function(mediaKeys) { | 409 }).then(function(mediaKeys) { |
450 var initData = stringToUint8Array('init data'); | 410 var initData = stringToUint8Array('init data'); |
451 var sessionPromises = kLoadExceptionsTestCases.map(function( testCase) { | 411 var sessionPromises = kLoadExceptionsTestCases.map(function( testCase) { |
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
777 forceTestFailureFromPromise(test, error, 'close() tests fail ed'); | 737 forceTestFailureFromPromise(test, error, 'close() tests fail ed'); |
778 }); | 738 }); |
779 }, 'Test MediaKeySession close().'); | 739 }, 'Test MediaKeySession close().'); |
780 | 740 |
781 function create_remove_exception_test(mediaKeys, type, initData) | 741 function create_remove_exception_test(mediaKeys, type, initData) |
782 { | 742 { |
783 // remove() on an uninitialized session should fail. | 743 // remove() on an uninitialized session should fail. |
784 var mediaKeySession = mediaKeys.createSession('temporary'); | 744 var mediaKeySession = mediaKeys.createSession('temporary'); |
785 return mediaKeySession.remove().then(function(result) { | 745 return mediaKeySession.remove().then(function(result) { |
786 assert_unreached('remove() should not succeed if session uni nitialized'); | 746 assert_unreached('remove() should not succeed if session uni nitialized'); |
787 }).catch(function(error) { | 747 }, function(error) { |
788 assert_equals(error.name, 'InvalidStateError'); | 748 assert_equals(error.name, 'InvalidStateError'); |
789 | 749 |
790 // remove() on a temporary session should fail. | 750 // remove() on a temporary session should fail. |
791 return mediaKeySession.generateRequest(type, initData); | 751 return mediaKeySession.generateRequest(type, initData); |
792 }).then(function(result) { | 752 }).then(function(result) { |
793 return mediaKeySession.remove(); | 753 return mediaKeySession.remove(); |
794 }).then(function(result) { | 754 }).then(function(result) { |
795 assert_unreached('remove() should not succeed for temporary sessions'); | 755 assert_unreached('remove() should not succeed for temporary sessions'); |
796 }).catch(function(error) { | 756 }, function(error) { |
797 assert_equals(error.name, 'InvalidAccessError'); | 757 assert_equals(error.name, 'InvalidAccessError'); |
ddorwin
2015/02/20 22:26:57
We should at least have tests that we get NotSuppo
| |
798 | |
799 // remove() on a closed persistent-license session should al so fail. | |
800 mediaKeySession = mediaKeys.createSession('persistent-licens e'); | |
801 return mediaKeySession.generateRequest(type, initData); | |
802 }).then(function(result) { | |
803 return mediaKeySession.close(); | |
804 }).then(function(result) { | |
805 return mediaKeySession.remove(); | |
806 }).then(function(result) { | |
807 assert_unreached('remove() should not succeed for closed per sistent-license sessions'); | |
808 }).catch(function(error) { | |
809 assert_equals(error.name, 'InvalidStateError'); | |
810 | |
811 // Add test for persistent-release-message once supported. | |
812 | |
813 // Return something so the promise resolves. | |
814 return Promise.resolve(); | |
815 }); | 758 }); |
816 } | 759 } |
817 | 760 |
818 async_test(function(test) | 761 async_test(function(test) |
819 { | 762 { |
820 navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).t hen(function(access) { | 763 navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).t hen(function(access) { |
821 return access.createMediaKeys(); | 764 return access.createMediaKeys(); |
822 }).then(function(mediaKeys) { | 765 }).then(function(mediaKeys) { |
823 var promises = []; | 766 var promises = []; |
824 | 767 |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
939 | 882 |
940 // FIXME: Add test for successful setServerCertificate(). Note that | 883 // FIXME: Add test for successful setServerCertificate(). Note that |
941 // Clear Key does not support it. | 884 // Clear Key does not support it. |
942 | 885 |
943 // FIXME: Add syntax checks for MediaKeys.IsTypeSupported(). | 886 // FIXME: Add syntax checks for MediaKeys.IsTypeSupported(). |
944 // FIXME: Add syntax checks for MediaKeyError and MediaKeySession ev ents. | 887 // FIXME: Add syntax checks for MediaKeyError and MediaKeySession ev ents. |
945 // FIXME: Add HTMLMediaElement syntax checks, e.g. setMediaKeys, med iakeys, onencrypted. | 888 // FIXME: Add HTMLMediaElement syntax checks, e.g. setMediaKeys, med iakeys, onencrypted. |
946 </script> | 889 </script> |
947 </body> | 890 </body> |
948 </html> | 891 </html> |
OLD | NEW |