1
0
Fork 0
firefox/devtools/client/shared/test/browser_autocomplete_popup_consecutive-show.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

57 lines
1.7 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
// Test that calling `showPopup` multiple time does not lead to invalid state.
add_task(async function () {
const AutocompletePopup = require("resource://devtools/client/shared/autocomplete-popup.js");
info("Create an autocompletion popup");
const { doc } = await createHost();
const input = doc.createElement("input");
doc.body.appendChild(input);
const autocompleteOptions = {
position: "top",
autoSelect: true,
useXulWrapper: true,
};
const popup = new AutocompletePopup(doc, autocompleteOptions);
const items = [{ label: "a" }, { label: "b" }, { label: "c" }];
popup.setItems(items);
input.focus();
let onAllEventsReceived = waitForNEvents(popup, "popup-opened", 3);
// Note that the lack of `await` on those function calls are wanted.
popup.openPopup(input, 0, 0, 0);
popup.openPopup(input, 0, 0, 1);
popup.openPopup(input, 0, 0, 2);
await onAllEventsReceived;
ok(popup.isOpen, "popup is open");
is(
popup.selectedIndex,
2,
"Selected index matches the one that was set last when calling openPopup"
);
onAllEventsReceived = waitForNEvents(popup, "popup-opened", 2);
// Note that the lack of `await` on those function calls are wanted.
popup.openPopup(input, 0, 0, 1);
popup.openPopup(input);
await onAllEventsReceived;
ok(popup.isOpen, "popup is open");
is(
popup.selectedIndex,
0,
"First item is selected, as last call to openPopup did not specify an index and autoSelect is true"
);
const onPopupClose = popup.once("popup-closed");
popup.hidePopup();
await onPopupClose;
});