|  | <!DOCTYPE HTML> | 
|  | <meta charset=utf-8> | 
|  | <title>LongTask Timing: long task in nested child iframe</title> | 
|  | <body> | 
|  |  | 
|  | <script src="/resources/testharness.js"></script> | 
|  | <script src="/resources/testharnessreport.js"></script> | 
|  |  | 
|  | <script> | 
|  | const t = async_test(t => { | 
|  | assert_implements(window.PerformanceLongTaskTiming, 'Longtasks are not supported.'); | 
|  | window.addEventListener('message', t.step_func(e => { | 
|  | assert_equals(e.data['entryType'], 'longtask'); | 
|  | assert_equals(e.data['frame-attribution'], 'same-origin-ancestor'); | 
|  | assert_equals(e.data['task-attribution'], 'unknown'); | 
|  | assert_equals(e.data['containerType'], 'window'); | 
|  | assert_equals(e.data['containerId'], ''); | 
|  | assert_equals(e.data['containerName'], ''); | 
|  | assert_equals(e.data['containerSrc'], ''); | 
|  | t.done(); | 
|  | })); | 
|  | }, 'Performance longtask entries in parent are observable in child iframe.'); | 
|  |  | 
|  | const iframe = document.createElement('iframe'); | 
|  | iframe.id = 'child-iframe-id'; | 
|  | iframe.name = 'child-iframe-name'; | 
|  | document.body.appendChild(iframe); | 
|  | iframe.src = 'resources/subframe-observing-longtask.html'; | 
|  | iframe.onload = () => { | 
|  | t.step_timeout( () => { | 
|  | const begin = window.performance.now(); | 
|  | while (window.performance.now() < begin + 60); | 
|  | }, 50); | 
|  | }; | 
|  | </script> | 
|  |  | 
|  | </body> |