зеркало из https://github.com/mozilla/gecko-dev.git
95 строки
2.5 KiB
HTML
95 строки
2.5 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<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">
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
addLoadEvent(runNextTest);
|
|
|
|
var TEST_URL = "http://mochi.test:8888/tests/docshell/test/chrome/allowContentRetargeting.sjs";
|
|
|
|
var Ci = Components.interfaces;
|
|
|
|
function runNextTest() {
|
|
var test = tests.shift();
|
|
if (!test) {
|
|
SimpleTest.finish();
|
|
return;
|
|
}
|
|
test();
|
|
}
|
|
|
|
var tests = [
|
|
|
|
// Set allowContentRetargeting = false, load a downloadable URL, verify the
|
|
// downloadable stops loading.
|
|
function basic() {
|
|
var iframe = insertIframe();
|
|
docshellForWindow(iframe.contentWindow).allowContentRetargeting = false;
|
|
loadIframe(iframe);
|
|
},
|
|
|
|
// Set allowContentRetargeting = false on parent docshell, load a downloadable
|
|
// URL, verify the downloadable stops loading.
|
|
function inherit() {
|
|
var docshell = docshellForWindow(window);
|
|
docshell.allowContentRetargeting = false;
|
|
loadIframe(insertIframe());
|
|
},
|
|
];
|
|
|
|
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) {
|
|
iframe.setAttribute("src", TEST_URL);
|
|
docshellForWindow(iframe.contentWindow).
|
|
QueryInterface(Ci.nsIInterfaceRequestor).
|
|
getInterface(Ci.nsIWebProgress).
|
|
addProgressListener(progressListener,
|
|
Ci.nsIWebProgress.NOTIFY_STATE_DOCUMENT);
|
|
}
|
|
|
|
var progressListener = {
|
|
onStateChange: function (webProgress, req, flags, status) {
|
|
if (!(flags & Ci.nsIWebProgressListener.STATE_STOP))
|
|
return;
|
|
is(Components.isSuccessCode(status), false,
|
|
"Downloadable should have failed to load");
|
|
document.querySelector("iframe").remove();
|
|
runNextTest();
|
|
},
|
|
|
|
QueryInterface: function (iid) {
|
|
var iids = [
|
|
Ci.nsIWebProgressListener,
|
|
Ci.nsISupportsWeakReference,
|
|
Ci.nsISupports,
|
|
];
|
|
if (iids.some(function (i) { return iid.equals(i); }))
|
|
return this;
|
|
throw Components.results.NS_ERROR_NO_INTERFACE;
|
|
},
|
|
};
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<p id="display">
|
|
</p>
|
|
</body>
|
|
</html>
|