From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- dom/ipc/DOMTypes.ipdlh | 181 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 dom/ipc/DOMTypes.ipdlh (limited to 'dom/ipc/DOMTypes.ipdlh') diff --git a/dom/ipc/DOMTypes.ipdlh b/dom/ipc/DOMTypes.ipdlh new file mode 100644 index 000000000..e02760ada --- /dev/null +++ b/dom/ipc/DOMTypes.ipdlh @@ -0,0 +1,181 @@ +/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */ +/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */ +/* 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/. */ + +include protocol PBlob; +include protocol PSendStream; +include IPCStream; +include ProtocolTypes; + +using struct mozilla::void_t + from "ipc/IPCMessageUtils.h"; + +using struct mozilla::SerializedStructuredCloneBuffer + from "ipc/IPCMessageUtils.h"; + +namespace mozilla { +namespace dom { + +union OptionalID +{ + nsID; + void_t; +}; + +struct MessagePortIdentifier +{ + nsID uuid; + nsID destinationUuid; + uint32_t sequenceId; + bool neutered; +}; + +struct ClonedMessageData +{ + SerializedStructuredCloneBuffer data; + PBlob[] blobs; + MessagePortIdentifier[] identfiers; +}; + +struct BlobDataStream +{ + IPCStream stream; + uint64_t length; +}; + +union BlobData +{ + // For remote blobs. + nsID; + + // For memory-backed blobs. + BlobDataStream; + + // For multiplex blobs. + BlobData[]; +}; + +union OptionalBlobData +{ + BlobData; + void_t; +}; + +struct NormalBlobConstructorParams +{ + nsString contentType; + uint64_t length; + + // This must be of type BlobData in a child->parent message, and will always + // be of type void_t in a parent->child message. + OptionalBlobData optionalBlobData; +}; + +struct FileBlobConstructorParams +{ + nsString name; + nsString contentType; + nsString path; + uint64_t length; + int64_t modDate; + bool isDirectory; + + // This must be of type BlobData in a child->parent message, and will always + // be of type void_t in a parent->child message. + OptionalBlobData optionalBlobData; +}; + +struct SlicedBlobConstructorParams +{ + PBlob source; + nsID id; + uint64_t begin; + uint64_t end; + nsString contentType; +}; + +struct MysteryBlobConstructorParams +{ + // Nothing is known about this type of blob. +}; + +struct KnownBlobConstructorParams +{ + nsID id; +}; + +// This may only be used for same-process inter-thread communication! +struct SameProcessBlobConstructorParams +{ + // This member should be reinterpret_cast'd to mozilla::dom::BlobImpl. It + // carries a reference. + intptr_t addRefedBlobImpl; +}; + +union AnyBlobConstructorParams +{ + // These types may be sent to/from parent and child. + NormalBlobConstructorParams; + FileBlobConstructorParams; + SameProcessBlobConstructorParams; + + // This type may only be sent from parent to child. + MysteryBlobConstructorParams; + + // These types may only be sent from child to parent. + SlicedBlobConstructorParams; + KnownBlobConstructorParams; +}; + +struct ChildBlobConstructorParams +{ + nsID id; + + // May not be SlicedBlobConstructorParams or KnownBlobConstructorParams. + AnyBlobConstructorParams blobParams; +}; + +struct ParentBlobConstructorParams +{ + // May not be MysteryBlobConstructorParams. + AnyBlobConstructorParams blobParams; +}; + +union BlobConstructorParams +{ + ChildBlobConstructorParams; + ParentBlobConstructorParams; +}; + +union IPCDataTransferData +{ + nsString; // text + Shmem; // images using Shmem + PBlob; // files +}; + +struct IPCDataTransferImage +{ + uint32_t width; + uint32_t height; + uint32_t stride; + uint8_t format; +}; + +struct IPCDataTransferItem +{ + nsCString flavor; + // The image details are only used when transferring images. + IPCDataTransferImage imageDetails; + IPCDataTransferData data; +}; + +struct IPCDataTransfer +{ + IPCDataTransferItem[] items; +}; + +} // namespace dom +} // namespace mozilla -- cgit v1.2.3