1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/devtools/webconsole/test/browser_webconsole_bug_642615_autocomplete.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,87 @@ 1.4 +/* vim:set ts=2 sw=2 sts=2 et: */ 1.5 +/* Any copyright is dedicated to the Public Domain. 1.6 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.7 + 1.8 +const TEST_URI = "data:text/html;charset=utf-8,<p>test for bug 642615"; 1.9 + 1.10 +XPCOMUtils.defineLazyServiceGetter(this, "clipboardHelper", 1.11 + "@mozilla.org/widget/clipboardhelper;1", 1.12 + "nsIClipboardHelper"); 1.13 + 1.14 +function consoleOpened(HUD) { 1.15 + let jsterm = HUD.jsterm; 1.16 + let stringToCopy = "foobazbarBug642615"; 1.17 + 1.18 + jsterm.clearOutput(); 1.19 + 1.20 + ok(!jsterm.completeNode.value, "no completeNode.value"); 1.21 + 1.22 + jsterm.setInputValue("doc"); 1.23 + 1.24 + let completionValue; 1.25 + 1.26 + // wait for key "u" 1.27 + function onCompletionValue() { 1.28 + completionValue = jsterm.completeNode.value; 1.29 + 1.30 + // Arguments: expected, setup, success, failure. 1.31 + waitForClipboard( 1.32 + stringToCopy, 1.33 + function() { 1.34 + clipboardHelper.copyString(stringToCopy, document); 1.35 + }, 1.36 + onClipboardCopy, 1.37 + finishTest); 1.38 + } 1.39 + 1.40 + function onClipboardCopy() { 1.41 + info("wait for completion update after clipboard paste"); 1.42 + jsterm.once("autocomplete-updated", onClipboardPaste); 1.43 + 1.44 + updateEditUIVisibility(); 1.45 + goDoCommand("cmd_paste"); 1.46 + } 1.47 + 1.48 + function onClipboardPaste() { 1.49 + ok(!jsterm.completeNode.value, "no completion value after paste"); 1.50 + 1.51 + info("wait for completion update after undo"); 1.52 + jsterm.once("autocomplete-updated", onCompletionValueAfterUndo); 1.53 + 1.54 + // Get out of the webconsole event loop. 1.55 + executeSoon(() => { 1.56 + goDoCommand("cmd_undo"); 1.57 + }); 1.58 + } 1.59 + 1.60 + function onCompletionValueAfterUndo() { 1.61 + is(jsterm.completeNode.value, completionValue, 1.62 + "same completeNode.value after undo"); 1.63 + 1.64 + info("wait for completion update after clipboard paste (ctrl-v)"); 1.65 + jsterm.once("autocomplete-updated", () => { 1.66 + ok(!jsterm.completeNode.value, "no completion value after paste (ctrl-v)"); 1.67 + 1.68 + // using executeSoon() to get out of the webconsole event loop. 1.69 + executeSoon(finishTest); 1.70 + }); 1.71 + 1.72 + // Get out of the webconsole event loop. 1.73 + executeSoon(() => { 1.74 + EventUtils.synthesizeKey("v", {accelKey: true}); 1.75 + }); 1.76 + } 1.77 + 1.78 + info("wait for completion value after typing 'docu'"); 1.79 + jsterm.once("autocomplete-updated", onCompletionValue); 1.80 + 1.81 + EventUtils.synthesizeKey("u", {}); 1.82 +} 1.83 + 1.84 +function test() { 1.85 + addTab(TEST_URI); 1.86 + browser.addEventListener("load", function onLoad() { 1.87 + browser.removeEventListener("load", onLoad, true); 1.88 + openConsole(null, consoleOpened); 1.89 + }, true); 1.90 +}