content/base/test/test_bug682592.html

Thu, 15 Jan 2015 21:03:48 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 21:03:48 +0100
branch
TOR_BUG_9701
changeset 11
deefc01c0e14
permissions
-rw-r--r--

Integrate friendly tips from Tor colleagues to make (or not) 4.5 alpha 3;
This includes removal of overloaded (but unused) methods, and addition of
a overlooked call to DataStruct::SetData(nsISupports, uint32_t, bool.)

     1 <!DOCTYPE html>
     2 <html>
     3 <!--
     4 https://bugzilla.mozilla.org/show_bug.cgi?id=682592
     5 -->
     6 <head>
     7     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
     8     <title>Test for bug 682592</title>
     9     <script type="text/javascript" src="/tests/SimpleTest/WindowSnapshot.js"></script>
    10     <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
    11     <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
    12 </head>
    13 <body>
    14 <p id="display"></p>
    15 <div id="content">
    16 <iframe id="iframe-ref" src="bug682592-subframe-ref.html"></iframe>
    17 <iframe id="iframe-test"></iframe>
    18 </div>
    19 <pre id="test">
    20 <script class="testbody" type="text/javascript;version=1.7">
    21 /** Test for Bug 682592 **/
    23 /* 
    24    We want to check that bidi is detected correctly. So, we have a reference
    25    document where ltr is set explicitely with <bdo> element. Then, we compare
    26    it with test document.
    28    In mozilla, once bidi has been detected in a document, document always
    29    consider it's in bidi mode. So, if one fragment enables bidi correctly, and
    30    we create or update a fragment in the same document, that operation may not
    31    enable bidi by itself, but it will not be detected. So, we need to have new
    32    document for each test.
    34    So, instead of many diferent reftests, this mochitest implements a
    35    reftest-like. It creates reference text fragments in reference iframe, test
    36    text fragments in test iframe, and compare the documents. Then, it reloads
    37    test iframe. Reference iframe does not need to be reloaded between tests.
    38    It's ok (and maybe, desired) to keep bidi always enabled in that document. 
    39 */
    41 SimpleTest.waitForExplicitFinish();
    42 if (navigator.platform.startsWith("Linux arm")) { /* bugs 982875, 999429 */
    43   SimpleTest.expectAssertions(0, 4);
    44 }
    46 var refFrame = document.getElementById("iframe-ref")
    47 var testFrame = document.getElementById("iframe-test");
    49 refFrame.addEventListener("load", function() {
    50   testFrame.addEventListener("load", function() {
    51     try {
    52       tests.next();
    53       ok(compareSnapshots(snapshotWindow(testFrame.contentWindow), 
    54                           snapshotWindow(refFrame.contentWindow), true)[0], 
    55          "bidi is not detected correctly");
    57       testFrame.contentWindow.location.reload();
    58     } catch (err if err instanceof StopIteration) {
    59       SimpleTest.finish();
    60     }
    61   }, false);
    62   testFrame.src = "bug682592-subframe.html"
    63 }, false);
    65 var rtl = "עִבְרִית";
    66 var non8bit =  "ʃ";
    67 var is8bit = "a";
    69 // concats aStr aNumber of times
    70 function strMult(aStr, aNumber) {
    71   if (aNumber === 0) {
    72     return "";
    73   }
    74   return strMult(aStr, aNumber - 1) + aStr;
    75 }
    77 function runTests () {
    78   var ltr = "", prefix = null;
    79   var refContainer = refFrame.contentDocument.getElementById('content');
    80   var testContainer, textNode;
    81   var i = 0;
    83   // 8bit chars + bidi
    84   for (i = 0; i <= 16; i++) {
    85     ltr = strMult(is8bit, i);
    86     refContainer.innerHTML = ltr + '<bdo dir="rtl">' + rtl + '</bdo>';
    87     testContainer = testFrame.contentDocument.getElementById('content');
    88     testContainer.innerHTML = ltr + rtl;
    89     yield undefined;
    90   }
    92   // non-8bit char + 8bit chars + bidi
    93   for (i = 0; i <= 16; i++) {
    94     ltr = non8bit + strMult(is8bit, i);
    95     refContainer.innerHTML = ltr + '<bdo dir="rtl">' + rtl + '</bdo>';
    96     testContainer = testFrame.contentDocument.getElementById('content');
    97     testContainer.innerHTML = ltr + rtl;
    98     yield undefined;
    99   }
   101   // appendData
   102   for (i = 0; i <= 16; i++) {
   103     ltr = strMult(is8bit, i);
   104     refContainer.innerHTML = ltr + '<bdo dir="rtl">' + rtl + '</bdo>';
   105     testContainer = testFrame.contentDocument.getElementById('content');
   106     textNode = document.createTextNode("");
   107     testContainer.appendChild(textNode);
   108     textNode.appendData(ltr + rtl);
   109     yield undefined;
   110   }
   112   for (i = 0; i <= 16; i++) {
   113     ltr = non8bit + strMult(is8bit, i);
   114     refContainer.innerHTML = ltr + '<bdo dir="rtl">' + rtl + '</bdo>';
   115     testContainer = testFrame.contentDocument.getElementById('content');
   116     textNode = document.createTextNode("");
   117     testContainer.appendChild(textNode);
   118     textNode.appendData(ltr + rtl);
   119     yield undefined;
   120   }
   122   // appendData with 8bit prefix
   123   for (i = 0; i <= 16; i++) {
   124     prefix = is8bit;
   125     ltr = strMult(is8bit, i);
   126     refContainer.innerHTML = prefix + ltr + '<bdo dir="rtl">' + rtl + '</bdo>';
   127     testContainer = testFrame.contentDocument.getElementById('content');
   128     textNode = document.createTextNode(prefix);
   129     testContainer.appendChild(textNode);
   130     textNode.appendData(ltr + rtl);
   131     yield undefined;
   132   }
   134   for (i = 0; i <= 16; i++) {
   135     prefix = is8bit;
   136     ltr = non8bit + strMult(is8bit, i);
   137     refContainer.innerHTML = prefix + ltr + '<bdo dir="rtl">' + rtl + '</bdo>';
   138     testContainer = testFrame.contentDocument.getElementById('content');
   139     textNode = document.createTextNode(prefix);
   140     testContainer.appendChild(textNode);
   141     textNode.appendData(ltr + rtl);
   142     yield undefined;
   143   }
   145   // appendData with non-8bit prefix
   146   for (i = 0; i <= 16; i++) {
   147     prefix = non8bit;
   148     ltr = strMult(is8bit, i);
   149     refContainer.innerHTML = prefix + ltr + '<bdo dir="rtl">' + rtl + '</bdo>';
   150     testContainer = testFrame.contentDocument.getElementById('content');
   151     textNode = document.createTextNode(prefix);
   152     testContainer.appendChild(textNode);
   153     textNode.appendData(ltr + rtl);
   154     yield undefined;
   155   }
   157   for (i = 0; i <= 16; i++) {
   158     prefix = non8bit;
   159     ltr = non8bit + strMult(is8bit, i);
   160     refContainer.innerHTML = prefix + ltr + '<bdo dir="rtl">' + rtl + '</bdo>';
   161     testContainer = testFrame.contentDocument.getElementById('content');
   162     textNode = document.createTextNode(prefix);
   163     testContainer.appendChild(textNode);
   164     textNode.appendData(ltr + rtl);
   165     yield undefined;
   166   }
   167 };
   169 var tests = runTests();
   171 </script>
   172 </pre>
   173 </body>
   174 </html>

mercurial