Source code

Revision control

Copy as Markdown

Other Tools

/* Any copyright is dedicated to the Public Domain.
"use strict";
// Testing that searching for combining selectors using the inspector search
// field produces correct suggestions.
const TEST_URL = URL_ROOT + "doc_inspector_search-suggestions.html";
// See head.js `checkMarkupSearchSuggestions` function
const TEST_DATA = [
{
key: "d",
value: "d",
suggestions: ["div", "#d1", "#d2"],
},
{
key: "i",
value: "di",
suggestions: ["div"],
},
{
key: "v",
value: "div",
suggestions: [],
},
{
key: " ",
value: "div ",
suggestions: ["div div", "div span"],
},
{
key: ">",
value: "div >",
suggestions: ["div >div", "div >span"],
},
{
key: "VK_BACK_SPACE",
value: "div ",
suggestions: ["div div", "div span"],
},
{
key: "+",
value: "div +",
suggestions: ["div +span"],
},
{
key: "VK_BACK_SPACE",
value: "div ",
suggestions: ["div div", "div span"],
},
{
key: "VK_BACK_SPACE",
value: "div",
suggestions: [],
},
{
key: "VK_BACK_SPACE",
value: "di",
suggestions: ["div"],
},
{
key: "VK_BACK_SPACE",
value: "d",
suggestions: ["div", "#d1", "#d2"],
},
{
key: "VK_BACK_SPACE",
value: "",
suggestions: [],
},
{
key: "p",
value: "p",
suggestions: ["p", "#p1", "#p2", "#p3"],
},
{
key: " ",
value: "p ",
suggestions: ["p strong"],
},
{
key: "+",
value: "p +",
suggestions: ["p +button", "p +footer", "p +p"],
},
{
key: "b",
value: "p +b",
suggestions: ["p +button"],
},
{
key: "u",
value: "p +bu",
suggestions: ["p +button"],
},
{
key: "t",
value: "p +but",
suggestions: ["p +button"],
},
{
key: "t",
value: "p +butt",
suggestions: ["p +button"],
},
{
key: "o",
value: "p +butto",
suggestions: ["p +button"],
},
{
key: "n",
value: "p +button",
suggestions: [],
},
{
key: "+",
value: "p +button+",
suggestions: ["p +button+p"],
},
{
key: "VK_BACK_SPACE",
value: "p +button",
suggestions: [],
},
{
key: "~",
value: "p +button~",
suggestions: ["p +button~footer", "p +button~p"],
},
{
key: "f",
value: "p +button~f",
suggestions: ["p +button~footer"],
},
];
add_task(async function () {
const { inspector } = await openInspectorForURL(TEST_URL);
await checkMarkupSearchSuggestions(inspector, TEST_DATA);
});
add_task(async function testEscape() {
const { inspector } = await openInspectorForURL(TEST_URL);
// Get in a state where the suggestions popup is displayed
await checkMarkupSearchSuggestions(inspector, [
{ key: "d", value: "d", suggestions: ["div", "#d1", "#d2"] },
]);
const searchBox = inspector.searchBox;
const popup = inspector.searchSuggestions.searchPopup;
ok(popup.isOpen, `The suggestions popup is open`);
is(searchBox.value, "d", "search input has expected value");
info("Check that Esc closes the suggestions popup");
const onPopupClose = popup.once("popup-closed");
EventUtils.synthesizeKey("VK_ESCAPE", {}, inspector.panelWin);
await onPopupClose;
ok(!popup.isOpen, `The suggestions popup is closed`);
is(searchBox.value, "d", "The search input value didn't changed");
info("Check that Esc clears the input when the popup isn't opened");
EventUtils.synthesizeKey("VK_ESCAPE", {}, inspector.panelWin);
is(searchBox.value, "", "The search input was cleared");
});