Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

"use strict";
const TEST_ENGINE_NAME = "Foo";
const TEST_ENGINE_BASENAME = "testEngine.xml";
let searchbar;
let searchIcon;
add_setup(async function () {
searchbar = await gCUITestUtils.addSearchBar();
registerCleanupFunction(() => {
gCUITestUtils.removeSearchBar();
});
searchIcon = searchbar.querySelector(".searchbar-search-button");
await SearchTestUtils.promiseNewSearchEngine({
url: getRootDirectory(gTestPath) + TEST_ENGINE_BASENAME,
});
});
add_task(async function telemetry() {
let searchPopup = document.getElementById("PopupSearchAutoComplete");
let oneOffInstance = searchPopup.oneOffButtons;
let oneOffButtons = oneOffInstance.buttons;
// Open the popup.
let shownPromise = promiseEvent(searchPopup, "popupshown");
let builtPromise = promiseEvent(oneOffInstance, "rebuild");
info("Opening search panel");
EventUtils.synthesizeMouseAtCenter(searchIcon, {});
await Promise.all([shownPromise, builtPromise]);
// Get the one-off button for the test engine.
let oneOffButton;
for (let node of oneOffButtons.children) {
if (node.engine && node.engine.name == TEST_ENGINE_NAME) {
oneOffButton = node;
break;
}
}
Assert.notEqual(
oneOffButton,
undefined,
"One-off for test engine should exist"
);
// Open the context menu on the one-off.
let contextMenu = oneOffInstance.querySelector(
".search-one-offs-context-menu"
);
let promise = BrowserTestUtils.waitForEvent(contextMenu, "popupshown");
EventUtils.synthesizeMouseAtCenter(oneOffButton, {
type: "contextmenu",
button: 2,
});
await promise;
// Click the Search in New Tab menu item.
let searchInNewTabMenuItem = contextMenu.querySelector(
".search-one-offs-context-open-in-new-tab"
);
promise = BrowserTestUtils.waitForNewTab(gBrowser);
contextMenu.activateItem(searchInNewTabMenuItem);
let tab = await promise;
// By default the search will open in the background and the popup will stay open:
promise = promiseEvent(searchPopup, "popuphidden");
info("Closing search panel");
EventUtils.synthesizeKey("KEY_Escape");
await promise;
// Check the loaded tab.
Assert.equal(
tab.linkedBrowser.currentURI.spec,
"Expected search tab should have loaded"
);
BrowserTestUtils.removeTab(tab);
// Move the cursor out of the panel area to avoid messing with other tests.
await EventUtils.promiseNativeMouseEvent({
type: "mousemove",
target: searchbar,
offsetX: 0,
offsetY: 0,
});
});