BrowserStreamChild::BrowserStreamChild(PluginInstanceChild* instance, const nsCString& url, const uint32_t& length, const uint32_t& lastmodified, StreamNotifyChild* notifyData, const nsCString& headers) : mInstance(instance) , mStreamStatus(kStreamOpen) , mDestroyPending(NOT_DESTROYED) , mNotifyPending(false) , mStreamAsFilePending(false) , mInstanceDying(false) , mState(CONSTRUCTING) , mURL(url) , mHeaders(headers) , mStreamNotify(notifyData) , mDeliveryTracker(this) { PLUGIN_LOG_DEBUG(("%s (%s, %i, %i, %p, %s)", FULLFUNCTION, url.get(), length, lastmodified, (void*) notifyData, headers.get())); AssertPluginThread(); memset(&mStream, 0, sizeof(mStream)); mStream.ndata = static_cast<AStream*>(this); mStream.url = NullableStringGet(mURL); mStream.end = length; mStream.lastmodified = lastmodified; mStream.headers = NullableStringGet(mHeaders); if (notifyData) { mStream.notifyData = notifyData->mClosure; notifyData->SetAssociatedStream(this); } }
bool BrowserStreamChild::AnswerNPP_StreamAsFile(const nsCString& fname) { PLUGIN_LOG_DEBUG(("%s (fname=%s)", FULLFUNCTION, fname.get())); AssertPluginThread(); if (ALIVE != mState) NS_RUNTIMEABORT("Unexpected state: received file after NPP_DestroyStream?"); if (kStreamOpen != mStreamStatus) return true; mInstance->mPluginIface->asfile(&mInstance->mData, &mStream, fname.get()); return true; }
bool BrowserStreamChild::RecvNPP_StreamAsFile(const nsCString& fname) { PLUGIN_LOG_DEBUG(("%s (fname=%s)", FULLFUNCTION, fname.get())); AssertPluginThread(); if (ALIVE != mState) NS_RUNTIMEABORT("Unexpected state: received file after NPP_DestroyStream?"); if (kStreamOpen != mStreamStatus) return true; mStreamAsFilePending = true; mStreamAsFileName = fname; EnsureDeliveryPending(); return true; }
mozilla::ipc::IPCResult BrowserStreamChild::RecvNPP_StreamAsFile(const nsCString& fname) { PLUGIN_LOG_DEBUG(("%s (fname=%s)", FULLFUNCTION, fname.get())); AssertPluginThread(); if (ALIVE != mState) MOZ_CRASH("Unexpected state: received file after NPP_DestroyStream?"); if (kStreamOpen != mStreamStatus) return IPC_OK(); mStreamAsFilePending = true; mStreamAsFileName = fname; EnsureDeliveryPending(); return IPC_OK(); }