| <!DOCTYPE HTML> |
| <meta charset=utf-8> |
| <title>LongTask Timing: long task in cross-origin sibling iframe</title> |
| <body> |
| |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <script> |
| async_test(t => { |
| if (typeof PerformanceLongTaskTiming === 'undefined') { |
| assert_unreached("Longtasks are not supported."); |
| t.done(); |
| } |
| window.addEventListener('message', t.step_func(e => { |
| assert_equals(e.data['entryType'], 'longtask'); |
| assert_equals(e.data['frame-attribution'], 'cross-origin-unreachable'); |
| assert_equals(e.data['task-attribution'], 'unknown'); |
| assert_equals(e.data['containerId'], ''); |
| assert_equals(e.data['containerName'], ''); |
| assert_equals(e.data['containerSrc'], ''); |
| t.done(); |
| })); |
| const observingFrame = document.createElement('iframe'); |
| observingFrame.id = 'observing-iframe-id'; |
| observingFrame.name = 'observing-iframe-name'; |
| document.body.appendChild(observingFrame); |
| observingFrame.src = 'resources/subframe-observing-longtask.html' |
| |
| observingFrame.onload = () => { |
| /* Create a cross-origin iframe that generates a long task. */ |
| const longtaskFrame = document.createElement('iframe'); |
| longtaskFrame.id = 'longtask-iframe-id'; |
| longtaskFrame.name = 'longtask-iframe-name'; |
| // Simulate cross-origin by using sandbox. |
| longtaskFrame.sandbox = "allow-scripts"; |
| document.body.appendChild(longtaskFrame); |
| longtaskFrame.src = 'resources/subframe-with-longtask.html' |
| }; |
| }, 'Performance longtask entries from cross-origin iframe are observable in its sibling.'); |
| </script> |
| </body> |