author | Eddy Bruel <ejpbruel@mozilla.com |
Thu, 17 Apr 2014 20:45:32 +0200 | |
changeset 179069 | df9d828e36fcda28917d48f4a6690ea6aefaf420 |
parent 179068 | 5a1b6dfdff18ddebda0ca3674496be97c764e726 |
child 179070 | 42ebc55c708b22271abc9091fcca47f7679b130b |
push id | 26606 |
push user | ryanvm@gmail.com |
push date | Fri, 18 Apr 2014 02:20:00 +0000 |
treeherder | mozilla-central@ec728bfdbb79 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | past |
bugs | 859372 |
milestone | 31.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
toolkit/devtools/Loader.jsm | file | annotate | diff | comparison | revisions | |
toolkit/devtools/server/main.js | file | annotate | diff | comparison | revisions |
--- a/toolkit/devtools/Loader.jsm +++ b/toolkit/devtools/Loader.jsm @@ -3,17 +3,28 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; /** * Manages the addon-sdk loader instance used to load the developer tools. */ -let { classes: Cc, interfaces: Ci, utils: Cu } = Components; +let { Constructor: CC, classes: Cc, interfaces: Ci, utils: Cu } = Components; + +// addDebuggerToGlobal only allows adding the Debugger object to a global. The +// this object is not guaranteed to be a global (in particular on B2G, due to +// compartment sharing), so add the Debugger object to a sandbox instead. +let sandbox = Cu.Sandbox(CC('@mozilla.org/systemprincipal;1', 'nsIPrincipal')()); +Cu.evalInSandbox( + "Components.utils.import('resource://gre/modules/jsdebugger.jsm');" + + "addDebuggerToGlobal(this);", + sandbox +); +let Debugger = sandbox.Debugger; Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/Services.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "NetUtil", "resource://gre/modules/NetUtil.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "FileUtils", "resource://gre/modules/FileUtils.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "console", "resource://gre/modules/devtools/Console.jsm"); @@ -46,16 +57,17 @@ let loaderGlobals = { }; // Used when the tools should be loaded from the Firefox package itself (the default) function BuiltinProvider() {} BuiltinProvider.prototype = { load: function() { this.loader = new loader.Loader({ modules: { + "Debugger": Debugger, "Services": Object.create(Services), "toolkit/loader": loader, "source-map": SourceMap, }, paths: { // When you add a line to this mapping, don't forget to make a // corresponding addition to the SrcdirProvider mapping below as well. "": "resource://gre/modules/commonjs/", @@ -123,16 +135,17 @@ SrcdirProvider.prototype = { let prettyFastURI = this.fileURI(OS.Path.join(toolkitDir), "pretty-fast.js"); let asyncUtilsURI = this.fileURI(OS.Path.join(toolkitDir), "async-utils.js"); let contentObserverURI = this.fileURI(OS.Path.join(toolkitDir), "content-observer.js"); let gcliURI = this.fileURI(OS.Path.join(toolkitDir, "gcli", "source", "lib", "gcli")); let acornURI = this.fileURI(OS.Path.join(toolkitDir, "acorn")); let acornWalkURI = OS.Path.join(acornURI, "walk.js"); this.loader = new loader.Loader({ modules: { + "Debugger": Debugger, "Services": Object.create(Services), "toolkit/loader": loader, "source-map": SourceMap, }, paths: { "": "resource://gre/modules/commonjs/", "main": mainURI, "devtools": devtoolsURI,
--- a/toolkit/devtools/server/main.js +++ b/toolkit/devtools/server/main.js @@ -4,50 +4,52 @@ * 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"; /** * Toolkit glue for the remote debugging protocol, loaded into the * debugging global. */ +let { Ci, Cc, CC, Cu, Cr } = require("chrome"); +let Debugger = require("Debugger"); +let Services = require("Services"); let DevToolsUtils = require("devtools/toolkit/DevToolsUtils.js"); let Services = require("Services"); let EventEmitter = require("devtools/toolkit/event-emitter"); // Until all Debugger server code is converted to SDK modules, // imports Components.* alias from chrome module. var { Ci, Cc, CC, Cu, Cr } = require("chrome"); // On B2G, `this` != Global scope, so `Ci` won't be binded on `this` // (i.e. this.Ci is undefined) Then later, when using loadSubScript, // Ci,... won't be defined for sub scripts. this.Ci = Ci; this.Cc = Cc; this.CC = CC; this.Cu = Cu; this.Cr = Cr; +this.Debugger = Debugger; +this.Services = Services; this.DevToolsUtils = DevToolsUtils; -this.Services = Services; // Overload `Components` to prevent SDK loader exception on Components // object usage Object.defineProperty(this, "Components", { get: function () require("chrome").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"); let wantLogging = Services.prefs.getBoolPref("devtools.debugger.log"); Cu.import("resource://gre/modules/commonjs/sdk/core/promise.js"); -Cu.import("resource://gre/modules/jsdebugger.jsm"); -addDebuggerToGlobal(this); function loadSubScript(aURL) { try { let loader = Cc["@mozilla.org/moz/jssubscript-loader;1"] .getService(Ci.mozIJSSubScriptLoader); loader.loadSubScript(aURL, this); } catch(e) {