| 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..95cab000faae3f9b7faa4a098dccffcf9e1ec70f 100644
|
| --- a/chrome/browser/resources/chromeos/login/oobe_i18n_dropdown.js
|
| +++ b/chrome/browser/resources/chromeos/login/oobe_i18n_dropdown.js
|
| @@ -37,61 +37,28 @@ Polymer({
|
| },
|
|
|
| /**
|
| - * This flag prevents recursive calls of observers and callbacks.
|
| + * Mapping from item id to item.
|
| + * @type {!Map<string,I18nMenuItem>}
|
| */
|
| - observersDisabled_: false,
|
| + idToItem_: null,
|
|
|
| /**
|
| - * @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.idToItem_.get(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.idToItem_ = new Map();
|
| + for (var i = 0; i < items.length; ++i) {
|
| + var item = items[i];
|
| + this.idToItem_.set(item.value, item);
|
| }
|
| -
|
| - this.observersDisabled_ = false;
|
| + Oobe.setupSelect(this.$.select,
|
| + items,
|
| + this.onSelected_.bind(this));
|
| },
|
| });
|
| })();
|
|
|