Bug 1371699 - Use of NonBlockingAsyncInputStream in our code base, r=froydnj

This commit is contained in:
Andrea Marchesini
2017-10-03 07:20:18 +02:00
parent ddad802806
commit 452ce73f77
7 changed files with 111 additions and 76 deletions

View File

@@ -9,8 +9,6 @@
#include "nsIEventTarget.h"
#include "nsIGlobalObject.h"
#include "nsITimer.h"
#include "nsITransport.h"
#include "nsIStreamTransportService.h"
#include "mozilla/Base64.h"
#include "mozilla/CheckedInt.h"
@@ -22,7 +20,6 @@
#include "nsCycleCollectionParticipant.h"
#include "nsDOMJSUtils.h"
#include "nsError.h"
#include "nsNetCID.h"
#include "nsNetUtil.h"
#include "xpcpublic.h"
@@ -43,8 +40,6 @@ using namespace workers;
const uint64_t kUnknownSize = uint64_t(-1);
static NS_DEFINE_CID(kStreamTransportServiceCID, NS_STREAMTRANSPORTSERVICE_CID);
NS_IMPL_CYCLE_COLLECTION_CLASS(FileReader)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(FileReader,
@@ -383,44 +378,12 @@ FileReader::ReadFileContent(Blob& aBlob,
return;
}
bool nonBlocking = false;
aRv = stream->IsNonBlocking(&nonBlocking);
aRv = NS_MakeAsyncNonBlockingInputStream(stream,
getter_AddRefs(mAsyncStream));
if (NS_WARN_IF(aRv.Failed())) {
return;
}
mAsyncStream = do_QueryInterface(stream);
// We want to have a non-blocking nsIAsyncInputStream.
if (!mAsyncStream || !nonBlocking) {
nsresult rv;
nsCOMPtr<nsIStreamTransportService> sts =
do_GetService(kStreamTransportServiceCID, &rv);
if (NS_WARN_IF(NS_FAILED(rv))) {
aRv.Throw(rv);
return;
}
nsCOMPtr<nsITransport> transport;
aRv = sts->CreateInputTransport(stream,
/* aCloseWhenDone */ true,
getter_AddRefs(transport));
if (NS_WARN_IF(aRv.Failed())) {
return;
}
nsCOMPtr<nsIInputStream> wrapper;
aRv = transport->OpenInputStream(/* aFlags */ 0,
/* aSegmentSize */ 0,
/* aSegmentCount */ 0,
getter_AddRefs(wrapper));
if (NS_WARN_IF(aRv.Failed())) {
return;
}
mAsyncStream = do_QueryInterface(wrapper);
}
MOZ_ASSERT(mAsyncStream);
mTotal = mBlob->GetSize(aRv);