From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- .../test/browser_projecteditor_menubar_02.js | 123 +++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_menubar_02.js (limited to 'devtools/client/projecteditor/test/browser_projecteditor_menubar_02.js') diff --git a/devtools/client/projecteditor/test/browser_projecteditor_menubar_02.js b/devtools/client/projecteditor/test/browser_projecteditor_menubar_02.js new file mode 100644 index 000000000..d0d41f743 --- /dev/null +++ b/devtools/client/projecteditor/test/browser_projecteditor_menubar_02.js @@ -0,0 +1,123 @@ +/* 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 menu bar enabled / disabled state. + +add_task(function* () { + let projecteditor = yield addProjectEditorTabForTempDirectory(); + let menubar = projecteditor.menubar; + + // Update menu items for a clean slate, so previous tests cannot + // affect paste, and possibly other side effects + projecteditor._updateMenuItems(); + + // let projecteditor = yield addProjectEditorTabForTempDirectory(); + ok(projecteditor, "ProjectEditor has loaded"); + + let fileMenu = menubar.querySelector("#file-menu"); + let editMenu = menubar.querySelector("#edit-menu"); + ok(fileMenu, "The menu has loaded in the projecteditor document"); + ok(editMenu, "The menu has loaded in the projecteditor document"); + + let cmdNew = fileMenu.querySelector("[command=cmd-new]"); + let cmdSave = fileMenu.querySelector("[command=cmd-save]"); + let cmdSaveas = fileMenu.querySelector("[command=cmd-saveas]"); + + let cmdUndo = editMenu.querySelector("[command=cmd_undo]"); + let cmdRedo = editMenu.querySelector("[command=cmd_redo]"); + let cmdCut = editMenu.querySelector("[command=cmd_cut]"); + let cmdCopy = editMenu.querySelector("[command=cmd_copy]"); + let cmdPaste = editMenu.querySelector("[command=cmd_paste]"); + + info("Checking initial state of menus"); + yield openAndCloseMenu(fileMenu); + yield openAndCloseMenu(editMenu); + + is(cmdNew.getAttribute("disabled"), "", "File menu item is enabled"); + is(cmdSave.getAttribute("disabled"), "true", "File menu item is disabled"); + is(cmdSaveas.getAttribute("disabled"), "true", "File menu item is disabled"); + + is(cmdUndo.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdRedo.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdCut.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdCopy.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdPaste.getAttribute("disabled"), "true", "Edit menu item is disabled"); + + projecteditor.menuEnabled = false; + + info("Checking with menuEnabled = false"); + yield openAndCloseMenu(fileMenu); + yield openAndCloseMenu(editMenu); + + is(cmdNew.getAttribute("disabled"), "true", "File menu item is disabled"); + is(cmdSave.getAttribute("disabled"), "true", "File menu item is disabled"); + is(cmdSaveas.getAttribute("disabled"), "true", "File menu item is disabled"); + + is(cmdUndo.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdRedo.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdCut.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdCopy.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdPaste.getAttribute("disabled"), "true", "Edit menu item is disabled"); + + info("Checking with menuEnabled=true"); + projecteditor.menuEnabled = true; + + yield openAndCloseMenu(fileMenu); + yield openAndCloseMenu(editMenu); + + is(cmdNew.getAttribute("disabled"), "", "File menu item is enabled"); + is(cmdSave.getAttribute("disabled"), "true", "File menu item is disabled"); + is(cmdSaveas.getAttribute("disabled"), "true", "File menu item is disabled"); + + is(cmdUndo.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdRedo.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdCut.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdCopy.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdPaste.getAttribute("disabled"), "true", "Edit menu item is disabled"); + + info("Checking with resource selected"); + let resource = projecteditor.project.allResources()[2]; + yield selectFile(projecteditor, resource); + let editor = projecteditor.currentEditor; + + let onChange = promise.defer(); + + projecteditor.on("onEditorChange", () => { + info("onEditorChange has been detected"); + onChange.resolve(); + }); + editor.editor.focus(); + EventUtils.synthesizeKey("f", { }, projecteditor.window); + + yield onChange; + yield openAndCloseMenu(fileMenu); + yield openAndCloseMenu(editMenu); + + is(cmdNew.getAttribute("disabled"), "", "File menu item is enabled"); + is(cmdSave.getAttribute("disabled"), "", "File menu item is enabled"); + is(cmdSaveas.getAttribute("disabled"), "", "File menu item is enabled"); + + // Use editor.canUndo() to see if this is failing - the menu disabled property + // should be in sync with this because of isCommandEnabled in editor.js. + info('cmdUndo.getAttribute("disabled") is: "' + cmdUndo.getAttribute("disabled") + '"'); + ok(editor.editor.canUndo(), "Edit menu item is enabled"); + + is(cmdRedo.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdCut.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdCopy.getAttribute("disabled"), "true", "Edit menu item is disabled"); + is(cmdPaste.getAttribute("disabled"), "", "Edit menu item is enabled"); +}); + +function* openAndCloseMenu(menu) { + let shown = onPopupShow(menu); + EventUtils.synthesizeMouseAtCenter(menu, {}, menu.ownerDocument.defaultView); + yield shown; + let hidden = onPopupHidden(menu); + EventUtils.synthesizeMouseAtCenter(menu, {}, menu.ownerDocument.defaultView); + yield hidden; +} -- cgit v1.2.3