Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(130)

Side by Side Diff: chrome/test/data/webui/settings/languages_tests.js

Issue 2252323002: MD Settings: reduce complexity and overhead of Languages singleton (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@RemoveLanguageInputMethods
Patch Set: Wrong whitespace to improve diff Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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',
23 key: 'translate_blocked_languages', 23 forwardChange.bind(null, el2));
24 type: chrome.settingsPrivate.PrefType.LIST, 24 el2.addEventListener(property + '-changed',
25 value: ['en-US'], 25 forwardChange.bind(null, el1));
26 }]; 26 }
27 if (cr.isChromeOS) { 27
28 fakePrefs.push({ 28 suite('settings-languages', function() {
29 key: 'settings.language.preferred_languages', 29 function getFakePrefs() {
30 var fakePrefs = [{
31 key: 'intl.app_locale',
32 type: chrome.settingsPrivate.PrefType.STRING,
33 value: 'en-US',
34 }, {
35 key: 'intl.accept_languages',
30 type: chrome.settingsPrivate.PrefType.STRING, 36 type: chrome.settingsPrivate.PrefType.STRING,
31 value: 'en-US,sw', 37 value: 'en-US,sw',
32 }); 38 }, {
33 fakePrefs.push({ 39 key: 'spellcheck.dictionaries',
34 key: 'settings.language.preload_engines', 40 type: chrome.settingsPrivate.PrefType.LIST,
35 type: chrome.settingsPrivate.PrefType.STRING, 41 value: ['en-US'],
36 value: '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us::eng,' + 42 }, {
37 '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us:dvorak:eng', 43 key: 'translate_blocked_languages',
38 }); 44 type: chrome.settingsPrivate.PrefType.LIST,
39 fakePrefs.push({ 45 value: ['en-US'],
40 key: 'settings.language.enabled_extension_imes', 46 }];
41 type: chrome.settingsPrivate.PrefType.STRING, 47 if (cr.isChromeOS) {
42 value: '', 48 fakePrefs.push({
43 }); 49 key: 'settings.language.preferred_languages',
50 type: chrome.settingsPrivate.PrefType.STRING,
51 value: 'en-US,sw',
52 });
53 fakePrefs.push({
54 key: 'settings.language.preload_engines',
55 type: chrome.settingsPrivate.PrefType.STRING,
56 value: '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us::eng,' +
57 '_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us:dvorak:eng',
58 });
59 fakePrefs.push({
60 key: 'settings.language.enabled_extension_imes',
61 type: chrome.settingsPrivate.PrefType.STRING,
62 value: '',
63 });
64 }
65 return fakePrefs;
44 } 66 }
45 67
68 var languageHelper;
69 var languageSettingsPrivate;
70
46 suiteSetup(function() { 71 suiteSetup(function() {
47 CrSettingsPrefs.deferInitialization = true; 72 CrSettingsPrefs.deferInitialization = true;
48 settingsPrefs = document.createElement('settings-prefs'); 73 });
49 assertTrue(!!settingsPrefs); 74
50 var fakeApi = new settings.FakeSettingsPrivate(fakePrefs); 75 setup(function() {
51 settingsPrefs.initializeForTesting(fakeApi); 76 var settingsPrefs = document.createElement('settings-prefs');
77 var settingsPrivate = new settings.FakeSettingsPrivate(getFakePrefs());
78 settingsPrefs.initializeForTesting(settingsPrivate);
52 79
53 languageSettingsPrivate = new settings.FakeLanguageSettingsPrivate(); 80 languageSettingsPrivate = new settings.FakeLanguageSettingsPrivate();
54 languageSettings.languageSettingsPrivateApiForTest = 81 languageSettingsPrivate.setSettingsPrefs(settingsPrefs);
55 languageSettingsPrivate; 82 settings.languageSettingsPrivateApiForTest = languageSettingsPrivate;
56 83
84 languageHelper = document.createElement('settings-languages');
85 assertEquals(languageHelper, settings.LanguageHelperImpl.getInstance());
57 86
58 languageSettingsPrivate.setSettingsPrefs(settingsPrefs); 87 // Prefs would normally be data-bound to settings-languages.
59 LanguageHelperImpl.instance_ = undefined; 88 fakeDataBind(settingsPrefs, languageHelper, 'prefs');
60 languageHelper = LanguageHelperImpl.getInstance(); 89
61 return languageHelper.whenReady(); 90 return languageHelper.whenReady();
62 }); 91 });
63 92
64 test('languages model', function() { 93 test('languages model', function() {
65 for (var i = 0; i < languageSettingsPrivate.languages.length; 94 for (var i = 0; i < languageSettingsPrivate.languages.length;
66 i++) { 95 i++) {
67 assertEquals(languageSettingsPrivate.languages[i].code, 96 assertEquals(languageSettingsPrivate.languages[i].code,
68 languageHelper.languages.supported[i].code); 97 languageHelper.languages.supported[i].code);
69 } 98 }
70 assertEquals(2, languageHelper.languages.enabled.length); 99 assertEquals(2, languageHelper.languages.enabled.length);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 // The US Swahili keyboard should still be enabled, because it supports 180 // The US Swahili keyboard should still be enabled, because it supports
152 // English which is still enabled. 181 // English which is still enabled.
153 assertTrue(languageHelper.languages.inputMethods.enabled.some( 182 assertTrue(languageHelper.languages.inputMethods.enabled.some(
154 function(inputMethod) { 183 function(inputMethod) {
155 return inputMethod.id == swUS; 184 return inputMethod.id == swUS;
156 })); 185 }));
157 }); 186 });
158 } 187 }
159 }); 188 });
160 }); 189 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698