/* 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 nsITCPSocketInternal; interface nsIDOMWindow; // Interface to allow the content process socket to reach the IPC bridge. // Implemented in C++ as TCPSocketChild, referenced as _socketBridge in TCPSocket.js [scriptable, uuid(292ebb3a-beac-4e06-88b0-b5b4e88ebd1c)] interface nsITCPSocketChild : nsISupports { // Tell the chrome process to open a corresponding connection with the given parameters [implicit_jscontext] void sendOpen(in nsITCPSocketInternal socket, in DOMString host, in unsigned short port, in boolean ssl, in DOMString binaryType, in nsIDOMWindow window, in jsval windowVal); // Tell the chrome process to perform send and update the tracking number. [implicit_jscontext] void sendSend(in jsval data, in unsigned long byteOffset, in unsigned long byteLength, in unsigned long trackingNumber); // Tell the chrome process to perform equivalent operations to all following methods void sendResume(); void sendSuspend(); void sendClose(); void sendStartTLS(); /** * Initialize the TCP socket on the child side for IPC. It is called from the child side, * which is generated in receiving a notification of accepting any open request * on the parent side. We use single implementation that works on a child process * as well as in the single process model. * * @param socket * The TCP socket on the child side. * This instance is connected with the child IPC side of the IPC bridge. * @param windowVal * The window object on the child side to create data * as "jsval" for deserialization. */ [implicit_jscontext] void setSocketAndWindow(in nsITCPSocketInternal socket, in jsval windowVal); };