tor-browser

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

retrievability.html (1769B)


      1 <!DOCTYPE html>
      2 <html>
      3 <meta charset=utf-8>
      4 <title>Event Timing: make sure 'event' entries are not retrievable by performance.getEntries* APIs.</title>
      5 <meta name="timeout" content="long">
      6 <button id='button'>Generate a 'click' event</button>
      7 <script src=/resources/testharness.js></script>
      8 <script src=/resources/testharnessreport.js></script>
      9 <script src=/resources/testdriver.js></script>
     10 <script src=/resources/testdriver-vendor.js></script>
     11 
     12 <script src=resources/event-timing-test-utils.js></script>
     13 
     14 <script>
     15  function validateEntries() {
     16    const entriesByName = performance.getEntriesByName('pointerdown', 'event');
     17    const entriesByType = performance.getEntriesByType('event');
     18    const allEntries = performance.getEntries();
     19    assert_equals(entriesByName.length, 0, 'Event Timing entry should not be retrievable by getEntriesByName');
     20    assert_equals(entriesByType.length, 0, 'Event Timing entry should not be retrievable by getEntriesByType');
     21    assert_equals(allEntries.filter(e => e.entryType === 'event').length, 0, 'Event Timing entry should not be retrievable by getEntries');
     22  }
     23 
     24  /* Timeline:
     25     Begin Busy Loop
     26     Click 1 arrives
     27     End Busy Loop
     28     (Dispatch and Process Click 1 - buffered)
     29     Onload Event Fires
     30     Validate entries
     31  */
     32  async_test(function(t) {
     33    assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.');
     34    new PerformanceObserver(t.step_func(entryList => {
     35      if (entryList.getEntriesByName('pointerdown').length > 0) {
     36        validateEntries();
     37        t.done();
     38      }
     39    })).observe({entryTypes: ['event']});
     40    clickAndBlockMain('button');
     41  }, "Event Timing: make sure event-timing entries are not retrievable by performance.getEntries*.");
     42 
     43 </script>
     44 </html>