summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/encrypted-media/scripts/check-encryption-scheme.js
blob: ffab4a34911eb918d5e999e131205b4a9f92d92c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function runTest(config, qualifier)
{
  function checkEncryptionScheme(encryptionScheme)
  {
    var simpleConfig = getSimpleConfiguration();
    assert_greater_than(simpleConfig[0].audioCapabilities.length, 0);
    simpleConfig[0].audioCapabilities.forEach(function(capability) {
      capability.encryptionScheme = encryptionScheme;
    });

    return navigator.requestMediaKeySystemAccess(config.keysystem, simpleConfig)
        .then(
            function(access) {
              var actualConfiguration = access.getConfiguration();
              for (let i = 0; i < actualConfiguration.audioCapabilities.length; i++) {
                const capability = actualConfiguration.audioCapabilities[i];

                // If "encryptionScheme" is not supported, fail.
                if (!('encryptionScheme' in capability)) {
                  return Promise.reject('Not implemented');
                }

                // If "encryptionScheme" is supported, it should be returned.
                assert_equals(capability.encryptionScheme, encryptionScheme);
              }
              return Promise.resolve('Supported');
            },
            function error() {
              // CDM does not support "encryptionScheme". Test should still pass.
              return Promise.resolve('Not supported');
            });
  }

  promise_test(
      () => checkEncryptionScheme('cenc'),
      testnamePrefix(qualifier, config.keysystem) + ' support for "cenc" encryption scheme.');

  promise_test(
      () => checkEncryptionScheme('cbcs'),
      testnamePrefix(qualifier, config.keysystem) + ' support for "cbcs" encryption scheme.');

  promise_test(
      () => checkEncryptionScheme('cbcs-1-9'),
      testnamePrefix(qualifier, config.keysystem) +
          ' support for "cbcs-1-9" encryption scheme.');
}