/* 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 PBackground; include protocol PBlob; include DOMTypes; using struct mozilla::SerializedStructuredCloneBuffer from "ipc/IPCMessageUtils.h"; namespace mozilla { namespace dom { struct MessagePortMessage { SerializedStructuredCloneBuffer data; PBlob[] blobs; MessagePortIdentifier[] transferredPorts; }; // This protocol is used for the MessageChannel/MessagePort API protocol PMessagePort { manager PBackground; /* Many of these methods are used just for the shutdown sequence. The correct sequence for the child actor is: 1. SendStopSendingData(); 2. RecvStopSendingDataConfirmed(); 3. SendClose(); 4. Recv__delete__(); */ /* When the port is transferred the sequence is: 1. SendStopSendingData(); 2. RecvStopSendingDataConfirmed(); 3. SendDisentangle(); 4. Recv__delete__(); */ parent: async PostMessages(MessagePortMessage[] messages); async Disentangle(MessagePortMessage[] messages); async StopSendingData(); async Close(); child: async Entangled(MessagePortMessage[] messages); async ReceiveData(MessagePortMessage[] messages); async StopSendingDataConfirmed(); async __delete__(); }; } // namespace dom } // namespace mozilla