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

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: Fixed nits. 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_);
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 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698