tor-browser

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

test_bug524674.xhtml (4330B)


      1 <?xml version="1.0"?>
      2 <?xml-stylesheet type="text/css" href="chrome://global/skin"?>
      3 <?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
      4 <!--
      5 https://bugzilla.mozilla.org/show_bug.cgi?id=524674
      6 -->
      7 <window title="Mozilla Bug 524674"
      8        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
      9  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
     10 
     11  <!-- test results are displayed in the html:body -->
     12  <body xmlns="http://www.w3.org/1999/xhtml">
     13  <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=524674"
     14     target="_blank">Mozilla Bug 524674</a>
     15  </body>
     16 
     17  <!-- test code goes here -->
     18  <script type="application/javascript">
     19  <![CDATA[
     20  /** Test for Bug 524674 */
     21 
     22  var els = Cc["@mozilla.org/eventlistenerservice;1"]
     23              .getService(Ci.nsIEventListenerService);
     24 
     25  function dummyListener() {}
     26 
     27  var runningTest = null;
     28  var d = document.createElementNS("http://www.w3.org/1999/xhtml", "div");
     29  var xhr = new XMLHttpRequest();
     30 
     31  // Test also double removals and such.
     32  var tests = [
     33    function() {
     34      els.addListenerChangeListener(changeListener);
     35      d.addEventListener("foo", dummyListener);
     36      d.addEventListener("foo", dummyListener);
     37      xhr.addEventListener("foo", dummyListener);
     38      tests[0] = [{target: d, listeners: ["onfoo"]},
     39                  {target: xhr, listeners: ["onfoo"]}];
     40    },
     41    function() {
     42      d.addEventListener("bar", dummyListener);
     43      d.addEventListener("baz", dummyListener);
     44      xhr.addEventListener("bar", dummyListener);
     45      xhr.addEventListener("baz", dummyListener);
     46      tests[0] = [{target: d, listeners: ["onbaz", "onbar"]},
     47                  {target: xhr, listeners: ["onbaz", "onbar"]}];
     48    },
     49    function() {
     50      d.onclick = dummyListener;
     51      d.onclick = dummyListener;
     52      xhr.onload = dummyListener;
     53      tests[0] = [{target: d, listeners: ["onclick"]},
     54                  {target: xhr, listeners: ["onload"]}];
     55    },
     56    function() {
     57      d.onclick = function() {};
     58      tests[0] = [{target: d, listeners: ["onclick"]}];
     59    },
     60    function() {
     61      d.removeEventListener("foo", dummyListener);
     62      d.removeEventListener("foo", dummyListener);
     63      xhr.removeEventListener("foo", dummyListener);
     64      tests[0] = [{target: d, listeners: ["onfoo"]},
     65                  {target: xhr, listeners: ["onfoo"]}];
     66    },
     67    function() {
     68      d.removeEventListener("bar", dummyListener);
     69      d.removeEventListener("baz", dummyListener);
     70      xhr.removeEventListener("bar", dummyListener);
     71      xhr.removeEventListener("baz", dummyListener);
     72      tests[0] = [{target: d, listeners: ["onbar", "onbaz"]},
     73                  {target: xhr, listeners: ["onbar", "onbaz"]}];
     74    },
     75    function() {
     76      d.onclick = null;
     77      d.onclick = null;
     78      xhr.onload = null;
     79      tests[0] = [{target: d, listeners: ["onclick"]},
     80                  {target: xhr, listeners: ["onload"]}];
     81    },
     82    function() {
     83      els.removeListenerChangeListener(changeListener);
     84      // Check that once we've removed the change listener, it isn't called anymore.
     85      d.addEventListener("foo", dummyListener);
     86      xhr.addEventListener("foo", dummyListener);
     87      SimpleTest.executeSoon(function() {
     88        SimpleTest.finish();
     89      });
     90    }
     91  ];
     92 
     93  SimpleTest.executeSoon(tests[0]);
     94 
     95  function changeListener(array) {
     96    if (typeof tests[0] == "function") {
     97      return;
     98    }
     99    var expectedEventChanges = tests[0];
    100    var eventChanges = array.enumerate();
    101    var i = 0;
    102    while (eventChanges.hasMoreElements() && i < expectedEventChanges.length) {
    103      var current;
    104      try {
    105        current = eventChanges.getNext().QueryInterface(Ci.nsIEventListenerChange);
    106        var expected = expectedEventChanges[i];
    107 
    108        if (current.target == expected.target) {
    109          is(current.target, expected.target, current.target + " = " + expected.target);
    110          ++i;
    111        }
    112      } catch(ex) {
    113        continue;
    114      }
    115    }
    116    if (expectedEventChanges.length != i) {
    117      return;
    118    }
    119 
    120    is(expectedEventChanges.length, i, "Should have got notification for all the changes.");
    121    tests.shift();
    122 
    123    ok(tests.length);
    124    SimpleTest.executeSoon(tests[0]);
    125  }
    126 
    127  SimpleTest.waitForExplicitFinish();
    128  ]]>
    129  </script>
    130 </window>