summaryrefslogtreecommitdiffstats
path: root/devtools/client/projecteditor/test/browser_projecteditor_contextmenu_02.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/projecteditor/test/browser_projecteditor_contextmenu_02.js')
-rw-r--r--devtools/client/projecteditor/test/browser_projecteditor_contextmenu_02.js66
1 files changed, 66 insertions, 0 deletions
diff --git a/devtools/client/projecteditor/test/browser_projecteditor_contextmenu_02.js b/devtools/client/projecteditor/test/browser_projecteditor_contextmenu_02.js
new file mode 100644
index 000000000..cf43b3e21
--- /dev/null
+++ b/devtools/client/projecteditor/test/browser_projecteditor_contextmenu_02.js
@@ -0,0 +1,66 @@
+/* vim: set ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+loadHelperScript("helper_edits.js");
+
+// Test context menu enabled / disabled state in editor
+
+add_task(function* () {
+ let projecteditor = yield addProjectEditorTabForTempDirectory();
+ ok(projecteditor, "ProjectEditor has loaded");
+
+ let {textEditorContextMenuPopup} = projecteditor;
+
+ // Update menu items for a clean slate, so previous tests cannot
+ // affect paste, and possibly other side effects
+ projecteditor._updateMenuItems();
+
+ let cmdDelete = textEditorContextMenuPopup.querySelector("[command=cmd_delete]");
+ let cmdSelectAll = textEditorContextMenuPopup.querySelector("[command=cmd_selectAll]");
+ let cmdCut = textEditorContextMenuPopup.querySelector("[command=cmd_cut]");
+ let cmdCopy = textEditorContextMenuPopup.querySelector("[command=cmd_copy]");
+ let cmdPaste = textEditorContextMenuPopup.querySelector("[command=cmd_paste]");
+
+ info("Opening resource");
+ let resource = projecteditor.project.allResources()[2];
+ yield selectFile(projecteditor, resource);
+ let editor = projecteditor.currentEditor;
+ editor.editor.focus();
+
+ info("Opening context menu on resource");
+ yield openContextMenuForEditor(editor, textEditorContextMenuPopup);
+
+ is(cmdDelete.getAttribute("disabled"), "true", "cmdDelete is disabled");
+ is(cmdSelectAll.getAttribute("disabled"), "", "cmdSelectAll is enabled");
+ is(cmdCut.getAttribute("disabled"), "true", "cmdCut is disabled");
+ is(cmdCopy.getAttribute("disabled"), "true", "cmdCopy is disabled");
+ is(cmdPaste.getAttribute("disabled"), "", "cmdPaste is enabled");
+
+ info("Setting a selection and repening context menu on resource");
+ yield closeContextMenuForEditor(editor, textEditorContextMenuPopup);
+ editor.editor.setSelection({line: 0, ch: 0}, {line: 0, ch: 2});
+ yield openContextMenuForEditor(editor, textEditorContextMenuPopup);
+
+ is(cmdDelete.getAttribute("disabled"), "", "cmdDelete is enabled");
+ is(cmdSelectAll.getAttribute("disabled"), "", "cmdSelectAll is enabled");
+ is(cmdCut.getAttribute("disabled"), "", "cmdCut is enabled");
+ is(cmdCopy.getAttribute("disabled"), "", "cmdCopy is enabled");
+ is(cmdPaste.getAttribute("disabled"), "", "cmdPaste is enabled");
+});
+
+function* openContextMenuForEditor(editor, contextMenu) {
+ let editorDoc = editor.editor.container.contentDocument;
+ let shown = onPopupShow(contextMenu);
+ EventUtils.synthesizeMouse(editorDoc.body, 2, 2,
+ {type: "contextmenu", button: 2}, editorDoc.defaultView);
+ yield shown;
+}
+function* closeContextMenuForEditor(editor, contextMenu) {
+ let editorDoc = editor.editor.container.contentDocument;
+ let hidden = onPopupHidden(contextMenu);
+ contextMenu.hidePopup();
+ yield hidden;
+}