summaryrefslogtreecommitdiffstats
path: root/dom/media/test/can_play_type_webm.js
blob: 315a8ef3d944a6aba4eeb0d6ad3d429a74be02f0 (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
async function check_webm(v, enabled) {
  function check(type, expected) {
    is(
      v.canPlayType(type),
      enabled ? expected : "",
      type + "='" + expected + "'"
    );
  }

  // WebM types
  check("video/webm", "maybe");
  check("audio/webm", "maybe");

  var video = ["vp8", "vp8.0", "vp9", "vp9.0"];
  var audio = ["vorbis", "opus"];

  audio.forEach(function (acodec) {
    check("audio/webm; codecs=" + acodec, "probably");
    check("video/webm; codecs=" + acodec, "probably");
  });
  video.forEach(function (vcodec) {
    check("video/webm; codecs=" + vcodec, "probably");
    audio.forEach(function (acodec) {
      check('video/webm; codecs="' + vcodec + ", " + acodec + '"', "probably");
      check('video/webm; codecs="' + acodec + ", " + vcodec + '"', "probably");
    });
  });

  // Unsupported WebM codecs
  check("video/webm; codecs=xyz", "");
  check("video/webm; codecs=xyz,vorbis", "");
  check("video/webm; codecs=vorbis,xyz", "");

  await SpecialPowers.pushPrefEnv({ set: [["media.av1.enabled", true]] });
  check('video/webm; codecs="av1"', "probably");

  await SpecialPowers.pushPrefEnv({ set: [["media.av1.enabled", false]] });
  check('video/webm; codecs="av1"', "");
}