| 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 /** @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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 }); |
| OLD | NEW |