diff -r 000000000000 -r 6474c204b198 layout/base/tests/bidi_numeral_test.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/layout/base/tests/bidi_numeral_test.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,97 @@ +// Canvas related code stolen from http://developer.mozilla.org/en/docs/Code_snippets:Canvas +var RemoteCanvas = function(url, id) { + this.url = url; + this.id = id; + this.snapshot = null; +}; + +RemoteCanvas.CANVAS_WIDTH = 200; +RemoteCanvas.CANVAS_HEIGHT = 100; + +RemoteCanvas.prototype.compare = function(otherCanvas, expected) { + return compareSnapshots(this.snapshot, otherCanvas.snapshot, expected)[0]; +} + +RemoteCanvas.prototype.load = function(callback) { + var iframe = document.createElement("iframe"); + iframe.id = this.id + "-iframe"; + iframe.width = RemoteCanvas.CANVAS_WIDTH + "px"; + iframe.height = RemoteCanvas.CANVAS_HEIGHT + "px"; + iframe.src = this.url; + var me = this; + iframe.addEventListener("load", function() { + me.remotePageLoaded(callback); + }, false); + window.document.body.appendChild(iframe); +}; + +RemoteCanvas.prototype.remotePageLoaded = function(callback) { + var ldrFrame = document.getElementById(this.id + "-iframe"); + this.snapshot = snapshotWindow(ldrFrame.contentWindow); + callback(this); +}; + +function bidiNumeral(val) { + if (typeof val == "undefined") + return SpecialPowers.getIntPref("bidi.numeral"); + else + SpecialPowers.setIntPref("bidi.numeral", val); +} + +var bidiNumeralDefault = bidiNumeral(); + +var currentPass = 0; + +function run() +{ + SimpleTest.waitForExplicitFinish(); + + do_test(); +} + +function do_test() +{ + var canvases = []; + function callbackTestCanvas(canvas) + { + canvases.push(canvas); + + if (canvases.length == 2) { // when both canvases are loaded + if (passes[currentPass].op == "==") { + ok(canvases[0].compare(canvases[1], true), "Rendering of reftest " + fileprefix + passes[currentPass].file + + " is different with bidi.numeral == " + passes[currentPass].bidiNumeralValue); + } else if (passes[currentPass].op == "!=") { + ok(canvases[0].compare(canvases[1], false), "Rendering of reftest " + fileprefix + passes[currentPass].file + + " is not different with bidi.numeral == " + passes[currentPass].bidiNumeralValue); + } + + bidiNumeral(bidiNumeralDefault); + + if (currentPass < passes.length - 1) { + ++currentPass; + do_test(); + } else { + SimpleTest.finish(); + } + } + } + + var fileprefix = passes[currentPass].prefix + "-"; + var file = passes[currentPass].file; + + var header = document.createElement("p"); + header.appendChild(document.createTextNode("Testing reftest " + fileprefix + file + + " with bidi.numeral == " + passes[currentPass].bidiNumeralValue + + " expecting " + passes[currentPass].op)); + document.body.appendChild(header); + + bidiNumeral(passes[currentPass].bidiNumeralValue); + + var testCanvas = new RemoteCanvas(fileprefix + file + ".html", "test-" + currentPass); + testCanvas.load(callbackTestCanvas); + + var refCanvas = new RemoteCanvas(fileprefix + file + "-ref.html", "ref-" + currentPass); + refCanvas.load(callbackTestCanvas); +} + +run();