Bug 1454441 - 2. Move remote debugger usage to GeckoViewStartup; r?esawin
Move GeckoViewRemoteDebugger.jsm usage from geckoview.js to
GeckoViewStartup.js.
MozReview-Commit-ID: 92qNB3vMH0a
--- a/mobile/android/chrome/geckoview/geckoview.js
+++ b/mobile/android/chrome/geckoview/geckoview.js
@@ -70,18 +70,16 @@ function startup() {
ModuleManager.add("resource://gre/modules/GeckoViewContent.jsm",
"GeckoViewContent");
ModuleManager.add("resource://gre/modules/GeckoViewProgress.jsm",
"GeckoViewProgress");
ModuleManager.add("resource://gre/modules/GeckoViewScroll.jsm",
"GeckoViewScroll");
ModuleManager.add("resource://gre/modules/GeckoViewTab.jsm",
"GeckoViewTab");
- ModuleManager.add("resource://gre/modules/GeckoViewRemoteDebugger.jsm",
- "GeckoViewRemoteDebugger");
ModuleManager.add("resource://gre/modules/GeckoViewTrackingProtection.jsm",
"GeckoViewTrackingProtection");
ModuleManager.add("resource://gre/modules/GeckoViewSelectionAction.jsm",
"GeckoViewSelectionAction");
ModuleManager.add("resource://gre/modules/GeckoViewAccessibility.jsm",
"GeckoViewAccessibility");
window.document.documentElement.appendChild(browser);
--- a/mobile/android/components/geckoview/GeckoViewStartup.js
+++ b/mobile/android/components/geckoview/GeckoViewStartup.js
@@ -66,16 +66,28 @@ GeckoViewStartup.prototype = {
init: cpsp => cpsp.alwaysInit(),
ppmm: [
"ContentPrefs:FunctionCall",
"ContentPrefs:AddObserverForName",
"ContentPrefs:RemoveObserverForName",
],
});
+ GeckoViewUtils.addLazyGetter(this, "GeckoViewRemoteDebugger", {
+ module: "resource://gre/modules/GeckoViewRemoteDebugger.jsm",
+ init: gvrd => gvrd.onInit(),
+ });
+
+ GeckoViewUtils.addLazyPrefObserver({
+ name: "devtools.debugger.remote-enabled",
+ default: false,
+ }, {
+ handler: _ => this.GeckoViewRemoteDebugger,
+ });
+
// This initializes Telemetry for GeckoView only in the parent process.
// The Telemetry initialization for the content process is performed in
// ContentProcessSingleton.js for consistency with Desktop Telemetry.
GeckoViewTelemetryController.setup();
break;
}
}
},
--- a/mobile/android/modules/geckoview/GeckoViewRemoteDebugger.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewRemoteDebugger.jsm
@@ -1,73 +1,88 @@
/* 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 = ["GeckoViewRemoteDebugger"];
-ChromeUtils.import("resource://gre/modules/GeckoViewModule.jsm");
-ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
+ChromeUtils.import("resource://gre/modules/GeckoViewUtils.jsm");
+
+XPCOMUtils.defineLazyModuleGetters(this, {
+ Services: "resource://gre/modules/Services.jsm",
+});
XPCOMUtils.defineLazyGetter(this, "DebuggerServer", () => {
const { require } = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {});
const { DebuggerServer } = require("devtools/server/main");
return DebuggerServer;
});
-class GeckoViewRemoteDebugger extends GeckoViewModule {
+GeckoViewUtils.initLogging("GeckoView.RemoteDebugger", this);
+
+var GeckoViewRemoteDebugger = {
+ observe(aSubject, aTopic, aData) {
+ if (aTopic !== "nsPref:changed") {
+ return;
+ }
+
+ if (Services.prefs.getBoolPref(aData, false)) {
+ this.onEnable();
+ } else {
+ this.onDisable();
+ }
+ },
+
onInit() {
+ debug `onInit`;
this._isEnabled = false;
this._usbDebugger = new USBRemoteDebugger();
- }
-
- onSettingsUpdate() {
- let enabled = this.settings.useRemoteDebugger;
-
- if (enabled && !this._isEnabled) {
- this.onEnable();
- } else if (!enabled && this._isEnabled) {
- this.onDisable();
- }
- }
+ },
onEnable() {
+ if (this._isEnabled) {
+ return;
+ }
+
+ debug `onEnable`;
DebuggerServer.init();
DebuggerServer.registerAllActors();
DebuggerServer.registerModule("resource://gre/modules/dbg-browser-actors.js");
DebuggerServer.allowChromeProcess = true;
DebuggerServer.chromeWindowType = "navigator:geckoview";
- let windowId = this.window.QueryInterface(Ci.nsIInterfaceRequestor)
- .getInterface(Ci.nsIDOMWindowUtils)
- .outerWindowID;
- let env = Cc["@mozilla.org/process/environment;1"]
+ const env = Cc["@mozilla.org/process/environment;1"]
.getService(Ci.nsIEnvironment);
- let dataDir = env.get("MOZ_ANDROID_DATA_DIR");
+ const dataDir = env.get("MOZ_ANDROID_DATA_DIR");
if (!dataDir) {
warn `Missing env MOZ_ANDROID_DATA_DIR - aborting debugger server start`;
return;
}
this._isEnabled = true;
this._usbDebugger.stop();
- let portOrPath = dataDir + "/firefox-debugger-socket-" + windowId;
+ const portOrPath = dataDir + "/firefox-debugger-socket";
this._usbDebugger.start(portOrPath);
- }
+ },
onDisable() {
+ if (!this._isEnabled) {
+ return;
+ }
+
+ debug `onDisable`;
this._isEnabled = false;
this._usbDebugger.stop();
- }
-}
+ },
+};
class USBRemoteDebugger {
start(aPortOrPath) {
try {
let AuthenticatorType = DebuggerServer.Authenticators.get("PROMPT");
let authenticator = new AuthenticatorType.Server();
authenticator.allowConnection = this.allowConnection.bind(this);
this._listener = DebuggerServer.createListener();