tor-browser

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

container-timing-helpers.js (1800B)


      1 function checkContainerEntry(entry, identifier, last_element_id, beforeRender) {
      2  assert_equals(entry.entryType, 'container');
      3  assert_equals(entry.name, 'container-paints');
      4  assert_equals(entry.identifier, identifier, 'identifier does not match');
      5  if (last_element_id != null) {
      6    assert_equals(entry.lastPaintedElement.id, last_element_id);
      7  }
      8 
      9  assert_equals(entry.duration, 0, 'duration should be 0');
     10  assert_greater_than_equal(
     11      entry.firstRenderTime, beforeRender,
     12      'firstRenderTime greater than beforeRender');
     13  assert_greater_than_equal(
     14      entry.startTime, entry.firstRenderTime,
     15      'startTime greater than beforeRender');
     16  assert_greater_than_equal(
     17      performance.now(), entry.startTime, 'startTime bound by now()')
     18 
     19  // PaintTimingMixin
     20  if ("presentationTime" in entry && entry.presentationTime !== null) {
     21    assert_greater_than(entry.presentationTime, entry.paintTime);
     22    assert_equals(entry.presentationTime, entry.startTime);
     23  } else {
     24    assert_equals(entry.startTime, entry.paintTime);
     25  }
     26 }
     27 
     28 function checkContainerSize(entry, size) {
     29  assert_equals(entry.size, size);
     30 }
     31 
     32 function onElementTimingEvent(func) {
     33  const finish_observer = new PerformanceObserver((entryList) => {
     34    finish_observer.disconnect();
     35    requestAnimationFrame(() => { func(); });
     36  });
     37  finish_observer.observe({ entryTypes: ['element'] });
     38 }
     39 
     40 function finishOnElementTiming(t) {
     41  onElementTimingEvent(() => { t.done(); });
     42 }
     43 
     44 function addPaintingElementTimingAfterDoubleRAF(parent) {
     45  requestAnimationFrame(() => requestAnimationFrame(() => {
     46    const finish_img = document.createElement('img');
     47    finish_img.src = '/container-timing/resources/square100.png';
     48    finish_img.setAttribute('elementtiming', '');
     49    parent.appendChild(finish_img);
     50  }));
     51 }