bool nsInProcessTabChildGlobal::DoSendAsyncMessage(JSContext* aCx, const nsAString& aMessage, const StructuredCloneData& aData, JS::Handle<JSObject *> aCpows, nsIPrincipal* aPrincipal) { SameProcessMessageQueue* queue = SameProcessMessageQueue::Get(); nsRefPtr<nsAsyncMessageToParent> ev = new nsAsyncMessageToParent(aCx, this, aMessage, aData, aCpows, aPrincipal); queue->Push(ev); return true; }
nsresult nsInProcessTabChildGlobal::DoSendAsyncMessage(JSContext* aCx, const nsAString& aMessage, StructuredCloneData& aData, JS::Handle<JSObject *> aCpows, nsIPrincipal* aPrincipal) { SameProcessMessageQueue* queue = SameProcessMessageQueue::Get(); RefPtr<nsAsyncMessageToParent> ev = new nsAsyncMessageToParent(aCx, aCpows, this); nsresult rv = ev->Init(aCx, aMessage, aData, aPrincipal); if (NS_FAILED(rv)) { return rv; } queue->Push(ev); return NS_OK; }
bool nsInProcessTabChildGlobal::DoSendBlockingMessage(JSContext* aCx, const nsAString& aMessage, const dom::StructuredCloneData& aData, JS::Handle<JSObject *> aCpows, nsIPrincipal* aPrincipal, nsTArray<OwningSerializedStructuredCloneBuffer>* aRetVal, bool aIsSync) { SameProcessMessageQueue* queue = SameProcessMessageQueue::Get(); queue->Flush(); if (mChromeMessageManager) { SameProcessCpowHolder cpows(js::GetRuntime(aCx), aCpows); nsRefPtr<nsFrameMessageManager> mm = mChromeMessageManager; nsCOMPtr<nsIFrameLoader> fl = GetFrameLoader(); mm->ReceiveMessage(mOwner, fl, aMessage, true, &aData, &cpows, aPrincipal, aRetVal); } return true; }