NS_IMETHODIMP FlyWebPublishedServerParent::HandleEvent(nsIDOMEvent* aEvent) { if (mActorDestroyed) { return NS_OK; } nsAutoString type; aEvent->GetType(type); if (type.EqualsLiteral("close")) { Unused << SendServerClose(); return NS_OK; } if (type.EqualsLiteral("fetch")) { RefPtr<InternalRequest> request = static_cast<FlyWebFetchEvent*>(aEvent)->Request()->GetInternalRequest(); uint64_t id = mNextRequestId++; mPendingRequests.Put(id, request); IPCInternalRequest ipcReq; request->ToIPC(&ipcReq); Unused << SendFetchRequest(ipcReq, id); return NS_OK; } if (type.EqualsLiteral("websocket")) { RefPtr<InternalRequest> request = static_cast<FlyWebWebSocketEvent*>(aEvent)->Request()->GetInternalRequest(); uint64_t id = mNextRequestId++; mPendingRequests.Put(id, request); nsTArray<PNeckoParent*> neckoParents; Manager()->ManagedPNeckoParent(neckoParents); if (neckoParents.Length() != 1) { MOZ_CRASH("Expected exactly 1 PNeckoParent instance per PNeckoChild"); } RefPtr<TransportProviderParent> provider = static_cast<TransportProviderParent*>( neckoParents[0]->SendPTransportProviderConstructor()); IPCInternalRequest ipcReq; request->ToIPC(&ipcReq); Unused << SendWebSocketRequest(ipcReq, id, provider); mPendingTransportProviders.Put(id, provider.forget()); return NS_OK; } MOZ_CRASH("Unknown event type"); return NS_OK; }
NS_IMETHODIMP FlyWebPublishedServerParent::HandleEvent(nsIDOMEvent* aEvent) { if (mActorDestroyed) { return NS_OK; } nsAutoString type; aEvent->GetType(type); if (type.EqualsLiteral("close")) { Unused << SendServerClose(); return NS_OK; } if (type.EqualsLiteral("fetch")) { RefPtr<InternalRequest> request = static_cast<FlyWebFetchEvent*>(aEvent)->Request()->GetInternalRequest(); uint64_t id = mNextRequestId++; mPendingRequests.Put(id, request); IPCInternalRequest ipcReq; request->ToIPC(&ipcReq); Unused << SendFetchRequest(ipcReq, id); return NS_OK; } if (type.EqualsLiteral("websocket")) { RefPtr<InternalRequest> request = static_cast<FlyWebWebSocketEvent*>(aEvent)->Request()->GetInternalRequest(); uint64_t id = mNextRequestId++; mPendingRequests.Put(id, request); RefPtr<TransportProviderParent> provider = static_cast<TransportProviderParent*>( mozilla::net::gNeckoParent->SendPTransportProviderConstructor()); IPCInternalRequest ipcReq; request->ToIPC(&ipcReq); Unused << SendWebSocketRequest(ipcReq, id, provider); mPendingTransportProviders.Put(id, provider.forget()); return NS_OK; } MOZ_CRASH("Unknown event type"); return NS_OK; }