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