tor-browser

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

selection-autoscroll.html (3610B)


      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      <p>Test test test test test test...</p>
     21      <p>Test test test test test test...</p>
     22      <p>Test test test test test test...</p>
     23      <p>Test test test test test test...</p>
     24      <p>Test test test test test test...</p>
     25      <p>Test test test test test test...</p>
     26      <p>Test test test test test test...</p>
     27      <p>Test test test test test test...</p>
     28      <p>Test test test test test test...</p>
     29      <p>Test test test test test test...</p>
     30      <p>Test test test test test test...</p>
     31      <p>Test test test test test test...</p>
     32      <p>Test test test test test test...</p>
     33      <p>Test test test test test test...</p>
     34      <p>Test test test test test test...</p>
     35      <p>Test test test test test test...</p>
     36      <p>Test test test test test test...</p>
     37      <p>Test test test test test test...</p>
     38      <p>Test test test test test test...</p>
     39      <p>Test test test test test test...</p>
     40      <p>Test test test test test test...</p>
     41      <p>Test test test test test test...</p>
     42      <p>Test test test test test test...</p>
     43      <p>Test test test test test test...</p>
     44      <p>Test test test test test test...</p>
     45    </div>
     46  </div>
     47  <script src=/resources/testharness.js></script>
     48  <script src=/resources/testharnessreport.js></script>
     49  <script src=/resources/testdriver.js></script>
     50  <script src=/resources/testdriver-actions.js></script>
     51  <script src=/resources/testdriver-vendor.js></script>
     52  <script src=resources/event-timing-test-utils.js></script>
     53  <script>
     54 
     55  function validateEntries(entries) {
     56    assert_equals(entries.length, 2, "two pointerdown entries should be received");
     57    let entry = entries[0];
     58    assert_equals(entry.name, 'pointerdown');
     59    assert_equals(entry.interactionId, 0);
     60    entry = entries[1];
     61    assert_equals(entry.name, 'pointerup');
     62    assert_equals(entry.interactionId, 0);
     63  }
     64 
     65  promise_test(async t => {
     66    assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.');
     67    // Skip the test on a Mac as they do not support touch screens.
     68    const isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0;
     69    if (isMac)
     70      return;
     71 
     72    // Wait for load event so we can interact on the page.
     73    await new Promise(resolve => {
     74      window.addEventListener('load', resolve);
     75    });
     76 
     77    let observedEntries = [];
     78    const observerPromise = new Promise(resolve => {
     79      let pointerdown_count = 0;
     80      new PerformanceObserver(entryList => {
     81        entryList.getEntries().forEach(e => {
     82          if(e.name.includes('pointerdown')) {
     83            pointerdown_count += 1;
     84            observedEntries.push(e);
     85          }
     86          if(e.name.includes('pointerup')) {
     87            pointerdown_count += 1;
     88            observedEntries.push(e);
     89          }
     90          if(pointerdown_count == 2){
     91            resolve(observedEntries);
     92          }
     93        });
     94      }).observe({type: 'event',
     95                  durationThreshold: 0,
     96                  buffered: true});
     97    })
     98 
     99    const target = document.getElementById('targetDiv');
    100    await interactAndObserve('selection-scroll', target, observerPromise);
    101    validateEntries(observedEntries);
    102  }, "Event Timing: test that the events received in PerformanceObserver during an active text selection autoscroll does not have interaction id.");
    103 </script>
    104 </body>
    105 </html>