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

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: Answered comments. 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();
Dan Beam 2015/07/08 01:13:10 remove languageOptions
Julius 2015/07/08 01:33:46 Done.
41 var languages = this.getLanguages();
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 // Make sure 'es' exists in the language list and is unchecked.
68 expectTrue($('language-options-list').selectLanguageByCode('es'));
69 LanguageOptions.updateSpellCheckLanguageControls('es');
70 expectFalse($('spellcheck-language-checkbox').checked, 'es');
71
72 // Click 'es' and ensure that its checkbox gets checked.
73 $('spellcheck-language-checkbox').click();
74 expectTrue($('spellcheck-language-checkbox').checked, 'es');
75
76 // Make sure 'fr' stays checked.
77 $('language-options-list').selectLanguageByCode('fr');
78 LanguageOptions.updateSpellCheckLanguageControls('fr');
79 expectTrue($('spellcheck-language-checkbox').checked);
80
81 // Make sure 'fr' and 'es' are the only two languages being spellchecked with.
82 var languages = this.getLanguages();
83 expectEquals(2, languages.length);
84 expectEquals('fr', languages[0]);
85 expectEquals('es', languages[1]);
86
87 // Make sure 'fr' exists in the language list and is checked.
88 expectTrue($('language-options-list').selectLanguageByCode('fr'));
89 LanguageOptions.updateSpellCheckLanguageControls('fr');
90 expectTrue($('spellcheck-language-checkbox').checked);
91
92 // Click 'fr' and ensure that its checkbox gets unchecked.
93 $('spellcheck-language-checkbox').click();
94 expectFalse($('spellcheck-language-checkbox').checked);
95
96 // Make sure 'es' stays checked.
97 $('language-options-list').selectLanguageByCode('es');
98 LanguageOptions.updateSpellCheckLanguageControls('es');
99 expectTrue($('spellcheck-language-checkbox').checked);
100
101 // Make sure es' is the only language being spellchecked with.
Dan Beam 2015/07/08 01:13:10 es' -> 'es'
Julius 2015/07/08 01:33:46 Done.
102 languages = this.getLanguages();
103 expectEquals(1, languages.length);
104 expectEquals('es', languages[0]);
105 });
106
107 // Make sure 'am' cannot be selected as a language and 'fr' stays selected.
108 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'NotAcceptLanguage',
109 function() {
110
111 // Try to select 'am' from the language list.
112 expectFalse($('language-options-list').selectLanguageByCode('am'));
113
114 // Make sure 'fr' is still the only thing selected.
115 $('language-options-list').selectLanguageByCode('fr');
116 expectTrue($('spellcheck-language-checkbox').checked);
117 var languages = this.getLanguages();
118 expectEquals(1, languages.length);
119 expectEquals('fr', languages[0]);
120 });
121
122 // Make sure 'en' cannot be selected as a language and 'fr' stays selected.
123 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'UnusableLanguage',
124 function() {
125
126 // Try to select 'en' from the language list.
127 expectTrue($('language-options-list').selectLanguageByCode('en'));
128 LanguageOptions.updateSpellCheckLanguageControls('en');
129 expectTrue($('spellcheck-language-checkbox-container').hidden);
130 expectFalse($('spellcheck-language-checkbox').checked);
131
132 // Make sure 'fr' is still the only thing selected.
133 var languages = this.getLanguages();
134 expectEquals(1, languages.length);
135 expectEquals('fr', languages[0]);
136 });
137
138 function MultilanguagePreferenceWebUIBrowserTest() {}
139
140 /**
141 * Test C++ fixture for Language Options WebUI testing.
142 * @constructor
143 * @extends {MultilanguageOptionsWebUIBrowserTest}
144 */
145 MultilanguagePreferenceWebUIBrowserTest.prototype = {
146 __proto__: MultilanguageOptionsWebUIBrowserTest.prototype,
147
148 /** @override */
149 typedefCppFixture: 'MultilanguageOptionsWebUIBrowserTest',
150
151 /** @override */
152 testGenPreamble: function() {
153 GEN('SetBlankDictionariesPref();');
154 },
155
156 isAsync: true,
157
158 /** @override */
159 setUp: function() {
160 testing.Test.prototype.setUp.call(this);
161
162 assertTrue(loadTimeData.getBoolean('enableMultilingualSpellChecker'));
163 assertFalse(cr.isMac);
164 expectTrue($('spellcheck-language-button').hidden);
165
166 // Make sure we're starting with a blank preference.
167 var registeredPrefs =
168 options.Preferences.getInstance().registeredPreferences_;
169 expectEquals(0, this.getLanguages().length);
170 expectEquals(0,
171 registeredPrefs['spellcheck.dictionaries'].orig.value.length);
172 },
173 };
174
175 // Make sure the case where no languages are selected is handled properly.
176 TEST_F('MultilanguagePreferenceWebUIBrowserTest', 'BlankSpellcheckLanguges',
177 function() {
178 var registeredPrefs =
179 options.Preferences.getInstance().registeredPreferences_;
180
181 // Make sure 'fr' is not already checked.
182 expectTrue($('language-options-list').selectLanguageByCode('fr'));
183 LanguageOptions.updateSpellCheckLanguageControls('fr');
184 expectFalse($('spellcheck-language-checkbox').checked);
185
186 // Add a preference change event listener which ensures that the preference is
187 // updated correctly and that 'fr' is the only thing in the dictionary object.
188 options.Preferences.getInstance().addEventListener('spellcheck.dictionaries',
189 function() {
190 expectTrue($('spellcheck-language-checkbox').checked);
191
192 expectEquals(1,
193 registeredPrefs['spellcheck.dictionaries'].orig.value.length);
194 expectEquals('fr',
195 registeredPrefs['spellcheck.dictionaries'].orig.value[0]);
196
197 var languages =
198 MultilanguagePreferenceWebUIBrowserTest.prototype.getLanguages();
199 expectEquals(1, languages.length);
200 expectEquals('fr', languages[0]);
201
202 expectTrue($('language-options-list').selectLanguageByCode('fr'));
203 testDone();
204 });
205
206 // Click 'fr' and trigger the previously registered event listener.
207 $('spellcheck-language-checkbox').click();
208
209 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698