mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-17 04:37:46 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
30
dom/presentation/interfaces/moz.build
Normal file
30
dom/presentation/interfaces/moz.build
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# 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/.
|
||||
|
||||
XPIDL_SOURCES += [
|
||||
'nsIPresentationControlChannel.idl',
|
||||
'nsIPresentationControlService.idl',
|
||||
'nsIPresentationDevice.idl',
|
||||
'nsIPresentationDeviceManager.idl',
|
||||
'nsIPresentationDevicePrompt.idl',
|
||||
'nsIPresentationDeviceProvider.idl',
|
||||
'nsIPresentationListener.idl',
|
||||
'nsIPresentationLocalDevice.idl',
|
||||
'nsIPresentationRequestUIGlue.idl',
|
||||
'nsIPresentationService.idl',
|
||||
'nsIPresentationSessionRequest.idl',
|
||||
'nsIPresentationSessionTransport.idl',
|
||||
'nsIPresentationSessionTransportBuilder.idl',
|
||||
'nsIPresentationTerminateRequest.idl',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
|
||||
XPIDL_SOURCES += [
|
||||
'nsIPresentationNetworkHelper.idl',
|
||||
]
|
||||
|
||||
XPIDL_MODULE = 'dom_presentation'
|
||||
|
||||
139
dom/presentation/interfaces/nsIPresentationControlChannel.idl
Normal file
139
dom/presentation/interfaces/nsIPresentationControlChannel.idl
Normal file
|
|
@ -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 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);
|
||||
};
|
||||
156
dom/presentation/interfaces/nsIPresentationControlService.idl
Normal file
156
dom/presentation/interfaces/nsIPresentationControlService.idl
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
/* 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;
|
||||
};
|
||||
43
dom/presentation/interfaces/nsIPresentationDevice.idl
Normal file
43
dom/presentation/interfaces/nsIPresentationDevice.idl
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
/* 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;
|
||||
|
||||
/*
|
||||
* Remote device.
|
||||
*/
|
||||
[scriptable, uuid(b1e0a7af-5936-4066-8f2e-f789fb9a7e8f)]
|
||||
interface nsIPresentationDevice : nsISupports
|
||||
{
|
||||
// The unique Id for the device. UUID is recommanded.
|
||||
readonly attribute AUTF8String id;
|
||||
|
||||
// The human-readable name of this device.
|
||||
readonly attribute AUTF8String name;
|
||||
|
||||
// TODO expose more info in order to fulfill UX spec
|
||||
// The category of this device, could be "wifi", "bluetooth", "hdmi", etc.
|
||||
readonly attribute AUTF8String type;
|
||||
|
||||
/*
|
||||
* Establish a control channel to this device.
|
||||
* @returns The control channel for this session.
|
||||
* @throws NS_ERROR_FAILURE if the establishment fails
|
||||
*/
|
||||
nsIPresentationControlChannel establishControlChannel();
|
||||
|
||||
// Do something when presentation session is disconnected.
|
||||
void disconnect();
|
||||
|
||||
/*
|
||||
* Query if requested presentation URL is supported.
|
||||
* @params requestedUrl the designated URL for a presentation request.
|
||||
* @returns true if designated URL is supported.
|
||||
*/
|
||||
boolean isRequestedUrlSupported(in DOMString requestedUrl);
|
||||
};
|
||||
|
||||
|
||||
51
dom/presentation/interfaces/nsIPresentationDeviceManager.idl
Normal file
51
dom/presentation/interfaces/nsIPresentationDeviceManager.idl
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
/* 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 nsIPresentationDeviceProvider;
|
||||
|
||||
%{C++
|
||||
#define PRESENTATION_DEVICE_MANAGER_CONTRACTID "@mozilla.org/presentation-device/manager;1"
|
||||
#define PRESENTATION_DEVICE_CHANGE_TOPIC "presentation-device-change"
|
||||
%}
|
||||
|
||||
/*
|
||||
* Manager for the device availability. User can observe "presentation-device-change"
|
||||
* for any update of the available devices.
|
||||
*/
|
||||
[scriptable, uuid(beb61db5-3d5f-454f-a15a-dbfa0337c569)]
|
||||
interface nsIPresentationDeviceManager : nsISupports
|
||||
{
|
||||
// true if there is any device available.
|
||||
readonly attribute boolean deviceAvailable;
|
||||
|
||||
/*
|
||||
* Register a device provider manually.
|
||||
* @param provider The device provider to add.
|
||||
*/
|
||||
void addDeviceProvider(in nsIPresentationDeviceProvider provider);
|
||||
|
||||
/*
|
||||
* Unregister a device provider manually.
|
||||
* @param provider The device provider to remove.
|
||||
*/
|
||||
void removeDeviceProvider(in nsIPresentationDeviceProvider provider);
|
||||
|
||||
/*
|
||||
* Force all registered device providers to update device information.
|
||||
*/
|
||||
void forceDiscovery();
|
||||
|
||||
/*
|
||||
* Retrieve all available devices or all available devices that supports
|
||||
* designated presentation URLs, return a list of nsIPresentationDevice.
|
||||
* The returned list is a cached device list and could be out-of-date.
|
||||
* Observe device change events to get following updates.
|
||||
* @param presentationUrls the target presentation URLs for device filtering
|
||||
*/
|
||||
nsIArray getAvailableDevices([optional] in nsIArray presentationUrls);
|
||||
};
|
||||
|
||||
58
dom/presentation/interfaces/nsIPresentationDevicePrompt.idl
Normal file
58
dom/presentation/interfaces/nsIPresentationDevicePrompt.idl
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
/* 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 nsIDOMEventTarget;
|
||||
interface nsIPresentationDevice;
|
||||
interface nsIPrincipal;
|
||||
|
||||
%{C++
|
||||
#define PRESENTATION_DEVICE_PROMPT_CONTRACTID "@mozilla.org/presentation-device/prompt;1"
|
||||
%}
|
||||
|
||||
/*
|
||||
* The information and callbacks for device selection
|
||||
*/
|
||||
[scriptable, uuid(b2aa7f6a-9448-446a-bba4-9c29638b0ed4)]
|
||||
interface nsIPresentationDeviceRequest : nsISupports
|
||||
{
|
||||
// The origin which initiate the request.
|
||||
readonly attribute DOMString origin;
|
||||
|
||||
// The array of candidate URLs.
|
||||
readonly attribute nsIArray requestURLs;
|
||||
|
||||
// The XUL browser element that the request was originated in.
|
||||
readonly attribute nsIDOMEventTarget chromeEventHandler;
|
||||
|
||||
// The principal of the request.
|
||||
readonly attribute nsIPrincipal principal;
|
||||
|
||||
/*
|
||||
* Callback after selecting a device
|
||||
* @param device The selected device.
|
||||
*/
|
||||
void select(in nsIPresentationDevice device);
|
||||
|
||||
/*
|
||||
* Callback after selection failed or canceled by user.
|
||||
* @param reason The error cause for canceling this request.
|
||||
*/
|
||||
void cancel(in nsresult reason);
|
||||
};
|
||||
|
||||
/*
|
||||
* UI prompt for device selection.
|
||||
*/
|
||||
[scriptable, uuid(ac1a7e44-de86-454f-a9f1-276de2539831)]
|
||||
interface nsIPresentationDevicePrompt : nsISupports
|
||||
{
|
||||
/*
|
||||
* Request a device selection.
|
||||
* @param request The information and callbacks of this selection request.
|
||||
*/
|
||||
void promptDeviceSelection(in nsIPresentationDeviceRequest request);
|
||||
};
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
/* 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 nsIPresentationDevice;
|
||||
interface nsIPresentationControlChannel;
|
||||
|
||||
%{C++
|
||||
#define PRESENTATION_DEVICE_PROVIDER_CATEGORY "presentation-device-provider"
|
||||
%}
|
||||
|
||||
/*
|
||||
* The callbacks for any device updates and session request.
|
||||
*/
|
||||
[scriptable, uuid(46fd372b-2e40-4179-9b36-0478d141e440)]
|
||||
interface nsIPresentationDeviceListener: nsISupports
|
||||
{
|
||||
void addDevice(in nsIPresentationDevice device);
|
||||
void removeDevice(in nsIPresentationDevice device);
|
||||
void updateDevice(in nsIPresentationDevice device);
|
||||
|
||||
/*
|
||||
* Callback while the remote device is requesting to start a presentation session.
|
||||
* @param device The remote device that sent session request.
|
||||
* @param url The URL requested to open by remote device.
|
||||
* @param presentationId The Id for representing this session.
|
||||
* @param controlChannel The control channel for this session.
|
||||
*/
|
||||
void onSessionRequest(in nsIPresentationDevice device,
|
||||
in DOMString url,
|
||||
in DOMString presentationId,
|
||||
in nsIPresentationControlChannel controlChannel);
|
||||
|
||||
/*
|
||||
* Callback while the remote device is requesting to terminate a presentation session.
|
||||
* @param device The remote device that sent session request.
|
||||
* @param presentationId The Id for representing this session.
|
||||
* @param controlChannel The control channel for this session.
|
||||
* @param aIsFromReceiver true if termination is initiated by receiver.
|
||||
*/
|
||||
void onTerminateRequest(in nsIPresentationDevice device,
|
||||
in DOMString presentationId,
|
||||
in nsIPresentationControlChannel controlChannel,
|
||||
in boolean aIsFromReceiver);
|
||||
|
||||
/*
|
||||
* Callback while the remote device is requesting to reconnect a presentation session.
|
||||
* @param device The remote device that sent session request.
|
||||
* @param aUrl The URL requested to open by remote device.
|
||||
* @param presentationId The Id for representing this session.
|
||||
* @param controlChannel The control channel for this session.
|
||||
*/
|
||||
void onReconnectRequest(in nsIPresentationDevice device,
|
||||
in DOMString url,
|
||||
in DOMString presentationId,
|
||||
in nsIPresentationControlChannel controlChannel);
|
||||
};
|
||||
|
||||
/*
|
||||
* Device provider for any device protocol, can be registered as default
|
||||
* providers by adding its contractID to category "presentation-device-provider".
|
||||
*/
|
||||
[scriptable, uuid(3db2578a-0f50-44ad-b01b-28427b71b7bf)]
|
||||
interface nsIPresentationDeviceProvider: nsISupports
|
||||
{
|
||||
// The listener for handling any device update.
|
||||
attribute nsIPresentationDeviceListener listener;
|
||||
|
||||
/*
|
||||
* Force to update device information.
|
||||
*/
|
||||
void forceDiscovery();
|
||||
};
|
||||
50
dom/presentation/interfaces/nsIPresentationListener.idl
Normal file
50
dom/presentation/interfaces/nsIPresentationListener.idl
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
/* 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"
|
||||
|
||||
[ref] native URLArrayRef(const nsTArray<nsString>);
|
||||
|
||||
[uuid(0105f837-4279-4715-9d5b-2dc3f8b65353)]
|
||||
interface nsIPresentationAvailabilityListener : nsISupports
|
||||
{
|
||||
/*
|
||||
* Called when device availability changes.
|
||||
*/
|
||||
[noscript] void notifyAvailableChange(in URLArrayRef urls,
|
||||
in bool available);
|
||||
};
|
||||
|
||||
[scriptable, uuid(7dd48df8-8f8c-48c7-ac37-7b9fd1acf2f8)]
|
||||
interface nsIPresentationSessionListener : nsISupports
|
||||
{
|
||||
const unsigned short STATE_CONNECTING = 0;
|
||||
const unsigned short STATE_CONNECTED = 1;
|
||||
const unsigned short STATE_CLOSED = 2;
|
||||
const unsigned short STATE_TERMINATED = 3;
|
||||
|
||||
/*
|
||||
* Called when session state changes.
|
||||
*/
|
||||
void notifyStateChange(in DOMString sessionId,
|
||||
in unsigned short state,
|
||||
in nsresult reason);
|
||||
|
||||
/*
|
||||
* Called when receive messages.
|
||||
*/
|
||||
void notifyMessage(in DOMString sessionId,
|
||||
in ACString data,
|
||||
in boolean isBinary);
|
||||
};
|
||||
|
||||
[scriptable, uuid(27f101d7-9ed1-429e-b4f8-43b00e8e111c)]
|
||||
interface nsIPresentationRespondingListener : nsISupports
|
||||
{
|
||||
/*
|
||||
* Called when an incoming session connects.
|
||||
*/
|
||||
void notifySessionConnect(in unsigned long long windowId,
|
||||
in DOMString sessionId);
|
||||
};
|
||||
17
dom/presentation/interfaces/nsIPresentationLocalDevice.idl
Normal file
17
dom/presentation/interfaces/nsIPresentationLocalDevice.idl
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
/* 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 "nsIPresentationDevice.idl"
|
||||
|
||||
/*
|
||||
* Local device.
|
||||
* This device is used for 1-UA use case. The result for display is rendered by
|
||||
* this host device.
|
||||
*/
|
||||
[scriptable, uuid(dd239720-cab6-4fb5-9025-cba23f1bbc2d)]
|
||||
interface nsIPresentationLocalDevice : nsIPresentationDevice
|
||||
{
|
||||
// (1-UA only) The property is used to get the window ID of 1-UA device.
|
||||
readonly attribute AUTF8String windowId;
|
||||
};
|
||||
36
dom/presentation/interfaces/nsIPresentationNetworkHelper.idl
Normal file
36
dom/presentation/interfaces/nsIPresentationNetworkHelper.idl
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
/* 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"
|
||||
|
||||
%{C++
|
||||
#define PRESENTATION_NETWORK_HELPER_CONTRACTID \
|
||||
"@mozilla.org/presentation-device/networkHelper;1"
|
||||
%}
|
||||
|
||||
[scriptable, uuid(0a7e134f-ff80-4e73-91e6-12b3134fe568)]
|
||||
interface nsIPresentationNetworkHelperListener : nsISupports
|
||||
{
|
||||
/**
|
||||
* Called when error occurs.
|
||||
* @param aReason error message.
|
||||
*/
|
||||
void onError(in AUTF8String aReason);
|
||||
|
||||
/**
|
||||
* Called when get Wi-Fi IP address.
|
||||
* @param aIPAddress the IP address of Wi-Fi interface.
|
||||
*/
|
||||
void onGetWifiIPAddress(in AUTF8String aIPAddress);
|
||||
};
|
||||
|
||||
[scriptable, uuid(650dc16b-3d9c-49a6-9037-1d6f2d18c90c)]
|
||||
interface nsIPresentationNetworkHelper : nsISupports
|
||||
{
|
||||
/**
|
||||
* Get IP address of Wi-Fi interface.
|
||||
* @param aListener the callback interface.
|
||||
*/
|
||||
void getWifiIPAddress(in nsIPresentationNetworkHelperListener aListener);
|
||||
};
|
||||
29
dom/presentation/interfaces/nsIPresentationRequestUIGlue.idl
Normal file
29
dom/presentation/interfaces/nsIPresentationRequestUIGlue.idl
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
/* 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 nsIPresentationDevice;
|
||||
|
||||
%{C++
|
||||
#define PRESENTATION_REQUEST_UI_GLUE_CONTRACTID \
|
||||
"@mozilla.org/presentation/requestuiglue;1"
|
||||
%}
|
||||
|
||||
[scriptable, uuid(faa45119-6fb5-496c-aa4c-f740177a38b5)]
|
||||
interface nsIPresentationRequestUIGlue : nsISupports
|
||||
{
|
||||
/*
|
||||
* This method is called to open the responding app/page when
|
||||
* a presentation request comes in at receiver side.
|
||||
*
|
||||
* @param url The url of the request.
|
||||
* @param sessionId The session ID of the request.
|
||||
*
|
||||
* @return A promise that resolves to the opening frame.
|
||||
*/
|
||||
nsISupports sendRequest(in DOMString url,
|
||||
in DOMString sessionId,
|
||||
in nsIPresentationDevice device);
|
||||
};
|
||||
275
dom/presentation/interfaces/nsIPresentationService.idl
Normal file
275
dom/presentation/interfaces/nsIPresentationService.idl
Normal file
|
|
@ -0,0 +1,275 @@
|
|||
/* 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 nsIDOMBlob;
|
||||
interface nsIDOMEventTarget;
|
||||
interface nsIInputStream;
|
||||
interface nsIPresentationAvailabilityListener;
|
||||
interface nsIPresentationRespondingListener;
|
||||
interface nsIPresentationSessionListener;
|
||||
interface nsIPresentationTransportBuilderConstructor;
|
||||
interface nsIPrincipal;
|
||||
|
||||
%{C++
|
||||
#define PRESENTATION_SERVICE_CID \
|
||||
{ 0x1d9bb10c, 0xc0ab, 0x4fe8, \
|
||||
{ 0x9e, 0x4f, 0x40, 0x58, 0xb8, 0x51, 0x98, 0x32 } }
|
||||
#define PRESENTATION_SERVICE_CONTRACTID \
|
||||
"@mozilla.org/presentation/presentationservice;1"
|
||||
|
||||
#include "nsTArray.h"
|
||||
|
||||
class nsString;
|
||||
%}
|
||||
|
||||
[ref] native URLArrayRef(const nsTArray<nsString>);
|
||||
|
||||
[scriptable, uuid(12073206-0065-4b10-9488-a6eb9b23e65b)]
|
||||
interface nsIPresentationServiceCallback : nsISupports
|
||||
{
|
||||
/*
|
||||
* Called when the operation succeeds.
|
||||
*
|
||||
* @param url: the selected request url used to start or reconnect a session.
|
||||
*/
|
||||
void notifySuccess(in DOMString url);
|
||||
|
||||
/*
|
||||
* Called when the operation fails.
|
||||
*
|
||||
* @param error: error message.
|
||||
*/
|
||||
void notifyError(in nsresult error);
|
||||
};
|
||||
|
||||
[scriptable, uuid(de42b741-5619-4650-b961-c2cebb572c95)]
|
||||
interface nsIPresentationService : nsISupports
|
||||
{
|
||||
const unsigned short ROLE_CONTROLLER = 0x1;
|
||||
const unsigned short ROLE_RECEIVER = 0x2;
|
||||
|
||||
const unsigned short CLOSED_REASON_ERROR = 0x1;
|
||||
const unsigned short CLOSED_REASON_CLOSED = 0x2;
|
||||
const unsigned short CLOSED_REASON_WENTAWAY = 0x3;
|
||||
|
||||
/*
|
||||
* Start a new presentation session and display a prompt box which asks users
|
||||
* to select a device.
|
||||
*
|
||||
* @param urls: The candidate Urls of presenting page. Only one url would be used.
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param origin: The url of requesting page.
|
||||
* @param deviceId: The specified device of handling this request, null string
|
||||
* for prompt device selection dialog.
|
||||
* @param windowId: The inner window ID associated with the presentation
|
||||
* session. (0 implies no window ID since no actual window
|
||||
* uses 0 as its ID. Generally it's the case the window is
|
||||
* located in different process from this service)
|
||||
* @param eventTarget: The chrome event handler, in particular XUL browser
|
||||
* element in parent process, that the request was
|
||||
* originated in.
|
||||
* @param principal: The principal that initiated the session.
|
||||
* @param callback: Invoke the callback when the operation is completed.
|
||||
* NotifySuccess() is called with |id| if a session is
|
||||
* established successfully with the selected device.
|
||||
* Otherwise, NotifyError() is called with a error message.
|
||||
* @param constructor: The constructor for creating a transport builder.
|
||||
*/
|
||||
[noscript] void startSession(in URLArrayRef urls,
|
||||
in DOMString sessionId,
|
||||
in DOMString origin,
|
||||
in DOMString deviceId,
|
||||
in unsigned long long windowId,
|
||||
in nsIDOMEventTarget eventTarget,
|
||||
in nsIPrincipal principal,
|
||||
in nsIPresentationServiceCallback callback,
|
||||
in nsIPresentationTransportBuilderConstructor constructor);
|
||||
|
||||
/*
|
||||
* Send the message to the session.
|
||||
*
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param role: Identify the function called by controller or receiver.
|
||||
* @param data: the message being sent out.
|
||||
*/
|
||||
void sendSessionMessage(in DOMString sessionId,
|
||||
in uint8_t role,
|
||||
in DOMString data);
|
||||
|
||||
/*
|
||||
* Send the binary message to the session.
|
||||
*
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param role: Identify the function called by controller or receiver.
|
||||
* @param data: the message being sent out.
|
||||
*/
|
||||
void sendSessionBinaryMsg(in DOMString sessionId,
|
||||
in uint8_t role,
|
||||
in ACString data);
|
||||
|
||||
/*
|
||||
* Send the blob to the session.
|
||||
*
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param role: Identify the function called by controller or receiver.
|
||||
* @param blob: The input blob to be sent.
|
||||
*/
|
||||
void sendSessionBlob(in DOMString sessionId,
|
||||
in uint8_t role,
|
||||
in nsIDOMBlob blob);
|
||||
|
||||
/*
|
||||
* Close the session.
|
||||
*
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param role: Identify the function called by controller or receiver.
|
||||
*/
|
||||
void closeSession(in DOMString sessionId,
|
||||
in uint8_t role,
|
||||
in uint8_t closedReason);
|
||||
|
||||
/*
|
||||
* Terminate the session.
|
||||
*
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param role: Identify the function called by controller or receiver.
|
||||
*/
|
||||
void terminateSession(in DOMString sessionId,
|
||||
in uint8_t role);
|
||||
|
||||
/*
|
||||
* Reconnect the session.
|
||||
*
|
||||
* @param url: The request Urls.
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param role: Identify the function called by controller or receiver.
|
||||
* @param callback: NotifySuccess() is called when a control channel
|
||||
* is opened successfully.
|
||||
* Otherwise, NotifyError() is called with a error message.
|
||||
*/
|
||||
[noscript] void reconnectSession(in URLArrayRef urls,
|
||||
in DOMString sessionId,
|
||||
in uint8_t role,
|
||||
in nsIPresentationServiceCallback callback);
|
||||
|
||||
/*
|
||||
* Register an availability listener. Must be called from the main thread.
|
||||
*
|
||||
* @param availabilityUrls: The Urls that this listener is interested in.
|
||||
* @param listener: The listener to register.
|
||||
*/
|
||||
[noscript] void registerAvailabilityListener(
|
||||
in URLArrayRef availabilityUrls,
|
||||
in nsIPresentationAvailabilityListener listener);
|
||||
|
||||
/*
|
||||
* Unregister an availability listener. Must be called from the main thread.
|
||||
*
|
||||
* @param availabilityUrls: The Urls that are registered before.
|
||||
* @param listener: The listener to unregister.
|
||||
*/
|
||||
[noscript] void unregisterAvailabilityListener(
|
||||
in URLArrayRef availabilityUrls,
|
||||
in nsIPresentationAvailabilityListener listener);
|
||||
|
||||
/*
|
||||
* Register a session listener. Must be called from the main thread.
|
||||
*
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param role: Identify the function called by controller or receiver.
|
||||
* @param listener: The listener to register.
|
||||
*/
|
||||
void registerSessionListener(in DOMString sessionId,
|
||||
in uint8_t role,
|
||||
in nsIPresentationSessionListener listener);
|
||||
|
||||
/*
|
||||
* Unregister a session listener. Must be called from the main thread.
|
||||
*
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param role: Identify the function called by controller or receiver.
|
||||
*/
|
||||
void unregisterSessionListener(in DOMString sessionId,
|
||||
in uint8_t role);
|
||||
|
||||
/*
|
||||
* Register a responding listener. Must be called from the main thread.
|
||||
*
|
||||
* @param windowId: The window ID associated with the listener.
|
||||
* @param listener: The listener to register.
|
||||
*/
|
||||
void registerRespondingListener(in unsigned long long windowId,
|
||||
in nsIPresentationRespondingListener listener);
|
||||
|
||||
/*
|
||||
* Unregister a responding listener. Must be called from the main thread.
|
||||
* @param windowId: The window ID associated with the listener.
|
||||
*/
|
||||
void unregisterRespondingListener(in unsigned long long windowId);
|
||||
|
||||
/*
|
||||
* Notify the receiver page is ready for presentation use.
|
||||
*
|
||||
* @param sessionId An ID to identify presentation session.
|
||||
* @param windowId The inner window ID associated with the presentation
|
||||
* session.
|
||||
* @param isLoading true if receiver page is loading successfully.
|
||||
* @param constructor: The constructor for creating a transport builder.
|
||||
*/
|
||||
void notifyReceiverReady(in DOMString sessionId,
|
||||
in unsigned long long windowId,
|
||||
in boolean isLoading,
|
||||
in nsIPresentationTransportBuilderConstructor constructor);
|
||||
|
||||
/*
|
||||
* Notify the transport is closed
|
||||
*
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param role: Identify the function called by controller or receiver.
|
||||
* @param reason: the error message. NS_OK indicates it is closed normally.
|
||||
*/
|
||||
void NotifyTransportClosed(in DOMString sessionId,
|
||||
in uint8_t role,
|
||||
in nsresult reason);
|
||||
|
||||
/*
|
||||
* Untrack the relevant info about the presentation session if there's any.
|
||||
*
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param role: Identify the function called by controller or receiver.
|
||||
*/
|
||||
void untrackSessionInfo(in DOMString sessionId, in uint8_t role);
|
||||
|
||||
/*
|
||||
* The windowId for building RTCDataChannel session transport
|
||||
*
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param role: Identify the function called by controller or receiver.
|
||||
*/
|
||||
unsigned long long getWindowIdBySessionId(in DOMString sessionId,
|
||||
in uint8_t role);
|
||||
|
||||
/*
|
||||
* Update the mapping of the session ID and window ID.
|
||||
*
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param role: Identify the function called by controller or receiver.
|
||||
* @param windowId: The inner window ID associated with the presentation
|
||||
* session.
|
||||
*/
|
||||
void updateWindowIdBySessionId(in DOMString sessionId,
|
||||
in uint8_t role,
|
||||
in unsigned long long windowId);
|
||||
|
||||
/*
|
||||
* To build the session transport.
|
||||
* NOTE: This function should be only called at controller side.
|
||||
*
|
||||
* @param sessionId: An ID to identify presentation session.
|
||||
* @param role: Identify the function called by controller or receiver.
|
||||
*/
|
||||
void buildTransport(in DOMString sessionId, in uint8_t role);
|
||||
};
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
/* 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 nsIPresentationDevice;
|
||||
interface nsIPresentationControlChannel;
|
||||
|
||||
%{C++
|
||||
#define PRESENTATION_SESSION_REQUEST_TOPIC "presentation-session-request"
|
||||
#define PRESENTATION_RECONNECT_REQUEST_TOPIC "presentation-reconnect-request"
|
||||
%}
|
||||
|
||||
/*
|
||||
* The event of a device requesting for starting or reconnecting
|
||||
* a presentation session. User can monitor the session request
|
||||
* on every device by observing "presentation-sesion-request" for a
|
||||
* new session and "presentation-reconnect-request" for reconnecting.
|
||||
*/
|
||||
[scriptable, uuid(d808a084-d0f8-455a-a8df-5879e05a755b)]
|
||||
interface nsIPresentationSessionRequest: nsISupports
|
||||
{
|
||||
// The device which requesting the presentation session.
|
||||
readonly attribute nsIPresentationDevice device;
|
||||
|
||||
// The URL requested to open by remote device.
|
||||
readonly attribute DOMString url;
|
||||
|
||||
// The Id for representing this session.
|
||||
readonly attribute DOMString presentationId;
|
||||
|
||||
// The control channel for this session.
|
||||
readonly attribute nsIPresentationControlChannel controlChannel;
|
||||
};
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
/* 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 nsIDOMBlob;
|
||||
interface nsIInputStream;
|
||||
interface nsINetAddr;
|
||||
|
||||
%{C++
|
||||
#define PRESENTATION_TCP_SESSION_TRANSPORT_CONTRACTID \
|
||||
"@mozilla.org/presentation/presentationtcpsessiontransport;1"
|
||||
%}
|
||||
|
||||
/*
|
||||
* The callback for session transport events.
|
||||
*/
|
||||
[scriptable, uuid(9f158786-41a6-4a10-b29b-9497f25d4b67)]
|
||||
interface nsIPresentationSessionTransportCallback : nsISupports
|
||||
{
|
||||
void notifyTransportReady();
|
||||
void notifyTransportClosed(in nsresult reason);
|
||||
void notifyData(in ACString data, in boolean isBinary);
|
||||
};
|
||||
|
||||
/*
|
||||
* App-to-App transport channel for the presentation session.
|
||||
*/
|
||||
[scriptable, uuid(670b7e1b-65be-42b6-a596-be571907fa18)]
|
||||
interface nsIPresentationSessionTransport : nsISupports
|
||||
{
|
||||
// Should be set once the underlying session transport is built
|
||||
attribute nsIPresentationSessionTransportCallback callback;
|
||||
|
||||
// valid for TCP session transport
|
||||
readonly attribute nsINetAddr selfAddress;
|
||||
|
||||
/*
|
||||
* Enable the notification for incoming data. |notifyData| of
|
||||
* |nsIPresentationSessionTransportCallback| can start getting invoked.
|
||||
* Should set callback before |enableDataNotification| is called.
|
||||
*/
|
||||
void enableDataNotification();
|
||||
|
||||
/*
|
||||
* Send message to the remote endpoint.
|
||||
* @param data The message to send.
|
||||
*/
|
||||
void send(in DOMString data);
|
||||
|
||||
/*
|
||||
* Send the binary message to the remote endpoint.
|
||||
* @param data: the message being sent out.
|
||||
*/
|
||||
void sendBinaryMsg(in ACString data);
|
||||
|
||||
/*
|
||||
* Send the blob to the remote endpoint.
|
||||
* @param blob: The input blob to be sent.
|
||||
*/
|
||||
void sendBlob(in nsIDOMBlob blob);
|
||||
|
||||
/*
|
||||
* Close this session transport.
|
||||
* @param reason The reason for closing this session transport.
|
||||
*/
|
||||
void close(in nsresult reason);
|
||||
};
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
/* 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 nsIPresentationChannelDescription;
|
||||
interface nsISocketTransport;
|
||||
interface mozIDOMWindow;
|
||||
interface nsIPresentationControlChannel;
|
||||
interface nsIPresentationSessionTransport;
|
||||
|
||||
[scriptable, uuid(673f6de1-e253-41b8-9be8-b7ff161fa8dc)]
|
||||
interface nsIPresentationSessionTransportBuilderListener : nsISupports
|
||||
{
|
||||
// Should set |transport.callback| in |onSessionTransport|.
|
||||
void onSessionTransport(in nsIPresentationSessionTransport transport);
|
||||
void onError(in nsresult reason);
|
||||
|
||||
void sendOffer(in nsIPresentationChannelDescription offer);
|
||||
void sendAnswer(in nsIPresentationChannelDescription answer);
|
||||
void sendIceCandidate(in DOMString candidate);
|
||||
void close(in nsresult reason);
|
||||
};
|
||||
|
||||
[scriptable, uuid(2fdbe67d-80f9-48dc-8237-5bef8fa19801)]
|
||||
interface nsIPresentationSessionTransportBuilder : nsISupports
|
||||
{
|
||||
};
|
||||
|
||||
/**
|
||||
* The constructor for creating a transport builder.
|
||||
*/
|
||||
[scriptable, uuid(706482b2-1b51-4bed-a21d-785a9cfcfac7)]
|
||||
interface nsIPresentationTransportBuilderConstructor : nsISupports
|
||||
{
|
||||
nsIPresentationSessionTransportBuilder createTransportBuilder(in uint8_t type);
|
||||
};
|
||||
|
||||
/**
|
||||
* Builder for TCP session transport
|
||||
*/
|
||||
[scriptable, uuid(cde36d6e-f471-4262-a70d-f932a26b21d9)]
|
||||
interface nsIPresentationTCPSessionTransportBuilder : nsIPresentationSessionTransportBuilder
|
||||
{
|
||||
/**
|
||||
* The following creation functions will trigger |listener.onSessionTransport|
|
||||
* if the session transport is successfully built, |listener.onError| if some
|
||||
* error occurs during building session transport.
|
||||
*/
|
||||
void buildTCPSenderTransport(in nsISocketTransport aTransport,
|
||||
in nsIPresentationSessionTransportBuilderListener aListener);
|
||||
|
||||
void buildTCPReceiverTransport(in nsIPresentationChannelDescription aDescription,
|
||||
in nsIPresentationSessionTransportBuilderListener aListener);
|
||||
};
|
||||
|
||||
/**
|
||||
* Builder for WebRTC data channel session transport
|
||||
*/
|
||||
[scriptable, uuid(8131c4e0-3a8c-4bc1-a92a-8431473d2fe8)]
|
||||
interface nsIPresentationDataChannelSessionTransportBuilder : nsIPresentationSessionTransportBuilder
|
||||
{
|
||||
/**
|
||||
* The following creation function will trigger |listener.onSessionTransport|
|
||||
* if the session transport is successfully built, |listener.onError| if some
|
||||
* error occurs during creating session transport. The |notifyConnected| of
|
||||
* |aControlChannel| should be called before calling
|
||||
* |buildDataChannelTransport|.
|
||||
*/
|
||||
void buildDataChannelTransport(in uint8_t aRole,
|
||||
in mozIDOMWindow aWindow,
|
||||
in nsIPresentationSessionTransportBuilderListener aListener);
|
||||
|
||||
// Bug 1275150 - Merge TCP builder with the following APIs
|
||||
void onOffer(in nsIPresentationChannelDescription offer);
|
||||
void onAnswer(in nsIPresentationChannelDescription answer);
|
||||
void onIceCandidate(in DOMString candidate);
|
||||
void notifyDisconnected(in nsresult reason);
|
||||
};
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
/* 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 nsIPresentationDevice;
|
||||
interface nsIPresentationControlChannel;
|
||||
|
||||
%{C++
|
||||
#define PRESENTATION_TERMINATE_REQUEST_TOPIC "presentation-terminate-request"
|
||||
%}
|
||||
|
||||
/*
|
||||
* The event of a device requesting for terminating a presentation session. User can
|
||||
* monitor the terminate request on every device by observing "presentation-terminate-request".
|
||||
*/
|
||||
[scriptable, uuid(3ddbf3a4-53ee-4b70-9bbc-58ac90dce6b5)]
|
||||
interface nsIPresentationTerminateRequest: nsISupports
|
||||
{
|
||||
// The device which requesting to terminate presentation session.
|
||||
readonly attribute nsIPresentationDevice device;
|
||||
|
||||
// The Id for representing this session.
|
||||
readonly attribute DOMString presentationId;
|
||||
|
||||
// The control channel for this session.
|
||||
// Should only use this channel to complete session termination.
|
||||
readonly attribute nsIPresentationControlChannel controlChannel;
|
||||
|
||||
// True if termination is initiated by receiver.
|
||||
readonly attribute boolean isFromReceiver;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue