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/' + |
| 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 }); |
OLD | NEW |