michael@0: /* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */ michael@0: /* vim: set sw=4 ts=8 et tw=80 ft=cpp : */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: include protocol PBlob; michael@0: include InputStreamParams; michael@0: michael@0: using struct mozilla::SerializedStructuredCloneBuffer from "ipc/IPCMessageUtils.h"; michael@0: michael@0: namespace mozilla { michael@0: namespace dom { michael@0: michael@0: struct ClonedMessageData michael@0: { michael@0: SerializedStructuredCloneBuffer data; michael@0: PBlob[] blobs; michael@0: }; michael@0: michael@0: struct NormalBlobConstructorParams michael@0: { michael@0: nsString contentType; michael@0: uint64_t length; michael@0: }; michael@0: michael@0: struct FileBlobConstructorParams michael@0: { michael@0: nsString name; michael@0: nsString contentType; michael@0: uint64_t length; michael@0: uint64_t modDate; michael@0: }; michael@0: michael@0: struct SlicedBlobConstructorParams michael@0: { michael@0: PBlob source; michael@0: uint64_t begin; michael@0: uint64_t end; michael@0: nsString contentType; michael@0: }; michael@0: michael@0: struct MysteryBlobConstructorParams michael@0: { michael@0: // Nothing is known about this type of blob. michael@0: }; michael@0: michael@0: union ChildBlobConstructorParams michael@0: { michael@0: NormalBlobConstructorParams; michael@0: FileBlobConstructorParams; michael@0: SlicedBlobConstructorParams; michael@0: MysteryBlobConstructorParams; michael@0: }; michael@0: michael@0: struct ParentBlobConstructorParams michael@0: { michael@0: ChildBlobConstructorParams blobParams; michael@0: OptionalInputStreamParams optionalInputStreamParams; michael@0: }; michael@0: michael@0: union BlobConstructorParams michael@0: { michael@0: ChildBlobConstructorParams; michael@0: ParentBlobConstructorParams; michael@0: }; michael@0: michael@0: } // namespace dom michael@0: } // namespace mozilla