// InputStreamCallback NS_IMETHODIMP FileReader::OnInputStreamReady(nsIAsyncInputStream* aStream) { if (mReadyState != LOADING || aStream != mAsyncStream) { return NS_OK; } // We use this class to decrease the busy counter at the end of this method. // In theory we can do it immediatelly but, for debugging reasons, we want to // be 100% sure we have a feature when OnLoadEnd() is called. FileReaderDecreaseBusyCounter RAII(this); uint64_t aCount; nsresult rv = aStream->Available(&aCount); if (NS_SUCCEEDED(rv) && aCount) { rv = DoReadData(aCount); } if (NS_SUCCEEDED(rv)) { rv = DoAsyncWait(); } if (NS_FAILED(rv) || !aCount) { if (rv == NS_BASE_STREAM_CLOSED) { rv = NS_OK; } return OnLoadEnd(rv); } mTransferred += aCount; //Notify the timer is the appropriate timeframe has passed if (mTimerIsActive) { mProgressEventWasDelayed = true; } else { rv = DispatchProgressEvent(NS_LITERAL_STRING(PROGRESS_STR)); NS_ENSURE_SUCCESS(rv, rv); StartProgressEventTimer(); } return NS_OK; }
// InputStreamCallback NS_IMETHODIMP FileIOObject::OnInputStreamReady(nsIAsyncInputStream* aStream) { if (mReadyState != 1 || aStream != mAsyncStream) { return NS_OK; } uint64_t aCount; nsresult rv = aStream->Available(&aCount); if (NS_SUCCEEDED(rv) && aCount) { rv = DoReadData(aStream, aCount); } if (NS_SUCCEEDED(rv)) { rv = DoAsyncWait(aStream); } if (NS_FAILED(rv) || !aCount) { if (rv == NS_BASE_STREAM_CLOSED) { rv = NS_OK; } return OnLoadEnd(rv); } mTransferred += aCount; //Notify the timer is the appropriate timeframe has passed if (mTimerIsActive) { mProgressEventWasDelayed = true; } else { rv = DispatchProgressEvent(NS_LITERAL_STRING(PROGRESS_STR)); NS_ENSURE_SUCCESS(rv, rv); StartProgressEventTimer(); } return NS_OK; }