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

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: Reduce 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
« no previous file with comments | « chrome/test/data/webui/settings/languages_page_tests.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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', 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
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 });
OLDNEW
« no previous file with comments | « chrome/test/data/webui/settings/languages_page_tests.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698