child-painting-first-image.html (1549B)
1 <!DOCTYPE html> 2 <body> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 6 <script> 7 var entriesExpectToReceive = [ 8 { 9 'entryType': 'paint', 10 'name': 'first-paint' 11 }, 12 { 13 'entryType': 'paint', 14 'name': 'first-contentful-paint' 15 } 16 ]; 17 18 setup({"hide_test_state": true}); 19 async_test(function (t) { 20 assert_implements(window.PerformancePaintTiming, "Paint Timing isn't supported."); 21 window.addEventListener('message', t.step_func(e => { 22 // When only child frame paints, expect only first-paint. 23 for (let i = 0; i < entriesExpectToReceive.length; i++) { 24 if (entriesExpectToReceive[i].entryType == e.data.entryType && 25 entriesExpectToReceive[i].name == e.data.name) { 26 entriesExpectToReceive.splice(i, 1); 27 break; 28 } 29 } 30 31 if (entriesExpectToReceive.length == 0) { 32 const bufferedEntries = performance.getEntriesByType('paint'); 33 assert_equals(bufferedEntries.length, 1); 34 assert_equals(bufferedEntries[0].entryType, 'paint'); 35 assert_equals(bufferedEntries[0].name, 'first-paint'); 36 t.done(); 37 } 38 })); 39 const iframe = document.createElement('iframe'); 40 iframe.id = 'child-iframe'; 41 iframe.src = '../resources/subframe-painting.html'; 42 document.body.appendChild(iframe); 43 }, 'Parent frame ignores paint-timing events fired from child image rendering.'); 44 </script> 45 </body> 46 </html>