bug 1543115: remote: introduce nsIRemoteAgent XPIDL interface; r=remote-protocol-reviewers,maja_zf

Adds an XPIDL interface for the remote agent which we will later use to
initialise and start it from a new command-line handler written in Rust.

Differential Revision: https://phabricator.services.mozilla.com/D50287

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Andreas Tolfsen 2019-11-22 08:03:12 +00:00
Родитель 9c0f6722a6
Коммит 967406480d
3 изменённых файлов: 51 добавлений и 1 удалений

Просмотреть файл

@ -221,7 +221,10 @@ class RemoteAgentClass {
// XPCOM
get QueryInterface() {
return ChromeUtils.generateQI([Ci.nsICommandLineHandler]);
return ChromeUtils.generateQI([
Ci.nsICommandLineHandler,
Ci.nsIRemoteAgent,
]);
}
}

Просмотреть файл

@ -9,6 +9,9 @@ DIRS += [
XPCOM_MANIFESTS += ["components.conf"]
JAR_MANIFESTS += ["jar.mn"]
XPIDL_MODULE = "remote"
XPIDL_SOURCES += ["nsIRemoteAgent.idl"]
with Files("**"):
BUG_COMPONENT = ("Remote Protocol", "Agent")
with Files("domains/**/Emulation.jsm"):

44
remote/nsIRemoteAgent.idl Normal file
Просмотреть файл

@ -0,0 +1,44 @@
/* 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"
/**
* The Gecko remote agent is an RPC subsystem that exposes
* browser-internal interfaces and services to the surrounding
* system.
*
* Consumers, whether remote or browser-local, can interface with
* the browser through an assorted set of services ranging from
* document introspection and script evaluation, to instrumentation,
* user interaction simulation, and event subscription.
*/
[scriptable, uuid(8f685a9d-8181-46d6-a71d-869289099c6d)]
interface nsIRemoteAgent : nsISupports
{
/**
* Whether the remote agent is currently listening for new,
* incoming connections.
*/
readonly attribute boolean listening;
/**
* Asynchronously starts the remote agent, and listens for new
* connections.
*
* The address must be a fully qualified URL that uses the "http://"
* scheme, and can optionally include a desired port. If no port
* is chosen, the default port 9222 is used.
*
* If the requested port is 0, the system will atomically allocate
* a port.
*
* A "remote-listening" system observer notification with the URL
* of the main target's WebSocket will be emitted once listening.
*/
void listen(in AString aURL);
/** Stops listening and drops existing connections. */
void close();
};