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

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 and presubmit warnings. 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/' +
6 'multilanguage_options_browsertest.h"');
7
8 /**
9 * Test C++ fixture for Language Options WebUI testing.
10 * @constructor
11 * @extends {testing.Test}
12 */
13 function MultilanguageOptionsWebUIBrowserTest() {}
14
15 MultilanguageOptionsWebUIBrowserTest.prototype = {
16 __proto__: testing.Test.prototype,
17
18 /** @override */
19 browsePreload: 'chrome://settings-frame/languages',
20
21 /** @override */
22 typedefCppFixture: 'MultilanguageOptionsBrowserTest',
23
24 /** @override */
25 accessibilityIssuesAreErrors: true,
26
27 /** @param {string} expected Sorted currently selected languages. */
28 expectCurrentlySelected: function(expected) {
29 var languages = LanguageOptions.getInstance().spellCheckLanguages_;
30 expectEquals(expected, Object.keys(languages).sort().join());
31 },
32
33 /** @override */
34 setUp: function() {
35 testing.Test.prototype.setUp.call(this);
36
37 assertTrue(loadTimeData.getBoolean('enableMultilingualSpellChecker'));
38 assertFalse(cr.isMac);
39 expectTrue($('spellcheck-language-button').hidden);
40 this.expectCurrentlySelected('fr');
41 },
42 };
43
44 // Test that opening language options has the correct location.
45 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'TestOpenLanguageOptions',
46 function() {
47 expectEquals('chrome://settings-frame/languages', document.location.href);
48 });
49
50 // Verify that the option to enable the spelling service is hidden when
51 // multilingual spellchecking is enabled.
52 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'HideSpellingServiceCheckbox',
53 function() {
54 assertTrue(loadTimeData.getBoolean('enableMultilingualSpellChecker'));
55 expectTrue($('spelling-enabled-container').hidden);
56 });
57
58 // Test that only certain languages can be selected and used for spellchecking.
59 // prefs::kLanguagePreferredLanguages/prefs::kAcceptLanguages is set to
60 // 'fr,es,de,en' and prefs::kSpellCheckDictionaries is just 'fr'
61 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'ChangeSpellcheckLanguages',
62 function() {
63 expectTrue($('language-options-list').selectLanguageByCode('es'));
64 expectFalse($('spellcheck-language-checkbox').checked, 'es');
65
66 // Click 'es' and ensure that it gets checked and 'fr' stays checked.
67 $('spellcheck-language-checkbox').click();
68 expectTrue($('spellcheck-language-checkbox').checked, 'es');
69 expectTrue($('language-options-list').selectLanguageByCode('fr'));
70 expectTrue($('spellcheck-language-checkbox').checked, 'fr');
71 this.expectCurrentlySelected('es,fr');
72
73 // Click 'fr' and ensure that it gets unchecked and 'es' stays checked.
74 $('spellcheck-language-checkbox').click();
75 expectFalse($('spellcheck-language-checkbox').checked, 'fr');
76 $('language-options-list').selectLanguageByCode('es');
77 expectTrue($('spellcheck-language-checkbox').checked, 'es');
78 this.expectCurrentlySelected('es');
79 });
80
81 // Make sure 'am' cannot be selected as a language and 'fr' stays selected.
82 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'NotAcceptLanguage', function() {
83 expectFalse($('language-options-list').selectLanguageByCode('am'));
84 expectTrue($('language-options-list').selectLanguageByCode('fr'));
85 expectTrue($('spellcheck-language-checkbox').checked, 'fr');
86 this.expectCurrentlySelected('fr');
87 });
88
89 // Make sure 'en' cannot be used as a language and 'fr' stays selected.
90 TEST_F('MultilanguageOptionsWebUIBrowserTest', 'UnusableLanguage', function() {
91 expectTrue($('language-options-list').selectLanguageByCode('en'));
92 expectTrue($('spellcheck-language-checkbox-container').hidden);
93 expectFalse($('spellcheck-language-checkbox').checked, 'en');
94 this.expectCurrentlySelected('fr');
95 });
96
97 /**
98 * Test C++ fixture for Language Options WebUI testing.
99 * @constructor
100 * @extends {MultilanguageOptionsWebUIBrowserTest}
101 */
102 function MultilanguagePreferenceWebUIBrowserTest() {}
103
104 MultilanguagePreferenceWebUIBrowserTest.prototype = {
105 __proto__: MultilanguageOptionsWebUIBrowserTest.prototype,
106
107 /** @override */
108 testGenPreamble: function() {
109 GEN('ClearSpellcheckDictionaries();');
110 },
111
112 /** @override */
113 isAsync: true,
114
115 /**
116 * @param {string} expected Sorted languages in the kSpellCheckDictionaries
117 * preference.
118 */
119 expectRegisteredDictionariesPref: function(expected) {
120 var registeredPrefs =
121 options.Preferences.getInstance().registeredPreferences_;
122 expectEquals(expected,
123 registeredPrefs['spellcheck.dictionaries'].orig.value.sort().join());
124 },
125
126 /** @override */
127 setUp: function() {
128 testing.Test.prototype.setUp.call(this);
129
130 assertTrue(loadTimeData.getBoolean('enableMultilingualSpellChecker'));
131 assertFalse(cr.isMac);
132 expectTrue($('spellcheck-language-button').hidden);
133 this.expectCurrentlySelected('');
134 this.expectRegisteredDictionariesPref('');
135 },
136 };
137
138 // Make sure the case where no languages are selected is handled properly.
139 TEST_F('MultilanguagePreferenceWebUIBrowserTest', 'BlankSpellcheckLanguges',
140 function() {
141 expectTrue($('language-options-list').selectLanguageByCode('fr'));
142 expectFalse($('spellcheck-language-checkbox').checked, 'fr');
143
144 // Add a preference change event listener which ensures that the preference is
145 // updated correctly and that 'fr' is the only thing in the dictionary object.
146 var prefs = options.Preferences.getInstance();
147 prefs.addEventListener('spellcheck.dictionaries', function() {
148 expectTrue($('spellcheck-language-checkbox').checked, 'fr');
149 this.expectRegisteredDictionariesPref('fr');
150 this.expectCurrentlySelected('fr');
151 testDone();
152 }.bind(this));
153
154 // Click 'fr' and trigger the previously registered event listener.
155 $('spellcheck-language-checkbox').click();
156 });
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/options/multilanguage_options_browsertest.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698