tor-browser

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

test_bug1304044.html (3710B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=1304044
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Test for Bug 1304044</title>
      9  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     10  <script src="/tests/SimpleTest/EventUtils.js"></script>
     11  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     12  <script type="application/javascript">
     13    var eventsFired = [];
     14    var target;
     15    var eventsExpected;
     16 
     17    function GetNodeString(node) {
     18      if (node == window)
     19        return "window";
     20      if (node == document)
     21        return "document";
     22      if (node.id)
     23        return node.id;
     24      if (node.nodeName)
     25        return node.nodeName;
     26      return node;
     27    }
     28 
     29    function TargetAndListener(listener, targetInner) {
     30      this.listener = listener;
     31      this.target = targetInner;
     32    }
     33 
     34    TargetAndListener.prototype.toString = function() {
     35      var targetName = GetNodeString(this.target);
     36      var listenerName = GetNodeString(this.listener);
     37      return "(listener: " + listenerName + ", target: " + targetName + ")";
     38    }
     39 
     40    var tests = [
     41      TestAuxClickBubblesForEventListener,
     42      TestAuxClickBubblesForOnAuxClick,
     43    ];
     44 
     45    function CompareEvents(evt, expected) {
     46      return evt && expected && evt.listener == expected.listener &&
     47          evt.target == expected.target;
     48    }
     49 
     50    function ResetEventsFired() {
     51      eventsFired = [];
     52    }
     53 
     54    function ClearEventListeners() {
     55      for (i in arguments) {
     56        arguments[i].removeEventListener("auxclick", log_event);
     57      }
     58    }
     59 
     60    function ClickTarget(tgt) {
     61      synthesizeMouseAtCenter(tgt, {type : "mousedown", button: 2}, window);
     62      synthesizeMouseAtCenter(tgt, {type : "mouseup", button: 2}, window);
     63    }
     64 
     65    function log_event(e) {
     66      eventsFired[eventsFired.length] = new TargetAndListener(this, e.target);
     67    }
     68 
     69    function CompareEventsToExpected(expected, actual) {
     70      for (var i = 0; i < expected.length || i < actual.length; i++) {
     71        ok(CompareEvents(actual[i], expected[i]),
     72           "Auxclick receiver's don't match: TargetAndListener " +
     73           i + ": Expected: " + expected[i] + ", Actual: " + actual[i]);
     74      }
     75    }
     76 
     77    function TestAuxClickBubblesForEventListener() {
     78      target.addEventListener("auxclick", log_event);
     79      document.addEventListener("auxclick", log_event);
     80      window.addEventListener("auxclick", log_event);
     81 
     82      ClickTarget(target)
     83      CompareEventsToExpected(eventsExpected, eventsFired);
     84      ResetEventsFired();
     85      ClearEventListeners(target, document, window);
     86    }
     87 
     88    function TestAuxClickBubblesForOnAuxClick() {
     89      target.onauxclick = log_event;
     90      document.onauxclick = log_event;
     91      window.onauxclick = log_event;
     92 
     93      ClickTarget(target);
     94      CompareEventsToExpected(eventsExpected, eventsFired);
     95      ResetEventsFired();
     96    }
     97 
     98    function RunTests(){
     99      for (var i = 0; i < tests.length; i++) {
    100        tests[i]();
    101      }
    102    }
    103 
    104    function Begin() {
    105      target = document.getElementById("target");
    106      eventsExpected =  [
    107        new TargetAndListener(target, target),
    108        new TargetAndListener(document, target),
    109        new TargetAndListener(window, target),
    110      ];
    111      RunTests();
    112      target.remove();
    113      SimpleTest.finish();
    114    }
    115 
    116    window.onload = function() {
    117      SimpleTest.waitForExplicitFinish();
    118      SimpleTest.executeSoon(Begin);
    119    }
    120  </script>
    121 </head>
    122 <body>
    123 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1304044">Mozilla Bug 1304044</a>
    124 <p id="display">
    125  <div id="target">Target</div>
    126 </p>
    127 <div id="content" style:"display:none">
    128 
    129 </div>
    130 <pre id="test">
    131 </pre>
    132 </body>
    133 </html>