/* 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 PContent; include protocol PSocketProcess; include "mozilla/layers/WebRenderMessageUtils.h"; using mozilla::wr::ByteBuffer from "mozilla/webrender/WebRenderTypes.h"; namespace mozilla { namespace ipc { // This is protocol is the opposite of PParentToChildStream. Please keep these // protocols in sync. protocol PChildToParentStream { manager PBackground or PContent or PSocketProcess; parent: async Buffer(ByteBuffer aBuffer); async Close(nsresult aRv); child: // The remote stream can be used in 2 ways: it can start receiving data // immediately after the creation of the child actor, or it can wait until // the child stream is actually used. This second configuration is enabled by // passing 'true' to delayedStart in AutoIPCStream CTOR. // If we are delaying the reading, at the first use of the remote stream, we // must activate the sending of data. This happens by calling this method. async StartReading(); // The parent side has hit an error condition and has requested the child // actor issue a Close() message. The close must be initiated by the child // to avoid racing with an in-flight Buffer() message. async RequestClose(nsresult aRv); // Stream is always destroyed from the parent side. This occurs if the // parent encounters an error while writing to its pipe or if the child // signals the stream should close by SendClose(). async __delete__(); }; } // namespace ipc } // namespace mozilla