1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/layout/base/tests/test_reftests_with_caret.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,190 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<head> 1.7 + <title>Reftests with caret drawing</title> 1.8 + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.9 + <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script> 1.10 + <script type="text/javascript" src="/tests/SimpleTest/WindowSnapshot.js"></script> 1.11 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 1.12 + <style> 1.13 + iframe { 1.14 + width: 600px; 1.15 + height: 600px; 1.16 + } 1.17 + </style> 1.18 +<script type="text/javascript"> 1.19 + 1.20 +SimpleTest.waitForExplicitFinish(); 1.21 + 1.22 +var canvases = []; 1.23 +function callbackTestCanvas(canvas) 1.24 +{ 1.25 + canvases.push(canvas); 1.26 + 1.27 + if (canvases.length != 2) 1.28 + return; 1.29 + 1.30 + var result = canvases[0]; 1.31 + var reference = canvases[1]; 1.32 + 1.33 + var ret = compareSnapshots(result.snapshot, reference.snapshot, true); 1.34 + ok(ret[0], "Reftest " + result.src + 1.35 + (ret[0] ? "" : (" FAILED\n" + 1.36 + "RESULT=" + ret[1] + "\n" + 1.37 + "REFERENCE=" + ret[2] + "\n"))); 1.38 + 1.39 + // Remove the iframes if the test was successful 1.40 + if (ret[0]) { 1.41 + result.parentNode.removeChild(result); 1.42 + reference.parentNode.removeChild(reference); 1.43 + } 1.44 + canvases = []; 1.45 + SimpleTest.waitForFocus(nextTest); 1.46 +} 1.47 + 1.48 +function doSnapShot(iframe) { 1.49 + iframe.snapshot = snapshotWindow(iframe.contentWindow, true); 1.50 + callbackTestCanvas(iframe); 1.51 +}; 1.52 + 1.53 +function remotePageLoaded(callback) { 1.54 + var iframe = this; 1.55 + setTimeout(function(){ 1.56 + doSnapShot(iframe); 1.57 + callback(); 1.58 + }, 0); 1.59 +}; 1.60 + 1.61 +const MAX_ITERATIONS = 1000; 1.62 + 1.63 +function createIframe(url,next) { 1.64 + var iframe = document.createElement("iframe"); 1.65 + iframe.src = url; 1.66 + iframe.remotePageLoaded = remotePageLoaded; 1.67 + var me = this; 1.68 + var currentIteration = 0; 1.69 + function iframeLoadCompleted() { 1.70 + var docEl = iframe.contentDocument.documentElement; 1.71 + if (docEl.className.indexOf("reftest-wait") >= 0) { 1.72 + if (currentIteration++ > MAX_ITERATIONS) { 1.73 + ok(false, "iframe load for " + url + " timed out"); 1.74 + endTest(); 1.75 + } else { 1.76 + setTimeout(iframeLoadCompleted, 10); 1.77 + } 1.78 + return; 1.79 + } 1.80 + iframe.remotePageLoaded(function() { 1.81 + if (next) { 1.82 + setTimeout(function(){createIframe(next,null);}, 0) 1.83 + } 1.84 + }); 1.85 + } 1.86 + iframe.addEventListener("load", iframeLoadCompleted, false); 1.87 + window.document.body.appendChild(iframe); 1.88 + iframe.focus(); 1.89 +}; 1.90 + 1.91 +function refTest(test,ref) { 1.92 + createIframe(test,ref); 1.93 +}; 1.94 + 1.95 +var caretBlinkTime = null; 1.96 +function endTest() { 1.97 + if (caretBlinkTime !== null) { 1.98 + SpecialPowers.setIntPref("ui.caretBlinkTime", caretBlinkTime); 1.99 + } else { 1.100 + SpecialPowers.clearUserPref("ui.caretBlinkTime"); 1.101 + } 1.102 + 1.103 + // finish(), yet let the test actually end first, to be safe. 1.104 + SimpleTest.executeSoon(SimpleTest.finish); 1.105 +} 1.106 + 1.107 +var tests = [ 1.108 + [ 'bug106855-1.html' , 'bug106855-1-ref.html' ] , 1.109 + [ 'bug106855-2.html' , 'bug106855-1-ref.html' ] , 1.110 + [ 'bug240933-1.html' , 'bug240933-1-ref.html' ] , 1.111 + [ 'bug240933-2.html' , 'bug240933-1-ref.html' ] , 1.112 + [ 'bug389321-1.html' , 'bug389321-1-ref.html' ] , 1.113 + [ 'bug389321-2.html' , 'bug389321-2-ref.html' ] , 1.114 + [ 'bug389321-3.html' , 'bug389321-3-ref.html' ] , 1.115 + [ 'bug482484.html' , 'bug482484-ref.html' ] , 1.116 + [ 'bug585922.html' , 'bug585922-ref.html' ] , 1.117 + [ 'bug597519-1.html' , 'bug597519-1-ref.html' ] , 1.118 + [ 'bug602141-1.html' , 'bug602141-1-ref.html' ] , 1.119 + [ 'bug602141-2.html' , 'bug602141-2-ref.html' ] , 1.120 + [ 'bug602141-3.html' , 'bug602141-3-ref.html' ] , 1.121 + [ 'bug602141-4.html' , 'bug602141-4-ref.html' ] , 1.122 + [ 'bug612271-1.html' , 'bug612271-ref.html' ] , 1.123 + [ 'bug612271-2.html' , 'bug612271-ref.html' ] , 1.124 + [ 'bug612271-3.html' , 'bug612271-ref.html' ] , 1.125 + [ 'bug613433-1.html' , 'bug613433-ref.html' ] , 1.126 + [ 'bug613433-2.html' , 'bug613433-ref.html' ] , 1.127 + [ 'bug613433-3.html' , 'bug613433-ref.html' ] , 1.128 + [ 'bug613807-1.html' , 'bug613807-1-ref.html' ] , 1.129 + [ 'bug632215-1.html' , 'bug632215-ref.html' ] , 1.130 + [ 'bug632215-2.html' , 'bug632215-ref.html' ] , 1.131 + [ 'bug633044-1.html' , 'bug633044-1-ref.html' ] , 1.132 + [ 'bug634406-1.html' , 'bug634406-1-ref.html' ] , 1.133 + [ 'bug644428-1.html' , 'bug644428-1-ref.html' ] , 1.134 + function() {SpecialPowers.setBoolPref("bidi.browser.ui", true);} , 1.135 + [ 'bug646382-1.html' , 'bug646382-1-ref.html' ] , 1.136 + [ 'bug646382-2.html' , 'bug646382-2-ref.html' ] , 1.137 + [ 'bug664087-1.html' , 'bug664087-1-ref.html' ] , 1.138 + [ 'bug664087-2.html' , 'bug664087-2-ref.html' ] , 1.139 + [ 'bug682712-1.html' , 'bug682712-1-ref.html' ] , 1.140 + function() {SpecialPowers.clearUserPref("bidi.browser.ui");} , 1.141 + [ 'bug746993-1.html' , 'bug746993-1-ref.html' ] , 1.142 + [ 'bug1007065-1.html' , 'bug1007065-1-ref.html' ] , 1.143 +]; 1.144 + 1.145 +if (navigator.appVersion.indexOf("Android") == -1 && 1.146 + SpecialPowers.Services.appinfo.name != "B2G") { 1.147 + tests.push([ 'bug512295-1.html' , 'bug512295-1-ref.html' ]); 1.148 + tests.push([ 'bug512295-2.html' , 'bug512295-2-ref.html' ]); 1.149 + tests.push(function() {SpecialPowers.setBoolPref("layout.css.overflow-clip-box.enabled", true);}); 1.150 + tests.push([ 'bug966992-1.html' , 'bug966992-1-ref.html' ]); 1.151 + tests.push([ 'bug966992-2.html' , 'bug966992-2-ref.html' ]); 1.152 + tests.push([ 'bug966992-3.html' , 'bug966992-3-ref.html' ]); 1.153 + tests.push(function() {SpecialPowers.setBoolPref("layout.css.overflow-clip-box.enabled", false);}); 1.154 + tests.push([ 'bug923376.html' , 'bug923376-ref.html' ]); 1.155 +} else { 1.156 + is(SpecialPowers.getIntPref("layout.spellcheckDefault"), 0, "Spellcheck should be turned off for this platrom or this if..else check removed"); 1.157 +} 1.158 + 1.159 +var testIndex = 0; 1.160 + 1.161 +function nextTest() { 1.162 + if (testIndex < tests.length) { 1.163 + if (typeof(tests[testIndex]) == 'function') { 1.164 + tests[testIndex](); 1.165 + SimpleTest.executeSoon(nextTest); 1.166 + } else { 1.167 + refTest(tests[testIndex][0],tests[testIndex][1]); 1.168 + } 1.169 + ++testIndex; 1.170 + } else { 1.171 + endTest(); 1.172 + } 1.173 +} 1.174 +function runTests() { 1.175 + try { 1.176 + try { 1.177 + caretBlinkTime = SpecialPowers.getIntPref("ui.caretBlinkTime"); 1.178 + } catch (e) {} 1.179 + SpecialPowers.setIntPref("ui.caretBlinkTime", -1); 1.180 + 1.181 + nextTest(); 1.182 + } catch(e) { 1.183 + endTest(); 1.184 + } 1.185 +} 1.186 + 1.187 +SimpleTest.waitForFocus(runTests); 1.188 + 1.189 +</script> 1.190 +</head> 1.191 +<body> 1.192 +</body> 1.193 +</html>