summaryrefslogtreecommitdiffstats
path: root/browser/components/translations/tests/browser/browser_translations_about_preferences_settings_always_translate_languages.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/translations/tests/browser/browser_translations_about_preferences_settings_always_translate_languages.js')
-rw-r--r--browser/components/translations/tests/browser/browser_translations_about_preferences_settings_always_translate_languages.js97
1 files changed, 97 insertions, 0 deletions
diff --git a/browser/components/translations/tests/browser/browser_translations_about_preferences_settings_always_translate_languages.js b/browser/components/translations/tests/browser/browser_translations_about_preferences_settings_always_translate_languages.js
new file mode 100644
index 0000000000..9f40003bfc
--- /dev/null
+++ b/browser/components/translations/tests/browser/browser_translations_about_preferences_settings_always_translate_languages.js
@@ -0,0 +1,97 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+add_task(
+ async function test_about_preferences_always_translate_language_settings() {
+ const {
+ cleanup,
+ elements: { settingsButton },
+ } = await setupAboutPreferences(LANGUAGE_PAIRS, {
+ prefs: [["browser.translations.newSettingsUI.enable", false]],
+ });
+
+ info("Ensuring the list of always-translate languages is empty");
+ is(
+ getAlwaysTranslateLanguagesFromPref().length,
+ 0,
+ "The list of always-translate languages is empty"
+ );
+
+ info("Adding two languages to the alwaysTranslateLanguages pref");
+ Services.prefs.setCharPref(ALWAYS_TRANSLATE_LANGS_PREF, "fr,de");
+
+ const dialogWindow = await waitForOpenDialogWindow(
+ "chrome://browser/content/preferences/dialogs/translations.xhtml",
+ () => {
+ click(
+ settingsButton,
+ "Opening the about:preferences Translations Settings"
+ );
+ }
+ );
+ let tree = dialogWindow.document.getElementById(
+ "alwaysTranslateLanguagesTree"
+ );
+ let remove = dialogWindow.document.getElementById(
+ "removeAlwaysTranslateLanguage"
+ );
+ let removeAll = dialogWindow.document.getElementById(
+ "removeAllAlwaysTranslateLanguages"
+ );
+
+ is(
+ tree.view.rowCount,
+ 2,
+ "The always-translate languages list has 2 items"
+ );
+ ok(remove.disabled, "The 'Remove Language' button is disabled");
+ ok(!removeAll.disabled, "The 'Remove All Languages' button is enabled");
+
+ info("Selecting the first always-translate language.");
+ tree.view.selection.select(0);
+ ok(!remove.disabled, "The 'Remove Language' button is enabled");
+
+ click(remove, "Clicking the remove-language button");
+ is(
+ tree.view.rowCount,
+ 1,
+ "The always-translate languages list now contains 1 item"
+ );
+ is(
+ getAlwaysTranslateLanguagesFromPref().length,
+ 1,
+ "One language tag in the pref"
+ );
+
+ info("Removing all languages from the alwaysTranslateLanguages pref");
+ Services.prefs.setCharPref(ALWAYS_TRANSLATE_LANGS_PREF, "");
+ is(tree.view.rowCount, 0, "The always-translate languages list is empty");
+ ok(remove.disabled, "The 'Remove Language' button is disabled");
+ ok(removeAll.disabled, "The 'Remove All Languages' button is disabled");
+
+ info("Adding more languages to the alwaysTranslateLanguages pref");
+ Services.prefs.setCharPref(ALWAYS_TRANSLATE_LANGS_PREF, "fr,en,es");
+ is(
+ tree.view.rowCount,
+ 3,
+ "The always-translate languages list has 3 items"
+ );
+ ok(remove.disabled, "The 'Remove Language' button is disabled");
+ ok(!removeAll.disabled, "The 'Remove All Languages' button is enabled");
+
+ click(removeAll, "Clicking the remove-all languages button");
+ is(tree.view.rowCount, 0, "The always-translate languages list is empty");
+ ok(remove.disabled, "The 'Remove Language' button is disabled");
+ ok(removeAll.disabled, "The 'Remove All Languages' button is disabled");
+ is(
+ getAlwaysTranslateLanguagesFromPref().length,
+ 0,
+ "There are no languages in the alwaysTranslateLanguages pref"
+ );
+
+ await waitForCloseDialogWindow(dialogWindow);
+ await cleanup();
+ }
+);