Bug 1476975 - P2. Add mochitests. r=dminor
--- a/dom/media/test/can_play_type_webm.js
+++ b/dom/media/test/can_play_type_webm.js
@@ -1,11 +1,11 @@
-function check_webm(v, enabled) {
+async function check_webm(v, enabled) {
function check(type, expected) {
- is(v.canPlayType(type), enabled ? expected : "", type);
+ 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'];
@@ -21,9 +21,36 @@ function check_webm(v, enabled) {
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", "");
+
+ function getPref(name) {
+ var pref = false;
+ try {
+ pref = SpecialPowers.getBoolPref(name);
+ } catch(ex) { }
+ return pref;
+ }
+
+ function isWindows32() {
+ return navigator.userAgent.includes("Windows") &&
+ !navigator.userAgent.includes("Win64");
+ }
+
+ function isAndroid() {
+ return navigator.userAgent.includes("Android");
+ }
+
+ const haveAv1 = getPref("media.av1.enabled");
+ check("video/webm; codecs=\"av1\"", haveAv1 ? "probably" : "");
+
+ await SpecialPowers.pushPrefEnv({"set": [["media.av1.enabled", true]]});
+ // AV1 is disabled on Windows 32 bits (bug 1475564) and Android (bug 1368843)
+ check("video/webm; codecs=\"av1\"", (isWindows32() || isAndroid()) ? "" : "probably");
+
+ await SpecialPowers.pushPrefEnv({"set": [["media.av1.enabled", false]]});
+ check("video/webm; codecs=\"av1\"", "");
}
--- a/dom/media/test/test_can_play_type_mpeg.html
+++ b/dom/media/test/test_can_play_type_mpeg.html
@@ -98,16 +98,19 @@ function check_mp4(v, enabled) {
check(codec, "");
// But VP9 in MP4 is supported in MSE.
ok(MediaSource.isTypeSupported(codec), "VP9 in MP4 should be supported in MSE");
});
check("video/mp4; codecs=vp9", "");
check("video/mp4; codecs=\"vp9\"", "");
check("video/mp4; codecs=\"vp9.0\"", "");
+
+ // AV1 (disabled until bug 1417050 is fixed)
+ check("video/mp4; codecs=\"av1\"", "");
}
function check_mp3(v, enabled) {
function check(type, expected) {
var ex = enabled ? expected : "";
is(v.canPlayType(type), ex, type + "='" + ex + "'");
}
--- a/dom/media/test/test_can_play_type_webm.html
+++ b/dom/media/test/test_can_play_type_webm.html
@@ -16,14 +16,24 @@ a Bug 566245</a>
<div id="content" style="display: none">
</div>
<video id="v"></video>
<pre id="test">
<script src="can_play_type_webm.js"></script>
<script>
-check_webm(document.getElementById('v'), true);
-mediaTestCleanup();
+ async function runTest() {
+ try {
+ await check_webm(document.getElementById('v'), true);
+ mediaTestCleanup();
+ } catch (e) {
+ info("Exception " + e.message);
+ ok(false, "Threw exception " + e.message);
+ }
+ SimpleTest.finish();
+ }
+ SimpleTest.waitForExplicitFinish();
+ addLoadEvent(runTest);
</script>
</pre>
</body>
</html>