gecko/layout/base/tests/test_reftests_with_caret.html
Ting-Yu Lin 181bea7c15 Bug 1016184 - Part 3i: Fix test_reftests_with_caret.html on Mulet. r=ehsan
bug512295-1.html and bug512295-2.html are sending key events which hides
touch caret. Turn off the touch caret preference to fix test cases that
ought to be failed by definition of the touch caret behavior.
2014-08-18 00:02:00 -04:00

200 lines
6.5 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<title>Reftests with caret drawing</title>
<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">
SimpleTest.waitForExplicitFinish();
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 = [];
SimpleTest.waitForFocus(nextTest);
}
function doSnapShot(iframe) {
iframe.snapshot = snapshotWindow(iframe.contentWindow, true);
callbackTestCanvas(iframe);
};
function remotePageLoaded(callback) {
var iframe = this;
setTimeout(function(){
doSnapShot(iframe);
callback();
}, 0);
};
const MAX_ITERATIONS = 1000;
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");
endTest();
} else {
setTimeout(iframeLoadCompleted, 10);
}
return;
}
iframe.remotePageLoaded(function() {
if (next) {
setTimeout(function(){createIframe(next,null);}, 0)
}
});
}
iframe.addEventListener("load", iframeLoadCompleted, false);
window.document.body.appendChild(iframe);
iframe.focus();
};
function refTest(test,ref) {
createIframe(test,ref);
};
var caretBlinkTime = null;
function endTest() {
if (caretBlinkTime !== null) {
SpecialPowers.setIntPref("ui.caretBlinkTime", caretBlinkTime);
} else {
SpecialPowers.clearUserPref("ui.caretBlinkTime");
}
// finish(), yet let the test actually end first, to be safe.
SimpleTest.executeSoon(SimpleTest.finish);
}
var tests = [
[ 'bug106855-1.html' , 'bug106855-1-ref.html' ] ,
[ 'bug106855-2.html' , 'bug106855-1-ref.html' ] ,
[ 'bug389321-2.html' , 'bug389321-2-ref.html' ] ,
[ 'bug389321-3.html' , 'bug389321-3-ref.html' ] ,
[ 'bug613807-1.html' , 'bug613807-1-ref.html' ] ,
// The following test cases are all involving with one sending
// synthesizeKey(), the other without. They ought to be failed
// when touch caret preference on. Test them with preference off.
function() {SpecialPowers.setBoolPref("touchcaret.enabled", false);} ,
[ 'bug240933-1.html' , 'bug240933-1-ref.html' ] ,
[ 'bug240933-2.html' , 'bug240933-1-ref.html' ] ,
[ 'bug389321-1.html' , 'bug389321-1-ref.html' ] ,
[ 'bug482484.html' , 'bug482484-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' ] ,
[ 'bug632215-1.html' , 'bug632215-ref.html' ] ,
[ 'bug632215-2.html' , 'bug632215-ref.html' ] ,
[ 'bug633044-1.html' , 'bug633044-1-ref.html' ] ,
[ 'bug634406-1.html' , 'bug634406-1-ref.html' ] ,
[ 'bug644428-1.html' , 'bug644428-1-ref.html' ] ,
function() {SpecialPowers.setBoolPref("bidi.browser.ui", true);} ,
[ 'bug646382-1.html' , 'bug646382-1-ref.html' ] ,
[ 'bug646382-2.html' , 'bug646382-2-ref.html' ] ,
[ 'bug664087-1.html' , 'bug664087-1-ref.html' ] ,
[ 'bug664087-2.html' , 'bug664087-2-ref.html' ] ,
[ 'bug682712-1.html' , 'bug682712-1-ref.html' ] ,
function() {SpecialPowers.clearUserPref("bidi.browser.ui");} ,
[ 'bug746993-1.html' , 'bug746993-1-ref.html' ] ,
[ 'bug1007065-1.html' , 'bug1007065-1-ref.html' ] ,
[ 'bug1007067-1.html' , 'bug1007067-1-ref.html' ] ,
function() {SpecialPowers.clearUserPref("touchcaret.enabled");} ,
];
if (navigator.appVersion.indexOf("Android") == -1 &&
SpecialPowers.Services.appinfo.name != "B2G") {
tests.push(function() {SpecialPowers.setBoolPref("touchcaret.enabled", false);});
tests.push([ 'bug512295-1.html' , 'bug512295-1-ref.html' ]);
tests.push([ 'bug512295-2.html' , 'bug512295-2-ref.html' ]);
tests.push(function() {SpecialPowers.clearUserPref("touchcaret.enabled");});
tests.push(function() {SpecialPowers.setBoolPref("layout.css.overflow-clip-box.enabled", true);});
tests.push([ 'bug966992-1.html' , 'bug966992-1-ref.html' ]);
tests.push([ 'bug966992-2.html' , 'bug966992-2-ref.html' ]);
tests.push([ 'bug966992-3.html' , 'bug966992-3-ref.html' ]);
tests.push(function() {SpecialPowers.setBoolPref("layout.css.overflow-clip-box.enabled", false);});
tests.push([ 'bug923376.html' , 'bug923376-ref.html' ]);
} else {
is(SpecialPowers.getIntPref("layout.spellcheckDefault"), 0, "Spellcheck should be turned off for this platrom or this if..else check removed");
}
var testIndex = 0;
function nextTest() {
if (testIndex < tests.length) {
if (typeof(tests[testIndex]) == 'function') {
tests[testIndex]();
SimpleTest.executeSoon(nextTest);
} else {
refTest(tests[testIndex][0],tests[testIndex][1]);
}
++testIndex;
} else {
endTest();
}
}
function runTests() {
try {
try {
caretBlinkTime = SpecialPowers.getIntPref("ui.caretBlinkTime");
} catch (e) {}
SpecialPowers.setIntPref("ui.caretBlinkTime", -1);
nextTest();
} catch(e) {
endTest();
}
}
SimpleTest.waitForFocus(runTests);
</script>
</head>
<body>
</body>
</html>