tor-browser

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

event-global.html (4471B)


      1 <!DOCTYPE html>
      2 <title>window.event tests</title>
      3 <link rel="author" title="Mike Taylor" href="mailto:miketaylr@gmail.com">
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <div id=log></div>
      7 <script>
      8 setup({allow_uncaught_exception: true});
      9 
     10 test(t => {
     11  assert_own_property(window, "event");
     12  assert_equals(window.event, undefined);
     13 }, "event exists on window, which is initially set to undefined");
     14 
     15 async_test(t => {
     16  let target = document.createElement("div");
     17  assert_equals(window.event, undefined, "undefined before dispatch");
     18 
     19  let clickEvent = new Event("click");
     20  target.addEventListener("click", t.step_func_done(e => {
     21    assert_equals(window.event, clickEvent, "window.event set to current event during dispatch");
     22  }));
     23 
     24  target.dispatchEvent(clickEvent);
     25  assert_equals(window.event, undefined, "undefined after dispatch");
     26 }, "window.event is only defined during dispatch");
     27 
     28 async_test(t => {
     29  let parent = document.createElement("div");
     30  let root = parent.attachShadow({mode: "closed"});
     31  let span = document.createElement("span");
     32  root.appendChild(span);
     33 
     34  span.addEventListener("test", t.step_func(e => {
     35    assert_equals(window.event, undefined);
     36    assert_not_equals(window.event, e);
     37  }));
     38 
     39  parent.addEventListener("test", t.step_func_done(e => {
     40    assert_equals(window.event, e);
     41    assert_not_equals(window.event, undefined);
     42  }));
     43 
     44  parent.dispatchEvent(new Event("test", {composed: true}));
     45 }, "window.event is undefined if the target is in a shadow tree (event dispatched outside shadow tree)");
     46 
     47 async_test(t => {
     48  let parent = document.createElement("div");
     49  let root = parent.attachShadow({mode: "closed"});
     50  let span = document.createElement("span");
     51  root.appendChild(span);
     52  let shadowNode = root.firstElementChild;
     53 
     54  shadowNode.addEventListener("test", t.step_func((e) => {
     55    assert_not_equals(window.event, e);
     56    assert_equals(window.event, undefined);
     57  }));
     58 
     59  parent.addEventListener("test", t.step_func_done(e => {
     60    assert_equals(window.event, e);
     61    assert_not_equals(window.event, undefined);
     62  }));
     63 
     64  shadowNode.dispatchEvent(new Event("test", {composed: true, bubbles: true}));
     65 }, "window.event is undefined if the target is in a shadow tree (event dispatched inside shadow tree)");
     66 
     67 async_test(t => {
     68  let parent = document.createElement("div");
     69  let root = parent.attachShadow({mode: "open"});
     70  document.body.append(parent)
     71  let span = document.createElement("span");
     72  root.append(span);
     73  let shadowNode = root.firstElementChild;
     74 
     75  shadowNode.addEventListener("error", t.step_func(e => {
     76    assert_not_equals(window.event, e);
     77    assert_equals(window.event, undefined);
     78  }));
     79 
     80  let windowOnErrorCalled = false;
     81  window.onerror = t.step_func_done(() => {
     82    windowOnErrorCalled = true;
     83    assert_equals(typeof window.event, "object");
     84    assert_equals(window.event.type, "error");
     85  });
     86 
     87  shadowNode.dispatchEvent(new ErrorEvent("error", {composed: true, bubbles: true}));
     88  assert_true(windowOnErrorCalled);
     89 }, "window.event is undefined inside window.onerror if the target is in a shadow tree (ErrorEvent dispatched inside shadow tree)");
     90 
     91 async_test(t => {
     92  let target1 = document.createElement("div");
     93  let target2 = document.createElement("div");
     94 
     95  target2.addEventListener("dude", t.step_func(() => {
     96    assert_equals(window.event.type, "dude");
     97  }));
     98 
     99  target1.addEventListener("cool", t.step_func_done(() => {
    100    assert_equals(window.event.type, "cool", "got expected event from global event during dispatch");
    101    target2.dispatchEvent(new Event("dude"));
    102    assert_equals(window.event.type, "cool", "got expected event from global event after handling a different event handler callback");
    103  }));
    104 
    105  target1.dispatchEvent(new Event("cool"));
    106 }, "window.event is set to the current event during dispatch");
    107 
    108 async_test(t => {
    109  let target = document.createElement("div");
    110 
    111  target.addEventListener("click", t.step_func_done(e => {
    112    assert_equals(e, window.event);
    113  }));
    114 
    115  target.dispatchEvent(new Event("click"));
    116 }, "window.event is set to the current event, which is the event passed to dispatch");
    117 
    118 async_test(t => {
    119  let target = new XMLHttpRequest();
    120 
    121  target.onload = t.step_func_done(e => {
    122    assert_equals(e, window.event);
    123  });
    124 
    125  target.dispatchEvent(new Event("load"));
    126 }, "window.event is set to the current event, which is the event passed to dispatch (2)");
    127 </script>