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;
}