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

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

Issue 2277633003: Use one instance of language settings detail menu for all languages (Closed)
Patch Set: Fix test Created 4 years, 3 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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 // Runs languages page tests. 44 // Runs languages page tests.
45 TEST_F('SettingsLanguagesPageBrowserTest', 'MAYBE_LanguagesPage', function() { 45 TEST_F('SettingsLanguagesPageBrowserTest', 'MAYBE_LanguagesPage', function() {
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 languageHelper; 55 var languageHelper;
55 56
56 /** 57 /**
57 * @param {numExpected} Expected number of languages to eventually be 58 * @param {numExpected} Expected number of languages to eventually be
58 * enabled. 59 * enabled.
59 * @return {!Promise} Resolved when the number of enabled languages changes 60 * @return {!Promise} Resolved when the number of enabled languages changes
60 * to match expectations. 61 * to match expectations.
61 */ 62 */
62 function whenNumEnabledLanguagesBecomes(numExpected) { 63 function whenNumEnabledLanguagesBecomes(numExpected) {
63 assert(!!languagesPage); 64 assert(!!languagesPage);
(...skipping 11 matching lines...) Expand all
75 function getAvailableLanguage() { 76 function getAvailableLanguage() {
76 return languagesPage.languages.supported.find(function(language) { 77 return languagesPage.languages.supported.find(function(language) {
77 return !languageHelper.isLanguageEnabled(language.code); 78 return !languageHelper.isLanguageEnabled(language.code);
78 }); 79 });
79 } 80 }
80 81
81 suiteSetup(function() { 82 suiteSetup(function() {
82 advanced.set('pageVisibility.languages', true); 83 advanced.set('pageVisibility.languages', true);
83 Polymer.dom.flush(); 84 Polymer.dom.flush();
84 85
85 languagesSection = this.getSection(advanced, 'languages'); 86 languagesSection = assert(this.getSection(advanced, 'languages'));
86 assertTrue(!!languagesSection); 87 languagesPage = assert(
87 languagesPage = languagesSection.querySelector('settings-languages-page'); 88 languagesSection.querySelector('settings-languages-page'));
88 assertTrue(!!languagesPage); 89 languagesCollapse = languagesPage.$.languagesCollapse;
89 90
90 languageHelper = languagesPage.languageHelper; 91 languageHelper = languagesPage.languageHelper;
91 return languageHelper.whenReady(); 92 return languageHelper.whenReady();
92 }.bind(this)); 93 }.bind(this));
93 94
94 teardown(function(done) { 95 teardown(function(done) {
95 // Close the section if we're in a sub-page. 96 // Close the section if we're in a sub-page.
96 if (settings.getCurrentRoute().isSubpage()) { 97 if (settings.getCurrentRoute().isSubpage()) {
97 settings.navigateTo(settings.Route.BASIC); 98 settings.navigateTo(settings.Route.BASIC);
98 setTimeout(done); 99 setTimeout(done);
99 } else { 100 } else {
100 done(); 101 done();
101 } 102 }
102 }); 103 });
103 104
104 suite('add languages dialog', function() { 105 suite('add languages dialog', function() {
105 var dialog; 106 var dialog;
106 var dialogItems; 107 var dialogItems;
107 var cancelButton; 108 var cancelButton;
108 var actionButton; 109 var actionButton;
109 110
110 setup(function(done) { 111 setup(function(done) {
111 var addLanguagesButton = languagesPage.$.languagesCollapse 112 var addLanguagesButton =
112 .querySelector('.list-button:last-of-type'); 113 languagesCollapse.querySelector('.list-button:last-of-type');
113 MockInteractions.tap(addLanguagesButton); 114 MockInteractions.tap(addLanguagesButton);
114 115
115 // The page stamps the dialog and registers listeners asynchronously. 116 // The page stamps the dialog and registers listeners asynchronously.
116 Polymer.Base.async(function() { 117 Polymer.Base.async(function() {
117 dialog = languagesPage.$$('settings-add-languages-dialog'); 118 dialog = languagesPage.$$('settings-add-languages-dialog');
118 assertTrue(!!dialog); 119 assertTrue(!!dialog);
119 120
120 actionButton = assert(dialog.$$('.action-button')); 121 actionButton = assert(dialog.$$('.action-button'));
121 cancelButton = assert(dialog.$$('.cancel-button')); 122 cancelButton = assert(dialog.$$('.cancel-button'));
122 123
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 185
185 // The action button should close and remove the dialog, enabling the 186 // The action button should close and remove the dialog, enabling the
186 // checked languages. 187 // checked languages.
187 MockInteractions.tap(actionButton); 188 MockInteractions.tap(actionButton);
188 189
189 // Wait for the languages to be enabled by the browser. 190 // Wait for the languages to be enabled by the browser.
190 return whenNumEnabledLanguagesBecomes(numEnabled + 2); 191 return whenNumEnabledLanguagesBecomes(numEnabled + 2);
191 }); 192 });
192 }); 193 });
193 194
194 test('Should not set UI language', function() { 195 test('should not set UI language', function() {
195 var languagesCollapse = languagesPage.$.languagesCollapse;
196 var languageOptionsDropdownTrigger = languagesCollapse.querySelector( 196 var languageOptionsDropdownTrigger = languagesCollapse.querySelector(
197 'paper-icon-button'); 197 'paper-icon-button');
198 assertTrue(!!languageOptionsDropdownTrigger); 198 assertTrue(!!languageOptionsDropdownTrigger);
199 199
200 // This shouldn't get called. 200 // This shouldn't get called.
201 languageHelper.setUILanguage = assertNotReached; 201 languageHelper.setUILanguage = assertNotReached;
202 202
203 // Tap the menu trigger twice to open and close the menu.
203 MockInteractions.tap(languageOptionsDropdownTrigger); 204 MockInteractions.tap(languageOptionsDropdownTrigger);
205 MockInteractions.tap(languageOptionsDropdownTrigger);
206
207 languageHelper.setUILanguage = languageHelper.__proto__.setUILanguage;
204 }); 208 });
205 209
206 test('remove language', function() { 210 test('remove language', function() {
207 var numEnabled = languagesPage.languages.enabled.length; 211 var numEnabled = languagesPage.languages.enabled.length;
208 212
209 // Enabled a language which we can then disable. 213 // Enabled a language which we can then disable.
210 var newLanguage = getAvailableLanguage(); 214 var newLanguage = getAvailableLanguage();
211 languageHelper.enableLanguage(newLanguage.code); 215 languageHelper.enableLanguage(newLanguage.code);
212 216
213 // Wait for the language to be enabled. 217 // Wait for the language to be enabled.
214 return whenNumEnabledLanguagesBecomes(numEnabled + 1).then(function() { 218 return whenNumEnabledLanguagesBecomes(numEnabled + 1).then(function() {
215 // Populate the dom-repeat. 219 // Populate the dom-repeat.
216 Polymer.dom.flush(); 220 Polymer.dom.flush();
217 221
218 // Find the new language item. 222 // Find the new language item.
219 var languagesCollapse = languagesPage.$.languagesCollapse;
220 var items = languagesCollapse.querySelectorAll('.list-item'); 223 var items = languagesCollapse.querySelectorAll('.list-item');
221 var domRepeat = assert( 224 var domRepeat = assert(
222 languagesCollapse.querySelector('template[is="dom-repeat"]')); 225 languagesCollapse.querySelector('template[is="dom-repeat"]'));
223 var item = Array.from(items).find(function(el) { 226 var item = Array.from(items).find(function(el) {
224 return domRepeat.itemForElement(el) && 227 return domRepeat.itemForElement(el) &&
225 domRepeat.itemForElement(el).language == newLanguage; 228 domRepeat.itemForElement(el).language == newLanguage;
226 }); 229 });
227 230
228 // Open the menu and select Remove. 231 // Open the menu and select Remove.
229 MockInteractions.tap(item.querySelector('paper-icon-button')); 232 MockInteractions.tap(item.querySelector('paper-icon-button'));
230 var removeMenuItem = assert(item.querySelector( 233
231 '.dropdown-content .dropdown-item:last-of-type')); 234 var languageMenu = assert(languagesPage.$$('cr-shared-menu'));
235 assertTrue(languageMenu.menuOpen);
236 var removeMenuItem = assert(languageMenu.querySelector(
237 '.dropdown-item:last-of-type'));
232 assertFalse(removeMenuItem.disabled); 238 assertFalse(removeMenuItem.disabled);
233 MockInteractions.tap(removeMenuItem); 239 MockInteractions.tap(removeMenuItem);
240 assertFalse(languageMenu.menuOpen);
234 241
235 // We should go back down to the original number of enabled languages. 242 // We should go back down to the original number of enabled languages.
236 return whenNumEnabledLanguagesBecomes(numEnabled).then(function() { 243 return whenNumEnabledLanguagesBecomes(numEnabled).then(function() {
237 assertFalse(languageHelper.isLanguageEnabled(newLanguage.code)); 244 assertFalse(languageHelper.isLanguageEnabled(newLanguage.code));
238 }); 245 });
239 }); 246 });
240 }); 247 });
241 248
242 test('language detail', function() { 249 test('language detail', function() {
243 var languagesCollapse = languagesPage.$.languagesCollapse; 250 var languageOptionsDropdownTrigger = languagesCollapse.querySelector(
244 var languageDetailMenuItem = languagesCollapse.querySelectorAll( 251 'paper-icon-button');
245 '.dropdown-content .dropdown-item')[2]; 252 MockInteractions.tap(languageOptionsDropdownTrigger);
246 assertTrue(!!languageDetailMenuItem); 253 var languageDetailMenuItem = languagesPage.root.querySelectorAll(
254 'cr-shared-menu .dropdown-item')[2];
247 MockInteractions.tap(languageDetailMenuItem); 255 MockInteractions.tap(languageDetailMenuItem);
248 256
249 var languageDetailPage = 257 var languageDetailPage =
250 languagesPage.$$('settings-language-detail-page'); 258 languagesPage.$$('settings-language-detail-page');
251 assertTrue(!!languageDetailPage); 259 assertTrue(!!languageDetailPage);
252 assertEquals('en-US', languageDetailPage.detail.language.code); 260 assertEquals('en-US', languageDetailPage.detail.language.code);
253 }); 261 });
254 262
255 test('manage input methods', function() { 263 test('manage input methods', function() {
256 var inputMethodsCollapse = languagesPage.$.inputMethodsCollapse; 264 var inputMethodsCollapse = languagesPage.$.inputMethodsCollapse;
(...skipping 21 matching lines...) Expand all
278 assertTrue(!!languagesPage.$$('settings-edit-dictionary-page')); 286 assertTrue(!!languagesPage.$$('settings-edit-dictionary-page'));
279 } 287 }
280 }); 288 });
281 }.bind(this)); 289 }.bind(this));
282 290
283 // TODO(michaelpg): Test more aspects of the languages UI. 291 // TODO(michaelpg): Test more aspects of the languages UI.
284 292
285 // Run all registered tests. 293 // Run all registered tests.
286 mocha.run(); 294 mocha.run();
287 }); 295 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698