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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=759964
-->
<head>
<meta charset="utf-8">
<title>Test for Bug 759964</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
<script type="application/javascript">
/** Test for Bug 759964 **/
SimpleTest.waitForExplicitFinish();
addLoadEvent(runNextTest);
var SJS = `${location.origin}/tests/dom/html/test/allowMedia.sjs`;
var TEST_PAGE = "data:text/html,<audio src='" + SJS + "?audio'></audio>";
function runNextTest() {
var test = tests.shift();
if (!test) {
SimpleTest.finish();
return;
}
test();
}
var tests = [
// Set allowMedia = false, load a page with <audio>, verify the <audio>
// doesn't load its source.
function basic() {
var iframe = insertIframe();
SpecialPowers.allowMedia(iframe.contentWindow, false);
loadIframe(iframe, TEST_PAGE, function () {
verifyPass();
iframe.remove();
runNextTest();
});
},
// Set allowMedia = false on parent docshell, load a page with <audio> in a
// child iframe, verify the <audio> doesn't load its source.
function inherit() {
SpecialPowers.allowMedia(window, false);
var iframe = insertIframe();
loadIframe(iframe, TEST_PAGE, function () {
verifyPass();
iframe.remove();
SpecialPowers.allowMedia(window, true);
runNextTest();
});
},
// In a display:none iframe, set allowMedia = false, load a page with <audio>,
// verify the <audio> doesn't load its source.
function displayNone() {
var iframe = insertIframe();
iframe.style.display = "none";
SpecialPowers.allowMedia(iframe.contentWindow, false);
loadIframe(iframe, TEST_PAGE, function () {
verifyPass();
iframe.remove();
runNextTest();
});
},
];
function insertIframe() {
var iframe = document.createElement("iframe");
document.body.appendChild(iframe);
return iframe;
}
function loadIframe(iframe, url, onDone) {
iframe.setAttribute("src", url);
iframe.addEventListener("load", onDone);
}
function verifyPass() {
var xhr = new XMLHttpRequest();
xhr.open("GET", SJS, false);
xhr.send();
is(xhr.responseText, "PASS", "<audio> source should not have been loaded.");
}
</script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=759964">Mozilla Bug 759964</a>
<p id="display">
</p>
</body>
</html>
|