mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-01-06 16:44:12 +01:00
Fix tab number updates in FF36. Closes issue 300.
This commit is contained in:
@@ -1,140 +0,0 @@
|
||||
var elementslib = {}; Components.utils.import("resource://mozmill/modules/elementslib.js", elementslib);
|
||||
var jumlib = {}; Components.utils.import("resource://mozmill/modules/jum.js", jumlib);
|
||||
|
||||
/**
|
||||
* A controller for simulating Dactyl related user actions and for making
|
||||
* assertions about the expected outcomes of such actions.
|
||||
*
|
||||
* @param {MozMillController} controller The browser's MozMill controller.
|
||||
*/
|
||||
function Controller(controller) {
|
||||
this.controller = controller;
|
||||
this._dactyl = controller.window.dactyl.modules;
|
||||
}
|
||||
|
||||
Controller.prototype = {
|
||||
|
||||
/**
|
||||
* Asserts that the output message line text content matches *text*.
|
||||
*
|
||||
* @param {string|RegExp} text The expected text of the expected message line.
|
||||
* @param {string} message The message to display upon assertion failure.
|
||||
*/
|
||||
assertMessageLine: function (text, message) {
|
||||
let value = this.readMessageLine();
|
||||
jumlib.assertTrue(typeof text == "string" ? text == value : text.test(value), message);
|
||||
},
|
||||
|
||||
/**
|
||||
* Asserts that the output message window text content matches *text*.
|
||||
*
|
||||
* @param {string|RegExp} text The expected text of the message window.
|
||||
* @param {string} message The message to display upon assertion failure.
|
||||
*/
|
||||
assertMessageWindow: function (text, message) {
|
||||
let value = this.readMessageWindow();
|
||||
jumlib.assertTrue(typeof text == "string" ? text == value : text.test(value), message);
|
||||
},
|
||||
|
||||
/**
|
||||
* Asserts that an error message has been echoed to the message line or
|
||||
* appended to the message window with the given *text*.
|
||||
*
|
||||
* @param {string|RegExp} text The expected text of the error message.
|
||||
* @param {string} message The message to display upon assertion failure.
|
||||
*/
|
||||
// TODO: test against the tail of the MOW too.
|
||||
assertErrorMessage: function (text, message) {
|
||||
this.controller.sleep(0); // XXX
|
||||
let messageBox = new elementslib.ID(this.controller.window.document, "dactyl-message").getNode();
|
||||
jumlib.assertTrue(messageBox.value == text && /\bErrorMsg\b/.test(messageBox.getAttribute("highlight")), message);
|
||||
},
|
||||
|
||||
/**
|
||||
* Asserts that the current window selection matches *text*.
|
||||
*
|
||||
* @param {string|RegExp} text The expected text of the current selection.
|
||||
* @param {string} message The message to display upon assertion failure.
|
||||
*/
|
||||
assertSelection: function (text, message) {
|
||||
let selection = String(this.controller.window.content.getSelection());
|
||||
jumlib.assertTrue(typeof text == "string" ? text == selection : text.test(selection), message);
|
||||
},
|
||||
|
||||
/**
|
||||
* Runs a Vi command.
|
||||
*
|
||||
* @param {string|Array} keys Either a string of simple keys suitable for
|
||||
* {@link MozMillController#type} or an array of keysym - modifier
|
||||
* pairs suitable for {@link MozMillController#keypress}.
|
||||
*/
|
||||
runViCommand: function (keys) {
|
||||
if (typeof keys == "string")
|
||||
keys = [[k] for each (k in keys)];
|
||||
let self = this;
|
||||
keys.forEach(function ([key, modifiers]) { self.controller.keypress(null, key, modifiers || {}); });
|
||||
},
|
||||
|
||||
/**
|
||||
* Runs an Ex command.
|
||||
*
|
||||
* @param {string} cmd The Ex command string as entered on the command
|
||||
* line.
|
||||
*/
|
||||
runExCommand: function (cmd) {
|
||||
this.controller.keypress(null, ":", {});
|
||||
this.controller.type(null, cmd);
|
||||
this.controller.keypress(null, "VK_RETURN", {});
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the text content of the output message line.
|
||||
*
|
||||
* @returns {string} The message line text content.
|
||||
*/
|
||||
readMessageLine: function () {
|
||||
this.controller.sleep(0); // XXX
|
||||
return new elementslib.ID(this.controller.window.document, "dactyl-message").getNode().value;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the text content of the output message window.
|
||||
*
|
||||
* @returns {string} The message window text content.
|
||||
*/
|
||||
readMessageWindow: function () {
|
||||
let messageWindow = new elementslib.ID(this.controller.window.document, "dactyl-multiline-output").getNode();
|
||||
try {
|
||||
this.controller.waitForEval("subject.collapsed == false", 1000, 100, messageWindow.parentNode);
|
||||
return messageWindow.contentDocument.body.textContent;
|
||||
}
|
||||
catch (e) {
|
||||
return "";
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Opens the output message window by echoing a single newline character.
|
||||
*/
|
||||
openMessageWindow: function() {
|
||||
//this.runExCommand("echo '\\n'");
|
||||
this.runExCommand("echo " + "\n".quote());
|
||||
},
|
||||
|
||||
/**
|
||||
* Closes the output message window if open.
|
||||
*/
|
||||
closeMessageWindow: function() {
|
||||
if (!this._dactyl.commandline.widgets.mowContainer.collapsed) // XXX
|
||||
this.runViCommand([["VK_RETURN"]]);
|
||||
},
|
||||
|
||||
/**
|
||||
* @property {string} The specific Dactyl application. Eg. Pentadactyl
|
||||
*/
|
||||
get applicationName() this._dactyl.config.appName // XXX
|
||||
};
|
||||
|
||||
exports.Controller = Controller;
|
||||
|
||||
// vim: sw=4 ts=8 et:
|
||||
Reference in New Issue
Block a user