2016-05-15 20:32:09 +03:00
|
|
|
/* 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;
|
2016-09-21 13:27:26 +03:00
|
|
|
include protocol PContentBridge;
|
2016-05-15 20:32:09 +03:00
|
|
|
|
2017-08-29 18:42:33 +03:00
|
|
|
include "mozilla/layers/WebRenderMessageUtils.h";
|
|
|
|
|
|
|
|
using mozilla::wr::ByteBuffer from "mozilla/webrender/WebRenderTypes.h";
|
|
|
|
|
2016-05-15 20:32:09 +03:00
|
|
|
namespace mozilla {
|
|
|
|
namespace ipc {
|
|
|
|
|
2017-03-14 14:29:43 +03:00
|
|
|
// This is protocol is the opposite of PParentToChildStream. Please keep these
|
|
|
|
// protocols in sync.
|
2017-03-14 14:28:58 +03:00
|
|
|
protocol PChildToParentStream
|
2016-05-15 20:32:09 +03:00
|
|
|
{
|
2016-09-21 13:27:26 +03:00
|
|
|
manager PBackground or PContent or PContentBridge;
|
2016-05-15 20:32:09 +03:00
|
|
|
|
|
|
|
parent:
|
2017-08-29 18:42:33 +03:00
|
|
|
async Buffer(ByteBuffer aBuffer);
|
2016-05-15 20:32:09 +03:00
|
|
|
async Close(nsresult aRv);
|
|
|
|
|
|
|
|
child:
|
2017-04-24 13:09:39 +03:00
|
|
|
// 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();
|
|
|
|
|
2016-05-15 20:32:09 +03:00
|
|
|
// 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
|