fune/dom/fetch/FetchStreamUtils.h
Yaron Tausky c24bfb26ba Bug 1577346 - Convert between stream types for preload response r=dom-worker-reviewers,edenchuang
A previous patch added code paths that propagate the preload response
from the parent process's main thread to the service worker in the
content process, but left out the conversions between different stream
types. This commit adds these conversions.

Based on D122822.

Differential Revision: https://phabricator.services.mozilla.com/D131380
2021-11-22 14:09:24 +00:00

55 lines
1.8 KiB
C++

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef _mozilla_dom_fetch_FetchStreamUtils_h
#define _mozilla_dom_fetch_FetchStreamUtils_h
#include "mozilla/AlreadyAddRefed.h"
#include "mozilla/NotNull.h"
#include "mozilla/dom/FetchTypes.h"
#include "nsIInputStream.h"
#include <cstdint>
namespace mozilla {
namespace ipc {
class PBackgroundParent;
}
namespace dom {
// Convert a ParentToParentStream received over IPC to an nsIInputStream. Can
// only be called in the parent process.
NotNull<nsCOMPtr<nsIInputStream>> ToInputStream(
const ParentToParentStream& aStream);
// Convert a ParentToChildStream received over IPC to an nsIInputStream. Can
// only be called in a content process.
NotNull<nsCOMPtr<nsIInputStream>> ToInputStream(
const ParentToChildStream& aStream);
// Serialize an nsIInputStream for IPC inside the parent process. Can only be
// called in the parent process.
ParentToParentStream ToParentToParentStream(
const NotNull<nsCOMPtr<nsIInputStream>>& aStream, int64_t aStreamSize);
// Serialize an nsIInputStream for IPC from the parent process to a content
// process. Can only be called in the parent process.
ParentToChildStream ToParentToChildStream(
const NotNull<nsCOMPtr<nsIInputStream>>& aStream, int64_t aStreamSize,
NotNull<mozilla::ipc::PBackgroundParent*> aBackgroundParent);
// Convert a ParentToParentStream to a ParentToChildStream. Can only be called
// in the parent process.
ParentToChildStream ToParentToChildStream(
const ParentToParentStream& aStream, int64_t aStreamSize,
NotNull<mozilla::ipc::PBackgroundParent*> aBackgroundParent);
} // namespace dom
} // namespace mozilla
#endif // _mozilla_dom_fetch_FetchStreamUtils_h