gecko-dev/browser/base/content/test/forms/head.js
Emilio Cobos Álvarez 7829e5aab5 Bug 1774378 - Make select code harder to mess up. r=Gijs
Right now we rely on the menulist to be injected by hand in all the
relevant windows. Instead create it lazily, making the select code more
standalone.

The DevTools window was missing it, for example.

Differential Revision: https://phabricator.services.mozilla.com/D149620
2022-06-21 21:42:58 +00:00

20 lines
761 B
JavaScript

function hideSelectPopup(mode = "enter", win = window) {
let browser = win.gBrowser.selectedBrowser;
let selectClosedPromise = SpecialPowers.spawn(browser, [], async function() {
let { SelectContentHelper } = ChromeUtils.import(
"resource://gre/actors/SelectChild.jsm"
);
return ContentTaskUtils.waitForCondition(() => !SelectContentHelper.open);
});
if (mode == "escape") {
EventUtils.synthesizeKey("KEY_Escape", {}, win);
} else if (mode == "enter") {
EventUtils.synthesizeKey("KEY_Enter", {}, win);
} else if (mode == "click") {
let popup = win.document.getElementById("ContentSelectDropdown").menupopup;
EventUtils.synthesizeMouseAtCenter(popup.lastElementChild, {}, win);
}
return selectClosedPromise;
}