Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
/**
* QuickActions tests that touch screenshot functionality.
*/
"use strict";
requestLongerTimeout(3);
const DUMMY_PAGE =
async function isScreenshotInitialized() {
return SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => {
let screenshotsChild = content.windowGlobalChild.getActor(
"ScreenshotsComponent"
);
return screenshotsChild?.overlay?.initialized;
});
}
async function clickQuickActionOneoffButton() {
const oneOffButton = await TestUtils.waitForCondition(() =>
window.document.getElementById("urlbar-engine-one-off-item-actions")
);
Assert.ok(oneOffButton, "One off button is available when preffed on");
EventUtils.synthesizeMouseAtCenter(oneOffButton, {}, window);
await UrlbarTestUtils.assertSearchMode(window, {
source: UrlbarUtils.RESULT_SOURCE.ACTIONS,
entry: "oneoff",
});
}
const assertAction = async name => {
await BrowserTestUtils.waitForCondition(() =>
window.document.querySelector(`.urlbarView-action-btn[data-action=${name}]`)
);
Assert.ok(true, `We found action "${name}`);
};
add_setup(async function setup() {
await SpecialPowers.pushPrefEnv({
set: [
["browser.urlbar.quickactions.enabled", true],
["browser.urlbar.secondaryActions.featureGate", true],
["browser.urlbar.shortcuts.quickactions", true],
],
});
});
add_task(async function test_screenshot() {
await SpecialPowers.pushPrefEnv({
set: [["screenshots.browser.component.enabled", true]],
});
BrowserTestUtils.startLoadingURIString(gBrowser.selectedBrowser, DUMMY_PAGE);
await BrowserTestUtils.browserLoaded(
gBrowser.selectedBrowser,
false,
DUMMY_PAGE
);
info("The action is matched when at end of input");
await UrlbarTestUtils.promiseAutocompleteResultPopup({
window,
value: "screenshot",
});
await assertAction("screenshot");
info("Trigger the screenshot mode");
EventUtils.synthesizeKey("KEY_Tab", {}, window);
EventUtils.synthesizeKey("KEY_Enter", {}, window);
await TestUtils.waitForCondition(
isScreenshotInitialized,
"Screenshot component is active",
200,
100
);
info("Press Escape to exit screenshot mode");
EventUtils.synthesizeKey("KEY_Escape", {}, window);
await TestUtils.waitForCondition(
async () => !(await isScreenshotInitialized()),
"Screenshot component has been dismissed"
);
await UrlbarTestUtils.promisePopupClose(window, () => {
EventUtils.synthesizeKey("KEY_Escape");
});
});
add_task(async function search_mode_on_webpage() {
const tab = await BrowserTestUtils.openNewForegroundTab(
gBrowser,
);
info("Show result by click");
await UrlbarTestUtils.promisePopupOpen(window, () => {
EventUtils.synthesizeMouseAtCenter(gURLBar.inputField, {}, window);
});
await UrlbarTestUtils.promiseSearchComplete(window);
info("Check the urlbar state");
Assert.equal(gURLBar.value, UrlbarTestUtils.trimURL("https://example.com"));
Assert.equal(gURLBar.getAttribute("pageproxystate"), "valid");
info("Show result again");
await UrlbarTestUtils.promisePopupOpen(window, () => {
EventUtils.synthesizeMouseAtCenter(gURLBar.inputField, {}, window);
});
await UrlbarTestUtils.promiseSearchComplete(window);
info("Clean up");
await UrlbarTestUtils.promisePopupClose(window);
EventUtils.synthesizeKey("KEY_Escape");
BrowserTestUtils.removeTab(tab);
await PlacesUtils.history.clear();
});