Mypal/dom/html/test/browser_content_contextmenu...

54 lines
2.0 KiB
JavaScript

"use strict";
const kPage = "http://example.org/browser/" +
"dom/html/test/file_content_contextmenu.html";
add_task(function* () {
yield SpecialPowers.pushPrefEnv({
set: [["dom.menuitem.enabled", true]],
});
yield BrowserTestUtils.withNewTab({
gBrowser,
url: kPage
}, function*(aBrowser) {
let contextMenu = document.getElementById("contentAreaContextMenu");
ok(contextMenu, "Got context menu");
info("Open context menu");
is(contextMenu.state, "closed", "Should not have opened context menu");
let popupShownPromise = promiseWaitForEvent(window, "popupshown");
EventUtils.synthesizeMouse(aBrowser, window.innerWidth / 3,
window.innerHeight / 3,
{type: "contextmenu", button: 2}, window);
yield popupShownPromise;
is(contextMenu.state, "open", "Should have opened context menu");
let pageMenuSep = document.getElementById("page-menu-separator");
ok(pageMenuSep && !pageMenuSep.hidden,
"Page menu separator should be shown");
let testMenuSep = pageMenuSep.previousSibling;
ok(testMenuSep && !testMenuSep.hidden,
"User-added menu separator should be shown");
let testMenuItem = testMenuSep.previousSibling;
is(testMenuItem.label, "Test Context Menu Click", "Got context menu item");
let promiseCtxMenuClick = ContentTask.spawn(aBrowser, null, function*() {
yield new Promise(resolve => {
let Ci = Components.interfaces;
let windowUtils = content.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindowUtils);
let menuitem = content.document.getElementById("menuitem");
menuitem.addEventListener("click", function() {
Assert.ok(windowUtils.isHandlingUserInput,
"Content menu click should be a user input");
resolve();
});
});
});
EventUtils.synthesizeMouseAtCenter(testMenuItem, {}, window);
yield promiseCtxMenuClick;
});
});