зеркало из https://github.com/mozilla/gecko-dev.git
90 строки
3.9 KiB
Plaintext
90 строки
3.9 KiB
Plaintext
/* 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 "domstubs.idl"
|
|
|
|
interface nsIDOMTCPSocket;
|
|
interface nsIDOMTCPServerSocket;
|
|
interface nsITCPServerSocketParent;
|
|
interface nsITCPSocketIntermediary;
|
|
|
|
// Interface required to allow the TCP socket object (TCPSocket.js) in the
|
|
// parent process to talk to the parent IPC actor, TCPSocketParent, which
|
|
// is written in C++.
|
|
[scriptable, uuid(6f040bf0-6852-11e3-949a-0800200c9a66)]
|
|
interface nsITCPSocketParent : nsISupports
|
|
{
|
|
[implicit_jscontext] void initJS(in jsval intermediary);
|
|
|
|
// Trigger a callback in the content process for |type|, providing a serialized
|
|
// argument of |data|, and update the child's readyState value with the given
|
|
// values.
|
|
//
|
|
// @param type
|
|
// Event type: 'onopen', 'ondata', 'onerror' or 'onclose'. 'odrain' is
|
|
// controlled by child.
|
|
// @param data
|
|
// Serialized data that is passed to event handler.
|
|
// @param readyState
|
|
// Current ready state.
|
|
[implicit_jscontext] void sendEvent(in DOMString type,
|
|
in jsval data,
|
|
in DOMString readyState);
|
|
|
|
// Initialize a parent socket object. It is called from the parent side socket,
|
|
// which is generated in accepting any open request on the parent side.
|
|
// The socket after being initialized will be established.
|
|
//
|
|
// @param socket
|
|
// The socket on the parent side.
|
|
// @param intermediary
|
|
// Intermediate class object. See nsITCPSocketIntermediary.
|
|
[implicit_jscontext] void setSocketAndIntermediary(in nsIDOMTCPSocket socket,
|
|
in nsITCPSocketIntermediary intermediary);
|
|
|
|
// When parent's buffered amount is updated and it wants to inform child to
|
|
// update the bufferedAmount as well.
|
|
//
|
|
// @param bufferedAmount
|
|
// The new value of bufferedAmount that is going to be set to child's
|
|
// bufferedAmount.
|
|
// @param trackingNumber
|
|
// Parent's current tracking number, reflecting the number of calls to
|
|
// send() on the child process. This number is sent back to the child
|
|
// to make sure the bufferedAmount updated on the child will correspond
|
|
// to the latest call of send().
|
|
void sendUpdateBufferedAmount(in uint32_t bufferedAmount, in uint32_t trackingNumber);
|
|
|
|
readonly attribute DOMString host;
|
|
readonly attribute unsigned short port;
|
|
};
|
|
|
|
// Intermediate class to handle sending multiple possible data types
|
|
// and kicking off the chrome process socket object's connection.
|
|
// This interface is the bridge of TCPSocketParent, which is written in C++,
|
|
// and TCPSocket, which is written in Javascript. TCPSocketParentIntermediary
|
|
// implements nsITCPSocketIntermediary in Javascript.
|
|
[scriptable, uuid(aa9bd46d-26bf-4ba8-9c18-ba02482c02f0)]
|
|
interface nsITCPSocketIntermediary : nsISupports {
|
|
// Open the connection to the server with the given parameters
|
|
nsIDOMTCPSocket open(in nsITCPSocketParent parent,
|
|
in DOMString host, in unsigned short port,
|
|
in boolean useSSL, in DOMString binaryType,
|
|
in unsigned long appId,
|
|
in boolean inBrowser);
|
|
|
|
// Listen on a port
|
|
nsIDOMTCPServerSocket listen(in nsITCPServerSocketParent parent,
|
|
in unsigned short port, in unsigned short backlog,
|
|
in DOMString binaryType,
|
|
in unsigned long appId,
|
|
in boolean inBrowser);
|
|
|
|
// Called when received a child request to send a string.
|
|
void onRecvSendString(in DOMString data, in uint32_t trackingNumber);
|
|
|
|
// Called when received a child request to send an array buffer.
|
|
void onRecvSendArrayBuffer(in jsval data, in uint32_t trackingNumber);
|
|
};
|