test_eme_mfcdm_getstatusforpolicy.html (3242B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test getStatusForPolicy on MFCDM</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.wmf.media-engine.enabled", 2], 20 ["media.eme.playready.enabled", true], 21 ["media.eme.widevine.experiment.enabled", true], 22 // This is used to trigger Widevine CDM installation check 23 ["media.gmp-widevinecdm-l1.enabled", true], 24 ["media.eme.wmf.clearkey.enabled", true], 25 // Use the mock clearkey CDM to create cdm for all other key systems. 26 ["media.eme.wmf.use-mock-cdm-for-external-cdms", true], 27 ], 28 }); 29 }); 30 31 // We expect that all key system have HDCP 2.1 compliant, which is pre-defined 32 // in `WMFClearKeyCDMFactory::IsTypeSupported`. 33 const expectedResults = [ 34 { 35 minHdcpVersion : "1.0", 36 expectedResult : "usable" 37 }, 38 { 39 minHdcpVersion : "1.1", 40 expectedResult : "usable" 41 }, 42 { 43 minHdcpVersion : "1.2", 44 expectedResult : "usable" 45 }, 46 { 47 minHdcpVersion : "1.3", 48 expectedResult : "usable" 49 }, 50 { 51 minHdcpVersion : "1.4", 52 expectedResult : "usable" 53 }, 54 { 55 minHdcpVersion : "2.0", 56 expectedResult : "usable" 57 }, 58 { 59 minHdcpVersion : "2.1", 60 expectedResult : "usable" 61 }, 62 { 63 minHdcpVersion : "2.2", 64 expectedResult : "output-restricted" 65 }, 66 { 67 minHdcpVersion : "2.3", 68 expectedResult : "output-restricted" 69 }, 70 ]; 71 72 const kKeySystems = [ 73 "com.microsoft.playready.recommendation", 74 "com.microsoft.playready.recommendation.3000", 75 "com.microsoft.playready.recommendation.3000.clearlead", 76 "com.widevine.alpha.experiment", 77 "com.widevine.alpha.experiment2", 78 "org.w3.clearkey", 79 ]; 80 81 add_task(async function testGetStatusForPolicy() { 82 for (let keySystem of kKeySystems) { 83 for (let result of expectedResults) { 84 let mediaKey = await createMediaKeysAndSet(keySystem); 85 let video = document.getElementById("v"); 86 is(video.mediaKeys, mediaKey, 87 "Should have set MediaKeys on media element"); 88 let keyStatus = await 89 video.mediaKeys.getStatusForPolicy({minHdcpVersion : result.minHdcpVersion}) 90 .catch(() => ok(false, "getStatusForPolicy failed!")); 91 info(`getStatusForPolicy for HDCP ${result.minHdcpVersion} : ${keyStatus}`); 92 is(keyStatus, result.expectedResult, 93 `For ${keySystem}-${result.minHdcpVersion} : expected ${result.expectedResult}, got ${keyStatus}`); 94 } 95 } 96 }); 97 98 // Helper function 99 function createMediaKeysAndSet(keySystem) { 100 return navigator.requestMediaKeySystemAccess(keySystem, gCencMediaKeySystemConfig) 101 .then(function (access) { 102 return access.createMediaKeys(); 103 }) 104 .then(function (mediaKeys) { 105 document.getElementById("v").setMediaKeys(mediaKeys); 106 return mediaKeys; 107 }); 108 } 109 110 </script> 111 </pre> 112 </body> 113 </html>