NS_IMETHODIMP FileIOObject::OnStopRequest(nsIRequest* aRequest, nsISupports* aContext, nsresult aStatus) { // If we're here as a result of a call from Abort(), // simply ignore the request. if (aRequest != mChannel) return NS_OK; // Cancel the progress event timer ClearProgressEventTimer(); // FileIOObject must be in DONE stage after an operation mReadyState = 2; nsString successEvent, termEvent; nsresult rv = DoOnStopRequest(aRequest, aContext, aStatus, successEvent, termEvent); NS_ENSURE_SUCCESS(rv, rv); // Set the status field as appropriate if (NS_FAILED(aStatus)) { DispatchError(aStatus, termEvent); return NS_OK; } // Dispatch event to signify end of a successful operation DispatchProgressEvent(successEvent); DispatchProgressEvent(termEvent); return NS_OK; }
bool FTPChannelChild::RecvOnStopRequest(const nsresult& statusCode) { if (ShouldEnqueue()) { EnqueueEvent(new FTPStopRequestEvent(this, statusCode)); } else { DoOnStopRequest(statusCode); } return true; }