<!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,
          'containerId': attribution.containerId,
          'containerName': attribution.containerName,
          'containerSrc': attribution.containerSrc
        };
        top.postMessage(entryContents, '*');
      }
    });
    observer.observe({entryTypes: ['longtask']});
</script>
