content/base/test/test_bug372964.html

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/content/base/test/test_bug372964.html	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,144 @@
     1.4 +<!DOCTYPE HTML>
     1.5 +<html>
     1.6 +<!--
     1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=372964
     1.8 +-->
     1.9 +<head>
    1.10 +  <title>Test for Bug 372964</title>
    1.11 +  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
    1.12 +  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
    1.13 +</head>
    1.14 +<body>
    1.15 +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=372964">Mozilla Bug 372964</a>
    1.16 +<p id="display"></p>
    1.17 +<div id="content" style="display: none">
    1.18 +  
    1.19 +</div>
    1.20 +<pre id="test">
    1.21 +<script class="testbody" type="text/javascript">
    1.22 +
    1.23 +/** Test for Bug 372964 **/
    1.24 +
    1.25 +var expectedEventType = "";
    1.26 +var shouldBeTrusted = false;
    1.27 +var eventHandlerCallCount = 0;
    1.28 +
    1.29 +function eventHandler(evt) {
    1.30 +  ++eventHandlerCallCount;
    1.31 +  is(evt.type, expectedEventType, "Wrong event type");
    1.32 +  is(evt.isTrusted, shouldBeTrusted, "Wrong .isTrusted");
    1.33 +}
    1.34 +
    1.35 +function test(trusted, type, removeAddedListener, removeSetListener, allowUntrusted) {
    1.36 +  if (trusted) {
    1.37 +    var x1 = SpecialPowers.wrap(new XMLHttpRequest());
    1.38 +  } else {
    1.39 +    x1 = new XMLHttpRequest();
    1.40 +  }
    1.41 +
    1.42 +  var handlerCount = 0;
    1.43 +  if (trusted || allowUntrusted || allowUntrusted == undefined) {
    1.44 +    ++handlerCount;
    1.45 +  }
    1.46 +
    1.47 +  if (allowUntrusted == undefined) {
    1.48 +    // Test .addEventListener with 3 parameters.
    1.49 +    x1.addEventListener(type, eventHandler, false);
    1.50 +  } else {
    1.51 +    // Test .addEventListener with 4 parameters.
    1.52 +    x1.addEventListener(type, eventHandler, false, allowUntrusted);
    1.53 +  }
    1.54 +
    1.55 +  if (("on" + type) in x1) {
    1.56 +    ++handlerCount;
    1.57 +    x1["on" + type] = eventHandler;
    1.58 +  }
    1.59 +
    1.60 +  if (removeAddedListener) {
    1.61 +    x1.removeEventListener(type, eventHandler, false);
    1.62 +    if (trusted || allowUntrusted || allowUntrusted == undefined) {
    1.63 +      --handlerCount;
    1.64 +    }
    1.65 +  }
    1.66 +
    1.67 +  if (removeSetListener) {
    1.68 +    if (("on" + type) in x1) {
    1.69 +      --handlerCount;
    1.70 +      x1["on" + type] = null;
    1.71 +    }
    1.72 +  }
    1.73 +
    1.74 +  var e1 = document.createEvent("Events");
    1.75 +  e1.initEvent(type, true, true);
    1.76 +  expectedEventType = type;
    1.77 +  shouldBeTrusted = trusted;
    1.78 +  var ecc = eventHandlerCallCount;
    1.79 +  x1.dispatchEvent(e1);
    1.80 +  is(eventHandlerCallCount, ecc + handlerCount,
    1.81 +     "Wrong number event handler calls. (1)");
    1.82 +
    1.83 +  e1 = document.createEvent("Events");
    1.84 +  e1.initEvent(type, true, true);
    1.85 +  expectedEventType = type;
    1.86 +  // Set trusted since open() may cause events to be sent.
    1.87 +  shouldBeTrusted = true;
    1.88 +  x1.open("GET", window.location);
    1.89 +  x1.abort(); // This should not remove event listeners.
    1.90 +  ecc = eventHandlerCallCount;
    1.91 +  shouldBeTrusted = trusted;
    1.92 +  x1.dispatchEvent(e1);
    1.93 +  is(eventHandlerCallCount, ecc + handlerCount,
    1.94 +     "Wrong number event handler calls. (2)");
    1.95 +
    1.96 +  e1 = document.createEvent("Events");
    1.97 +  e1.initEvent(type, true, true);
    1.98 +  expectedEventType = type;
    1.99 +  // Set trusted since open()/send() may cause events to be sent.
   1.100 +  shouldBeTrusted = true;
   1.101 +  x1.open("GET", window.location);
   1.102 +  x1.send("");
   1.103 +  x1.abort(); // This should not remove event listeners!
   1.104 +  ecc = eventHandlerCallCount;
   1.105 +  shouldBeTrusted = trusted;
   1.106 +  x1.dispatchEvent(e1);
   1.107 +  is(eventHandlerCallCount, ecc + handlerCount,
   1.108 +     "Wrong number event handler calls. (3)");
   1.109 +}
   1.110 +
   1.111 +var events =
   1.112 +  ["load", "error", "progress", "readystatechange", "foo"];
   1.113 +
   1.114 +do {
   1.115 +  var e = events.shift();
   1.116 +  test(false, e, false, false);
   1.117 +  test(false, e, false, true);
   1.118 +  test(false, e, true,  false);
   1.119 +  test(false, e, true,  true);
   1.120 +  test(true,  e, false, false);
   1.121 +  test(true,  e, false, true);
   1.122 +  test(true,  e, true,  false);
   1.123 +  test(true,  e, true,  true);
   1.124 +
   1.125 +  test(false, e, false, false, false);
   1.126 +  test(false, e, false, false, true);
   1.127 +  test(false, e, false, true,  false);
   1.128 +  test(false, e, false, true,  true);
   1.129 +  test(false, e, true,  false, false);
   1.130 +  test(false, e, true,  false, true);
   1.131 +  test(false, e, true,  true,  false);
   1.132 +  test(false, e, true,  true,  true);
   1.133 +  test(true,  e, false, false, false);
   1.134 +  test(true,  e, false, false, true);
   1.135 +  test(true,  e, false, true,  false);
   1.136 +  test(true,  e, false, true,  true);
   1.137 +  test(true,  e, true,  false, false);
   1.138 +  test(true,  e, true,  false, true);
   1.139 +  test(true,  e, true,  true,  false);
   1.140 +  test(true,  e, true,  true,  true);
   1.141 +} while(events.length);
   1.142 +
   1.143 +</script>
   1.144 +</pre>
   1.145 +</body>
   1.146 +</html>
   1.147 +

mercurial