| <!DOCTYPE HTML> |
| <meta charset=utf-8> |
| <meta name="viewport" content="width=device-width"> |
| <title>Child Iframe</title> |
| <h1>Child Iframe observing long tasks</h1> |
| |
| <script> |
| const observer = new PerformanceObserver(function(entryList) { |
| for (i = 0; i < entryList.getEntries().length; i++) { |
| const longtask = entryList.getEntries()[i]; |
| // Ignore long task generated within here, as part of making this iframe. |
| // Ignore multiple-contexts and unknown because they cause longtask-in-parentiframe test to be flaky. |
| if (longtask.name == 'self' || |
| longtask.name == 'multiple-contexts' || longtask.name == 'unknown') |
| return; |
| // TODO(panicker): include containerType. |
| const attribution = longtask.attribution[0]; |
| const entryContents = { |
| 'entryType': longtask.entryType, |
| 'frame-attribution': longtask.name, |
| 'task-attribution': attribution.name, |
| 'containerType': attribution.containerType, |
| 'containerId': attribution.containerId, |
| 'containerName': attribution.containerName, |
| 'containerSrc': attribution.containerSrc |
| }; |
| top.postMessage(entryContents, '*'); |
| } |
| }); |
| observer.observe({entryTypes: ['longtask']}); |
| </script> |