<!DOCTYPE html>
<!-- Tests UseCounter for 'new SharedWorker()' in third party context. This
  cannot be upstreamed to WPT because it tests Chrome's UseCounter mechanism.
-->
<meta charset="utf-8">
<title>Test UseCounter for 'new SharedWorker()' in third party context.</title>
<body></body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/get-host-info.js"></script>
<script>

function with_iframe(url) {
  return new Promise(function(resolve) {
      var frame = document.createElement('iframe');
      frame.src = url;
      frame.onload = function() { resolve(frame); };
      document.body.appendChild(frame);
    });
}

function child_frame_has_verified_use_counter() {
  return new Promise(function(resolve, reject) {
      window.onmessage = (msg) => {
        if (msg.data == 'verified_has_use_counter')
          resolve();
        else
          reject(msg.data);
      };
    });
}

promise_test(async t => {
  const remote_origin_url = get_host_info().HTTPS_REMOTE_ORIGIN +
        '/workers/resources/create-shared-worker-verify-third-party-use-counter.html';
  const frame1 = await with_iframe(remote_origin_url);
  await child_frame_has_verified_use_counter();
}, "Test UseCounter for 'new SharedWorker()' in third party context.");
</script>