Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(201)

Side by Side Diff: chrome/test/data/webui/settings/languages_page_tests.js

Issue 2252323002: MD Settings: reduce complexity and overhead of Languages singleton (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@RemoveLanguageInputMethods
Patch Set: Reduce diff Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 cr.define('settings_languages_page', function() {
6 suite('settings-languages-singleton', function() {
7 var languageSettingsPrivate;
8 var languageHelper;
9 var settingsPrefs;
10 var fakePrefs = [{
11 key: 'intl.app_locale',
12 type: chrome.settingsPrivate.PrefType.STRING,
13 value: 'en-US',
14 }, {
15 key: 'intl.accept_languages',
16 type: chrome.settingsPrivate.PrefType.STRING,
17 value: 'en-US,sw',
18 }, {
19 key: 'spellcheck.dictionaries',
20 type: chrome.settingsPrivate.PrefType.LIST,
21 value: ['en-US'],
22 }, {
23 key: 'translate_blocked_languages',
24 type: chrome.settingsPrivate.PrefType.LIST,
25 value: ['en-US'],
26 }];
27 if (cr.isChromeOS) {
28 fakePrefs.push({
29 key: 'settings.language.preferred_languages',
30 type: chrome.settingsPrivate.PrefType.STRING,
31 value: 'en-US,sw',
32 });
33 fakePrefs.push({
34 key: 'settings.language.preload_engines',
35 type: chrome.settingsPrivate.PrefType.STRING,
36 value: '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us::eng,' +
37 '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us:dvorak:eng',
38 });
39 fakePrefs.push({
40 key: 'settings.language.enabled_extension_imes',
41 type: chrome.settingsPrivate.PrefType.STRING,
42 value: '',
43 });
44 }
45
46 suiteSetup(function() {
47 CrSettingsPrefs.deferInitialization = true;
48 settingsPrefs = document.createElement('settings-prefs');
49 assertTrue(!!settingsPrefs);
50 var fakeApi = new settings.FakeSettingsPrivate(fakePrefs);
51 settingsPrefs.initializeForTesting(fakeApi);
52
53 languageSettingsPrivate = new settings.FakeLanguageSettingsPrivate();
54 languageSettings.languageSettingsPrivateApiForTest =
55 languageSettingsPrivate;
56
57
58 languageSettingsPrivate.setSettingsPrefs(settingsPrefs);
59 LanguageHelperImpl.instance_ = undefined;
60 languageHelper = LanguageHelperImpl.getInstance();
61 return languageHelper.whenReady();
62 });
63
64 test('languages model', function() {
65 for (var i = 0; i < languageSettingsPrivate.languages.length;
66 i++) {
67 assertEquals(languageSettingsPrivate.languages[i].code,
68 languageHelper.languages.supported[i].code);
69 }
70 assertEquals(2, languageHelper.languages.enabled.length);
71 assertEquals('en-US',
72 languageHelper.languages.enabled[0].language.code);
73 assertEquals('sw',
74 languageHelper.languages.enabled[1].language.code);
75 assertEquals('en', languageHelper.languages.translateTarget);
76
77 // TODO(michaelpg): Test other aspects of the model.
78 });
79
80 test('modifying languages', function() {
81 assertTrue(languageHelper.isLanguageEnabled('en-US'));
82 assertTrue(languageHelper.isLanguageEnabled('sw'));
83 assertFalse(languageHelper.isLanguageEnabled('en-CA'));
84
85 languageHelper.enableLanguage('en-CA');
86 assertTrue(languageHelper.isLanguageEnabled('en-CA'));
87 languageHelper.disableLanguage('sw');
88 assertFalse(languageHelper.isLanguageEnabled('sw'));
89
90 // TODO(michaelpg): Test other modifications.
91 });
92
93 test('reorder languages', function() {
94 languageHelper.enableLanguage('sw');
95 assertEquals('en-US', languageHelper.languages.enabled[0].language.code);
96 assertEquals('en-CA', languageHelper.languages.enabled[1].language.code);
97 assertEquals('sw', languageHelper.languages.enabled[2].language.code);
98
99 // Can move a language up.
100 languageHelper.moveLanguage('sw', -1);
101 assertEquals('en-US', languageHelper.languages.enabled[0].language.code);
102 assertEquals('sw', languageHelper.languages.enabled[1].language.code);
103 assertEquals('en-CA', languageHelper.languages.enabled[2].language.code);
104
105 // Can move a language down.
106 languageHelper.moveLanguage('en-US', 1);
107 assertEquals('sw', languageHelper.languages.enabled[0].language.code);
108 assertEquals('en-US', languageHelper.languages.enabled[1].language.code);
109 assertEquals('en-CA', languageHelper.languages.enabled[2].language.code);
110
111 // Moving the first language up has no effect.
112 languageHelper.moveLanguage('sw', -1);
113 assertEquals('sw', languageHelper.languages.enabled[0].language.code);
114 assertEquals('en-US', languageHelper.languages.enabled[1].language.code);
115 assertEquals('en-CA', languageHelper.languages.enabled[2].language.code);
116
117 // Moving the last language down has no effect.
118 languageHelper.moveLanguage('en-CA', 1);
119 assertEquals('sw', languageHelper.languages.enabled[0].language.code);
120 assertEquals('en-US', languageHelper.languages.enabled[1].language.code);
121 assertEquals('en-CA', languageHelper.languages.enabled[2].language.code);
122 });
123
124 if (cr.isChromeOS) {
125 test('modifying input methods', function() {
126 assertEquals(2, languageHelper.languages.inputMethods.enabled.length);
127 var inputMethods = languageHelper.getInputMethodsForLanguage('en-US');
128 assertEquals(3, inputMethods.length);
129
130 // We can remove one input method.
131 var dvorak =
132 '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us:dvorak:eng';
133 languageHelper.removeInputMethod(dvorak);
134 assertEquals(1, languageHelper.languages.inputMethods.enabled.length);
135
136 // Enable Swahili.
137 languageHelper.enableLanguage('sw');
138 assertEquals(1, languageHelper.languages.inputMethods.enabled.length);
139
140 // Add input methods for Swahili.
141 var sw = '_comp_ime_abcdefghijklmnopqrstuvwxyzabcdefxkb:sw:sw';
142 var swUS = '_comp_ime_abcdefghijklmnopqrstuvwxyzabcdefxkb:us:sw';
143 languageHelper.addInputMethod(sw);
144 languageHelper.addInputMethod(swUS);
145 assertEquals(3, languageHelper.languages.inputMethods.enabled.length);
146
147 // Disable Swahili. The Swahili-only keyboard should be removed.
148 languageHelper.disableLanguage('sw');
149 assertEquals(2, languageHelper.languages.inputMethods.enabled.length);
150
151 // The US Swahili keyboard should still be enabled, because it supports
152 // English which is still enabled.
153 assertTrue(languageHelper.languages.inputMethods.enabled.some(
154 function(inputMethod) {
155 return inputMethod.id == swUS;
156 }));
157 });
158 }
159 });
160 });
OLDNEW
« no previous file with comments | « chrome/test/data/webui/settings/languages_page_browsertest.js ('k') | chrome/test/data/webui/settings/languages_tests.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698