mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 759964 - Part 3 - Add nsIDocShell.allowMedia test. r=test
This commit is contained in:
parent
ec5f86dad8
commit
7845cfabb8
@ -357,6 +357,11 @@ MOCHITEST_FILES = \
|
||||
wakelock.ogg \
|
||||
wakelock.ogv \
|
||||
test_bug869040.html \
|
||||
allowMedia.sjs \
|
||||
$(NULL)
|
||||
|
||||
MOCHITEST_CHROME_FILES = \
|
||||
test_allowMedia.html \
|
||||
$(NULL)
|
||||
|
||||
MOCHITEST_BROWSER_FILES = \
|
||||
|
12
content/html/content/test/allowMedia.sjs
Normal file
12
content/html/content/test/allowMedia.sjs
Normal file
@ -0,0 +1,12 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
function handleRequest(req, resp) {
|
||||
resp.setHeader("Cache-Control", "no-cache", false);
|
||||
resp.setHeader("Content-Type", "text/plain", false);
|
||||
|
||||
let stateKey = "allowMediaState";
|
||||
let state = getState(stateKey);
|
||||
setState(stateKey, req.queryString ? "FAIL" : "");
|
||||
resp.write(state || "PASS");
|
||||
}
|
107
content/html/content/test/test_allowMedia.html
Normal file
107
content/html/content/test/test_allowMedia.html
Normal file
@ -0,0 +1,107 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=759964
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for Bug 759964</title>
|
||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
|
||||
<script type="application/javascript">
|
||||
|
||||
/** Test for Bug 759964 **/
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
addLoadEvent(runNextTest);
|
||||
|
||||
var SJS = "http://mochi.test:8888/tests/content/html/content/test/allowMedia.sjs";
|
||||
var TEST_PAGE = "data:text/html,<audio src='" + SJS + "?audio'></audio>";
|
||||
|
||||
var Ci = Components.interfaces;
|
||||
|
||||
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();
|
||||
docshellForWindow(iframe.contentWindow).allowMedia = 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() {
|
||||
var docshell = docshellForWindow(window);
|
||||
docshell.allowMedia = false;
|
||||
|
||||
var iframe = insertIframe();
|
||||
loadIframe(iframe, TEST_PAGE, function () {
|
||||
verifyPass();
|
||||
iframe.remove();
|
||||
docshell.allowMedia = 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";
|
||||
docshellForWindow(iframe.contentWindow).allowMedia = false;
|
||||
loadIframe(iframe, TEST_PAGE, function () {
|
||||
verifyPass();
|
||||
iframe.remove();
|
||||
runNextTest();
|
||||
});
|
||||
},
|
||||
];
|
||||
|
||||
function docshellForWindow(win) {
|
||||
return win.
|
||||
QueryInterface(Ci.nsIInterfaceRequestor).
|
||||
getInterface(Ci.nsIWebNavigation).
|
||||
QueryInterface(Ci.nsIDocShell);
|
||||
}
|
||||
|
||||
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>
|
Loading…
Reference in New Issue
Block a user