tor-browser

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

inline-event-handler-ordering.html (2103B)


      1 <!doctype html>
      2 <meta charset="utf-8">
      3 <title>Inline event handlers retain their ordering even when invalid</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <body>
      7 <script>
      8 setup({ allow_uncaught_exception: true });
      9 var events = [];
     10 
     11 test(function() {
     12  events = [];
     13  var e = document.createElement("div");
     14  document.body.appendChild(e);
     15  e.addEventListener("click", function() { events.push("ONE") });
     16  e.setAttribute("onclick", "window.open(");
     17  e.addEventListener("click", function() { events.push("THREE") });
     18  // Try to compile the event handler.
     19  e.onclick;
     20  e.setAttribute("onclick", "events.push('TWO')");
     21  e.dispatchEvent(new Event("click"));
     22  var expected_events = ["ONE", "TWO", "THREE"];
     23  assert_array_equals(events, expected_events);
     24 }, "Inline event handlers retain their ordering when invalid and force-compiled");
     25 
     26 test(function() {
     27  events = [];
     28  var e = document.createElement("div");
     29  document.body.appendChild(e);
     30  e.addEventListener("click", function() { events.push("ONE") });
     31  e.setAttribute("onclick", "window.open(");
     32  e.addEventListener("click", function() { events.push("THREE") });
     33  e.dispatchEvent(new Event("click"));
     34  e.setAttribute("onclick", "events.push('TWO')");
     35  e.dispatchEvent(new Event("click"));
     36  var expected_events = ["ONE", "THREE", "ONE", "TWO", "THREE"];
     37  assert_array_equals(events, expected_events);
     38 }, "Inline event handlers retain their ordering when invalid and force-compiled via dispatch");
     39 
     40 test(function() {
     41  events = [];
     42  var e = document.createElement("div");
     43  document.body.appendChild(e);
     44  e.addEventListener("click", function() { events.push("ONE") });
     45  e.setAttribute("onclick", "window.open(");
     46  e.addEventListener("click", function() { events.push("THREE") });
     47  e.setAttribute("onclick", "events.push('TWO')");
     48  e.dispatchEvent(new Event("click"));
     49  var expected_events = ["ONE", "TWO", "THREE"];
     50  assert_array_equals(events, expected_events);
     51 }, "Inline event handlers retain their ordering when invalid and lazy-compiled");
     52 </script>
     53 </body>