| Index: chrome/browser/resources/settings/languages_page/languages_page.js
|
| diff --git a/chrome/browser/resources/settings/languages_page/languages_page.js b/chrome/browser/resources/settings/languages_page/languages_page.js
|
| index d88a859349c5fb9a27f7158565ba51ab9dc59325..7aee1aa3ffe1fd40932e852423c8f1e5f3736620 100644
|
| --- a/chrome/browser/resources/settings/languages_page/languages_page.js
|
| +++ b/chrome/browser/resources/settings/languages_page/languages_page.js
|
| @@ -9,6 +9,14 @@
|
| (function() {
|
| 'use strict';
|
|
|
| +/**
|
| + * Regular expression used for filtering out tap events not originating from the
|
| + * language list item based on the event target's class name.
|
| + * e.g. 'dropdown-trigger'
|
| + * @const {!RegExp}
|
| + */
|
| +var EVENT_TARGET_REGEX = new RegExp('^dropdown-(trigger|content|item)');
|
| +
|
| Polymer({
|
| is: 'settings-languages-page',
|
|
|
| @@ -56,16 +64,22 @@ Polymer({
|
| /**
|
| * Handler for clicking a language on the main page, which selects the
|
| * language as the prospective UI language on Chrome OS and Windows.
|
| - * @param {!{model: !{item: !LanguageState}}} e
|
| + * @param {!Event} e The tap event.
|
| */
|
| onLanguageTap_: function(e) {
|
| + // Make sure the event comes from tapping the language itself and not the
|
| + // options menu, its trigger, or its items.
|
| + if (EVENT_TARGET_REGEX.test(Polymer.dom(e).localTarget.className))
|
| + return;
|
| +
|
| // Only change the UI language on platforms that allow it.
|
| if ((!cr.isChromeOS && !cr.isWindows) || loadTimeData.getBoolean('isGuest'))
|
| return;
|
|
|
| // Set the prospective UI language. This won't take effect until a restart.
|
| - if (e.model.item.language.supportsUI)
|
| - this.languageHelper_.setUILanguage(e.model.item.language.code);
|
| + var tapEvent = /** @type {!{model: !{item: !LanguageState}}} */(e);
|
| + if (tapEvent.model.item.language.supportsUI)
|
| + this.languageHelper_.setUILanguage(tapEvent.model.item.language.code);
|
| },
|
|
|
| /**
|
|
|