gecko/layout/base/tests/test_reftests_with_caret.html
Ehsan Akhgari 25abf1251e Bug 629145 - Part 3: Make sure that the iframes are large enough to cover all of the tests; r,a=roc
In particular, without this, the iframes are too small to catch failures for the reftest
of bug 612271, for example, since the selectionStart and selectionEnd text at the bottom of
the page falls outside of the visible area when the page is loaded inside the iframe.

--HG--
extra : rebase_source : ccac88034602cfcf1c852625e1bf08c184444622
2011-01-27 00:26:33 -05:00

157 lines
4.7 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<title>Reftests with caret drawing</title>
<script type="text/javascript" src="/MochiKit/packed.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/WindowSnapshot.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<style>
iframe {
width: 600px;
height: 600px;
}
</style>
<script type="text/javascript">
var canvases = [];
function callbackTestCanvas(canvas)
{
canvases.push(canvas);
if (canvases.length != 2)
return;
var result = canvases[0];
var reference = canvases[1];
var ret = compareSnapshots(result.snapshot, reference.snapshot, true);
ok(ret[0], "Reftest " + result.src +
(ret[0] ? "" : (" FAILED\n" +
"RESULT=" + ret[1] + "\n" +
"REFERENCE=" + ret[2] + "\n")));
// Remove the iframes if the test was successful
if (ret[0]) {
result.parentNode.removeChild(result);
reference.parentNode.removeChild(reference);
}
canvases = [];
nextTest();
}
function doSnapShot(iframe) {
iframe.snapshot = snapshotWindow(iframe.contentWindow, true);
callbackTestCanvas(iframe);
};
function remotePageLoaded() {
var iframe = this;
setTimeout(function(){doSnapShot(iframe);}, 0)
};
const MAX_ITERATIONS = 10;
function createIframe(url,next) {
var iframe = document.createElement("iframe");
iframe.src = url;
iframe.remotePageLoaded = remotePageLoaded;
var me = this;
var currentIteration = 0;
function iframeLoadCompleted() {
var docEl = iframe.contentDocument.documentElement;
if (docEl.className.indexOf("reftest-wait") >= 0) {
if (currentIteration++ > MAX_ITERATIONS) {
ok(false, "iframe load for " + url + " timed out");
SimpleTest.finish();
} else {
setTimeout(iframeLoadCompleted, 10);
}
return;
}
iframe.remotePageLoaded();
if (next) setTimeout(function(){createIframe(next,null);}, 0)
}
iframe.addEventListener("load", iframeLoadCompleted, false);
window.document.body.appendChild(iframe);
};
function refTest(test,ref) {
createIframe(test,ref);
};
var caretBlinkTime = null;
function endTest() {
SimpleTest.finish();
netscape.security.PrivilegeManager.enablePrivilege(
'UniversalPreferencesRead UniversalPreferencesWrite UniversalXPConnect');
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
if (caretBlinkTime !== null) {
prefs.setIntPref("ui.caretBlinkTime", caretBlinkTime);
} else {
prefs.clearUserPref("ui.caretBlinkTime");
}
}
var tests = [
[ 'bug106855-1.html' , 'bug106855-1-ref.html' ] ,
[ 'bug106855-2.html' , 'bug106855-1-ref.html' ] ,
[ 'bug240933-1.html' , 'bug240933-1-ref.html' ] ,
[ 'bug240933-2.html' , 'bug240933-1-ref.html' ] ,
[ 'bug389321-1.html' , 'bug389321-1-ref.html' ] ,
[ 'bug389321-2.html' , 'bug389321-2-ref.html' ] ,
[ 'bug389321-3.html' , 'bug389321-3-ref.html' ] ,
[ 'bug482484.html' , 'bug482484-ref.html' ] ,
[ 'bug512295-1.html' , 'bug512295-1-ref.html' ] ,
[ 'bug512295-2.html' , 'bug512295-2-ref.html' ] ,
[ 'bug585922.html' , 'bug585922-ref.html' ] ,
[ 'bug597519-1.html' , 'bug597519-1-ref.html' ] ,
[ 'bug602141-1.html' , 'bug602141-1-ref.html' ] ,
[ 'bug602141-2.html' , 'bug602141-2-ref.html' ] ,
[ 'bug602141-3.html' , 'bug602141-3-ref.html' ] ,
[ 'bug602141-4.html' , 'bug602141-4-ref.html' ] ,
[ 'bug612271-1.html' , 'bug612271-ref.html' ] ,
[ 'bug612271-2.html' , 'bug612271-ref.html' ] ,
[ 'bug612271-3.html' , 'bug612271-ref.html' ] ,
[ 'bug613433-1.html' , 'bug613433-ref.html' ] ,
[ 'bug613433-2.html' , 'bug613433-ref.html' ] ,
[ 'bug613433-3.html' , 'bug613433-ref.html' ] ,
[ 'bug613807-1.html' , 'bug613807-1-ref.html' ]
];
var testIndex = 0;
function nextTest() {
if (testIndex < tests.length) {
refTest(tests[testIndex][0],tests[testIndex][1]);
++testIndex;
} else {
endTest();
}
}
function runTests() {
try {
SimpleTest.waitForExplicitFinish();
netscape.security.PrivilegeManager.enablePrivilege(
'UniversalPreferencesRead UniversalPreferencesWrite UniversalXPConnect');
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
try {
caretBlinkTime = prefs.getIntPref("ui.caretBlinkTime");
} catch (e) {}
prefs.setIntPref("ui.caretBlinkTime", -1);
nextTest();
} catch(e) {
endTest();
}
}
</script>
</head>
<body onload="runTests()">
</body>
</html>