/* 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 "nsISupports.idl" interface nsIArray; interface nsIInputStream; [scriptable, uuid(ae318e05-2a4e-4f85-95c0-e8b191ad812c)] interface nsIPresentationChannelDescription: nsISupports { const unsigned short TYPE_TCP = 1; const unsigned short TYPE_DATACHANNEL = 2; // Type of transport channel. readonly attribute uint8_t type; // Addresses for TCP channel (as a list of nsISupportsCString). // Should only be used while type == TYPE_TCP. readonly attribute nsIArray tcpAddress; // Port number for TCP channel. // Should only be used while type == TYPE_TCP. readonly attribute uint16_t tcpPort; // SDP for Data Channel. // Should only be used while type == TYPE_DATACHANNEL. readonly attribute DOMString dataChannelSDP; }; /* * The callbacks for events on control channel. */ [scriptable, uuid(96dd548f-7d0f-43c1-b1ad-28e666cf1e82)] interface nsIPresentationControlChannelListener: nsISupports { /* * Callback for receiving offer from remote endpoint. * @param offer The received offer. */ void onOffer(in nsIPresentationChannelDescription offer); /* * Callback for receiving answer from remote endpoint. * @param answer The received answer. */ void onAnswer(in nsIPresentationChannelDescription answer); /* * Callback for receiving ICE candidate from remote endpoint. * @param answer The received answer. */ void onIceCandidate(in DOMString candidate); /* * The callback for notifying channel connected. This should be async called * after nsIPresentationDevice::establishControlChannel. */ void notifyConnected(); /* * The callback for notifying channel disconnected. * @param reason The reason of channel close, NS_OK represents normal close. */ void notifyDisconnected(in nsresult reason); /* * The callback for notifying the reconnect command is acknowledged. */ void notifyReconnected(); }; /* * The control channel for establishing RTCPeerConnection for a presentation * session. SDP Offer/Answer will be exchanged through this interface. The * control channel should be in-order. */ [scriptable, uuid(e60e208c-a9f5-4bc6-9a3e-47f3e4ae9c57)] interface nsIPresentationControlChannel: nsISupports { // The listener for handling events of this control channel. // All the events should be pending until listener is assigned. attribute nsIPresentationControlChannelListener listener; /* * Send offer to remote endpoint. |onOffer| should be invoked on remote * endpoint. * @param offer The offer to send. * @throws NS_ERROR_FAILURE on failure */ void sendOffer(in nsIPresentationChannelDescription offer); /* * Send answer to remote endpoint. |onAnswer| should be invoked on remote * endpoint. * @param answer The answer to send. * @throws NS_ERROR_FAILURE on failure */ void sendAnswer(in nsIPresentationChannelDescription answer); /* * Send ICE candidate to remote endpoint. |onIceCandidate| should be invoked * on remote endpoint. * @param candidate The candidate to send * @throws NS_ERROR_FAILURE on failure */ void sendIceCandidate(in DOMString candidate); /* * Launch a presentation on remote endpoint. * @param presentationId The Id for representing this session. * @param url The URL requested to open by remote device. * @throws NS_ERROR_FAILURE on failure */ void launch(in DOMString presentationId, in DOMString url); /* * Terminate a presentation on remote endpoint. * @param presentationId The Id for representing this session. * @throws NS_ERROR_FAILURE on failure */ void terminate(in DOMString presentationId); /* * Disconnect the control channel. * @param reason The reason of disconnecting channel; NS_OK represents normal. */ void disconnect(in nsresult reason); /* * Reconnect a presentation on remote endpoint. * Note that only controller is allowed to reconnect a session. * @param presentationId The Id for representing this session. * @param url The URL requested to open by remote device. * @throws NS_ERROR_FAILURE on failure */ void reconnect(in DOMString presentationId, in DOMString url); };