Before Chrome 45, a Service Worker sending a message via Client.postMessage() results in a MessageEvent fired on the Client's global scope (e.g., window). Since Chrome 45, the event is a ServiceWorkerMessageEvent fired on navigator.serviceWorker rather than window. Until Chrome 45, Client.postMessage displayed an "experimental, may change" deprecation warning.
Docs: https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerMessageEvent https://developer.mozilla.org/en-US/docs/Web/API/Client/postMessage
Samples: https://googlechrome.github.io/samples/service-worker/post-message/index.html