void BroadcastChannel::PostMessageData(BroadcastChannelMessage* aData) { RemoveDocFromBFCache(); if (mActor) { RefPtr<BCPostMessageRunnable> runnable = new BCPostMessageRunnable(mActor, aData); if (NS_FAILED(NS_DispatchToCurrentThread(runnable))) { NS_WARNING("Failed to dispatch to the current thread!"); } return; } mPendingMessages.AppendElement(aData); }
void BroadcastChannel::PostMessage(JSContext* aCx, JS::Handle<JS::Value> aMessage, ErrorResult& aRv) { if (mState != StateActive) { aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR); return; } RefPtr<BroadcastChannelMessage> data = new BroadcastChannelMessage(); data->Write(aCx, aMessage, aRv); if (NS_WARN_IF(aRv.Failed())) { return; } RemoveDocFromBFCache(); ClonedMessageData message; data->BuildClonedMessageDataForBackgroundChild(mActor->Manager(), message); mActor->SendPostMessage(message); }