test_eme_detach_media_keys.html (1826B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test Encrypted Media Extensions</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 7 <script type="text/javascript" src="manifest.js"></script> 8 <script type="text/javascript" src="eme.js"></script> 9 </head> 10 <body> 11 <pre id="test"> 12 <video id="v" controls></video> 13 <script class="testbody" type="text/javascript"> 14 15 SimpleTest.waitForExplicitFinish(); 16 17 function createAndSet() { 18 return new Promise(function(resolve) { 19 var m; 20 navigator.requestMediaKeySystemAccess(CLEARKEY_KEYSYSTEM, gCencMediaKeySystemConfig) 21 .then(function (access) { 22 return access.createMediaKeys(); 23 }) 24 .then(function (mediaKeys) { 25 m = mediaKeys; 26 return document.getElementById("v").setMediaKeys(mediaKeys); 27 }) 28 .then(function() { 29 resolve(m); 30 }); 31 } 32 )} 33 34 var m1,m2; 35 36 // Test that if we create and set two MediaKeys on one video element, 37 // that if the first MediaKeys we set on the media elemnt is still usable 38 // after the second MediaKeys has been set on the media element. 39 40 createAndSet().then((m) => { 41 m1 = m; // Stash MediaKeys. 42 return createAndSet(); 43 }) 44 .then((m) => { 45 m2 = m; 46 is(document.getElementById("v").mediaKeys, m2, "Should have set MediaKeys on media element"); 47 ok(document.getElementById("v").mediaKeys != m1, "First MediaKeys should no longer be set on media element"); 48 var s = m1.createSession("temporary"); 49 return s.generateRequest("webm", StringToArrayBuffer(atob('YAYeAX5Hfod+V9ANHtANHg=='))); 50 }) 51 .then(() => { 52 ok(true, "Was able to generateRequest using second CDM"); 53 SimpleTest.finish(); 54 }, () => { 55 ok(false, "Was *NOT* able to generateRequest using second CDM"); 56 SimpleTest.finish(); 57 }); 58 59 60 </script> 61 </pre> 62 </body> 63 </html>