longtask-in-raf.html (1970B)
1 <!DOCTYPE HTML> 2 <head> 3 <meta charset=utf-8> 4 <title>LongTask Timing: long task in rAF</title> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="resources/utils.js"></script> 8 </head> 9 <body> 10 <h1>Long Task: requestAnimationFrame</h1> 11 <div id="log"></div> 12 <script> 13 promise_test(async () => { 14 assert_implements(window.PerformanceLongTaskTiming, 'Longtasks are not supported.'); 15 await new Promise(resolve => { 16 window.addEventListener('load', resolve); 17 }); 18 19 let entries = await new Promise(resolve => { 20 new PerformanceObserver( 21 entryList => { 22 const entries = entryList.getEntries().filter( 23 e => e.name == 'self' && e.attribution[0].containerType == 'window'); 24 if (entries) { 25 resolve(entries); 26 } 27 }).observe({ entryTypes: ['longtask'] }); 28 29 const script = document.createElement('script'); 30 script.src = 'resources/raflongtask.js'; 31 document.body.appendChild(script); 32 }); 33 34 assert_equals(entries.length, 1, 35 'Exactly one entry is expected.'); 36 const longtask = entries[0]; 37 checkLongTaskEntry(longtask); 38 // Assert the TaskAttributionTiming entry in attribution. 39 assert_equals(longtask.attribution.length, 1, 40 'Exactly one attribution entry is expected'); 41 const attribution = longtask.attribution[0]; 42 assert_equals(attribution.entryType, 'taskattribution'); 43 assert_equals(attribution.name, 'unknown'); 44 assert_equals(attribution.duration, 0); 45 assert_equals(attribution.startTime, 0); 46 assert_equals(attribution.containerType, 'window'); 47 assert_equals(attribution.containerId, ''); 48 assert_equals(attribution.containerName, ''); 49 assert_equals(attribution.containerSrc, ''); 50 }, 'Performance longtask entries are observable.'); 51 </script> 52 </body>