<!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 => {
    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'], 'script');
      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.onload = function() {
    t.step_timeout(function(){
      const begin = window.performance.now();
      while (window.performance.now() < begin + 51);
    }, 50);
  }
  iframe.id = 'child-iframe-id';
  iframe.name = 'child-iframe-name';
  document.body.appendChild(iframe);
  iframe.src = 'resources/subframe-observing-longtask.html';
</script>

</body>
