diff options
Diffstat (limited to 'devtools/client/projecteditor/test/browser_projecteditor_contextmenu_02.js')
-rw-r--r-- | devtools/client/projecteditor/test/browser_projecteditor_contextmenu_02.js | 66 |
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; +} |