Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
// This test checks that the left/right arrow keys and home/end keys work in
// the urlbar after customize mode starts and ends.
"use strict";
add_task(async function test() {
let win = await BrowserTestUtils.openNewBrowserWindow();
await startCustomizing(win);
await endCustomizing(win);
let urlbar = win.gURLBar;
let value = "example";
urlbar.value = value;
urlbar.focus();
urlbar.selectionEnd = value.length;
urlbar.selectionStart = value.length;
// left
EventUtils.synthesizeKey("KEY_ArrowLeft", {}, win);
Assert.equal(urlbar.selectionStart, value.length - 1);
Assert.equal(urlbar.selectionEnd, value.length - 1);
// home
if (AppConstants.platform == "macosx") {
EventUtils.synthesizeKey("KEY_ArrowLeft", { metaKey: true }, win);
} else {
EventUtils.synthesizeKey("KEY_Home", {}, win);
}
Assert.equal(urlbar.selectionStart, 0);
Assert.equal(urlbar.selectionEnd, 0);
// right
EventUtils.synthesizeKey("KEY_ArrowRight", {}, win);
Assert.equal(urlbar.selectionStart, 1);
Assert.equal(urlbar.selectionEnd, 1);
// end
if (AppConstants.platform == "macosx") {
EventUtils.synthesizeKey("KEY_ArrowRight", { metaKey: true }, win);
} else {
EventUtils.synthesizeKey("KEY_End", {}, win);
}
Assert.equal(urlbar.selectionStart, value.length);
Assert.equal(urlbar.selectionEnd, value.length);
await BrowserTestUtils.closeWindow(win);
});
async function startCustomizing(win = window) {
if (win.document.documentElement.getAttribute("customizing") != "true") {
let eventPromise = BrowserTestUtils.waitForEvent(
win.gNavToolbox,
"customizationready"
);
win.gCustomizeMode.enter();
await eventPromise;
}
}
async function endCustomizing(win = window) {
if (win.document.documentElement.getAttribute("customizing") == "true") {
let eventPromise = BrowserTestUtils.waitForEvent(
win.gNavToolbox,
"aftercustomization"
);
win.gCustomizeMode.exit();
await eventPromise;
}
}