1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /* 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
|