Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
const ACCEPT_LANGUAGES_PREF = "intl.accept_languages";
const FIVE_LOCALES = "en,fr,de,es,ja";
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [["identity.fxaccounts.account.device.name", ""]],
});
});
async function openLanguagesPane() {
await openPreferencesViaOpenPreferencesAPI("paneLanguages", {
leaveOpen: true,
});
return { win: gBrowser.contentWindow, tab: gBrowser.selectedTab };
}
add_task(async function test_reordering_languages_position_before() {
await SpecialPowers.pushPrefEnv({
set: [[ACCEPT_LANGUAGES_PREF, FIVE_LOCALES]],
});
let { win, tab } = await openLanguagesPane();
let boxGroupControl = await settingControlRenders(
"websiteLanguageWrapper",
win
);
let boxGroup = boxGroupControl.controlEl;
let expectedOrder = "fr,de,en,es,ja";
let prefChanged = TestUtils.waitForPrefChange(ACCEPT_LANGUAGES_PREF);
// Simulate dragging "en" (index 0) before "es" (index 3).
performDragAndDrop({
contentWindow: win,
dragItem: boxGroup.children[1].handleEl,
targetItem: boxGroup.children[4],
position: "before",
});
Assert.equal(await prefChanged, expectedOrder, "en should land before es");
await BrowserTestUtils.removeTab(tab);
});
add_task(async function test_reordering_languages_position_after_from_end() {
await SpecialPowers.pushPrefEnv({
set: [[ACCEPT_LANGUAGES_PREF, FIVE_LOCALES]],
});
let { win, tab } = await openLanguagesPane();
let boxGroupControl = await settingControlRenders(
"websiteLanguageWrapper",
win
);
let boxGroup = boxGroupControl.controlEl;
let expectedOrder = "en,fr,ja,de,es";
let prefChanged = TestUtils.waitForPrefChange(ACCEPT_LANGUAGES_PREF);
// Simulate dragging "ja" (index 4) after "fr" (index 1).
performDragAndDrop({
contentWindow: win,
dragItem: boxGroup.children[5].handleEl,
targetItem: boxGroup.children[2],
position: "after",
});
Assert.equal(await prefChanged, expectedOrder, "ja should land after fr");
await BrowserTestUtils.removeTab(tab);
});