gecko-dev/dom/base/test/test_blocking_image.html
Andrew McCreight 5dec0e0beb Bug 1432992, part 1 - Remove definitions of Ci, Cr, Cc, and Cu. r=florian
This patch was autogenerated by my decomponents.py

It covers almost every file with the extension js, jsm, html, py,
xhtml, or xul.

It removes blank lines after removed lines, when the removed lines are
preceded by either blank lines or the start of a new block. The "start
of a new block" is defined fairly hackily: either the line starts with
//, ends with */, ends with {, <![CDATA[, """ or '''. The first two
cover comments, the third one covers JS, the fourth covers JS embedded
in XUL, and the final two cover JS embedded in Python. This also
applies if the removed line was the first line of the file.

It covers the pattern matching cases like "var {classes: Cc,
interfaces: Ci, utils: Cu, results: Cr} = Components;". It'll remove
the entire thing if they are all either Ci, Cr, Cc or Cu, or it will
remove the appropriate ones and leave the residue behind. If there's
only one behind, then it will turn it into a normal, non-pattern
matching variable definition. (For instance, "const { classes: Cc,
Constructor: CC, interfaces: Ci, utils: Cu } = Components" becomes
"const CC = Components.Constructor".)

MozReview-Commit-ID: DeSHcClQ7cG

--HG--
extra : rebase_source : d9c41878036c1ef7766ef5e91a7005025bc1d72b
2018-02-06 09:36:57 -08:00

110 lines
3.9 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1267075
-->
<title>Test for Bug 1267075</title>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
</head>
<body onload="onLoad()">
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1267075">Mozilla Bug 1267075</a>
<pre id="test">
<script class="testbody" type="text/javascript">
SimpleTest.waitForExplicitFinish();
function onLoad() {
var iframe = document.createElement("iframe");
iframe.onload = function () {
info("iframe loaded");
var winUtils = iframe.contentWindow.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindowUtils);
// load some styles at the agent level
var css = `
img:-moz-suppressed {
color: green
}
img:-moz-broken {
color: red
}
img:-moz-user-disabled {
color: blue
}`;
var sheetURL = "data:text/css," + encodeURIComponent(css);
winUtils.loadSheetUsingURIString(sheetURL, winUtils.AGENT_SHEET);
function imgListener(img) {
return new Promise((resolve, reject) => {
img.addEventListener("load", () => reject());
img.addEventListener("error", () => resolve());
});
}
var doc = iframe.contentDocument;
var img = doc.createElement("img");
var img2 = doc.createElement("img");
var img3 = doc.createElement("img");
// image from HTTP should be blocked.
img.src = "http://example.com/tests/image/test/mochitest/shaver.png";
doc.body.appendChild(img);
imgListener(img).then(() => {
ok(true, "img shouldn't be loaded");
// We can't use matches(":-moz-suppressed") here, as -moz-suppressed is
// chrome-only, however now we are in a content iframe.
is(iframe.contentWindow.getComputedStyle(img).color, "rgb(0, 128, 0)",
"color of img should be green");
is(img.imageBlockingStatus, Ci.nsIContentPolicy.REJECT_SERVER,
"imageBlockingStatues should be REJECT_SERVER.");
img2.src = "https://test.invalid";
doc.body.appendChild(img2);
return imgListener(img2);
}).then(() => {
ok(true, "img2 shouldn't be loaded");
is(iframe.contentWindow.getComputedStyle(img2).color, "rgb(255, 0, 0)",
"color of img2 should be red");
ok(img2.matches(":-moz-broken"), "should match ':-moz-broken' selector");
// Now prepare for the next test, deny image.
return new Promise(resolve => {
SpecialPowers.pushPrefEnv({"set": [["permissions.default.image", 2]]}, resolve)
});
}).then(() => {
// Now image is denied, loading image will be rejected with REJECT_TYPE,
// which will be mapped to :-moz-user-disabled
img3.src = "https://example.com/tests/image/test/mochitest/shaver.png";
doc.body.appendChild(img3);
return imgListener(img3);
}).then(() => {
ok(true, "img3 shouldn't be loaded");
// -moz-user-disabled is also chrome only, so we didn't use matches() to verify.
is(iframe.contentWindow.getComputedStyle(img3).color, "rgb(0, 0, 255)",
"color of img3 should be blue");
is(img3.imageBlockingStatus, Ci.nsIContentPolicy.REJECT_TYPE,
"imageBlockingStatues should be REJECT_TYPE.");
SimpleTest.finish();
}).catch((e) => {
ok(false, "throwing " + e);
});
};
// file_blocking_image.html contains meta tag for CSP, which will block images from
// http.
iframe.src = "http://mochi.test:8888/chrome/dom/base/test/file_blocking_image.html";
document.getElementById("content").appendChild(iframe);
}
</script>
</pre>
<p id="display"></p>
<div id="content">
</div>
</body> </html>