Chromium Code Reviews| Index: chrome/browser/resources/chromeos/login/oobe_i18n_dropdown.js |
| diff --git a/chrome/browser/resources/chromeos/login/oobe_i18n_dropdown.js b/chrome/browser/resources/chromeos/login/oobe_i18n_dropdown.js |
| index 0d3d1c7ab2f8c7e7bee5969e6297c92efa906882..7a7b50d6657b1b665c848afd87cff0843659ad04 100644 |
| --- a/chrome/browser/resources/chromeos/login/oobe_i18n_dropdown.js |
| +++ b/chrome/browser/resources/chromeos/login/oobe_i18n_dropdown.js |
| @@ -37,61 +37,27 @@ Polymer({ |
| }, |
| /** |
| - * This flag prevents recursive calls of observers and callbacks. |
| + * Mapping from item id to item. |
| */ |
| - observersDisabled_: false, |
| + id2Item_: [], |
|
michaelpg
2016/11/16 01:59:01
spell out numbers. and can you provide a more spec
Alexander Alekseev
2016/11/16 07:10:59
Done.
|
| /** |
| - * @param {!{detail: !{item: { item: {!I18nMenuItem}}}}} event |
| + * @param {string} value Option value. |
| * @private |
| */ |
| - onSelect_: function(event) { |
| - if (this.observersDisabled_) |
| - return; |
| - |
| - var selectedModel = this.$.domRepeat.modelForElement(event.detail.item); |
| - if (!selectedModel.item) |
| - return; |
| - |
| - selectedModel.set('item.selected', true); |
| - this.fire('select-item', selectedModel.item); |
| - }, |
| - |
| - onDeselect_: function(event) { |
| - if (this.observersDisabled_) |
| - return; |
| - |
| - var deSelectedModel = this.$.domRepeat.modelForElement(event.detail.item); |
| - if (!deSelectedModel.item) |
| - return; |
| - |
| - deSelectedModel.set('item.selected', false); |
| + onSelected_: function(value) { |
| + this.fire('select-item', this.id2Item_[value]); |
| }, |
| onItemsChanged_: function(items) { |
| - if (this.observersDisabled_) |
| - return; |
| - |
| - if (!items) |
| - return; |
| - |
| - this.observersDisabled_ = true; |
| - |
| - var index = items.findIndex(function(item) { return item.selected; }); |
| - if (index != -1) { |
| - // This is needed for selectIndex() to pick up values from updated |
| - // this.items (for example, translated into other language). |
| - Polymer.dom.flush(); |
| - |
| - if (this.$.listboxDropdown.selected == index) { |
| - // This is to force update real <input> element value even if selection |
| - // index has not changed. |
| - this.$.listboxDropdown.selectIndex(null); |
| - } |
| - this.$.listboxDropdown.selectIndex(index); |
| + this.id2Item_ = []; |
| + for (var i = 0; i < items.length; ++i) { |
| + var item = items[i]; |
| + this.id2Item_[item.value] = item; |
| } |
| - |
| - this.observersDisabled_ = false; |
| + Oobe.setupSelect(this.$.select, |
| + items, |
| + this.onSelected_.bind(this)); |
| }, |
| }); |
| })(); |