Commit 96740648 authored by Andreas Tolfsen's avatar Andreas Tolfsen
Browse files

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
parent 9c0f6722
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -221,7 +221,10 @@ class RemoteAgentClass {
  // XPCOM

  get QueryInterface() {
    return ChromeUtils.generateQI([Ci.nsICommandLineHandler]);
    return ChromeUtils.generateQI([
      Ci.nsICommandLineHandler,
      Ci.nsIRemoteAgent,
    ]);
  }
}

+3 −0
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
/* 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();
};