layout/base/tests/bidi_numeral_test.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 // Canvas related code stolen from http://developer.mozilla.org/en/docs/Code_snippets:Canvas
     2 var RemoteCanvas = function(url, id) {
     3     this.url = url;
     4     this.id = id;
     5     this.snapshot = null;
     6 };
     8 RemoteCanvas.CANVAS_WIDTH = 200;
     9 RemoteCanvas.CANVAS_HEIGHT = 100;
    11 RemoteCanvas.prototype.compare = function(otherCanvas, expected) {
    12     return compareSnapshots(this.snapshot, otherCanvas.snapshot, expected)[0];
    13 }
    15 RemoteCanvas.prototype.load = function(callback) {
    16   var iframe = document.createElement("iframe");
    17   iframe.id = this.id + "-iframe";
    18   iframe.width = RemoteCanvas.CANVAS_WIDTH + "px";
    19   iframe.height = RemoteCanvas.CANVAS_HEIGHT + "px";
    20   iframe.src = this.url;
    21   var me = this;
    22   iframe.addEventListener("load", function() {
    23       me.remotePageLoaded(callback);
    24     }, false);
    25   window.document.body.appendChild(iframe);
    26 };
    28 RemoteCanvas.prototype.remotePageLoaded = function(callback) {
    29   var ldrFrame = document.getElementById(this.id + "-iframe");
    30   this.snapshot = snapshotWindow(ldrFrame.contentWindow);
    31   callback(this);
    32 };
    34 function bidiNumeral(val) {
    35   if (typeof val == "undefined")
    36     return SpecialPowers.getIntPref("bidi.numeral");
    37   else
    38     SpecialPowers.setIntPref("bidi.numeral", val);
    39 }
    41 var bidiNumeralDefault = bidiNumeral();
    43 var currentPass = 0;
    45 function run()
    46 {
    47   SimpleTest.waitForExplicitFinish();
    49   do_test();
    50 }
    52 function do_test()
    53 {
    54   var canvases = [];
    55   function callbackTestCanvas(canvas)
    56   {
    57     canvases.push(canvas);
    59     if (canvases.length == 2) { // when both canvases are loaded
    60       if (passes[currentPass].op == "==") {
    61         ok(canvases[0].compare(canvases[1], true), "Rendering of reftest " + fileprefix + passes[currentPass].file +
    62            " is different with bidi.numeral == " + passes[currentPass].bidiNumeralValue);
    63       } else if (passes[currentPass].op == "!=") {
    64         ok(canvases[0].compare(canvases[1], false), "Rendering of reftest " + fileprefix + passes[currentPass].file +
    65            " is not different with bidi.numeral == " + passes[currentPass].bidiNumeralValue);
    66       }
    68       bidiNumeral(bidiNumeralDefault);
    70       if (currentPass < passes.length - 1) {
    71         ++currentPass;
    72         do_test();
    73       } else {
    74         SimpleTest.finish();
    75       }
    76     }
    77   }
    79   var fileprefix = passes[currentPass].prefix + "-";
    80   var file = passes[currentPass].file;
    82   var header = document.createElement("p");
    83   header.appendChild(document.createTextNode("Testing reftest " + fileprefix + file +
    84     " with bidi.numeral == " + passes[currentPass].bidiNumeralValue +
    85     " expecting " + passes[currentPass].op));
    86   document.body.appendChild(header);
    88   bidiNumeral(passes[currentPass].bidiNumeralValue);
    90   var testCanvas = new RemoteCanvas(fileprefix + file + ".html", "test-" + currentPass);
    91   testCanvas.load(callbackTestCanvas);
    93   var refCanvas = new RemoteCanvas(fileprefix + file + "-ref.html", "ref-" + currentPass);
    94   refCanvas.load(callbackTestCanvas);
    95 }
    97 run();

mercurial