tor-browser

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

TapToStopFling.html (2317B)


      1 <!DOCTYPE html>
      2 <html>
      3 <meta charset=utf-8 />
      4 <title></title>
      5 <style>
      6 #targetDiv {
      7    width: 200px;
      8    height: 200px;
      9    overflow: scroll;
     10 }
     11 
     12 #innerDiv {
     13    width: 4000px;
     14    height: 4000px;
     15 }
     16 </style>
     17 <body style="margin:0">
     18  <div id="targetDiv">
     19    <div id="innerDiv">
     20    </div>
     21  </div>
     22  <script src=/resources/testharness.js></script>
     23  <script src=/resources/testharnessreport.js></script>
     24  <script src=/resources/testdriver.js></script>
     25  <script src=/resources/testdriver-actions.js></script>
     26  <script src=/resources/testdriver-vendor.js></script>
     27  <script src=resources/event-timing-test-utils.js></script>
     28  <script>
     29  let event_count = 0;
     30 
     31  function validateEntries(entries) {
     32    assert_equals(entries.length, 2, "two pointerdown entries should be received");
     33    let entry = entries[0];
     34    assert_equals(entry.name, 'pointerdown');
     35    assert_equals(entry.interactionId, 0);
     36    entry = entries[1];
     37    assert_equals(entry.name, 'pointerdown');
     38    assert_equals(entry.interactionId, 0);
     39  }
     40 
     41  promise_test(async t => {
     42    assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.');
     43    // Skip the test on a Mac as they do not support touch screens.
     44    const isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0;
     45    if (isMac)
     46      return;
     47 
     48    // Wait for load event so we can interact on the page.
     49    await new Promise(resolve => {
     50      window.addEventListener('load', resolve);
     51    });
     52 
     53    let observedEntries = [];
     54    const observerPromise = new Promise(resolve => {
     55      let pointerdown_count = 0;
     56      new PerformanceObserver(entryList => {
     57        entryList.getEntries().forEach(e => {
     58          if(e.name.includes('pointerdown')) {
     59            pointerdown_count += 1;
     60            observedEntries.push(e);
     61          }
     62          if(pointerdown_count == 2){
     63            resolve(observedEntries);
     64          }
     65        });
     66      }).observe({type: 'event',
     67                  durationThreshold: 0,
     68                  buffered: true});
     69    })
     70 
     71    const target = document.getElementById('targetDiv');
     72    await interactAndObserve('fling-tap', target, observerPromise);
     73    validateEntries(observedEntries);
     74  }, "Event Timing: test that the second pointerdown event that happens during fling does not have interaction id.");
     75 </script>
     76 </body>
     77 </html>