test_eme_getstatusforpolicy.html (2386B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test getStatusForPolicy on ClearKey CDM</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 add_task(async function setupTestingPrefs() { 16 await SpecialPowers.pushPrefEnv({ 17 set: [ 18 ["media.eme.hdcp-policy-check.enabled", true], 19 ["media.eme.wmf.clearkey.enabled", false], 20 ], 21 }); 22 }); 23 24 // We expect that ClearKey has HDCP 2.0 compliant. 25 const expectedResults = [ 26 { 27 minHdcpVersion : "1.0", 28 expectedResult : "usable" 29 }, 30 { 31 minHdcpVersion : "1.1", 32 expectedResult : "usable" 33 }, 34 { 35 minHdcpVersion : "1.2", 36 expectedResult : "usable" 37 }, 38 { 39 minHdcpVersion : "1.3", 40 expectedResult : "usable" 41 }, 42 { 43 minHdcpVersion : "1.4", 44 expectedResult : "usable" 45 }, 46 { 47 minHdcpVersion : "2.0", 48 expectedResult : "usable" 49 }, 50 { 51 minHdcpVersion : "2.1", 52 expectedResult : "usable" 53 }, 54 { 55 minHdcpVersion : "2.2", 56 expectedResult : "output-restricted" 57 }, 58 { 59 minHdcpVersion : "2.3", 60 expectedResult : "output-restricted" 61 }, 62 ]; 63 64 add_task(async function testGetStatusForPolicy() { 65 for (let result of expectedResults) { 66 let mediaKey = await createMediaKeysAndSet(); 67 let video = document.getElementById("v"); 68 is(video.mediaKeys, mediaKey, 69 "Should have set MediaKeys on media element"); 70 let keyStatus = await 71 video.mediaKeys.getStatusForPolicy({minHdcpVersion : result.minHdcpVersion}) 72 .catch(() => ok(false, "getStatusForPolicy failed!")); 73 info(`getStatusForPolicy for HDCP ${result.minHdcpVersion} : ${keyStatus}`); 74 is(keyStatus, result.expectedResult, 75 `Expected ${result.expectedResult}, got ${keyStatus}`); 76 } 77 }); 78 79 // Helper function 80 function createMediaKeysAndSet() { 81 return navigator.requestMediaKeySystemAccess(CLEARKEY_KEYSYSTEM, gCencMediaKeySystemConfig) 82 .then(function (access) { 83 return access.createMediaKeys(); 84 }) 85 .then(function (mediaKeys) { 86 document.getElementById("v").setMediaKeys(mediaKeys); 87 return mediaKeys; 88 }); 89 } 90 91 </script> 92 </pre> 93 </body> 94 </html>