Bug 1397128 P6 Allow ReadStream to be created with an initially nullptr base stream. r=tt

This commit is contained in:
Ben Kelly 2017-09-15 12:25:41 -07:00
parent 2cf80de4ff
commit acf4cdb7d2
4 changed files with 12 additions and 12 deletions

View File

@ -353,7 +353,7 @@ AutoChildOpArgs::SendAsOpArgs()
MOZ_DIAGNOSTIC_ASSERT(!mSent);
mSent = true;
for (UniquePtr<AutoIPCStream>& autoStream : mStreamCleanupList) {
autoStream->TakeValue();
autoStream->TakeOptionalValue();
}
return mOpArgs;
}
@ -506,7 +506,7 @@ AutoParentOpResult::SendAsOpResult()
MOZ_DIAGNOSTIC_ASSERT(!mSent);
mSent = true;
for (UniquePtr<AutoIPCStream>& autoStream : mStreamCleanupList) {
autoStream->TakeValue();
autoStream->TakeOptionalValue();
}
return mOpResult;
}
@ -537,7 +537,6 @@ AutoParentOpResult::SerializeReadStream(const nsID& aId, StreamList* aStreamList
MOZ_DIAGNOSTIC_ASSERT(!mSent);
nsCOMPtr<nsIInputStream> stream = aStreamList->Extract(aId);
MOZ_DIAGNOSTIC_ASSERT(stream);
if (!mStreamControl) {
mStreamControl = static_cast<CacheStreamControlParent*>(

View File

@ -100,7 +100,6 @@ CacheStreamControlChild::SerializeStream(CacheReadStream* aReadStreamOut,
{
NS_ASSERT_OWNINGTHREAD(CacheStreamControlChild);
MOZ_DIAGNOSTIC_ASSERT(aReadStreamOut);
MOZ_DIAGNOSTIC_ASSERT(aStream);
UniquePtr<AutoIPCStream> autoStream(new AutoIPCStream(aReadStreamOut->stream()));
autoStream->Serialize(aStream, Manager());
aStreamCleanupList.AppendElement(Move(autoStream));

View File

@ -59,7 +59,6 @@ CacheStreamControlParent::SerializeStream(CacheReadStream* aReadStreamOut,
{
NS_ASSERT_OWNINGTHREAD(CacheStreamControlParent);
MOZ_DIAGNOSTIC_ASSERT(aReadStreamOut);
MOZ_DIAGNOSTIC_ASSERT(aStream);
UniquePtr<AutoIPCStream> autoStream(new AutoIPCStream(aReadStreamOut->stream()));
DebugOnly<bool> ok = autoStream->Serialize(aStream, Manager());

View File

@ -23,6 +23,7 @@ namespace cache {
using mozilla::Unused;
using mozilla::ipc::AutoIPCStream;
using mozilla::ipc::IPCStream;
using mozilla::ipc::OptionalIPCStream;
// ----------------------------------------------------------------------------
@ -220,9 +221,8 @@ ReadStream::Inner::Inner(StreamControl* aControl, const nsID& aId,
, mMutex("dom::cache::ReadStream")
, mCondVar(mMutex, "dom::cache::ReadStream")
, mStream(aStream)
, mSnappyStream(new SnappyUncompressInputStream(aStream))
, mSnappyStream(aStream ? new SnappyUncompressInputStream(aStream) : nullptr)
{
MOZ_DIAGNOSTIC_ASSERT(mStream);
MOZ_DIAGNOSTIC_ASSERT(mControl);
mControl->AddReadStream(this);
}
@ -261,7 +261,8 @@ ReadStream::Inner::Serialize(CacheReadStream* aReadStreamOut,
mControl->SerializeStream(aReadStreamOut, mStream, aStreamCleanupList);
}
MOZ_DIAGNOSTIC_ASSERT(aReadStreamOut->stream().get_IPCStream().type() ==
MOZ_DIAGNOSTIC_ASSERT(aReadStreamOut->stream().type() == OptionalIPCStream::Tvoid_t ||
aReadStreamOut->stream().get_IPCStream().type() ==
IPCStream::TInputStreamParamsWithFds);
// We're passing ownership across the IPC barrier with the control, so
@ -591,7 +592,8 @@ ReadStream::Create(const CacheReadStream& aReadStream)
return nullptr;
}
MOZ_DIAGNOSTIC_ASSERT(aReadStream.stream().get_IPCStream().type() ==
MOZ_DIAGNOSTIC_ASSERT(aReadStream.stream().type() == OptionalIPCStream::Tvoid_t ||
aReadStream.stream().get_IPCStream().type() ==
IPCStream::TInputStreamParamsWithFds);
// Control is guaranteed to survive this method as ActorDestroy() cannot
@ -607,12 +609,13 @@ ReadStream::Create(const CacheReadStream& aReadStream)
MOZ_DIAGNOSTIC_ASSERT(control);
nsCOMPtr<nsIInputStream> stream = DeserializeIPCStream(aReadStream.stream());
MOZ_DIAGNOSTIC_ASSERT(stream);
// Currently we expect all cache read streams to be blocking file streams.
#if !defined(RELEASE_OR_BETA)
nsCOMPtr<nsIAsyncInputStream> asyncStream = do_QueryInterface(stream);
MOZ_DIAGNOSTIC_ASSERT(!asyncStream);
if (stream) {
nsCOMPtr<nsIAsyncInputStream> asyncStream = do_QueryInterface(stream);
MOZ_DIAGNOSTIC_ASSERT(!asyncStream);
}
#endif
RefPtr<Inner> inner = new Inner(control, aReadStream.id(), stream);