summaryrefslogtreecommitdiffstats
path: root/browser/components/translations/tests/browser/browser_translations_about_preferences_settings_always_translate_languages.js
blob: 9f40003bfcf96a2ef61c9cf956943a7d8a613a76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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();
  }
);