mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-07 08:18:41 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
81
docshell/test/navigation/test_bug13871.html
Normal file
81
docshell/test/navigation/test_bug13871.html
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<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" />
|
||||
<script type="text/javascript" src="NavigationUtils.js"></script>
|
||||
<style type="text/css">
|
||||
iframe { width: 90%; height: 50px; }
|
||||
</style>
|
||||
<script>
|
||||
function runTest() {
|
||||
navigateByLocation(window0.frames[0]);
|
||||
navigateByOpen("window1_child0");
|
||||
navigateByForm("window2_child0");
|
||||
navigateByHyperlink("window3_child0");
|
||||
|
||||
xpcWaitForFinishedFrames(function() {
|
||||
isInaccessible(window0.frames[0], "Should not be able to navigate off-domain frame by setting location.");
|
||||
isInaccessible(window1.frames[0], "Should not be able to navigate off-domain frame by calling window.open.");
|
||||
isInaccessible(window2.frames[0], "Should not be able to navigate off-domain frame by submitting form.");
|
||||
isInaccessible(window3.frames[0], "Should not be able to navigate off-domain frame by targeted hyperlink.");
|
||||
|
||||
window0.close();
|
||||
window1.close();
|
||||
window2.close();
|
||||
window3.close();
|
||||
|
||||
xpcCleanupWindows();
|
||||
SimpleTest.finish();
|
||||
}, 4);
|
||||
}
|
||||
|
||||
// Because our open()'d windows are cross-origin, we can't wait for onload.
|
||||
// We instead wait for a postMessage from parent.html.
|
||||
var windows = new Map();
|
||||
addEventListener("message", function windowLoaded(evt) {
|
||||
// Because window.open spins the event loop in order to open new windows,
|
||||
// we might receive the "ready" message before we call waitForLoad.
|
||||
// In that case, windows won't contain evt.source and we just note that the
|
||||
// window is ready. Otherwise, windows contains the "resolve" function for
|
||||
// that window's promise and we just have to call it.
|
||||
if (windows.has(evt.source)) {
|
||||
windows.get(evt.source)();
|
||||
} else {
|
||||
windows.set(evt.source, true);
|
||||
}
|
||||
});
|
||||
|
||||
var window0 = window.open("http://test1.example.org:80/tests/docshell/test/navigation/parent.html", "window0", "width=10,height=10");
|
||||
var window1 = window.open("http://test1.example.org:80/tests/docshell/test/navigation/parent.html", "window1", "width=10,height=10");
|
||||
var window2 = window.open("http://test1.example.org:80/tests/docshell/test/navigation/parent.html", "window2", "width=10,height=10");
|
||||
var window3 = window.open("http://test1.example.org:80/tests/docshell/test/navigation/parent.html", "window3", "width=10,height=10");
|
||||
|
||||
function waitForLoad(w) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
// If we already got the "ready" message, resolve immediately.
|
||||
if (windows.has(w)) {
|
||||
resolve();
|
||||
} else {
|
||||
windows.set(w, resolve);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Promise.all([ waitForLoad(window0),
|
||||
waitForLoad(window1),
|
||||
waitForLoad(window2),
|
||||
waitForLoad(window3) ])
|
||||
.then(runTest);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=13871">Mozilla Bug 13871</a>
|
||||
<pre id="test">
|
||||
<script type="text/javascript">
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue