Bug 1302320 - add noaudio icon test for video control. r=jaws
MozReview-Commit-ID: KfrsEJ3mgB6
--- a/toolkit/content/tests/widgets/mochitest.ini
+++ b/toolkit/content/tests/widgets/mochitest.ini
@@ -1,13 +1,14 @@
[DEFAULT]
support-files =
audio.wav
audio.ogg
seek_with_sound.ogg
+ video.ogg
head.js
tree_shared.js
videocontrols_direction-1-ref.html
videocontrols_direction-1a.html
videocontrols_direction-1b.html
videocontrols_direction-1c.html
videocontrols_direction-1d.html
videocontrols_direction-1e.html
@@ -32,10 +33,12 @@ skip-if = toolkit == 'android'
[test_videocontrols_audio.html]
[test_videocontrols_audio_direction.html]
[test_videocontrols_jsdisabled.html]
skip-if = toolkit == 'android' # bug 1272646
[test_videocontrols_standalone.html]
skip-if = toolkit == 'android' # bug 1075573
[test_videocontrols_video_direction.html]
skip-if = os == 'win'
+[test_videocontrols_video_noaudio.html]
+skip-if = toolkit == 'android'
[test_bug898940.html]
[test_videocontrols_error.html]
new file mode 100644
--- /dev/null
+++ b/toolkit/content/tests/widgets/test_videocontrols_video_noaudio.html
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Video controls test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<p id="display"></p>
+
+<div id="content">
+ <video id="video" controls preload="auto"></video>
+</div>
+
+<pre id="test">
+<script clas="testbody" type="application/javascript">
+ SimpleTest.waitForExplicitFinish();
+
+ const domUtils = SpecialPowers.Cc["@mozilla.org/inspector/dom-utils;1"].
+ getService(SpecialPowers.Ci.inIDOMUtils);
+ const video = document.getElementById("video");
+ const muteButton = getElementByAttribute("class", "muteButton");
+ const volumeStack = getElementByAttribute("class", "volumeStack");
+ const testCases = [];
+
+ testCases.push(() => new Promise(resolve => {
+ is(muteButton.getAttribute("noAudio"), "true");
+ is(muteButton.getAttribute("disabled"), "true");
+
+ if (volumeStack) {
+ ok(volumeStack.hidden);
+ }
+
+ resolve();
+ }));
+
+ function executeTestCases(tasks) {
+ return tasks.reduce((promise, task) => promise.then(task), Promise.resolve());
+ }
+
+ function getElementByAttribute(aName, aValue) {
+ const videoControl = domUtils.getChildrenForNode(video, true)[1];
+
+ return SpecialPowers.wrap(document)
+ .getAnonymousElementByAttribute(videoControl, aName, aValue);
+ }
+
+ function loadedmetadata() {
+ executeTestCases(testCases).then(SimpleTest.finish);
+ }
+
+ function startMediaLoad() {
+ video.src = "video.ogg";
+ video.addEventListener("loadedmetadata", loadedmetadata, false);
+ }
+
+ function loadevent() {
+ SpecialPowers.pushPrefEnv({"set": [["media.cache_size", 40000]]}, startMediaLoad);
+ }
+
+ window.addEventListener("load", loadevent, false);
+</script>
+</pre>
+</body>
+</html>