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