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

Side by Side Diff: chrome/browser/ui/webui/options/multilanguage_options_webui_browsertest.js

Issue 1156473007: Enables the user to select multiple languages for spellchecking (UI) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Replied to old comments and fixed small issues. Created 5 years, 5 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 2015 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 GEN('#include "chrome/browser/ui/webui/options/multilanguage_options_webui_brows ertest.h"');
6
7 /**
8 * Test C++ fixture for Language Options WebUI testing.
9 * @constructor
10 * @extends {testing.Test}
11 */
12 function MultilanguageOptionsWebUIBrowserTest() {}
13
14 MultilanguageOptionsWebUIBrowserTest.prototype = {
15 __proto__: testing.Test.prototype,
16
17 /** @override */
18 browsePreload: 'chrome://settings-frame/languages',
19
20 /** @override */
21 typedefCppFixture: 'MultilanguageOptionsWebUIBrowserTest',
22
23 /** @override */
24 accessibilityIssuesAreErrors: true,
25
26 /** @return {Array<string>} The currently selected languages. */
27 getLanguages: function() {
28 return Object.keys(LanguageOptions.getInstance().spellCheckLanguages_);
29 },
30
31 /** @override */
32 setUp: function() {
33 testing.Test.prototype.setUp.call(this);
34
35 assertTrue(loadTimeData.getBoolean('enableMultilingualSpellChecker'));
36 assertFalse(cr.isMac);
37 expectTrue($('spellcheck-language-button').hidden);
38
39 // Make sure the only language currently selected is 'fr'.
40 var languageOptions = LanguageOptions.getInstance();
41 var languages = Object.keys(languageOptions.spellCheckLanguages_);
Dan Beam 2015/07/06 23:30:28 use this.getLanguages()
Julius 2015/07/07 01:14:21 Done.
42 expectEquals(1, languages.length);
43 expectEquals('fr', languages[0]);
44 },
45 };
46
47 // Test opening language options has correct location.
48 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'TestOpenLanguageOptions',
49 function() {
50 expectEquals('chrome://settings-frame/languages', document.location.href);
51 });
52
53 // Verify that the option to enable the spelling service is hidden when
54 // multilingual spellchecking is enabled.
55 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'HideSpellingServiceCheckbox',
56 function() {
57 assertTrue(loadTimeData.getBoolean('enableMultilingualSpellChecker'));
58 expectTrue($('spelling-enabled-container').hidden);
59 testDone();
60 });
61
62 // Test that only certain languages can be selected and used for spellchecking.
63 // prefs::kLanguagePreferredLanguages/prefs::kAcceptLanguages is set to
64 // "fr,es,de,en" for the test.
65 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'ChangeSpellcheckLanguages',
66 function() {
67 var languages = this.getLanguages();
Dan Beam 2015/07/06 23:30:28 you don't use this... you only reset it later...
Julius 2015/07/07 01:14:21 I was thinking to declare variables at the start o
68
69 // Make sure 'es' exists in the language list and is unchecked.
70 expectTrue($('language-options-list').selectLanguageByCode('es'));
71 LanguageOptions.updateSpellCheckLanguageControls('es');
72 expectFalse($('spellcheck-language-checkbox').checked, 'es');
73
74 // Click 'es' and ensure that its checkbox gets checked.
75 $('spellcheck-language-checkbox').click();
76 expectTrue($('spellcheck-language-checkbox').checked, 'es');
77
78 // Make sure 'fr' stays checked.
79 $('language-options-list').selectLanguageByCode('fr');
80 LanguageOptions.updateSpellCheckLanguageControls('fr');
81 expectTrue($('spellcheck-language-checkbox').checked);
82
83 // Make sure 'fr' and 'es' are the only two languages being spellchecked with.
84 languages = this.getLanguages();
85 expectEquals(2, languages.length);
Dan Beam 2015/07/06 23:30:28 alternatively just call .getLanguages().length and
Julius 2015/07/07 01:14:21 I think it's a bit more clear using languages inst
86 expectEquals('fr', languages[0]);
87 expectEquals('es', languages[1]);
88
89 // Make sure 'fr' exists in the language list and is checked.
90 expectTrue($('language-options-list').selectLanguageByCode('fr'));
91 LanguageOptions.updateSpellCheckLanguageControls('fr');
92 expectTrue($('spellcheck-language-checkbox').checked);
93
94 // Click 'fr' and ensure that its checkbox gets unchecked.
95 $('spellcheck-language-checkbox').click();
96 expectFalse($('spellcheck-language-checkbox').checked);
97
98 // Make sure 'es' stays checked.
99 $('language-options-list').selectLanguageByCode('es');
100 LanguageOptions.updateSpellCheckLanguageControls('es');
101 expectTrue($('spellcheck-language-checkbox').checked);
102
103 // Make sure es' is the only language being spellchecked with.
104 languages = this.getLanguages();
105 expectEquals(1, languages.length);
106 expectEquals('es', languages[0]);
107 });
108
109 // Make sure 'am' cannot be selected as a language and 'fr' stays selected.
110 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'NotAcceptLanguage',
111 function() {
112 var languages = this.getLanguages();
Dan Beam 2015/07/06 23:30:28 put this right before you actually use |languages|
Julius 2015/07/07 01:14:21 Done.
113
114 // Try to select 'am' from the language list.
115 expectFalse($('language-options-list').selectLanguageByCode('am'));
116
117 // Make sure 'fr' is still the only thing selected.
118 $('language-options-list').selectLanguageByCode('fr');
119 expectTrue($('spellcheck-language-checkbox').checked);
120 expectEquals(1, languages.length);
121 expectEquals('fr', languages[0]);
122 });
123
124 // Make sure 'en' cannot be selected as a language and 'fr' stays selected.
125 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'UnusableLanguage',
126 function() {
127 var languages = this.getLanguages();
Dan Beam 2015/07/06 23:30:28 lower and/or .getLanguages() every time
Julius 2015/07/07 01:14:21 Done.
128
129 // Try to select 'en' from the language list.
130 expectTrue($('language-options-list').selectLanguageByCode('en'));
131 LanguageOptions.updateSpellCheckLanguageControls('en');
132 expectTrue($('spellcheck-language-checkbox-container').hidden);
133 expectFalse($('spellcheck-language-checkbox').checked);
134
135 // Make sure 'fr' is still the only thing selected.
136 expectEquals(1, languages.length);
137 expectEquals('fr', languages[0]);
138 });
139
140 function MultilanguagePreferenceWebUIBrowserTest() {}
141
142 /**
143 * Test C++ fixture for Language Options WebUI testing.
144 * @constructor
145 * @extends {MultilanguageOptionsWebUIBrowserTest}
146 */
147 MultilanguagePreferenceWebUIBrowserTest.prototype = {
148 __proto__: MultilanguageOptionsWebUIBrowserTest.prototype,
149
150 /** @override */
151 typedefCppFixture: 'MultilanguageOptionsWebUIBrowserTest',
152
153 /** @override */
154 testGenPreamble: function() {
155 GEN('SetBlankDictionariesPref();');
156 },
157
158 isAsync: true,
159
160 /** @override */
161 setUp: function() {
162 testing.Test.prototype.setUp.call(this);
163
164 assertTrue(loadTimeData.getBoolean('enableMultilingualSpellChecker'));
165 assertFalse(cr.isMac);
166 expectTrue($('spellcheck-language-button').hidden);
167
168 // Make sure we're starting with a blank preference.
169 var langs = Object.keys(LanguageOptions.getInstance().spellCheckLanguages_);
Dan Beam 2015/07/06 23:30:28 ...
Julius 2015/07/07 01:14:21 Done.
170 var regPrefs = options.Preferences.getInstance().registeredPreferences_;
171 expectEquals(0, langs.length);
172 expectEquals(0, regPrefs['spellcheck.dictionaries'].orig.value.length);
173 },
174 };
175
176 // Make sure the case where no languages are selected is handled properly.
177 TEST_F('MultilanguagePreferenceWebUIBrowserTest', 'BlankSpellcheckLanguges',
178 function() {
179 var languages = this.getLanguages();
Dan Beam 2015/07/06 23:30:28 unused?
Julius 2015/07/07 01:14:21 Moved it down into the event listener callback.
180 var registeredPrefs =
181 options.Preferences.getInstance().registeredPreferences_;
182
183 // Make sure 'fr' is not already checked.
184 expectTrue($('language-options-list').selectLanguageByCode('fr'));
185 LanguageOptions.updateSpellCheckLanguageControls('fr');
186 expectFalse($('spellcheck-language-checkbox').checked);
187
188 // Add a preference change event listener which ensures that the preference is
189 // updated correctly and that 'fr' is the only thing in the dictionary object.
190 options.Preferences.getInstance().addEventListener('spellcheck.dictionaries',
191 function() {
192 expectTrue($('spellcheck-language-checkbox').checked);
193
194 expectEquals(1,
195 registeredPrefs['spellcheck.dictionaries'].orig.value.length);
196 expectEquals('fr',
197 registeredPrefs['spellcheck.dictionaries'].orig.value[0]);
198
199 languages =
200 MultilanguagePreferenceWebUIBrowserTest.prototype.getLanguages();
201 expectEquals(1, languages.length);
202 expectEquals('fr', languages[0]);
203
204 expectTrue($('language-options-list').selectLanguageByCode('fr'));
205 testDone();
206 });
207
208 // Click 'fr' and trigger the previously registered event listener.
209 $('spellcheck-language-checkbox').click();
210
211 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698