OLD | NEW |
---|---|
(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 }); | |
OLD | NEW |