tor-browser

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

text-not-observed-when-changed.html (2033B)


      1 <!DOCTYPE HTML>
      2 <meta charset=utf-8>
      3 <title>Element Timing: text not observed when changed</title>
      4 
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 <script src="resources/element-timing-helpers.js"></script>
      8 
      9 <p id="content" elementtiming="initial-text">This is some text</p>
     10 <div id="target"></div>
     11 
     12 <script>
     13  promise_test(async t => {
     14    assert_implements(window.PerformanceElementTiming, "PerformanceElementTiming is not implemented");
     15 
     16    let entries = await new Promise(resolve => {
     17      new PerformanceObserver((list, observer) => {
     18        resolve(list.getEntries());
     19        observer.disconnect();
     20      }).observe({type: 'element', buffered: true});
     21    });
     22 
     23    assert_equals(
     24        entries.length, 1,
     25        'Expected exactly one ElementTiming entry for initial text');
     26    assert_equals(
     27        entries[0].identifier, 'initial-text',
     28        'Unexpected ElementTiming entry; expected "initial-text"');
     29 
     30    // Update existing text. We should not get an entry for this.
     31    content.innerText = "This is new text for an existing element";
     32    // Add new text. We should get an entry for this.
     33    target.innerHTML = '<div elementtiming="new-element-text">This is new text for a new element</div>';
     34 
     35    // Wait for the ElementTiming entry. Note: it's okay to kick this off after
     36    // after modifying the DOM because paint timing isn't marked until
     37    // rendering, which happens in a separate task.
     38    entries = await new Promise(resolve => {
     39      new PerformanceObserver((list, observer) => {
     40        resolve(list.getEntries());
     41        observer.disconnect();
     42      }).observe({type: 'element'});
     43    });
     44 
     45    assert_equals(
     46        entries.length, 1,
     47        'Expected exactly one ElementTiming entry for additional text');
     48    assert_equals(
     49        entries[0].identifier, 'new-element-text',
     50        'Unexpected ElementTiming entry: expected "new-element-text"');
     51  }, 'Changing the text of an already-observed element is not observed');
     52 </script>