| OLD | NEW |
| (Empty) |
| 1 // Copyright 2016 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 cr.define('settings_languages_page', function() { | |
| 6 suite('settings-languages-singleton', function() { | |
| 7 var languageSettingsPrivate; | |
| 8 var languageHelper; | |
| 9 var settingsPrefs; | |
| 10 var fakePrefs = [{ | |
| 11 key: 'intl.app_locale', | |
| 12 type: chrome.settingsPrivate.PrefType.STRING, | |
| 13 value: 'en-US', | |
| 14 }, { | |
| 15 key: 'intl.accept_languages', | |
| 16 type: chrome.settingsPrivate.PrefType.STRING, | |
| 17 value: 'en-US,sw', | |
| 18 }, { | |
| 19 key: 'spellcheck.dictionaries', | |
| 20 type: chrome.settingsPrivate.PrefType.LIST, | |
| 21 value: ['en-US'], | |
| 22 }, { | |
| 23 key: 'translate_blocked_languages', | |
| 24 type: chrome.settingsPrivate.PrefType.LIST, | |
| 25 value: ['en-US'], | |
| 26 }]; | |
| 27 if (cr.isChromeOS) { | |
| 28 fakePrefs.push({ | |
| 29 key: 'settings.language.preferred_languages', | |
| 30 type: chrome.settingsPrivate.PrefType.STRING, | |
| 31 value: 'en-US,sw', | |
| 32 }); | |
| 33 fakePrefs.push({ | |
| 34 key: 'settings.language.preload_engines', | |
| 35 type: chrome.settingsPrivate.PrefType.STRING, | |
| 36 value: '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us::eng,' + | |
| 37 '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us:dvorak:eng', | |
| 38 }); | |
| 39 fakePrefs.push({ | |
| 40 key: 'settings.language.enabled_extension_imes', | |
| 41 type: chrome.settingsPrivate.PrefType.STRING, | |
| 42 value: '', | |
| 43 }); | |
| 44 } | |
| 45 | |
| 46 suiteSetup(function() { | |
| 47 CrSettingsPrefs.deferInitialization = true; | |
| 48 settingsPrefs = document.createElement('settings-prefs'); | |
| 49 assertTrue(!!settingsPrefs); | |
| 50 var fakeApi = new settings.FakeSettingsPrivate(fakePrefs); | |
| 51 settingsPrefs.initializeForTesting(fakeApi); | |
| 52 | |
| 53 languageSettingsPrivate = new settings.FakeLanguageSettingsPrivate(); | |
| 54 languageSettings.languageSettingsPrivateApiForTest = | |
| 55 languageSettingsPrivate; | |
| 56 | |
| 57 | |
| 58 languageSettingsPrivate.setSettingsPrefs(settingsPrefs); | |
| 59 LanguageHelperImpl.instance_ = undefined; | |
| 60 languageHelper = LanguageHelperImpl.getInstance(); | |
| 61 return languageHelper.whenReady(); | |
| 62 }); | |
| 63 | |
| 64 test('languages model', function() { | |
| 65 for (var i = 0; i < languageSettingsPrivate.languages.length; | |
| 66 i++) { | |
| 67 assertEquals(languageSettingsPrivate.languages[i].code, | |
| 68 languageHelper.languages.supported[i].code); | |
| 69 } | |
| 70 assertEquals(2, languageHelper.languages.enabled.length); | |
| 71 assertEquals('en-US', | |
| 72 languageHelper.languages.enabled[0].language.code); | |
| 73 assertEquals('sw', | |
| 74 languageHelper.languages.enabled[1].language.code); | |
| 75 assertEquals('en', languageHelper.languages.translateTarget); | |
| 76 | |
| 77 // TODO(michaelpg): Test other aspects of the model. | |
| 78 }); | |
| 79 | |
| 80 test('modifying languages', function() { | |
| 81 assertTrue(languageHelper.isLanguageEnabled('en-US')); | |
| 82 assertTrue(languageHelper.isLanguageEnabled('sw')); | |
| 83 assertFalse(languageHelper.isLanguageEnabled('en-CA')); | |
| 84 | |
| 85 languageHelper.enableLanguage('en-CA'); | |
| 86 assertTrue(languageHelper.isLanguageEnabled('en-CA')); | |
| 87 languageHelper.disableLanguage('sw'); | |
| 88 assertFalse(languageHelper.isLanguageEnabled('sw')); | |
| 89 | |
| 90 // TODO(michaelpg): Test other modifications. | |
| 91 }); | |
| 92 | |
| 93 test('reorder languages', function() { | |
| 94 languageHelper.enableLanguage('sw'); | |
| 95 assertEquals('en-US', languageHelper.languages.enabled[0].language.code); | |
| 96 assertEquals('en-CA', languageHelper.languages.enabled[1].language.code); | |
| 97 assertEquals('sw', languageHelper.languages.enabled[2].language.code); | |
| 98 | |
| 99 // Can move a language up. | |
| 100 languageHelper.moveLanguage('sw', -1); | |
| 101 assertEquals('en-US', languageHelper.languages.enabled[0].language.code); | |
| 102 assertEquals('sw', languageHelper.languages.enabled[1].language.code); | |
| 103 assertEquals('en-CA', languageHelper.languages.enabled[2].language.code); | |
| 104 | |
| 105 // Can move a language down. | |
| 106 languageHelper.moveLanguage('en-US', 1); | |
| 107 assertEquals('sw', languageHelper.languages.enabled[0].language.code); | |
| 108 assertEquals('en-US', languageHelper.languages.enabled[1].language.code); | |
| 109 assertEquals('en-CA', languageHelper.languages.enabled[2].language.code); | |
| 110 | |
| 111 // Moving the first language up has no effect. | |
| 112 languageHelper.moveLanguage('sw', -1); | |
| 113 assertEquals('sw', languageHelper.languages.enabled[0].language.code); | |
| 114 assertEquals('en-US', languageHelper.languages.enabled[1].language.code); | |
| 115 assertEquals('en-CA', languageHelper.languages.enabled[2].language.code); | |
| 116 | |
| 117 // Moving the last language down has no effect. | |
| 118 languageHelper.moveLanguage('en-CA', 1); | |
| 119 assertEquals('sw', languageHelper.languages.enabled[0].language.code); | |
| 120 assertEquals('en-US', languageHelper.languages.enabled[1].language.code); | |
| 121 assertEquals('en-CA', languageHelper.languages.enabled[2].language.code); | |
| 122 }); | |
| 123 | |
| 124 if (cr.isChromeOS) { | |
| 125 test('modifying input methods', function() { | |
| 126 assertEquals(2, languageHelper.languages.inputMethods.enabled.length); | |
| 127 var inputMethods = languageHelper.getInputMethodsForLanguage('en-US'); | |
| 128 assertEquals(3, inputMethods.length); | |
| 129 | |
| 130 // We can remove one input method. | |
| 131 var dvorak = | |
| 132 '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us:dvorak:eng'; | |
| 133 languageHelper.removeInputMethod(dvorak); | |
| 134 assertEquals(1, languageHelper.languages.inputMethods.enabled.length); | |
| 135 | |
| 136 // Enable Swahili. | |
| 137 languageHelper.enableLanguage('sw'); | |
| 138 assertEquals(1, languageHelper.languages.inputMethods.enabled.length); | |
| 139 | |
| 140 // Add input methods for Swahili. | |
| 141 var sw = '_comp_ime_abcdefghijklmnopqrstuvwxyzabcdefxkb:sw:sw'; | |
| 142 var swUS = '_comp_ime_abcdefghijklmnopqrstuvwxyzabcdefxkb:us:sw'; | |
| 143 languageHelper.addInputMethod(sw); | |
| 144 languageHelper.addInputMethod(swUS); | |
| 145 assertEquals(3, languageHelper.languages.inputMethods.enabled.length); | |
| 146 | |
| 147 // Disable Swahili. The Swahili-only keyboard should be removed. | |
| 148 languageHelper.disableLanguage('sw'); | |
| 149 assertEquals(2, languageHelper.languages.inputMethods.enabled.length); | |
| 150 | |
| 151 // The US Swahili keyboard should still be enabled, because it supports | |
| 152 // English which is still enabled. | |
| 153 assertTrue(languageHelper.languages.inputMethods.enabled.some( | |
| 154 function(inputMethod) { | |
| 155 return inputMethod.id == swUS; | |
| 156 })); | |
| 157 }); | |
| 158 } | |
| 159 }); | |
| 160 }); | |
| OLD | NEW |