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

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

Issue 2402553002: MD Settings: Implementing modal popup/action menus. (Closed)
Patch Set: Address comments. Created 4 years, 2 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 /** @fileoverview Suite of tests for settings-languages-page. */ 5 /** @fileoverview Suite of tests for settings-languages-page. */
6 6
7 /** @const {string} Path to root from chrome/test/data/webui/settings/. */ 7 /** @const {string} Path to root from chrome/test/data/webui/settings/. */
8 var ROOT_PATH = '../../../../../'; 8 var ROOT_PATH = '../../../../../';
9 9
10 // Polymer BrowserTest fixture. 10 // Polymer BrowserTest fixture.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 suite('languages page', function() { 46 suite('languages page', function() {
47 testing.Test.disableAnimationsAndTransitions(); 47 testing.Test.disableAnimationsAndTransitions();
48 48
49 this.toggleAdvanced(); 49 this.toggleAdvanced();
50 var advanced = this.getPage('advanced'); 50 var advanced = this.getPage('advanced');
51 51
52 var languagesSection; 52 var languagesSection;
53 var languagesPage; 53 var languagesPage;
54 var languagesCollapse; 54 var languagesCollapse;
55 var languageHelper; 55 var languageHelper;
56 var actionMenu;
56 57
57 /** 58 /**
58 * @param {numExpected} Expected number of languages to eventually be 59 * @param {numExpected} Expected number of languages to eventually be
59 * enabled. 60 * enabled.
60 * @return {!Promise} Resolved when the number of enabled languages changes 61 * @return {!Promise} Resolved when the number of enabled languages changes
61 * to match expectations. 62 * to match expectations.
62 */ 63 */
63 function whenNumEnabledLanguagesBecomes(numExpected) { 64 function whenNumEnabledLanguagesBecomes(numExpected) {
64 assert(!!languagesPage); 65 assert(!!languagesPage);
65 return new Promise(function(resolve, reject) { 66 return new Promise(function(resolve, reject) {
(...skipping 15 matching lines...) Expand all
81 82
82 suiteSetup(function() { 83 suiteSetup(function() {
83 advanced.set('pageVisibility.languages', true); 84 advanced.set('pageVisibility.languages', true);
84 Polymer.dom.flush(); 85 Polymer.dom.flush();
85 86
86 languagesSection = assert(this.getSection(advanced, 'languages')); 87 languagesSection = assert(this.getSection(advanced, 'languages'));
87 languagesPage = assert( 88 languagesPage = assert(
88 languagesSection.querySelector('settings-languages-page')); 89 languagesSection.querySelector('settings-languages-page'));
89 languagesCollapse = languagesPage.$.languagesCollapse; 90 languagesCollapse = languagesPage.$.languagesCollapse;
90 languagesCollapse.opened = true; 91 languagesCollapse.opened = true;
92 actionMenu = languagesPage.$.menu.get();
91 93
92 languageHelper = languagesPage.languageHelper; 94 languageHelper = languagesPage.languageHelper;
93 return languageHelper.whenReady(); 95 return languageHelper.whenReady();
94 }.bind(this)); 96 }.bind(this));
95 97
96 teardown(function(done) { 98 teardown(function(done) {
99 if (actionMenu.open)
100 actionMenu.close();
101
97 // Close the section if we're in a sub-page. 102 // Close the section if we're in a sub-page.
98 if (settings.getCurrentRoute().isSubpage()) { 103 if (settings.getCurrentRoute().isSubpage()) {
99 settings.navigateTo(settings.Route.BASIC); 104 settings.navigateTo(settings.Route.BASIC);
100 setTimeout(done); 105 setTimeout(done);
101 } else { 106 } else {
102 done(); 107 done();
103 } 108 }
104 }); 109 });
105 110
106 suite('add languages dialog', function() { 111 suite('add languages dialog', function() {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 origTranslateEnabled = languageHelper.prefs.translate.enabled.value; 207 origTranslateEnabled = languageHelper.prefs.translate.enabled.value;
203 }); 208 });
204 209
205 suiteTeardown(function() { 210 suiteTeardown(function() {
206 var cur = languageHelper.prefs.translate.enabled.value; 211 var cur = languageHelper.prefs.translate.enabled.value;
207 // Restore the value of Translate. 212 // Restore the value of Translate.
208 languageHelper.setPrefValue('translate.enabled', origTranslateEnabled); 213 languageHelper.setPrefValue('translate.enabled', origTranslateEnabled);
209 cur = languageHelper.prefs.translate.enabled.value; 214 cur = languageHelper.prefs.translate.enabled.value;
210 }); 215 });
211 216
212 test('structure', function(done) { 217 test('structure', function() {
213 var languageOptionsDropdownTrigger = languagesCollapse.querySelector( 218 var languageOptionsDropdownTrigger = languagesCollapse.querySelector(
214 'paper-icon-button'); 219 'paper-icon-button');
215 assertTrue(!!languageOptionsDropdownTrigger); 220 assertTrue(!!languageOptionsDropdownTrigger);
216 MockInteractions.tap(languageOptionsDropdownTrigger); 221 MockInteractions.tap(languageOptionsDropdownTrigger);
217 var languageMenu = assert(languagesPage.$$('cr-shared-menu')); 222 assertTrue(actionMenu.open);
218 223
219 listenOnce(languageMenu, 'iron-overlay-opened', function() { 224 // Enable Translate so the menu always shows the Translate checkbox.
220 assertTrue(languageMenu.menuOpen); 225 languageHelper.setPrefValue('translate.enabled', true);
221 226
222 // Enable Translate so the menu always shows the Translate checkbox. 227 var separator = actionMenu.querySelector('hr');
223 languageHelper.setPrefValue('translate.enabled', true); 228 assertEquals(1, separator.offsetHeight);
224 229
225 var separator = languageMenu.querySelector('hr'); 230 // Disable Translate. On platforms that can't change the UI language,
226 assertEquals(1, separator.offsetHeight); 231 // this hides all the checkboxes, so the separator isn't needed.
227 232 // Chrome OS and Windows still show a checkbox and thus the separator.
228 // Disable Translate. On platforms that can't change the UI language, 233 languageHelper.setPrefValue('translate.enabled', false);
229 // this hides all the checkboxes, so the separator isn't needed. 234 assertEquals(
230 // Chrome OS and Windows still show a checkbox and thus the separator. 235 cr.isChromeOS || cr.isWindows ? 1 : 0, separator.offsetHeight);
231 languageHelper.setPrefValue('translate.enabled', false);
232 if (cr.isChromeOS || cr.isWindows)
233 assertEquals(1, separator.offsetHeight);
234 else
235 assertEquals(0, separator.offsetHeight);
236
237 MockInteractions.tap(languageOptionsDropdownTrigger);
238 assertFalse(languageMenu.menuOpen);
239 done();
240 });
241 }); 236 });
242 237
243 test('remove language', function() { 238 test('remove language', function() {
244 var numEnabled = languagesPage.languages.enabled.length; 239 var numEnabled = languagesPage.languages.enabled.length;
245 240
246 // Enabled a language which we can then disable. 241 // Enabled a language which we can then disable.
247 var newLanguage = getAvailableLanguage(); 242 var newLanguage = getAvailableLanguage();
248 languageHelper.enableLanguage(newLanguage.code); 243 languageHelper.enableLanguage(newLanguage.code);
249 244
250 // Wait for the language to be enabled. 245 // Wait for the language to be enabled.
251 return whenNumEnabledLanguagesBecomes(numEnabled + 1).then(function() { 246 return whenNumEnabledLanguagesBecomes(numEnabled + 1).then(function() {
252 // Populate the dom-repeat. 247 // Populate the dom-repeat.
253 Polymer.dom.flush(); 248 Polymer.dom.flush();
254 249
255 // Find the new language item. 250 // Find the new language item.
256 var items = languagesCollapse.querySelectorAll('.list-item'); 251 var items = languagesCollapse.querySelectorAll('.list-item');
257 var domRepeat = assert( 252 var domRepeat = assert(
258 languagesCollapse.querySelector('template[is="dom-repeat"]')); 253 languagesCollapse.querySelector('template[is="dom-repeat"]'));
259 var item = Array.from(items).find(function(el) { 254 var item = Array.from(items).find(function(el) {
260 return domRepeat.itemForElement(el) && 255 return domRepeat.itemForElement(el) &&
261 domRepeat.itemForElement(el).language == newLanguage; 256 domRepeat.itemForElement(el).language == newLanguage;
262 }); 257 });
263 258
264 // Open the menu and select Remove. 259 // Open the menu and select Remove.
265 MockInteractions.tap(item.querySelector('paper-icon-button')); 260 MockInteractions.tap(item.querySelector('paper-icon-button'));
266 261
267 var languageMenu = assert(languagesPage.$$('cr-shared-menu')); 262 assertTrue(actionMenu.open);
268 assertTrue(languageMenu.menuOpen); 263 var removeMenuItem = assert(actionMenu.querySelector(
269 var removeMenuItem = assert(languageMenu.querySelector(
270 '.dropdown-item:last-child')); 264 '.dropdown-item:last-child'));
271 assertFalse(removeMenuItem.disabled); 265 assertFalse(removeMenuItem.disabled);
272 MockInteractions.tap(removeMenuItem); 266 MockInteractions.tap(removeMenuItem);
273 assertFalse(languageMenu.menuOpen); 267 assertFalse(actionMenu.open);
274 268
275 // We should go back down to the original number of enabled languages. 269 // We should go back down to the original number of enabled languages.
276 return whenNumEnabledLanguagesBecomes(numEnabled).then(function() { 270 return whenNumEnabledLanguagesBecomes(numEnabled);
277 assertFalse(languageHelper.isLanguageEnabled(newLanguage.code)); 271 }).then(function() {
278 }); 272 assertFalse(languageHelper.isLanguageEnabled(newLanguage.code));
279 }); 273 });
280 }); 274 });
281 }); 275 });
282 276
283 test('manage input methods', function() { 277 test('manage input methods', function() {
284 var inputMethodsCollapse = languagesPage.$.inputMethodsCollapse; 278 var inputMethodsCollapse = languagesPage.$.inputMethodsCollapse;
285 var inputMethodSettingsExist = !!inputMethodsCollapse; 279 var inputMethodSettingsExist = !!inputMethodsCollapse;
286 if (cr.isChromeOS) { 280 if (cr.isChromeOS) {
287 assertTrue(inputMethodSettingsExist); 281 assertTrue(inputMethodSettingsExist);
288 var manageInputMethodsButton = 282 var manageInputMethodsButton =
(...skipping 17 matching lines...) Expand all
306 assertTrue(!!languagesPage.$$('settings-edit-dictionary-page')); 300 assertTrue(!!languagesPage.$$('settings-edit-dictionary-page'));
307 } 301 }
308 }); 302 });
309 }.bind(this)); 303 }.bind(this));
310 304
311 // TODO(michaelpg): Test more aspects of the languages UI. 305 // TODO(michaelpg): Test more aspects of the languages UI.
312 306
313 // Run all registered tests. 307 // Run all registered tests.
314 mocha.run(); 308 mocha.run();
315 }); 309 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698