diff options
Diffstat (limited to '')
-rw-r--r-- | dom/presentation/interfaces/nsIPresentationControlChannel.idl | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/dom/presentation/interfaces/nsIPresentationControlChannel.idl b/dom/presentation/interfaces/nsIPresentationControlChannel.idl new file mode 100644 index 0000000000..2b44fbd412 --- /dev/null +++ b/dom/presentation/interfaces/nsIPresentationControlChannel.idl @@ -0,0 +1,139 @@ +/* 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 AString 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 AString 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 AString 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 AString presentationId, in AString url); + + /* + * Terminate a presentation on remote endpoint. + * @param presentationId The Id for representing this session. + * @throws NS_ERROR_FAILURE on failure + */ + void terminate(in AString 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 AString presentationId, in AString url); +}; |