Bug 1172897 - Rename BrowserTabActor to FrameTargetActorProxy. r=ochameau

MozReview-Commit-ID: 4Lho3CLV1t8

--HG--
rename : devtools/server/actors/browser-tab.js => devtools/server/actors/targets/frame-proxy.js
extra : rebase_source : e8d4db9cc6dbd4e301cc4bc39568027a94f16c53
This commit is contained in:
J. Ryan Stinnett 2018-05-31 16:43:18 -05:00
Родитель ff819eb8ce
Коммит 420ead8490
7 изменённых файлов: 40 добавлений и 33 удалений

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

@ -52,26 +52,27 @@ and returns its `actorID`. That's the main role of RootActor.
``` ```
RootActor (root.js) RootActor (root.js)
| |
|-- BrowserTabActor (webbrowser.js) |-- FrameTargetActorProxy (frame-proxy.js)
| Targets tabs living in the parent or child process. Note that this is | Targets frames (such as a tab) living in the parent or child process.
| just a proxy for FrameTargetActor, which is loaded via the tab's message | Note that this is just a proxy for FrameTargetActor, which is loaded via
| manager as a frame script in the process containing the tab. This proxy | the frame's message manager as a frame script in the process containing
| via message manager is always used, even when e10s is disabled. | the frame content. This proxy via message manager is always used, even
| when the content happens to be in the same process.
| Returned by "listTabs" or "getTab" requests. | Returned by "listTabs" or "getTab" requests.
| | | |
| \-- FrameTargetActor (frame.js) | \-- FrameTargetActor (frame.js)
| The "real" target actor for a frame (such as a tab) which runs in | The "real" target actor for a frame (such as a tab) which runs in
| whichever process holds the content. BrowserTabActor communicates | whichever process holds the content. FrameTargetActorProxy
| with this via the frame's message manager. | communicates with this via the frame's message manager.
| Extends the abstract class BrowsingContextTargetActor. | Extends the abstract class BrowsingContextTargetActor.
| Returned by "connect" on BrowserTabActor. | Returned by "connect" on FrameTargetActorProxy.
| |
|-- WorkerActor (worker.js) |-- WorkerActor (worker.js)
| Targets a worker (applies to various kinds like web worker, service | Targets a worker (applies to various kinds like web worker, service
| worker, etc.). | worker, etc.).
| Returned by "listWorkers" request to the root actor to get all workers. | Returned by "listWorkers" request to the root actor to get all workers.
| Returned by "listWorkers" request to a BrowserTabActor to get workers for | Returned by "listWorkers" request to a FrameTargetActorProxy to get
| a specific tab. | workers for a specific frame.
| Returned by "listWorkers" request to a ChildProcessActor to get workers | Returned by "listWorkers" request to a ChildProcessActor to get workers
| for the chrome of the child process. | for the chrome of the child process.
| |

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

@ -105,8 +105,8 @@ ObservedActorFactory.prototype.createActor = function() {
}; };
exports.ObservedActorFactory = ObservedActorFactory; exports.ObservedActorFactory = ObservedActorFactory;
/** /*
* Methods shared between RootActor and BrowserTabActor. * Methods shared between RootActor and BrowsingContextTargetActor.
*/ */
/** /**
@ -125,8 +125,8 @@ exports.ObservedActorFactory = ObservedActorFactory;
* documented for addTabActor and addGlobalActor. * documented for addTabActor and addGlobalActor.
* *
* @param this * @param this
* The BrowserRootActor or BrowserTabActor with which the new actors will * The RootActor or BrowsingContextTargetActor with which the new actors
* be associated. It should support whatever API the |factories| * will be associated. It should support whatever API the |factories|
* constructor functions might be interested in, as it is passed to them. * constructor functions might be interested in, as it is passed to them.
* For the sake of CommonCreateExtraActors itself, it should have at least * For the sake of CommonCreateExtraActors itself, it should have at least
* the following properties: * the following properties:
@ -173,7 +173,7 @@ exports.createExtraActors = function createExtraActors(factories, pool) {
* CommonCreateExtraActors. * CommonCreateExtraActors.
* *
* @param this * @param this
* The BrowserRootActor or BrowserTabActor whose |_extraActors| table we * The RootActor or BrowsingContextTargetActor whose |_extraActors| table we
* should use; see above. * should use; see above.
*/ */
exports.appendExtraActors = function appendExtraActors(object) { exports.appendExtraActors = function appendExtraActors(object) {

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

@ -27,7 +27,6 @@ DevToolsModules(
'animation.js', 'animation.js',
'array-buffer.js', 'array-buffer.js',
'breakpoint.js', 'breakpoint.js',
'browser-tab.js',
'call-watcher.js', 'call-watcher.js',
'canvas.js', 'canvas.js',
'child-process.js', 'child-process.js',

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

@ -4,11 +4,19 @@
"use strict"; "use strict";
/*
* Target actor proxy that represents a frame / docShell in the parent process. It
* launches a FrameTargetActor in the content process to do the real work and tunnels the
* data.
*
* See devtools/docs/backend/actor-hierarchy.md for more details.
*/
const { DebuggerServer } = require("devtools/server/main"); const { DebuggerServer } = require("devtools/server/main");
loader.lazyImporter(this, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm"); loader.lazyImporter(this, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm");
/** /**
* Creates a target actor for handling requests to a single browser frame. * Creates a target actor proxy for handling requests to a single browser frame.
* Both <xul:browser> and <iframe mozbrowser> are supported. * Both <xul:browser> and <iframe mozbrowser> are supported.
* This actor is a shim that connects to a FrameTargetActor in a remote browser process. * This actor is a shim that connects to a FrameTargetActor in a remote browser process.
* All RDP packets get forwarded using the message manager. * All RDP packets get forwarded using the message manager.
@ -18,7 +26,7 @@ loader.lazyImporter(this, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm
* @param options * @param options
* - {Boolean} favicons: true if the form should include the favicon for the tab. * - {Boolean} favicons: true if the form should include the favicon for the tab.
*/ */
function BrowserTabActor(connection, browser, options = {}) { function FrameTargetActorProxy(connection, browser, options = {}) {
this._conn = connection; this._conn = connection;
this._browser = browser; this._browser = browser;
this._form = null; this._form = null;
@ -26,14 +34,14 @@ function BrowserTabActor(connection, browser, options = {}) {
this.options = options; this.options = options;
} }
BrowserTabActor.prototype = { FrameTargetActorProxy.prototype = {
async connect() { async connect() {
const onDestroy = () => { const onDestroy = () => {
if (this._deferredUpdate) { if (this._deferredUpdate) {
// Reject the update promise if the tab was destroyed while requesting an update // Reject the update promise if the tab was destroyed while requesting an update
this._deferredUpdate.reject({ this._deferredUpdate.reject({
error: "tabDestroyed", error: "tabDestroyed",
message: "Tab destroyed while performing a BrowserTabActor update" message: "Tab destroyed while performing a FrameTargetActorProxy update"
}); });
} }
this.exit(); this.exit();
@ -75,10 +83,10 @@ BrowserTabActor.prototype = {
/** /**
* @param {Object} options * @param {Object} options
* See BrowserTabActor constructor. * See FrameTargetActorProxy constructor.
*/ */
async update(options = {}) { async update(options = {}) {
// Update the BrowserTabActor options. // Update the FrameTargetActorProxy options.
this.options = options; this.options = options;
// If the child happens to be crashed/close/detach, it won't have _form set, // If the child happens to be crashed/close/detach, it won't have _form set,
@ -172,4 +180,4 @@ BrowserTabActor.prototype = {
}, },
}; };
exports.BrowserTabActor = BrowserTabActor; exports.FrameTargetActorProxy = FrameTargetActorProxy;

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

@ -6,5 +6,6 @@
DevToolsModules( DevToolsModules(
'browsing-context.js', 'browsing-context.js',
'frame-proxy.js',
'frame.js', 'frame.js',
) )

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

@ -12,7 +12,7 @@ var { DebuggerServer } = require("devtools/server/main");
var DevToolsUtils = require("devtools/shared/DevToolsUtils"); var DevToolsUtils = require("devtools/shared/DevToolsUtils");
loader.lazyRequireGetter(this, "RootActor", "devtools/server/actors/root", true); loader.lazyRequireGetter(this, "RootActor", "devtools/server/actors/root", true);
loader.lazyRequireGetter(this, "BrowserTabActor", "devtools/server/actors/browser-tab", true); loader.lazyRequireGetter(this, "FrameTargetActorProxy", "devtools/server/actors/targets/frame-proxy", true);
loader.lazyRequireGetter(this, "BrowserAddonActor", "devtools/server/actors/addon", true); loader.lazyRequireGetter(this, "BrowserAddonActor", "devtools/server/actors/addon", true);
loader.lazyRequireGetter(this, "WebExtensionParentActor", "devtools/server/actors/webextension-parent", true); loader.lazyRequireGetter(this, "WebExtensionParentActor", "devtools/server/actors/webextension-parent", true);
loader.lazyRequireGetter(this, "WorkerActorList", "devtools/server/actors/worker-list", true); loader.lazyRequireGetter(this, "WorkerActorList", "devtools/server/actors/worker-list", true);
@ -84,11 +84,11 @@ function createRootActor(connection) {
} }
/** /**
* A live list of BrowserTabActors representing the current browser tabs, * A live list of FrameTargetActorProxys representing the current browser tabs,
* to be provided to the root actor to answer 'listTabs' requests. * to be provided to the root actor to answer 'listTabs' requests.
* *
* This object also takes care of listening for TabClose events and * This object also takes care of listening for TabClose events and
* onCloseWindow notifications, and exiting the BrowserTabActors concerned. * onCloseWindow notifications, and exiting the target actors concerned.
* *
* (See the documentation for RootActor for the definition of the "live * (See the documentation for RootActor for the definition of the "live
* list" interface.) * list" interface.)
@ -230,9 +230,7 @@ BrowserTabList.prototype._getBrowsers = function* () {
// Iterate over all navigator:browser XUL windows. // Iterate over all navigator:browser XUL windows.
for (const win of allAppShellDOMWindows(DebuggerServer.chromeWindowType)) { for (const win of allAppShellDOMWindows(DebuggerServer.chromeWindowType)) {
// For each tab in this XUL window, ensure that we have an actor for // For each tab in this XUL window, ensure that we have an actor for
// it, reusing existing actors where possible. We actually iterate // it, reusing existing actors where possible.
// over 'browser' XUL elements, and BrowserTabActor uses
// browser.contentWindow as the debuggee global.
for (const browser of this._getChildren(win)) { for (const browser of this._getChildren(win)) {
yield browser; yield browser;
} }
@ -309,7 +307,7 @@ BrowserTabList.prototype.getList = function(browserActorOptions) {
}; };
/** /**
* @param browserActorOptions see options argument of BrowserTabActor constructor. * @param browserActorOptions see options argument of FrameTargetActorProxy constructor.
*/ */
BrowserTabList.prototype._getActorForBrowser = function(browser, browserActorOptions) { BrowserTabList.prototype._getActorForBrowser = function(browser, browserActorOptions) {
// Do we have an existing actor for this browser? If not, create one. // Do we have an existing actor for this browser? If not, create one.
@ -319,7 +317,7 @@ BrowserTabList.prototype._getActorForBrowser = function(browser, browserActorOpt
return actor.update(browserActorOptions); return actor.update(browserActorOptions);
} }
actor = new BrowserTabActor(this._connection, browser, browserActorOptions); actor = new FrameTargetActorProxy(this._connection, browser, browserActorOptions);
this._actorByBrowser.set(browser, actor); this._actorByBrowser.set(browser, actor);
this._checkListening(); this._checkListening();
return actor.connect(); return actor.connect();
@ -419,7 +417,7 @@ BrowserTabList.prototype._notifyListChanged = function() {
BrowserTabList.prototype._handleActorClose = function(actor, browser) { BrowserTabList.prototype._handleActorClose = function(actor, browser) {
if (this._testing) { if (this._testing) {
if (this._actorByBrowser.get(browser) !== actor) { if (this._actorByBrowser.get(browser) !== actor) {
throw new Error("BrowserTabActor not stored in map under given browser"); throw new Error("FrameTargetActorProxy not stored in map under given browser");
} }
if (actor.browser !== browser) { if (actor.browser !== browser) {
throw new Error("actor's browser and map key don't match"); throw new Error("actor's browser and map key don't match");

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

@ -131,7 +131,7 @@ add_task(async function() {
const { DebuggerServer } = require("devtools/server/main"); const { DebuggerServer } = require("devtools/server/main");
const EventEmitter = require("devtools/shared/event-emitter"); const EventEmitter = require("devtools/shared/event-emitter");
// !Hack! Retrieve a server side object, the BrowserTabActor instance // !Hack! Retrieve a server side object, the FrameTargetActor instance
const targetActor = DebuggerServer.searchAllConnectionsForActor(actorId); const targetActor = DebuggerServer.searchAllConnectionsForActor(actorId);
// In order to listen to internal will-navigate/navigate events // In order to listen to internal will-navigate/navigate events
EventEmitter.on(targetActor, "will-navigate", function(data) { EventEmitter.on(targetActor, "will-navigate", function(data) {