mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-08 12:19:05 +02:00
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
20 lines
761 B
JavaScript
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;
|
|
}
|