tor-browser

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

Event-timestamp-cross-realm-getter.html (1250B)


      1 <!doctype html>
      2 <meta charset="utf-8">
      3 <title>event.timeStamp is initialized using event's relevant global object</title>
      4 <link rel="help" href="https://dom.spec.whatwg.org/#ref-for-dom-event-timestamp%E2%91%A1">
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 
      8 <body>
      9 <script>
     10 const t = async_test();
     11 t.step_timeout(() => {
     12  const iframeDelayed = document.createElement("iframe");
     13  iframeDelayed.onload = t.step_func_done(() => {
     14    // Use eval() to eliminate false-positive test result for WebKit builds before r280256,
     15    // which invoked WebIDL accessors in context of lexical (caller) global object.
     16    const timeStampExpected = iframeDelayed.contentWindow.eval(`new Event("foo").timeStamp`);
     17    const eventDelayed = new iframeDelayed.contentWindow.Event("foo");
     18 
     19    const {get} = Object.getOwnPropertyDescriptor(Event.prototype, "timeStamp");
     20    assert_approx_equals(get.call(eventDelayed), timeStampExpected, 5, "via Object.getOwnPropertyDescriptor");
     21 
     22    Object.setPrototypeOf(eventDelayed, Event.prototype);
     23    assert_approx_equals(eventDelayed.timeStamp, timeStampExpected, 5, "via Object.setPrototypeOf");
     24  });
     25  document.body.append(iframeDelayed);
     26 }, 1000);
     27 </script>