Bug 1440771 - Part 2: Use nsCOMPtr<nsIInputStream> directly in PCacheStreamControl, r=baku

MozReview-Commit-ID: 1Ab49lZtxTI
This commit is contained in:
Nika Layzell 2018-02-23 15:28:11 -05:00
Родитель bfb9a07251
Коммит 1ef4ae5a2f
3 изменённых файлов: 6 добавлений и 19 удалений

5
dom/cache/CacheStreamControlChild.cpp поставляемый
Просмотреть файл

@ -125,9 +125,8 @@ CacheStreamControlChild::OpenStream(const nsID& aId, InputStreamResolver&& aReso
RefPtr<CacheWorkerHolder> holder = GetWorkerHolder();
SendOpenStream(aId)->Then(GetCurrentThreadSerialEventTarget(), __func__,
[aResolver, holder](const OptionalIPCStream& aOptionalStream) {
nsCOMPtr<nsIInputStream> stream = DeserializeIPCStream(aOptionalStream);
aResolver(Move(stream));
[aResolver, holder](const nsCOMPtr<nsIInputStream>& aOptionalStream) {
aResolver(nsCOMPtr<nsIInputStream>(aOptionalStream));
}, [aResolver, holder](ResponseRejectReason aReason) {
aResolver(nullptr);
});

16
dom/cache/CacheStreamControlParent.cpp поставляемый
Просмотреть файл

@ -127,20 +127,8 @@ CacheStreamControlParent::RecvOpenStream(const nsID& aStreamId,
{
NS_ASSERT_OWNINGTHREAD(CacheStreamControlParent);
// This is safe because:
// 1. We add ourself to the Manager as an operation Listener in OpenStream().
// 2. We remove ourself as a Listener from the Manager in ActorDestroy().
// 3. The Manager will not "complete" the operation if the Listener has
// been removed. This means the lambda will not be invoked.
// 4. The ActorDestroy() will also cause the child-side MozPromise for
// this async returning method to be rejected. So we don't have to
// call the resolver in this case.
CacheStreamControlParent* self = this;
OpenStream(aStreamId, [self, aResolver](nsCOMPtr<nsIInputStream>&& aStream) {
AutoIPCStream stream;
Unused << stream.Serialize(aStream, self->Manager());
aResolver(stream.TakeOptionalValue());
OpenStream(aStreamId, [aResolver](nsCOMPtr<nsIInputStream>&& aStream) {
aResolver(aStream);
});
return IPC_OK();

4
dom/cache/PCacheStreamControl.ipdl поставляемый
Просмотреть файл

@ -6,9 +6,9 @@ include protocol PBackground;
include protocol PFileDescriptorSet;
include protocol PChildToParentStream;
include protocol PParentToChildStream;
include IPCStream;
using struct nsID from "nsID.h";
using nsCOMPtr<nsIInputStream> from "mozilla/ipc/IPCStreamUtils.h";
namespace mozilla {
namespace dom {
@ -19,7 +19,7 @@ protocol PCacheStreamControl
manager PBackground;
parent:
async OpenStream(nsID aStreamId) returns(OptionalIPCStream aStream);
async OpenStream(nsID aStreamId) returns(nsCOMPtr<nsIInputStream> aStream);
async NoteClosed(nsID aStreamId);
child: