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_); | |
Dan Beam
2015/07/08 18:56:27
all you ever do is just check the size/contents of
Julius
2015/07/08 20:38:48
Done.
| |
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 languages = this.getLanguages(); | |
41 expectEquals(1, languages.length); | |
42 expectEquals('fr', languages[0]); | |
43 }, | |
44 }; | |
45 | |
46 // Test opening language options has correct location. | |
47 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'TestOpenLanguageOptions', | |
48 function() { | |
49 expectEquals('chrome://settings-frame/languages', document.location.href); | |
50 }); | |
51 | |
52 // Verify that the option to enable the spelling service is hidden when | |
53 // multilingual spellchecking is enabled. | |
54 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'HideSpellingServiceCheckbox', | |
55 function() { | |
56 assertTrue(loadTimeData.getBoolean('enableMultilingualSpellChecker')); | |
57 expectTrue($('spelling-enabled-container').hidden); | |
58 testDone(); | |
59 }); | |
60 | |
61 // Test that only certain languages can be selected and used for spellchecking. | |
62 // prefs::kLanguagePreferredLanguages/prefs::kAcceptLanguages is set to | |
63 // "fr,es,de,en" for the test. | |
64 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'ChangeSpellcheckLanguages', | |
65 function() { | |
66 // Make sure 'es' exists in the language list and is unchecked. | |
67 expectTrue($('language-options-list').selectLanguageByCode('es')); | |
68 LanguageOptions.updateSpellCheckLanguageControls('es'); | |
69 expectFalse($('spellcheck-language-checkbox').checked, 'es'); | |
70 | |
71 // Click 'es' and ensure that its checkbox gets checked. | |
72 $('spellcheck-language-checkbox').click(); | |
73 expectTrue($('spellcheck-language-checkbox').checked, 'es'); | |
74 | |
75 // Make sure 'fr' stays checked. | |
76 $('language-options-list').selectLanguageByCode('fr'); | |
77 LanguageOptions.updateSpellCheckLanguageControls('fr'); | |
78 expectTrue($('spellcheck-language-checkbox').checked); | |
79 | |
80 // Make sure 'fr' and 'es' are the only two languages being spellchecked with. | |
81 var languages = this.getLanguages(); | |
82 expectEquals(2, languages.length); | |
83 expectEquals('fr', languages[0]); | |
84 expectEquals('es', languages[1]); | |
85 | |
86 // Make sure 'fr' exists in the language list and is checked. | |
87 expectTrue($('language-options-list').selectLanguageByCode('fr')); | |
88 LanguageOptions.updateSpellCheckLanguageControls('fr'); | |
89 expectTrue($('spellcheck-language-checkbox').checked); | |
90 | |
91 // Click 'fr' and ensure that its checkbox gets unchecked. | |
92 $('spellcheck-language-checkbox').click(); | |
93 expectFalse($('spellcheck-language-checkbox').checked); | |
94 | |
95 // Make sure 'es' stays checked. | |
96 $('language-options-list').selectLanguageByCode('es'); | |
97 LanguageOptions.updateSpellCheckLanguageControls('es'); | |
98 expectTrue($('spellcheck-language-checkbox').checked); | |
99 | |
100 // Make sure 'es' is the only language being spellchecked with. | |
101 languages = this.getLanguages(); | |
102 expectEquals(1, languages.length); | |
103 expectEquals('es', languages[0]); | |
104 }); | |
105 | |
106 // Make sure 'am' cannot be selected as a language and 'fr' stays selected. | |
107 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'NotAcceptLanguage', | |
108 function() { | |
109 | |
110 // Try to select 'am' from the language list. | |
111 expectFalse($('language-options-list').selectLanguageByCode('am')); | |
112 | |
113 // Make sure 'fr' is still the only thing selected. | |
114 $('language-options-list').selectLanguageByCode('fr'); | |
115 expectTrue($('spellcheck-language-checkbox').checked); | |
116 var languages = this.getLanguages(); | |
117 expectEquals(1, languages.length); | |
118 expectEquals('fr', languages[0]); | |
119 }); | |
120 | |
121 // Make sure 'en' cannot be selected as a language and 'fr' stays selected. | |
122 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'UnusableLanguage', | |
123 function() { | |
124 | |
125 // Try to select 'en' from the language list. | |
126 expectTrue($('language-options-list').selectLanguageByCode('en')); | |
127 LanguageOptions.updateSpellCheckLanguageControls('en'); | |
128 expectTrue($('spellcheck-language-checkbox-container').hidden); | |
129 expectFalse($('spellcheck-language-checkbox').checked); | |
130 | |
131 // Make sure 'fr' is still the only thing selected. | |
132 var languages = this.getLanguages(); | |
133 expectEquals(1, languages.length); | |
134 expectEquals('fr', languages[0]); | |
135 }); | |
136 | |
137 function MultilanguagePreferenceWebUIBrowserTest() {} | |
138 | |
139 /** | |
140 * Test C++ fixture for Language Options WebUI testing. | |
141 * @constructor | |
142 * @extends {MultilanguageOptionsWebUIBrowserTest} | |
143 */ | |
144 MultilanguagePreferenceWebUIBrowserTest.prototype = { | |
145 __proto__: MultilanguageOptionsWebUIBrowserTest.prototype, | |
146 | |
147 /** @override */ | |
148 typedefCppFixture: 'MultilanguageOptionsWebUIBrowserTest', | |
149 | |
150 /** @override */ | |
151 testGenPreamble: function() { | |
152 GEN('SetBlankDictionariesPref();'); | |
153 }, | |
154 | |
155 isAsync: true, | |
156 | |
157 /** @override */ | |
158 setUp: function() { | |
159 testing.Test.prototype.setUp.call(this); | |
160 | |
161 assertTrue(loadTimeData.getBoolean('enableMultilingualSpellChecker')); | |
162 assertFalse(cr.isMac); | |
163 expectTrue($('spellcheck-language-button').hidden); | |
164 | |
165 // Make sure we're starting with a blank preference. | |
166 var registeredPrefs = | |
167 options.Preferences.getInstance().registeredPreferences_; | |
168 expectEquals(0, this.getLanguages().length); | |
169 expectEquals(0, | |
170 registeredPrefs['spellcheck.dictionaries'].orig.value.length); | |
171 }, | |
172 }; | |
173 | |
174 // Make sure the case where no languages are selected is handled properly. | |
175 TEST_F('MultilanguagePreferenceWebUIBrowserTest', 'BlankSpellcheckLanguges', | |
176 function() { | |
177 var registeredPrefs = | |
178 options.Preferences.getInstance().registeredPreferences_; | |
179 | |
180 // Make sure 'fr' is not already checked. | |
181 expectTrue($('language-options-list').selectLanguageByCode('fr')); | |
182 LanguageOptions.updateSpellCheckLanguageControls('fr'); | |
183 expectFalse($('spellcheck-language-checkbox').checked); | |
184 | |
185 // Add a preference change event listener which ensures that the preference is | |
186 // updated correctly and that 'fr' is the only thing in the dictionary object. | |
187 options.Preferences.getInstance().addEventListener('spellcheck.dictionaries', | |
188 function() { | |
189 expectTrue($('spellcheck-language-checkbox').checked); | |
190 | |
191 expectEquals(1, | |
192 registeredPrefs['spellcheck.dictionaries'].orig.value.length); | |
193 expectEquals('fr', | |
194 registeredPrefs['spellcheck.dictionaries'].orig.value[0]); | |
195 | |
196 var languages = | |
197 MultilanguagePreferenceWebUIBrowserTest.prototype.getLanguages(); | |
198 expectEquals(1, languages.length); | |
199 expectEquals('fr', languages[0]); | |
200 | |
201 expectTrue($('language-options-list').selectLanguageByCode('fr')); | |
202 testDone(); | |
203 }); | |
204 | |
205 // Click 'fr' and trigger the previously registered event listener. | |
206 $('spellcheck-language-checkbox').click(); | |
207 | |
208 }); | |
OLD | NEW |