tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>