Bug 580001 - Close console after completion causes error - inputValue is undefined, r=gavin

This commit is contained in:
Julian Viereck 2010-08-09 16:02:20 -03:00
Родитель bc14bbd3fe
Коммит 82be36ee85
2 изменённых файлов: 34 добавлений и 1 удалений

Просмотреть файл

@ -25,6 +25,7 @@
* Rob Campbell <rcampbell@mozilla.com> * Rob Campbell <rcampbell@mozilla.com>
* Johnathan Nightingale <jnightingale@mozilla.com> * Johnathan Nightingale <jnightingale@mozilla.com>
* Patrick Walton <pcwalton@mozilla.com> * Patrick Walton <pcwalton@mozilla.com>
* Julian Viereck <jviereck@mozilla.com>
* *
* Alternatively, the contents of this file may be used under the terms of * Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or * either the GNU General Public License Version 2 or later (the "GPL"), or
@ -2810,6 +2811,10 @@ JSTerm.prototype = {
{ {
let inputNode = this.inputNode; let inputNode = this.inputNode;
let inputValue = inputNode.value; let inputValue = inputNode.value;
// If the inputNode has no value, then don't try to complete on it.
if (!inputValue) {
return;
}
let selStart = inputNode.selectionStart, selEnd = inputNode.selectionEnd; let selStart = inputNode.selectionStart, selEnd = inputNode.selectionEnd;
// 'Normalize' the selection so that end is always after start. // 'Normalize' the selection so that end is always after start.

Просмотреть файл

@ -21,6 +21,7 @@
* Contributor(s): * Contributor(s):
* David Dahl <ddahl@mozilla.com> * David Dahl <ddahl@mozilla.com>
* Patrick Walton <pcwalton@mozilla.com> * Patrick Walton <pcwalton@mozilla.com>
* Julian Viereck <jviereck@mozilla.com>
* *
* Alternatively, the contents of this file may be used under the terms of * Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or * either the GNU General Public License Version 2 or later (the "GPL"), or
@ -718,7 +719,7 @@ function testErrorOnPageReload() {
testLogEntry(outputNode, "fooBazBaz", testLogEntry(outputNode, "fooBazBaz",
{ success: successMsg, err: errMsg }); { success: successMsg, err: errMsg });
testEnd(); testWebConsoleClose();
}, false); }, false);
button.dispatchEvent(clickEvent); button.dispatchEvent(clickEvent);
@ -727,6 +728,33 @@ function testErrorOnPageReload() {
content.location.href = TEST_ERROR_URI; content.location.href = TEST_ERROR_URI;
} }
/**
* Unit test for bug 580001:
* 'Close console after completion causes error "inputValue is undefined"'
*/
function testWebConsoleClose() {
let display = HUDService.getDisplayByURISpec(content.location.href);
let input = display.querySelector(".jsterm-input-node");
let errorWhileClosing = false;
function errorListener(evt) {
errorWhileClosing = true;
}
window.addEventListener("error", errorListener, false);
// Focus the inputNode and perform the keycombo to close the WebConsole.
input.focus();
EventUtils.synthesizeKey("k", { accelKey: true, shiftKey: true });
// We can't test for errors right away, because the error occures after a
// setTimeout(..., 0) in the WebConsole code.
executeSoon(function() {
window.removeEventListener("error", errorListener, false);
is (errorWhileClosing, false, "no error while closing the WebConsole");
testEnd();
});
}
function testEnd() { function testEnd() {
// testUnregister(); // testUnregister();
executeSoon(function () { executeSoon(function () {