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', function() { | 5 cr.define('settings-languages', function() { |
6 /** | 6 /** |
7 * @constructor | |
8 * @implements {settings.LanguagesBrowserProxy} | |
9 * @extends {settings.TestBrowserProxy} | |
10 */ | |
11 var TestLanguagesBrowserProxy = function() { | |
12 var methodNames = []; | |
13 if (cr.isChromeOS || cr.isWindows) | |
14 methodNames.push('getProspectiveUILanguage'); | |
15 | |
16 settings.TestBrowserProxy.call(this, methodNames); | |
17 | |
18 this.languageSettingsPrivate_ = null; | |
Dan Beam
2017/04/19 17:46:52
this.languageSettingsPrivate_ = new settings.FakeL
dpapad
2017/04/19 18:11:30
See related last comment in this file.
| |
19 this.inputMethodPrivate_ = null; | |
20 }; | |
21 | |
22 TestLanguagesBrowserProxy.prototype = { | |
23 __proto__: settings.TestBrowserProxy.prototype, | |
24 | |
25 /** @override */ | |
26 getLanguageSettingsPrivate: function() { | |
27 return this.languageSettingsPrivate_; | |
28 }, | |
29 | |
30 /** @param {!LanguagesSettingsPrivate} private */ | |
31 setLanguageSettingsPrivate: function(private) { | |
32 this.languageSettingsPrivate_ = private; | |
Dan Beam
2017/04/19 17:46:52
i would not recommend private as a var name
dpapad
2017/04/19 18:11:30
Done.
| |
33 }, | |
34 | |
35 /** @override */ | |
36 getInputMethodPrivate: function() { | |
37 return this.inputMethodPrivate_; | |
38 }, | |
39 | |
40 /** @param {!LanguagesSettingsPrivate} private */ | |
41 setInputMethodPrivate: function(private) { | |
42 this.inputMethodPrivate_ = private; | |
43 }, | |
44 }; | |
45 | |
46 if (cr.isChromeOS || cr.isWindows) { | |
47 /** @override */ | |
48 TestLanguagesBrowserProxy.prototype.getProspectiveUILanguage = | |
49 function() { | |
50 this.methodCalled('getProspectiveUILanguage'); | |
51 return Promise.resolve('en-US'); | |
52 }; | |
53 } | |
54 | |
55 /** | |
7 * Data-binds two Polymer properties using the property-changed events and | 56 * Data-binds two Polymer properties using the property-changed events and |
8 * set/notifyPath API. Useful for testing components which would normally be | 57 * set/notifyPath API. Useful for testing components which would normally be |
9 * used together. | 58 * used together. |
10 * @param {!HTMLElement} el1 | 59 * @param {!HTMLElement} el1 |
11 * @param {!HTMLElement} el2 | 60 * @param {!HTMLElement} el2 |
12 * @param {string} property | 61 * @param {string} property |
13 */ | 62 */ |
14 function fakeDataBind(el1, el2, property) { | 63 function fakeDataBind(el1, el2, property) { |
15 var forwardChange = function(el, event) { | 64 var forwardChange = function(el, event) { |
16 if (event.detail.hasOwnProperty('path')) | 65 if (event.detail.hasOwnProperty('path')) |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
67 * @param {!Array<string>} expected | 116 * @param {!Array<string>} expected |
68 */ | 117 */ |
69 function assertLanguageOrder(expected) { | 118 function assertLanguageOrder(expected) { |
70 assertEquals(expected.length, languageHelper.languages.enabled.length); | 119 assertEquals(expected.length, languageHelper.languages.enabled.length); |
71 for (var i = 0; i < expected.length; i++) { | 120 for (var i = 0; i < expected.length; i++) { |
72 assertEquals( | 121 assertEquals( |
73 expected[i], languageHelper.languages.enabled[i].language.code); | 122 expected[i], languageHelper.languages.enabled[i].language.code); |
74 } | 123 } |
75 } | 124 } |
76 | 125 |
126 /** @type {?settings.LanguagesBrowserProxy} */ | |
127 var browserProxy = null; | |
128 | |
77 var languageHelper; | 129 var languageHelper; |
78 var languageSettingsPrivate; | |
79 | 130 |
80 suiteSetup(function() { | 131 suiteSetup(function() { |
81 CrSettingsPrefs.deferInitialization = true; | 132 CrSettingsPrefs.deferInitialization = true; |
82 PolymerTest.clearBody(); | 133 PolymerTest.clearBody(); |
83 }); | 134 }); |
84 | 135 |
85 setup(function() { | 136 setup(function() { |
86 var settingsPrefs = document.createElement('settings-prefs'); | 137 var settingsPrefs = document.createElement('settings-prefs'); |
87 var settingsPrivate = new settings.FakeSettingsPrivate(getFakePrefs()); | 138 var settingsPrivate = new settings.FakeSettingsPrivate(getFakePrefs()); |
88 settingsPrefs.initialize(settingsPrivate); | 139 settingsPrefs.initialize(settingsPrivate); |
89 document.body.appendChild(settingsPrefs); | 140 document.body.appendChild(settingsPrefs); |
90 | 141 |
91 languageSettingsPrivate = new settings.FakeLanguageSettingsPrivate(); | 142 // Setup test browser proxy. |
143 browserProxy = new TestLanguagesBrowserProxy(); | |
144 settings.LanguagesBrowserProxyImpl.instance_ = browserProxy; | |
145 | |
146 // Setup fake languageSettingsPrivate API. | |
147 var languageSettingsPrivate = new settings.FakeLanguageSettingsPrivate(); | |
Dan Beam
2017/04/19 17:46:52
why not just instantiate these directly in TestLan
dpapad
2017/04/19 18:11:30
The next line calls setSettingsPrefs() which is a
Dan Beam
2017/04/19 18:31:55
i don't see that as a requirement, and am likely n
| |
92 languageSettingsPrivate.setSettingsPrefs(settingsPrefs); | 148 languageSettingsPrivate.setSettingsPrefs(settingsPrefs); |
93 settings.languageSettingsPrivateApiForTest = languageSettingsPrivate; | 149 browserProxy.setLanguageSettingsPrivate(languageSettingsPrivate); |
94 | 150 |
95 var getProspectiveUILanguageCalled = false; | 151 // Setup fake inputMethodPrivate API. |
96 registerMessageCallback('getProspectiveUILanguage', null, | 152 browserProxy.setInputMethodPrivate(new settings.FakeInputMethodPrivate()); |
97 function(callbackId) { | |
98 assertFalse(getProspectiveUILanguageCalled); | |
99 getProspectiveUILanguageCalled = true; | |
100 cr.webUIResponse(callbackId, true, 'en-US'); | |
101 }); | |
102 | 153 |
103 languageHelper = document.createElement('settings-languages'); | 154 languageHelper = document.createElement('settings-languages'); |
104 | 155 |
105 // Prefs would normally be data-bound to settings-languages. | 156 // Prefs would normally be data-bound to settings-languages. |
106 fakeDataBind(settingsPrefs, languageHelper, 'prefs'); | 157 fakeDataBind(settingsPrefs, languageHelper, 'prefs'); |
107 | 158 |
108 document.body.appendChild(languageHelper); | 159 document.body.appendChild(languageHelper); |
109 return languageHelper.whenReady().then(function() { | 160 return languageHelper.whenReady().then(function() { |
110 assertEquals( | 161 if (cr.isChromeOS || cr.isWindows) |
111 cr.isChromeOS || cr.isWindows, getProspectiveUILanguageCalled); | 162 return browserProxy.whenCalled('getProspectiveUILanguage'); |
112 }); | 163 }); |
113 }); | 164 }); |
114 | 165 |
115 test('languages model', function() { | 166 test('languages model', function() { |
167 var languageSettingsPrivate = browserProxy.getLanguageSettingsPrivate(); | |
116 for (var i = 0; i < languageSettingsPrivate.languages.length; | 168 for (var i = 0; i < languageSettingsPrivate.languages.length; |
117 i++) { | 169 i++) { |
118 assertEquals(languageSettingsPrivate.languages[i].code, | 170 assertEquals(languageSettingsPrivate.languages[i].code, |
119 languageHelper.languages.supported[i].code); | 171 languageHelper.languages.supported[i].code); |
120 } | 172 } |
121 assertLanguageOrder(['en-US', 'sw']); | 173 assertLanguageOrder(['en-US', 'sw']); |
122 assertEquals('en', languageHelper.languages.translateTarget); | 174 assertEquals('en', languageHelper.languages.translateTarget); |
123 | 175 |
124 // TODO(michaelpg): Test other aspects of the model. | 176 // TODO(michaelpg): Test other aspects of the model. |
125 }); | 177 }); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
198 // The US Swahili keyboard should still be enabled, because it supports | 250 // The US Swahili keyboard should still be enabled, because it supports |
199 // English which is still enabled. | 251 // English which is still enabled. |
200 assertTrue(languageHelper.languages.inputMethods.enabled.some( | 252 assertTrue(languageHelper.languages.inputMethods.enabled.some( |
201 function(inputMethod) { | 253 function(inputMethod) { |
202 return inputMethod.id == swUS; | 254 return inputMethod.id == swUS; |
203 })); | 255 })); |
204 }); | 256 }); |
205 } | 257 } |
206 }); | 258 }); |
207 }); | 259 }); |
OLD | NEW |