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