gecko/layout/base/tests/test_reftests_with_caret.html
Ting-Yu Lin 75837a9328 Bug 1059165 - Part 5 - Fix existing test failures. r=ehsan
These tests all involving focusing on an empty element. Touch caret will
not show under the new touch caret UI spec. Therefore, I fix them by
disabling touch caret when running those tests.
2014-10-28 06:04:00 +01:00

202 lines
6.7 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 iframes = [];
function callbackTestIframe(iframe)
{
iframes.push(iframe);
if (iframes.length != 2)
return;
var result = iframes[0];
var reference = iframes[1];
// Using assertSnapshots is important to get the data-URIs of failing tests
// dumped into the log in a format that reftest-analyzer.xhtml can process.
var passed = assertSnapshots(result.snapshot, reference.snapshot, true,
null /*no fuzz*/, result.src, reference.src);
// Remove the iframes if the test was successful
if (passed) {
result.parentNode.removeChild(result);
reference.parentNode.removeChild(reference);
}
iframes = [];
SimpleTest.waitForFocus(nextTest);
}
function doSnapShot(iframe) {
iframe.snapshot = snapshotWindow(iframe.contentWindow, true);
callbackTestIframe(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' ] ,
[ 'bug613807-1.html' , 'bug613807-1-ref.html' ] ,
[ 'bug1082486-1.html', 'bug1082486-1-ref.html'] ,
[ 'bug1082486-2.html', 'bug1082486-2-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' ] ,
[ 'bug389321-3.html' , 'bug389321-3-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' ] ,
[ 'bug1061468.html' , 'bug1061468-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([ 'bug923376.html' , 'bug923376-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);});
} 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>