mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 19:04:45 +00:00
Bug 1397128 P6 Allow ReadStream to be created with an initially nullptr base stream. r=tt
This commit is contained in:
parent
2cf80de4ff
commit
acf4cdb7d2
5
dom/cache/AutoUtils.cpp
vendored
5
dom/cache/AutoUtils.cpp
vendored
@ -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*>(
|
||||
|
1
dom/cache/CacheStreamControlChild.cpp
vendored
1
dom/cache/CacheStreamControlChild.cpp
vendored
@ -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));
|
||||
|
1
dom/cache/CacheStreamControlParent.cpp
vendored
1
dom/cache/CacheStreamControlParent.cpp
vendored
@ -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());
|
||||
|
17
dom/cache/ReadStream.cpp
vendored
17
dom/cache/ReadStream.cpp
vendored
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user