зеркало из https://github.com/mozilla/gecko-dev.git
157 строки
5.6 KiB
Plaintext
157 строки
5.6 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 "nsISupports.idl"
|
|
|
|
interface nsIPresentationControlChannel;
|
|
|
|
%{C++
|
|
#define PRESENTATION_CONTROL_SERVICE_CONTACT_ID \
|
|
"@mozilla.org/presentation/control-service;1"
|
|
%}
|
|
|
|
/*
|
|
* The device information required for establishing control channel.
|
|
*/
|
|
[scriptable, uuid(296fd171-e4d0-4de0-99ff-ad8ed52ddef3)]
|
|
interface nsITCPDeviceInfo: nsISupports
|
|
{
|
|
readonly attribute AUTF8String id;
|
|
readonly attribute AUTF8String address;
|
|
readonly attribute uint16_t port;
|
|
// SHA-256 fingerprint of server certificate. Empty string represents
|
|
// server doesn't support TLS or not available.
|
|
readonly attribute AUTF8String certFingerprint;
|
|
};
|
|
|
|
[scriptable, uuid(09bddfaf-fcc2-4dc9-b33e-a509a1c2fb6d)]
|
|
interface nsIPresentationControlServerListener: nsISupports
|
|
{
|
|
/**
|
|
* Callback while the server is ready or restarted.
|
|
* @param aPort
|
|
* The port of the server socket.
|
|
* @param aCertFingerprint
|
|
* The SHA-256 fingerprint of TLS server certificate.
|
|
* Empty string represents server started without encryption.
|
|
*/
|
|
void onServerReady(in uint16_t aPort, in AUTF8String aCertFingerprint);
|
|
|
|
/**
|
|
* Callback while the server is stopped or fails to start.
|
|
* @param aResult
|
|
* The error cause of server stopped or the reason of
|
|
* start failure.
|
|
* NS_OK means the server is stopped by close.
|
|
*/
|
|
void onServerStopped(in nsresult aResult);
|
|
|
|
/**
|
|
* Callback while the remote host is requesting to start a presentation session.
|
|
* @param aDeviceInfo The device information related to the remote host.
|
|
* @param aUrl The URL requested to open by remote device.
|
|
* @param aPresentationId The Id for representing this session.
|
|
* @param aControlChannel The control channel for this session.
|
|
*/
|
|
void onSessionRequest(in nsITCPDeviceInfo aDeviceInfo,
|
|
in DOMString aUrl,
|
|
in DOMString aPresentationId,
|
|
in nsIPresentationControlChannel aControlChannel);
|
|
|
|
/**
|
|
* Callback while the remote host is requesting to terminate a presentation session.
|
|
* @param aDeviceInfo The device information related to the remote host.
|
|
* @param aPresentationId The Id for representing this session.
|
|
* @param aControlChannel The control channel for this session.
|
|
* @param aIsFromReceiver true if termination is initiated by receiver.
|
|
*/
|
|
void onTerminateRequest(in nsITCPDeviceInfo aDeviceInfo,
|
|
in DOMString aPresentationId,
|
|
in nsIPresentationControlChannel aControlChannel,
|
|
in boolean aIsFromReceiver);
|
|
|
|
/**
|
|
* Callback while the remote host is requesting to reconnect a presentation session.
|
|
* @param aDeviceInfo The device information related to the remote host.
|
|
* @param aUrl The URL requested to open by remote device.
|
|
* @param aPresentationId The Id for representing this session.
|
|
* @param aControlChannel The control channel for this session.
|
|
*/
|
|
void onReconnectRequest(in nsITCPDeviceInfo aDeviceInfo,
|
|
in DOMString url,
|
|
in DOMString aPresentationId,
|
|
in nsIPresentationControlChannel aControlChannel);
|
|
};
|
|
|
|
/**
|
|
* Presentation control service which can be used for both presentation
|
|
* control client and server.
|
|
*/
|
|
[scriptable, uuid(55d6b605-2389-4aae-a8fe-60d4440540ea)]
|
|
interface nsIPresentationControlService: nsISupports
|
|
{
|
|
/**
|
|
* This method initializes server socket. Caller should set listener and
|
|
* monitor onServerReady event to get the correct server info.
|
|
* @param aEncrypted
|
|
* True for using TLS control channel.
|
|
* @param aPort
|
|
* The port of the server socket. Pass 0 or opt-out to indicate no
|
|
* preference, and a port will be selected automatically.
|
|
* @throws NS_ERROR_FAILURE if the server socket has been inited or the
|
|
* server socket can not be inited.
|
|
*/
|
|
void startServer(in boolean aEncrypted, [optional] in uint16_t aPort);
|
|
|
|
/**
|
|
* Request connection to designated remote presentation control receiver.
|
|
* @param aDeviceInfo
|
|
* The remtoe device info for establish connection.
|
|
* @returns The control channel for this session.
|
|
* @throws NS_ERROR_FAILURE if the Id hasn't been inited.
|
|
*/
|
|
nsIPresentationControlChannel connect(in nsITCPDeviceInfo aDeviceInfo);
|
|
|
|
/**
|
|
* Check the compatibility to remote presentation control server.
|
|
* @param aVersion
|
|
* The version of remote server.
|
|
*/
|
|
boolean isCompatibleServer(in uint32_t aVersion);
|
|
|
|
/**
|
|
* Close server socket and call |listener.onClose(NS_OK)|
|
|
*/
|
|
void close();
|
|
|
|
/**
|
|
* Get the listen port of the TCP socket, valid after the server is ready.
|
|
* 0 indicates the server socket is not ready or is closed.
|
|
*/
|
|
readonly attribute uint16_t port;
|
|
|
|
/**
|
|
* The protocol version implemented by this server.
|
|
*/
|
|
readonly attribute uint32_t version;
|
|
|
|
/**
|
|
* The id of the TCP presentation server. |requestSession| won't
|
|
* work until the |id| is set.
|
|
*/
|
|
attribute AUTF8String id;
|
|
|
|
/**
|
|
* The fingerprint of the TLS server certificate.
|
|
* Empty string indicates the server is not ready or not encrypted.
|
|
*/
|
|
attribute AUTF8String certFingerprint;
|
|
|
|
/**
|
|
* The listener for handling events of this presentation control server.
|
|
* Listener must be provided before invoke |startServer| and |close|.
|
|
*/
|
|
attribute nsIPresentationControlServerListener listener;
|
|
};
|