<!DOCTYPE html>
<title>postMessage with user activtion to a worker</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<script>
"use strict";

promise_test(async t => {
  var worker = new Worker("worker_postMessage_user_activation.js");
  let workerReply = () => new Promise((resolve, reject) => {
    worker.addEventListener('message', e => resolve(e.data), {once: true});
  });
  worker.postMessage(null, {includeUserActivation: true});
  assert_equals(await workerReply(), true);
  worker.postMessage(null, {includeUserActivation: false});
  assert_equals(await workerReply(), false);
}, "Post Message from a worker");
</script>
