Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- Manifest: dom/base/test/browser.toml
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
*/
"use strict";
const languages = ["en-US", "es-ES", "fr-FR"];
add_task(async function test_set_language_override() {
const tab = BrowserTestUtils.addTab(gBrowser, PAGE_URL);
const browser = gBrowser.getBrowserForTab(tab);
await BrowserTestUtils.browserLoaded(browser);
info("Get default language");
const defaultLanguage = await getIntlLanguage(browser);
const browsingContext = browser.browsingContext;
const languageOverride = getLanguageToOverride(defaultLanguage);
info("Set language override");
browsingContext.languageOverride = languageOverride;
await assertLanguageOverridden(browser, languageOverride);
const secondLanguageOverride = getSecondLanguageToOverride(
defaultLanguage,
languageOverride
);
info("Set language override again");
browsingContext.languageOverride = secondLanguageOverride;
await assertLanguageOverridden(browser, secondLanguageOverride);
info("Reset language override");
browsingContext.languageOverride = "";
await assertLanguageIsNotOverridden(browser, defaultLanguage);
BrowserTestUtils.removeTab(tab);
});
add_task(async function test_set_language_override_in_different_contexts() {
const tab1 = BrowserTestUtils.addTab(gBrowser, PAGE_URL);
const browser1 = gBrowser.getBrowserForTab(tab1);
await BrowserTestUtils.browserLoaded(browser1);
const tab2 = BrowserTestUtils.addTab(gBrowser, PAGE_URL);
const browser2 = gBrowser.getBrowserForTab(tab2);
await BrowserTestUtils.browserLoaded(browser2);
info("Get default language in the first tab");
const defaultLanguage1 = await getIntlLanguage(browser1);
info("Get default language in the second tab");
const defaultLanguage2 = await getIntlLanguage(browser2);
const browsingContext1 = browser1.browsingContext;
const languageOverride = getLanguageToOverride(defaultLanguage1);
info("Set language override to the first tab");
browsingContext1.languageOverride = languageOverride;
await assertLanguageOverridden(browser1, languageOverride);
info("Make sure that in the second tab language is not overridden");
await assertLanguageIsNotOverridden(browser2, defaultLanguage2);
info("Reset language override");
browsingContext1.languageOverride = "";
await assertLanguageIsNotOverridden(browser1, defaultLanguage1);
BrowserTestUtils.removeTab(tab1);
BrowserTestUtils.removeTab(tab2);
});
function getLanguageToOverride(defaultLanguage) {
return languages.find(lang => lang !== defaultLanguage);
}
function getSecondLanguageToOverride(defaultLanguage, secondLanguage) {
return languages.find(
lang => lang !== defaultLanguage && lang !== secondLanguage
);
}
async function getIntlLanguage(browser) {
return SpecialPowers.spawn(browser, [], () => {
return new Intl.DateTimeFormat().resolvedOptions().locale;
});
}
async function assertLanguageOverridden(browser, languageOverride) {
is(
await getIntlLanguage(browser),
languageOverride,
"new Intl.DateTimeFormat().resolvedOptions().locale is overridden"
);
}
async function assertLanguageIsNotOverridden(browser, defaultLanguage) {
is(
await getIntlLanguage(browser),
defaultLanguage,
"new Intl.DateTimeFormat().resolvedOptions().locale is not overridden"
);
}