| <!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> |