void
WorkerMessagePort::PostMessage(
                             JSContext* /* aCx */, JS::HandleValue aMessage,
                             const Optional<Sequence<JS::Value>>& aTransferable,
                             ErrorResult& aRv)
{
  if (mClosed) {
    aRv = NS_ERROR_DOM_INVALID_STATE_ERR;
    return;
  }

  JSContext* cx = GetJSContext();

  WorkerPrivate* workerPrivate = GetWorkerPrivateFromContext(cx);
  MOZ_ASSERT(workerPrivate);

  workerPrivate->PostMessageToParentMessagePort(cx, Serial(), aMessage,
                                                aTransferable, aRv);
}