gecko-dev/layout/base/tests/test_remote_frame.html
Ehsan Akhgari 09a262787c Bug 649012 - Fail mochitest-plains which use flaky timeouts (setTimeout(x) for x > 0); r=ted
We are white-listing the existing set of tests that use setTimeout
like this.  Hopefully these tests will be investigated and fixed
in the future, so that we can narrow down the white-list.

This check is only turned on for mochitest-plain for now.
2014-12-11 13:34:40 -05:00

67 lines
1.9 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/WindowSnapshot.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
<style>
div, iframe {
position:absolute;
left:0; top:50px;
width:400px; height:400px;
transform: translateY(50px);
border:5px solid black;
}
</style>
</head>
<body>
<div id="d" style="background:blue"></div>
<script type="application/javascript;version=1.7">
"use strict";
var referenceSnapshot;
var iterations = 0;
SimpleTest.waitForExplicitFinish();
SimpleTest.requestFlakyTimeout("untriaged");
function pollForTestPass() {
var snapshot = snapshotWindow(window);
if (compareSnapshots(referenceSnapshot, snapshot, true)[0]) {
ok(true, "Test passed after " + iterations + " iterations");
SimpleTest.finish();
return;
}
++iterations;
if (iterations == 20) {
todo(false, "We couldn't draw the frame, but at least we didn't crash");
SimpleTest.finish();
return;
}
setTimeout(pollForTestPass, 10);
}
function addRemoteFrame() {
let iframe = document.createElement("iframe");
SpecialPowers.wrap(iframe).mozbrowser = true;
iframe.src = "data:text/html,<html style='background:blue;'>";
document.body.appendChild(iframe);
pollForTestPass();
}
addEventListener("load", function() {
referenceSnapshot = snapshotWindow(window);
document.getElementById("d").style.display = 'none';
SpecialPowers.addPermission("browser", true, document);
SpecialPowers.pushPrefEnv({
"set": [
["dom.ipc.browser_frames.oop_by_default", true],
["dom.mozBrowserFramesEnabled", true]
]
}, addRemoteFrame);
});
</script>
</body>