Bug 859372 - Refactor webbrowser.js;r=past

This commit is contained in:
Eddy Bruel 2014-05-13 21:56:30 +02:00
parent 437b5d5626
commit e46321bf42
6 changed files with 41 additions and 13 deletions

View File

@ -76,6 +76,9 @@ XPCOMUtils.defineLazyServiceGetter(Services, 'captivePortalDetector',
'nsICaptivePortalDetector');
#endif
let devtools = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools;
let { RootActor } = devtools.require("devtools/server/actors/root");
function getContentWindow() {
return shell.contentBrowser.contentWindow;
}
@ -968,7 +971,7 @@ let RemoteDebugger = {
deviceActor: DebuggerServer.globalActorFactories.deviceActor,
} : DebuggerServer.globalActorFactories
};
let root = new DebuggerServer.RootActor(connection, parameters);
let root = new RootActor(connection, parameters);
root.applicationType = "operating-system";
return root;
};

View File

@ -5,6 +5,9 @@
* Make sure the root actor's live tab list implementation works as specified.
*/
let devtools = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools;
let { BrowserTabList } = devtools.require("devtools/server/actors/webbrowser");
let gTestPage = "data:text/html;charset=utf-8," + encodeURIComponent(
"<title>JS Debugger BrowserTabList test page</title><body>Yo.</body>");
@ -26,7 +29,7 @@ function test() {
DebuggerServer.addBrowserActors();
}
gTabList = new DebuggerServer.BrowserTabList("fake DebuggerServerConnection");
gTabList = new BrowserTabList("fake DebuggerServerConnection");
gTabList._testing = true;
gTabList.onListChanged = onListChangedHandler;

View File

@ -4,6 +4,8 @@
"use strict";
let { TabActor } = require("devtools/server/actors/webbrowser");
/**
* Tab actor for documents living in a child process.
*

View File

@ -9,12 +9,11 @@ let Cc = Components.classes;
let Ci = Components.interfaces;
let CC = Components.Constructor;
Cu.import("resource://gre/modules/osfile.jsm");
Cu.import("resource://gre/modules/NetUtil.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/osfile.jsm");
let {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
let promise;
let {Promise: promise} = Cu.import("resource://gre/modules/Promise.jsm", {});
function debug(aMsg) {
/*

View File

@ -8,10 +8,12 @@
let { Ci, Cu } = require("chrome");
let Services = require("Services");
let { createExtraActors, appendExtraActors } = require("devtools/server/actors/common");
let { ActorPool, createExtraActors, appendExtraActors } = require("devtools/server/actors/common");
let { RootActor } = require("devtools/server/actors/root");
let { AddonThreadActor, ThreadActor } = require("devtools/server/actors/script");
let { DebuggerServer } = require("devtools/server/main");
let DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
let { dbg_assert, dumpn } = DevToolsUtils;
let {Promise: promise} = Cu.import("resource://gre/modules/Promise.jsm", {});
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
@ -22,7 +24,7 @@ XPCOMUtils.defineLazyModuleGetter(this, "AddonManager", "resource://gre/modules/
// events needs to be dispatched synchronously,
// by calling the listeners in the order or registration.
XPCOMUtils.defineLazyGetter(this, "events", () => {
return devtools.require("sdk/event/core");
return require("sdk/event/core");
});
// Also depends on following symbols, shared by common scope with main.js:
@ -490,6 +492,8 @@ BrowserTabList.prototype.onCloseWindow = DevToolsUtils.makeInfallible(function(a
}, "BrowserTabList.prototype.onCloseWindow's delayed body"), 0);
}, "BrowserTabList.prototype.onCloseWindow");
exports.BrowserTabList = BrowserTabList;
/**
* Creates a tab actor for handling requests to a browser tab, like
* attaching and detaching. TabActor respects the actor factories
@ -1075,6 +1079,8 @@ TabActor.prototype.requestTypes = {
"reconfigure": TabActor.prototype.onReconfigure
};
exports.TabActor = TabActor;
/**
* Creates a tab actor for handling requests to a single in-process
* <browser> tab. Most of the implementation comes from TabActor.
@ -1454,3 +1460,11 @@ DebuggerProgressListener.prototype = {
}
}, "DebuggerProgressListener.prototype.onStateChange")
};
exports.register = function(handle) {
handle.setRootActor(createRootActor);
};
exports.unregister = function(handle) {
handle.setRootActor(null);
};

View File

@ -46,9 +46,7 @@ Object.defineProperty(this, "Components", {
const DBG_STRINGS_URI = "chrome://global/locale/devtools/debugger.properties";
const nsFile = CC("@mozilla.org/file/local;1", "nsIFile", "initWithPath");
Cu.import("resource://gre/modules/reflect.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/NetUtil.jsm");
dumpn.wantLogging = Services.prefs.getBoolPref("devtools.debugger.log");
Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js");
@ -108,6 +106,11 @@ function ModuleAPI() {
let activeGlobalActors = new Set();
return {
// See DebuggerServer.setRootActor for a description.
setRootActor: function(factory) {
DebuggerServer.setRootActor(factory);
},
// See DebuggerServer.addGlobalActor for a description.
addGlobalActor: function(factory, name) {
DebuggerServer.addGlobalActor(factory, name);
@ -341,7 +344,7 @@ var DebuggerServer = {
*/
addBrowserActors: function(aWindowType = "navigator:browser", restrictPrivileges = false) {
this.chromeWindowType = aWindowType;
this.addActors("resource://gre/modules/devtools/server/actors/webbrowser.js");
this.registerModule("devtools/server/actors/webbrowser");
if (!restrictPrivileges) {
this.addTabActors();
@ -365,8 +368,8 @@ var DebuggerServer = {
this.addTabActors();
}
// But webbrowser.js and childtab.js aren't loaded from shell.js.
if (!("BrowserTabActor" in this)) {
this.addActors("resource://gre/modules/devtools/server/actors/webbrowser.js");
if (!this.isModuleRegistered("devtools/server/actors/webbrowser")) {
this.registerModule("devtools/server/actors/webbrowser");
}
if (!("ContentActor" in this)) {
this.addActors("resource://gre/modules/devtools/server/actors/childtab.js");
@ -727,6 +730,10 @@ var DebuggerServer = {
// DebuggerServer extension API.
setRootActor: function DS_setRootActor(aFunction) {
this.createRootActor = aFunction;
},
/**
* Registers handlers for new tab-scoped request types defined dynamically.
* This is used for example by add-ons to augment the functionality of the tab