mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 00:05:36 +00:00
Bug 1536794 - Implement a base Target class. r=ato
In this revision it only helps sharing `handle`. But in a followup changeset, it will also help closing all the connections and justify the `sessions` map we keep around. Differential Revision: https://phabricator.services.mozilla.com/D24219 --HG-- rename : remote/targets/MainProcessTarget.jsm => remote/targets/Target.jsm extra : moz-landing-system : lando
This commit is contained in:
parent
c33cbad71c
commit
8f9717d1e8
@ -23,6 +23,7 @@ remote.jar:
|
||||
# targets
|
||||
content/targets/MainProcessTarget.jsm (targets/MainProcessTarget.jsm)
|
||||
content/targets/TabTarget.jsm (targets/TabTarget.jsm)
|
||||
content/targets/Target.jsm (targets/Target.jsm)
|
||||
content/targets/Targets.jsm (targets/Targets.jsm)
|
||||
|
||||
# domains
|
||||
|
@ -6,10 +6,8 @@
|
||||
|
||||
var EXPORTED_SYMBOLS = ["MainProcessTarget"];
|
||||
|
||||
const {Connection} = ChromeUtils.import("chrome://remote/content/Connection.jsm");
|
||||
const {Target} = ChromeUtils.import("chrome://remote/content/targets/Target.jsm");
|
||||
const {Session} = ChromeUtils.import("chrome://remote/content/sessions/Session.jsm");
|
||||
const {WebSocketDebuggerTransport} = ChromeUtils.import("chrome://remote/content/server/WebSocketTransport.jsm");
|
||||
const {WebSocketServer} = ChromeUtils.import("chrome://remote/content/server/WebSocket.jsm");
|
||||
|
||||
/**
|
||||
* The main process Target.
|
||||
@ -17,13 +15,12 @@ const {WebSocketServer} = ChromeUtils.import("chrome://remote/content/server/Web
|
||||
* Matches BrowserDevToolsAgentHost from chromium, and only support a couple of Domains:
|
||||
* https://cs.chromium.org/chromium/src/content/browser/devtools/browser_devtools_agent_host.cc?dr=CSs&g=0&l=80-91
|
||||
*/
|
||||
class MainProcessTarget {
|
||||
/**
|
||||
class MainProcessTarget extends Target {
|
||||
/*
|
||||
* @param Targets targets
|
||||
*/
|
||||
constructor(targets) {
|
||||
this.targets = targets;
|
||||
this.sessions = new Map();
|
||||
super(targets, Session);
|
||||
|
||||
this.type = "main-process";
|
||||
}
|
||||
@ -51,21 +48,4 @@ class MainProcessTarget {
|
||||
webSocketDebuggerUrl: this.wsDebuggerURL,
|
||||
};
|
||||
}
|
||||
|
||||
// nsIHttpRequestHandler
|
||||
|
||||
async handle(request, response) {
|
||||
const so = await WebSocketServer.upgrade(request, response);
|
||||
const transport = new WebSocketDebuggerTransport(so);
|
||||
const conn = new Connection(transport);
|
||||
this.sessions.set(conn, new Session(conn, this));
|
||||
}
|
||||
|
||||
// XPCOM
|
||||
|
||||
get QueryInterface() {
|
||||
return ChromeUtils.generateQI([
|
||||
Ci.nsIHttpRequestHandler,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@ -6,11 +6,9 @@
|
||||
|
||||
var EXPORTED_SYMBOLS = ["TabTarget"];
|
||||
|
||||
const {Connection} = ChromeUtils.import("chrome://remote/content/Connection.jsm");
|
||||
const {Target} = ChromeUtils.import("chrome://remote/content/targets/Target.jsm");
|
||||
const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
|
||||
const {TabSession} = ChromeUtils.import("chrome://remote/content/sessions/TabSession.jsm");
|
||||
const {WebSocketDebuggerTransport} = ChromeUtils.import("chrome://remote/content/server/WebSocketTransport.jsm");
|
||||
const {WebSocketServer} = ChromeUtils.import("chrome://remote/content/server/WebSocket.jsm");
|
||||
const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "Favicons",
|
||||
@ -19,15 +17,15 @@ XPCOMUtils.defineLazyServiceGetter(this, "Favicons",
|
||||
/**
|
||||
* Target for a local tab or a remoted frame.
|
||||
*/
|
||||
class TabTarget {
|
||||
class TabTarget extends Target {
|
||||
/**
|
||||
* @param Targets targets
|
||||
* @param BrowserElement browser
|
||||
*/
|
||||
constructor(targets, browser) {
|
||||
this.targets = targets;
|
||||
super(targets, TabSession);
|
||||
|
||||
this.browser = browser;
|
||||
this.sessions = new Map();
|
||||
}
|
||||
|
||||
connect() {
|
||||
@ -124,15 +122,6 @@ class TabTarget {
|
||||
};
|
||||
}
|
||||
|
||||
// nsIHttpRequestHandler
|
||||
|
||||
async handle(request, response) {
|
||||
const so = await WebSocketServer.upgrade(request, response);
|
||||
const transport = new WebSocketDebuggerTransport(so);
|
||||
const conn = new Connection(transport);
|
||||
this.sessions.set(conn, new TabSession(conn, this));
|
||||
}
|
||||
|
||||
// nsIObserver
|
||||
|
||||
observe(subject, topic, data) {
|
||||
|
43
remote/targets/Target.jsm
Normal file
43
remote/targets/Target.jsm
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/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
var EXPORTED_SYMBOLS = ["Target"];
|
||||
|
||||
const {Connection} = ChromeUtils.import("chrome://remote/content/Connection.jsm");
|
||||
const {WebSocketDebuggerTransport} = ChromeUtils.import("chrome://remote/content/server/WebSocketTransport.jsm");
|
||||
const {WebSocketServer} = ChromeUtils.import("chrome://remote/content/server/WebSocket.jsm");
|
||||
|
||||
/**
|
||||
* Base class for all the Targets.
|
||||
*/
|
||||
class Target {
|
||||
/**
|
||||
* @param Targets targets
|
||||
* @param Class sessionClass
|
||||
*/
|
||||
constructor(targets, sessionClass) {
|
||||
this.targets = targets;
|
||||
this.sessionClass = sessionClass;
|
||||
this.sessions = new Map();
|
||||
}
|
||||
|
||||
// nsIHttpRequestHandler
|
||||
|
||||
async handle(request, response) {
|
||||
const so = await WebSocketServer.upgrade(request, response);
|
||||
const transport = new WebSocketDebuggerTransport(so);
|
||||
const conn = new Connection(transport);
|
||||
this.sessions.set(conn, new this.sessionClass(conn, this));
|
||||
}
|
||||
|
||||
// XPCOM
|
||||
|
||||
get QueryInterface() {
|
||||
return ChromeUtils.generateQI([
|
||||
Ci.nsIHttpRequestHandler,
|
||||
]);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user