Chromium Code Reviews| 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 |