tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_bug331959.html (4847B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=331959
      5 -->
      6 <head>
      7  <title>Test for Bug 331959</title>
      8  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      9  <script src="/tests/SimpleTest/EventUtils.js"></script>
     10  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     11 </head>
     12 <body>
     13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=331959">Mozilla Bug 331959</a>
     14 <p id="display">
     15  <iframe id="link-in-link-mouse"></iframe>
     16  <iframe id="link-in-link-keyboard"></iframe>
     17  <iframe id="input-in-link-mouse"></iframe>
     18  <iframe id="input-in-link-keyboard"></iframe>
     19  <iframe id="button-in-link-mouse"></iframe>
     20  <iframe id="button-in-link-keyboard"></iframe>
     21 </p>
     22 <div id="content" style="display: none">
     23  
     24 </div>
     25 <pre id="test">
     26 <script type="application/javascript">
     27 
     28 /** Test for Bug 331959 */
     29 SimpleTest.waitForExplicitFinish();
     30 
     31 const FAILURL = "FAIL.html";
     32 const PASSURL = "PASS.html";
     33 
     34 var currentTest = 0;
     35 var tests = [ testLinkInLinkMouse, testLinkInLinkKeyboard,
     36              testInputInLinkMouse, testInputInLinkKeyboard,
     37              testButtonInLinkMouse, testButtonInLinkKeyboard ];
     38 function doNextTest() {
     39  if (currentTest == tests.length) {
     40    SimpleTest.finish();
     41  } else {
     42    tests[currentTest++]();
     43  }
     44 }
     45 
     46 function generateLinkInLink(id, desc) {
     47  var doc = $(id).contentDocument;
     48  var outerA = doc.createElement("a");
     49  var innerA = doc.createElement("a");
     50  outerA.id = "outer";
     51  innerA.id = "inner";
     52  innerA.href = PASSURL;
     53  outerA.href = FAILURL;
     54  innerA.appendChild(doc.createTextNode("Text"));
     55  outerA.appendChild(innerA);
     56  doc.body.appendChild(outerA);
     57  $(id).onload = function() {
     58    is(this.contentDocument.documentElement.innerText, "PASS", desc);
     59    // Have to remove the iframe we used from the DOM, because the harness is
     60    // stupid and doesn't have enough space for more than one iframe.
     61    $(id).remove();
     62    doNextTest();
     63  };
     64  return [innerA, $(id).contentWindow];
     65 }
     66 
     67 function testLinkInLinkMouse() {
     68  var [innerA, testWin] =
     69    generateLinkInLink("link-in-link-mouse",
     70                       "Clicking an inner link should load the inner link");
     71  synthesizeMouseAtCenter(innerA, {}, testWin);
     72 }
     73 
     74 function testLinkInLinkKeyboard() {
     75  var [innerA, testWin] =
     76    generateLinkInLink("link-in-link-keyboard",
     77                       "Hitting enter on an inner link should load the inner link");
     78  innerA.focus();
     79  synthesizeKey("VK_RETURN", {}, testWin);
     80 }
     81 
     82 function generateInputInLink(id, desc) {
     83  var doc = $(id).contentDocument;
     84  doc.body.innerHTML =
     85    "<form action='" + PASSURL + "'><a href='" + FAILURL +
     86    "'><input type='submit' id='submit'>";
     87  $(id).onload = function() {
     88    is(this.contentDocument.documentElement.innerText, "PASS", desc);
     89    // Have to remove the iframe we used from the DOM, because the harness is
     90    // stupid and doesn't have enough space for more than one iframe.
     91    $(id).remove();
     92    doNextTest();
     93  };
     94  var input = doc.getElementById("submit");
     95  doc.body.offsetWidth;
     96  return [input, $(id).contentWindow];
     97 }
     98 
     99 function testInputInLinkMouse() {
    100  var [input, testWin] =
    101    generateInputInLink("input-in-link-mouse",
    102                        "Clicking an submit input inside an anchor should submit the form");
    103  synthesizeMouseAtCenter(input, {}, testWin);
    104 }
    105 
    106 function testInputInLinkKeyboard() {
    107  var [input, testWin] =
    108    generateInputInLink("input-in-link-keyboard",
    109                        "Return on submit input inside an anchor should submit the form");
    110  input.focus();
    111  synthesizeKey("VK_RETURN", {}, testWin);
    112 }
    113 
    114 function generateButtonInLink(id, desc) {
    115  var doc = $(id).contentDocument;
    116  doc.body.innerHTML =
    117    "<form action='" + PASSURL + "'><a href='" + FAILURL +
    118    "'><button type='submit' id='submit'>Submit</button>";
    119  $(id).onload = function() {
    120    is(this.contentDocument.documentElement.innerText, "PASS", desc);
    121    // Have to remove the iframe we used from the DOM, because the harness is
    122    // stupid and doesn't have enough space for more than one iframe.
    123    $(id).remove();
    124    doNextTest();
    125  };
    126  var button = doc.getElementById("submit");
    127  return [button, $(id).contentWindow];
    128 }
    129 
    130 function testButtonInLinkMouse() {
    131  var [button, testWin] =
    132    generateButtonInLink("button-in-link-mouse",
    133                        "Clicking an submit button inside an anchor should submit the form");
    134  synthesizeMouseAtCenter(button, {}, testWin);
    135 }
    136 
    137 function testButtonInLinkKeyboard() {
    138  var [button, testWin] =
    139    generateButtonInLink("button-in-link-keyboard",
    140                        "Return on submit button inside an anchor should submit the form");
    141  button.focus();
    142  synthesizeKey("VK_RETURN", {}, testWin);
    143 }
    144 
    145 // We need focus to handle clicks properly
    146 SimpleTest.waitForFocus(doNextTest);
    147 
    148 </script>
    149 </pre>
    150 </body>
    151 </html>