blob: a2ad339c2f89ebfab054430eef6966afaa1d7db1 [file] [log] [blame]
<html>
<head>
<script src="../resources/cross-frame-access.js"></script>
</head>
<body>
<p>This tests that a data: URL subframe can't access a child data: URL subframe of itself.</p>
<iframe name="aFrame" id="aFrame" style="width: 500px; height: 300px;"></iframe>
<pre id='console'></pre>
<script>
if (window.layoutTestController) {
layoutTestController.dumpAsText();
layoutTestController.dumpChildFramesAsText();
layoutTestController.waitUntilDone();
}
var innerURL = "data:text/html,<html>"
+ "<body>"
+ "<p id='accessMe'>PASS: Cross frame access from a data: URL was denied.</p>"
+ "<p>Inner-inner iframe.</p>"
+ "<iframe></iframe>" // Flag iframe
+ "</body>"
+ "</html>";
var url = "data:text/html,<html>"
+ "<body>"
+ "<iframe src=\"" + innerURL + "\"></iframe>"
+ "<p>Inner iframe.</p>"
+ "<scr" + "ipt>"
+ "var innerFrame = frames[0];"
+ "var testDone = false;"
+ "setTimeout(test, 1);"
+ "setTimeout(function() {"
+ "if (!testDone) {"
+ "alert('FAIL: Test timed out');"
+ "}"
+ "}, 2000);"
+ "function test() {"
+ "var flag = innerFrame[0];"
+ "if (!flag) {"
+ "setTimeout(test, 1);"
+ "return;"
+ "}"
+ "try {"
+ "if (innerFrame.document.body && innerFrame.document.getElementById('accessMe')) {"
+ "innerFrame.document.getElementById('accessMe').innerHTML = 'FAIL: Cross frame access from a data: URL was allowed.';"
+ "testDone = true;"
+ "return;"
+ "}"
+ "} catch (e) {"
+ "}"
+ "}"
+ "</scri" + "pt>"
+ "</body>"
+ "</html>";
var iframe = document.getElementById("aFrame");
iframe.src = url;
var innerFrame = window.frames[0];
var testDone = false;
setTimeout(test, 1);
setTimeout(function() {
if (!testDone) {
log("FAIL: Test timed out");
if (window.layoutTestController)
layoutTestController.notifyDone();
}
}, 2000);
function test() {
var innerInnerFrame = innerFrame.frames[0];
if (!innerInnerFrame) {
setTimeout(test, 1);
return;
}
var flag = innerInnerFrame.frames[0];
if (!flag) {
setTimeout(test, 1);
return;
}
testDone = true;
if (window.layoutTestController)
layoutTestController.notifyDone();
}
</script>
</body>
</html>