chromium/third_party/blink/web_tests/external/wpt/webmessaging/broadcastchannel/resources/service-worker.js

let promise_func = null;
let promise = new Promise(resolve => promise_func = resolve);

const SERVICE_WORKER_TEST_CHANNEL_NAME = 'service worker';
const bc3 = new BroadcastChannel(SERVICE_WORKER_TEST_CHANNEL_NAME);
bc3.onmessage = e => {
  bc3.postMessage('done');
  promise_func();
};
bc3.postMessage('from worker');

// Ensure that the worker stays alive for the duration of the test
self.addEventListener('install', evt => {
  evt.waitUntil(promise);
});