chromium/third_party/blink/web_tests/external/wpt/service-workers/service-worker/resources/postmessage-worker.js

var port;

// Exercise the 'onmessage' handler:
self.onmessage = function(e) {
  var message = e.data;
  if ('port' in message) {
    port = message.port;
  }
};

// And an event listener:
self.addEventListener('message', function(e) {
    var message = e.data;
    if ('value' in message) {
      port.postMessage('Acking value: ' + message.value);
    } else if ('done' in message) {
      port.postMessage('quit');
    }
  });