Bug 1456050 - Add marionette.contentListener to MarionettePrefs. r?whimboo
MozReview-Commit-ID: 1SPrw4Vwd3N
--- a/testing/marionette/driver.js
+++ b/testing/marionette/driver.js
@@ -1,17 +1,16 @@
/* 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";
/* global XPCNativeWrapper */
ChromeUtils.import("resource://gre/modules/Log.jsm");
-ChromeUtils.import("resource://gre/modules/Preferences.jsm");
ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
ChromeUtils.import("chrome://marionette/content/accessibility.js");
ChromeUtils.import("chrome://marionette/content/addon.js");
ChromeUtils.import("chrome://marionette/content/assert.js");
ChromeUtils.import("chrome://marionette/content/atom.js");
const {
@@ -59,18 +58,16 @@ Cu.importGlobalProperties(["URL"]);
this.EXPORTED_SYMBOLS = ["GeckoDriver"];
const APP_ID_FIREFOX = "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}";
const FRAME_SCRIPT = "chrome://marionette/content/listener.js";
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
-const CONTENT_LISTENER_PREF = "marionette.contentListener";
-
const SUPPORTED_STRATEGIES = new Set([
element.Strategy.ClassName,
element.Strategy.Selector,
element.Strategy.ID,
element.Strategy.TagName,
element.Strategy.XPath,
element.Strategy.Anon,
element.Strategy.AnonAttribute,
@@ -469,22 +466,22 @@ GeckoDriver.prototype.whenBrowserStarted
for (let i = 0; i < mm.childCount; i++) {
if (mm.getChildAt(i).childCount !== 0) {
this.curBrowser.frameRegsPending += 1;
}
}
}
}
- if (!Preferences.get(CONTENT_LISTENER_PREF) || !isNewSession) {
+ if (!MarionettePrefs.contentListener || !isNewSession) {
// load listener into the remote frame
// and any applicable new frames
// opened after this call
mm.loadFrameScript(FRAME_SCRIPT, true);
- Preferences.set(CONTENT_LISTENER_PREF, true);
+ MarionettePrefs.contentListener = true;
}
} else {
logger.error("Unable to load content frame script");
}
};
/**
* Recursively get all labeled text.
@@ -735,17 +732,17 @@ GeckoDriver.prototype.newSession = async
} else {
if (MarionettePrefs.clickToStart) {
Services.prompt.alert(win, "", "Click to start execution of marionette tests");
}
this.startBrowser(win, true);
}
};
- if (!Preferences.get(CONTENT_LISTENER_PREF)) {
+ if (!MarionettePrefs.contentListener) {
waitForWindow.call(this);
} else if (this.appId != APP_ID_FIREFOX && this.curBrowser === null) {
// if there is a content listener, then we just wake it up
let win = this.getCurrentWindow();
this.addBrowser(win);
this.whenBrowserStarted(win, false);
} else {
throw new WebDriverError("Session already running");
@@ -2774,17 +2771,17 @@ GeckoDriver.prototype.closeChromeWindow
await this.curBrowser.closeWindow();
return this.chromeWindowHandles.map(String);
};
/** Delete Marionette session. */
GeckoDriver.prototype.deleteSession = function() {
if (this.curBrowser !== null) {
// frame scripts can be safely reused
- Preferences.set(CONTENT_LISTENER_PREF, false);
+ MarionettePrefs.contentListener = false;
globalMessageManager.broadcastAsyncMessage("Marionette:Session:Delete");
globalMessageManager.broadcastAsyncMessage("Marionette:Deregister");
for (let win of this.windows) {
if (win.messageManager) {
win.messageManager.removeDelayedFrameScript(FRAME_SCRIPT);
} else {
--- a/testing/marionette/prefs.js
+++ b/testing/marionette/prefs.js
@@ -161,16 +161,30 @@ class MarionetteBranch extends Branch {
*
* @return {boolean}
*/
get clickToStart() {
return this.get("debugging.clicktostart", false);
}
/**
+ * Whether content scripts can be safely reused.
+ *
+ * @deprecated
+ * @return {boolean}
+ */
+ get contentListener() {
+ return this.get("contentListener", false);
+ }
+
+ set contentListener(value) {
+ this.set("contentListener", value);
+ }
+
+ /**
* The `marionette.port` preference, detailing which port
* the TCP server should listen on.
*
* @return {number}
*/
get port() {
return this.get("port", 2828);
}
--- a/testing/marionette/server.js
+++ b/testing/marionette/server.js
@@ -22,30 +22,30 @@ const {
error,
UnknownCommandError,
} = ChromeUtils.import("chrome://marionette/content/error.js", {});
const {
Command,
Message,
Response,
} = ChromeUtils.import("chrome://marionette/content/message.js", {});
+const {MarionettePrefs} = ChromeUtils.import("chrome://marionette/content/prefs.js", {});
const {DebuggerTransport} = ChromeUtils.import("chrome://marionette/content/transport.js", {});
const logger = Log.repository.getLogger("Marionette");
const {KeepWhenOffline, LoopbackOnly} = Ci.nsIServerSocket;
this.EXPORTED_SYMBOLS = ["server"];
/** @namespace */
this.server = {};
const PROTOCOL_VERSION = 3;
-const PREF_CONTENT_LISTENER = "marionette.contentListener";
const PREF_PORT = "marionette.port";
/**
* Bootstraps Marionette and handles incoming client connections.
*
* Starting the Marionette server will open a TCP socket sporting the
* debugger transport interface on the provided <var>port</var>.
* For every new connection, a {@link server.TCPConnection} is created.
@@ -67,17 +67,17 @@ server.TCPListener = class {
* Function produces a GeckoDriver.
*
* Determines the application to initialise the driver with.
*
* @return {GeckoDriver}
* A driver instance.
*/
driverFactory() {
- Preferences.set(PREF_CONTENT_LISTENER, false);
+ MarionettePrefs.contentListener = false;
return new GeckoDriver(Services.appinfo.ID, this);
}
set acceptConnections(value) {
if (value) {
if (!this.socket) {
try {
const flags = KeepWhenOffline | LoopbackOnly;
--- a/testing/marionette/test/unit/test_prefs.js
+++ b/testing/marionette/test/unit/test_prefs.js
@@ -99,28 +99,32 @@ add_test(function test_EnvironmentPrefs_
}
run_next_test();
});
add_test(function test_MarionettePrefs_getters() {
equal(false, MarionettePrefs.enabled);
equal(false, MarionettePrefs.clickToStart);
+ equal(false, MarionettePrefs.contentListener);
equal(2828, MarionettePrefs.port);
equal(Log.Level.Info, MarionettePrefs.logLevel);
equal(true, MarionettePrefs.recommendedPrefs);
run_next_test();
});
add_test(function test_MarionettePrefs_setters() {
try {
MarionettePrefs.enabled = true;
+ MarionettePrefs.contentListener = true;
MarionettePrefs.port = 777;
equal(true, MarionettePrefs.enabled);
+ equal(true, MarionettePrefs.contentListener);
equal(777, MarionettePrefs.port);
} finally {
Services.prefs.clearUserPref("marionette.enabled");
+ Services.prefs.clearUserPref("marionette.contentListener");
Services.prefs.clearUserPref("marionette.port");
}
run_next_test();
});