fune/browser/base/content/test/contextMenu/browser_utilityOverlay.js
Gijs Kruitbosch 3e5d710873 Bug 1817443 - move url loading method implementations from utilityOverlay.js into their own helper module, r=mossop
openLinkIn would really benefit from being split up a bit, and adding more
globals to the browser window is icky. Also, the story for opening new tabs if
you're not inside a window is a nightmare right now. Moving this code
to a module is a first step to making that story nicer.

I kept wrappers for all the functions I'm moving, and added the `window` as the
first argument. In the future we can update these functions to support being
called without a `window` ref. The one exception is getTopWin, where I updated
the callers in this patch.

I had to tweak the parameter detection of the different arguments supported by
openUILinkIn because forwarding calls means arguments.length is always larger
than 3... but then also removed it in the next commit.

Differential Revision: https://phabricator.services.mozilla.com/D170210
2023-02-23 17:02:43 +00:00

78 lines
2.6 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
add_task(async function test_eventMatchesKey() {
let eventMatchResult;
let key;
let checkEvent = function(e) {
e.stopPropagation();
e.preventDefault();
eventMatchResult = eventMatchesKey(e, key);
};
document.addEventListener("keypress", checkEvent);
try {
key = document.createXULElement("key");
let keyset = document.getElementById("mainKeyset");
key.setAttribute("key", "t");
key.setAttribute("modifiers", "accel");
keyset.appendChild(key);
EventUtils.synthesizeKey("t", { accelKey: true });
is(eventMatchResult, true, "eventMatchesKey: one modifier");
keyset.removeChild(key);
key = document.createXULElement("key");
key.setAttribute("key", "g");
key.setAttribute("modifiers", "accel,shift");
keyset.appendChild(key);
EventUtils.synthesizeKey("g", { accelKey: true, shiftKey: true });
is(eventMatchResult, true, "eventMatchesKey: combination modifiers");
keyset.removeChild(key);
key = document.createXULElement("key");
key.setAttribute("key", "w");
key.setAttribute("modifiers", "accel");
keyset.appendChild(key);
EventUtils.synthesizeKey("f", { accelKey: true });
is(eventMatchResult, false, "eventMatchesKey: mismatch keys");
keyset.removeChild(key);
key = document.createXULElement("key");
key.setAttribute("keycode", "VK_DELETE");
keyset.appendChild(key);
EventUtils.synthesizeKey("VK_DELETE", { accelKey: true });
is(eventMatchResult, false, "eventMatchesKey: mismatch modifiers");
keyset.removeChild(key);
} finally {
// Make sure to remove the event listener so future tests don't
// fail when they simulate key presses.
document.removeEventListener("keypress", checkEvent);
}
});
add_task(async function test_getTargetWindow() {
is(URILoadingHelper.getTargetWindow(window), window, "got top window");
});
add_task(async function test_openUILink() {
const kURL = "https://example.org/";
let tab = await BrowserTestUtils.openNewForegroundTab(
gBrowser,
"about:blank"
);
let loadPromise = BrowserTestUtils.browserLoaded(
tab.linkedBrowser,
false,
kURL
);
openUILink(kURL, null, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
}); // defaults to "current"
await loadPromise;
is(tab.linkedBrowser.currentURI.spec, kURL, "example.org loaded");
gBrowser.removeCurrentTab();
});