| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 cr.define('settings_languages_page', function() { | 5 cr.define('settings-languages', function() { |
| 6 suite('settings-languages-singleton', function() { | 6 /** |
| 7 var languageSettingsPrivate; | 7 * Data-binds two Polymer properties using the property-changed events and |
| 8 var languageHelper; | 8 * set/notifyPath API. Useful for testing components which would normally be |
| 9 var settingsPrefs; | 9 * used together. |
| 10 var fakePrefs = [{ | 10 * @param {!HTMLElement} el1 |
| 11 key: 'intl.app_locale', | 11 * @param {!HTMLElement} el2 |
| 12 type: chrome.settingsPrivate.PrefType.STRING, | 12 * @param {string} property |
| 13 value: 'en-US', | 13 */ |
| 14 }, { | 14 function fakeDataBind(el1, el2, property) { |
| 15 key: 'intl.accept_languages', | 15 var forwardChange = function(el, event) { |
| 16 type: chrome.settingsPrivate.PrefType.STRING, | 16 if (event.detail.hasOwnProperty('path')) |
| 17 value: 'en-US,sw', | 17 el.notifyPath(event.detail.path, event.detail.value); |
| 18 }, { | 18 else |
| 19 key: 'spellcheck.dictionaries', | 19 el.set(property, event.detail.value); |
| 20 type: chrome.settingsPrivate.PrefType.LIST, | 20 }; |
| 21 value: ['en-US'], | 21 // Add the listeners symmetrically. Polymer will prevent recursion. |
| 22 }, { | 22 el1.addEventListener(property + '-changed', forwardChange.bind(null, el2)); |
| 23 key: 'translate_blocked_languages', | 23 el2.addEventListener(property + '-changed', forwardChange.bind(null, el1)); |
| 24 type: chrome.settingsPrivate.PrefType.LIST, | 24 } |
| 25 value: ['en-US'], | 25 |
| 26 }]; | 26 suite('settings-languages', function() { |
| 27 if (cr.isChromeOS) { | 27 function getFakePrefs() { |
| 28 fakePrefs.push({ | 28 var fakePrefs = [{ |
| 29 key: 'settings.language.preferred_languages', | 29 key: 'intl.app_locale', |
| 30 type: chrome.settingsPrivate.PrefType.STRING, |
| 31 value: 'en-US', |
| 32 }, { |
| 33 key: 'intl.accept_languages', |
| 30 type: chrome.settingsPrivate.PrefType.STRING, | 34 type: chrome.settingsPrivate.PrefType.STRING, |
| 31 value: 'en-US,sw', | 35 value: 'en-US,sw', |
| 32 }); | 36 }, { |
| 33 fakePrefs.push({ | 37 key: 'spellcheck.dictionaries', |
| 34 key: 'settings.language.preload_engines', | 38 type: chrome.settingsPrivate.PrefType.LIST, |
| 35 type: chrome.settingsPrivate.PrefType.STRING, | 39 value: ['en-US'], |
| 36 value: '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us::eng,' + | 40 }, { |
| 37 '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us:dvorak:eng', | 41 key: 'translate_blocked_languages', |
| 38 }); | 42 type: chrome.settingsPrivate.PrefType.LIST, |
| 39 fakePrefs.push({ | 43 value: ['en-US'], |
| 40 key: 'settings.language.enabled_extension_imes', | 44 }]; |
| 41 type: chrome.settingsPrivate.PrefType.STRING, | 45 if (cr.isChromeOS) { |
| 42 value: '', | 46 fakePrefs.push({ |
| 43 }); | 47 key: 'settings.language.preferred_languages', |
| 48 type: chrome.settingsPrivate.PrefType.STRING, |
| 49 value: 'en-US,sw', |
| 50 }); |
| 51 fakePrefs.push({ |
| 52 key: 'settings.language.preload_engines', |
| 53 type: chrome.settingsPrivate.PrefType.STRING, |
| 54 value: '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us::eng,' + |
| 55 '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us:dvorak:eng', |
| 56 }); |
| 57 fakePrefs.push({ |
| 58 key: 'settings.language.enabled_extension_imes', |
| 59 type: chrome.settingsPrivate.PrefType.STRING, |
| 60 value: '', |
| 61 }); |
| 62 } |
| 63 return fakePrefs; |
| 44 } | 64 } |
| 45 | 65 |
| 66 var languageHelper; |
| 67 var languageSettingsPrivate; |
| 68 |
| 46 suiteSetup(function() { | 69 suiteSetup(function() { |
| 47 CrSettingsPrefs.deferInitialization = true; | 70 CrSettingsPrefs.deferInitialization = true; |
| 48 settingsPrefs = document.createElement('settings-prefs'); | 71 }); |
| 49 assertTrue(!!settingsPrefs); | 72 |
| 50 var fakeApi = new settings.FakeSettingsPrivate(fakePrefs); | 73 setup(function() { |
| 51 settingsPrefs.initializeForTesting(fakeApi); | 74 var settingsPrefs = document.createElement('settings-prefs'); |
| 75 var settingsPrivate = new settings.FakeSettingsPrivate(getFakePrefs()); |
| 76 settingsPrefs.initializeForTesting(settingsPrivate); |
| 52 | 77 |
| 53 languageSettingsPrivate = new settings.FakeLanguageSettingsPrivate(); | 78 languageSettingsPrivate = new settings.FakeLanguageSettingsPrivate(); |
| 54 languageSettings.languageSettingsPrivateApiForTest = | 79 languageSettingsPrivate.setSettingsPrefs(settingsPrefs); |
| 55 languageSettingsPrivate; | 80 settings.languageSettingsPrivateApiForTest = languageSettingsPrivate; |
| 56 | 81 |
| 82 languageHelper = document.createElement('settings-languages'); |
| 57 | 83 |
| 58 languageSettingsPrivate.setSettingsPrefs(settingsPrefs); | 84 // Prefs would normally be data-bound to settings-languages. |
| 59 LanguageHelperImpl.instance_ = undefined; | 85 fakeDataBind(settingsPrefs, languageHelper, 'prefs'); |
| 60 languageHelper = LanguageHelperImpl.getInstance(); | 86 |
| 61 return languageHelper.whenReady(); | 87 return languageHelper.whenReady(); |
| 62 }); | 88 }); |
| 63 | 89 |
| 64 test('languages model', function() { | 90 test('languages model', function() { |
| 65 for (var i = 0; i < languageSettingsPrivate.languages.length; | 91 for (var i = 0; i < languageSettingsPrivate.languages.length; |
| 66 i++) { | 92 i++) { |
| 67 assertEquals(languageSettingsPrivate.languages[i].code, | 93 assertEquals(languageSettingsPrivate.languages[i].code, |
| 68 languageHelper.languages.supported[i].code); | 94 languageHelper.languages.supported[i].code); |
| 69 } | 95 } |
| 70 assertEquals(2, languageHelper.languages.enabled.length); | 96 assertEquals(2, languageHelper.languages.enabled.length); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 // The US Swahili keyboard should still be enabled, because it supports | 177 // The US Swahili keyboard should still be enabled, because it supports |
| 152 // English which is still enabled. | 178 // English which is still enabled. |
| 153 assertTrue(languageHelper.languages.inputMethods.enabled.some( | 179 assertTrue(languageHelper.languages.inputMethods.enabled.some( |
| 154 function(inputMethod) { | 180 function(inputMethod) { |
| 155 return inputMethod.id == swUS; | 181 return inputMethod.id == swUS; |
| 156 })); | 182 })); |
| 157 }); | 183 }); |
| 158 } | 184 } |
| 159 }); | 185 }); |
| 160 }); | 186 }); |
| OLD | NEW |