| Index: chrome/browser/resources/print_preview/settings/media_size_settings.js
|
| diff --git a/chrome/browser/resources/print_preview/settings/media_size_settings.js b/chrome/browser/resources/print_preview/settings/media_size_settings.js
|
| index be730721a53b357d5d20fb3b5054e7f921697a36..08e31c957157fff6e93bfd67e0586e37b1b1755c 100644
|
| --- a/chrome/browser/resources/print_preview/settings/media_size_settings.js
|
| +++ b/chrome/browser/resources/print_preview/settings/media_size_settings.js
|
| @@ -10,134 +10,18 @@ cr.define('print_preview', function() {
|
| * @param {!print_preview.ticket_items.MediaSize} ticketItem Used to read and
|
| * write the media size ticket item.
|
| * @constructor
|
| - * @extends {print_preview.SettingsSection}
|
| + * @extends {print_preview.SettingsSectionSelect}
|
| */
|
| function MediaSizeSettings(ticketItem) {
|
| - print_preview.SettingsSection.call(this);
|
| -
|
| - /** @private {!print_preview.ticket_items.MediaSize} */
|
| - this.ticketItem_ = ticketItem;
|
| + print_preview.SettingsSectionSelect.call(this, ticketItem);
|
| };
|
|
|
| MediaSizeSettings.prototype = {
|
| - __proto__: print_preview.SettingsSection.prototype,
|
| -
|
| - /** @override */
|
| - isAvailable: function() {
|
| - return this.ticketItem_.isCapabilityAvailable();
|
| - },
|
| + __proto__: print_preview.SettingsSectionSelect.prototype,
|
|
|
| /** @override */
|
| - hasCollapsibleContent: function() {
|
| - return this.isAvailable();
|
| - },
|
| -
|
| - /** @override */
|
| - set isEnabled(isEnabled) {
|
| - this.select_.disabled = !isEnabled;
|
| - },
|
| -
|
| - /** @override */
|
| - enterDocument: function() {
|
| - print_preview.SettingsSection.prototype.enterDocument.call(this);
|
| - this.tracker.add(this.select_, 'change', this.onSelectChange_.bind(this));
|
| - this.tracker.add(
|
| - this.ticketItem_,
|
| - print_preview.ticket_items.TicketItem.EventType.CHANGE,
|
| - this.onTicketItemChange_.bind(this));
|
| - },
|
| -
|
| - /**
|
| - * @return {HTMLSelectElement} Select element containing media size options.
|
| - * @private
|
| - */
|
| - get select_() {
|
| - return this.getElement().getElementsByClassName(
|
| - 'media-size-settings-select')[0];
|
| - },
|
| -
|
| - /**
|
| - * Makes sure the content of the select element matches the capabilities of
|
| - * the destination.
|
| - * @private
|
| - */
|
| - updateSelect_: function() {
|
| - var select = this.select_;
|
| - if (!this.isAvailable()) {
|
| - select.innerHTML = '';
|
| - return;
|
| - }
|
| - // Should the select content be updated?
|
| - var sameContent =
|
| - this.ticketItem_.capability.option.length == select.length &&
|
| - this.ticketItem_.capability.option.every(function(option, index) {
|
| - return select.options[index].value == JSON.stringify(option);
|
| - });
|
| - var indexToSelect = select.selectedIndex;
|
| - if (!sameContent) {
|
| - select.innerHTML = '';
|
| - // TODO: Better heuristics for the display name and options grouping.
|
| - this.ticketItem_.capability.option.forEach(function(option, index) {
|
| - var selectOption = document.createElement('option');
|
| - var displayName = option.custom_display_name;
|
| - if (!displayName && option.custom_display_name_localized) {
|
| - var getLocaleToCompare =
|
| - /** @type {function(string, boolean=): string} */
|
| - (function(locale, opt_languageOnly) {
|
| - var code = opt_languageOnly ? locale.split('-')[0] : locale;
|
| - return code.toLowerCase();
|
| - });
|
| - var getItemForLocale = function(items, locale, languageOnly) {
|
| - locale = getLocaleToCompare(locale, languageOnly);
|
| - for (var i = 0; i < items.length; i++) {
|
| - if (getLocaleToCompare(items[i].locale) == locale)
|
| - return items[i].value;
|
| - }
|
| - return '';
|
| - };
|
| - var items = option.custom_display_name_localized;
|
| - displayName =
|
| - getItemForLocale(items, navigator.language, false) ||
|
| - getItemForLocale(items, navigator.language, true);
|
| - }
|
| - selectOption.text = displayName || option.name;
|
| - selectOption.value = JSON.stringify(option);
|
| - select.appendChild(selectOption);
|
| - if (option.is_default) {
|
| - indexToSelect = index;
|
| - }
|
| - });
|
| - }
|
| - // Try to select current ticket item.
|
| - var valueToSelect = JSON.stringify(this.ticketItem_.getValue());
|
| - for (var i = 0, option; option = select.options[i]; i++) {
|
| - if (option.value == valueToSelect) {
|
| - indexToSelect = i;
|
| - break;
|
| - }
|
| - }
|
| - select.selectedIndex = indexToSelect;
|
| - this.onSelectChange_();
|
| - },
|
| -
|
| - /**
|
| - * Called when the select element is changed. Updates the print ticket.
|
| - * @private
|
| - */
|
| - onSelectChange_: function() {
|
| - var select = this.select_;
|
| - var mediaSize = JSON.parse(select.options[select.selectedIndex].value);
|
| - this.ticketItem_.updateValue(mediaSize);
|
| - },
|
| -
|
| - /**
|
| - * Called when the print ticket store changes. Selects the corresponding
|
| - * select option.
|
| - * @private
|
| - */
|
| - onTicketItemChange_: function() {
|
| - this.updateSelect_();
|
| - this.updateUiStateInternal();
|
| + getDefaultDisplayName_: function(option) {
|
| + return option.name;
|
| }
|
| };
|
|
|
|
|