Print Preview: Convert more files to class based syntax
- media_size_settings.js
- more_settings.js
- number_settings_section.js
Bug: 1206112
Change-Id: I19cf7aa586505fd2e187d135846fc921ca1b3424
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3123786
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Reviewed-by: John Lee <johntlee@chromium.org>
Cr-Commit-Position: refs/heads/main@{#916498}
diff --git a/chrome/browser/resources/print_preview/print_preview.js b/chrome/browser/resources/print_preview/print_preview.js
index 213b162..012a890 100644
--- a/chrome/browser/resources/print_preview/print_preview.js
+++ b/chrome/browser/resources/print_preview/print_preview.js
@@ -63,6 +63,8 @@
export {PrintPreviewMarginControlElement} from './ui/margin_control.js';
export {PrintPreviewMarginControlContainerElement} from './ui/margin_control_container.js';
export {PrintPreviewMarginsSettingsElement} from './ui/margins_settings.js';
+export {PrintPreviewMediaSizeSettingsElement} from './ui/media_size_settings.js';
+export {PrintPreviewNumberSettingsSectionElement} from './ui/number_settings_section.js';
export {PDFPlugin, PluginProxy, PluginProxyImpl} from './ui/plugin_proxy.js';
export {PreviewAreaState} from './ui/preview_area.js';
export {SelectBehavior} from './ui/select_behavior.js';
diff --git a/chrome/browser/resources/print_preview/ui/media_size_settings.js b/chrome/browser/resources/print_preview/ui/media_size_settings.js
index 5b432c2..c899912 100644
--- a/chrome/browser/resources/print_preview/ui/media_size_settings.js
+++ b/chrome/browser/resources/print_preview/ui/media_size_settings.js
@@ -5,26 +5,43 @@
import './print_preview_shared_css.js';
import './settings_section.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-import {SettingsBehavior} from './settings_behavior.js';
+import {SettingsBehavior, SettingsBehaviorInterface} from './settings_behavior.js';
import {SelectOption} from './settings_select.js';
-Polymer({
- is: 'print-preview-media-size-settings',
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {SettingsBehaviorInterface}
+ */
+const PrintPreviewMediaSizeSettingsElementBase =
+ mixinBehaviors([SettingsBehavior], PolymerElement);
- _template: html`{__html_template__}`,
+/** @polymer */
+export class PrintPreviewMediaSizeSettingsElement extends
+ PrintPreviewMediaSizeSettingsElementBase {
+ static get is() {
+ return 'print-preview-media-size-settings';
+ }
- behaviors: [SettingsBehavior],
+ static get template() {
+ return html`{__html_template__}`;
+ }
- properties: {
- capability: Object,
+ static get properties() {
+ return {
+ capability: Object,
- disabled: Boolean,
- },
+ disabled: Boolean,
+ };
+ }
- observers:
- ['onMediaSizeSettingChange_(settings.mediaSize.*, capability.option)'],
+ static get observers() {
+ return [
+ 'onMediaSizeSettingChange_(settings.mediaSize.*, capability.option)',
+ ];
+ }
/** @private */
onMediaSizeSettingChange_() {
@@ -35,7 +52,8 @@
for (const option of
/** @type {!Array<!SelectOption>} */ (this.capability.option)) {
if (JSON.stringify(option) === valueToSet) {
- this.$$('print-preview-settings-select').selectValue(valueToSet);
+ this.shadowRoot.querySelector('print-preview-settings-select')
+ .selectValue(valueToSet);
return;
}
}
@@ -43,5 +61,9 @@
const defaultOption = this.capability.option.find(o => !!o.is_default) ||
this.capability.option[0];
this.setSetting('mediaSize', defaultOption);
- },
-});
+ }
+}
+
+customElements.define(
+ PrintPreviewMediaSizeSettingsElement.is,
+ PrintPreviewMediaSizeSettingsElement);
diff --git a/chrome/browser/resources/print_preview/ui/more_settings.js b/chrome/browser/resources/print_preview/ui/more_settings.js
index b8bf9a2a..eb3facfb 100644
--- a/chrome/browser/resources/print_preview/ui/more_settings.js
+++ b/chrome/browser/resources/print_preview/ui/more_settings.js
@@ -8,32 +8,40 @@
import '../strings.m.js';
import {assert} from 'chrome://resources/js/assert.m.js';
-import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {Metrics, MetricsContext} from '../metrics.js';
-Polymer({
- is: 'print-preview-more-settings',
+/** @polymer */
+class PrintPreviewMoreSettingsElement extends PolymerElement {
+ static get is() {
+ return 'print-preview-more-settings';
+ }
- _template: html`{__html_template__}`,
+ static get template() {
+ return html`{__html_template__}`;
+ }
- behaviors: [I18nBehavior],
+ static get properties() {
+ return {
+ settingsExpandedByUser: {
+ type: Boolean,
+ notify: true,
+ },
- properties: {
- settingsExpandedByUser: {
- type: Boolean,
- notify: true,
- },
+ disabled: {
+ type: Boolean,
+ reflectToAttribute: true,
+ },
+ };
+ }
- disabled: {
- type: Boolean,
- reflectToAttribute: true,
- },
- },
+ constructor() {
+ super();
- /** @private {!MetricsContext} */
- metrics_: MetricsContext.printSettingsUi(),
+ /** @private {!MetricsContext} */
+ this.metrics_ = MetricsContext.printSettingsUi();
+ }
/**
* Toggles the expand button within the element being listened to.
@@ -59,5 +67,8 @@
this.settingsExpandedByUser ?
Metrics.PrintSettingsUiBucket.MORE_SETTINGS_CLICKED :
Metrics.PrintSettingsUiBucket.LESS_SETTINGS_CLICKED);
- },
-});
+ }
+}
+
+customElements.define(
+ PrintPreviewMoreSettingsElement.is, PrintPreviewMoreSettingsElement);
diff --git a/chrome/browser/resources/print_preview/ui/number_settings_section.js b/chrome/browser/resources/print_preview/ui/number_settings_section.js
index 889c755..ffd1f8e 100644
--- a/chrome/browser/resources/print_preview/ui/number_settings_section.js
+++ b/chrome/browser/resources/print_preview/ui/number_settings_section.js
@@ -7,77 +7,98 @@
import './print_preview_vars_css.js';
import './settings_section.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {WebUIListenerBehavior, WebUIListenerBehaviorInterface} from 'chrome://resources/js/web_ui_listener_behavior.m.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-import {InputBehavior} from './input_behavior.js';
+import {InputBehavior, InputBehaviorInterface} from './input_behavior.js';
-Polymer({
- is: 'print-preview-number-settings-section',
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {InputBehaviorInterface}
+ * @implements {WebUIListenerBehaviorInterface}
+ */
+const PrintPreviewNumberSettingsSectionElementBase =
+ mixinBehaviors([InputBehavior, WebUIListenerBehavior], PolymerElement);
- _template: html`{__html_template__}`,
+/** @polymer */
+export class PrintPreviewNumberSettingsSectionElement extends
+ PrintPreviewNumberSettingsSectionElementBase {
+ static get is() {
+ return 'print-preview-number-settings-section';
+ }
- behaviors: [InputBehavior],
+ static get template() {
+ return html`{__html_template__}`;
+ }
- properties: {
- /** @private {string} */
- inputString_: {
- type: String,
- notify: true,
- observer: 'onInputChanged_',
- },
+ static get properties() {
+ return {
+ /** @private {string} */
+ inputString_: {
+ type: String,
+ notify: true,
+ observer: 'onInputStringChanged_',
+ },
- /** @type {boolean} */
- inputValid: {
- type: Boolean,
- notify: true,
- reflectToAttribute: true,
- value: true,
- },
+ /** @type {boolean} */
+ inputValid: {
+ type: Boolean,
+ notify: true,
+ reflectToAttribute: true,
+ value: true,
+ },
- /** @type {string} */
- currentValue: {
- type: String,
- notify: true,
- observer: 'onCurrentValueChanged_',
- },
+ /** @type {string} */
+ currentValue: {
+ type: String,
+ notify: true,
+ observer: 'onCurrentValueChanged_',
+ },
- defaultValue: String,
+ defaultValue: String,
- maxValue: Number,
+ maxValue: Number,
- minValue: Number,
+ minValue: Number,
- inputLabel: String,
+ inputLabel: String,
- inputAriaLabel: String,
+ inputAriaLabel: String,
- hintMessage: String,
+ hintMessage: String,
- disabled: Boolean,
+ disabled: Boolean,
- /** @private */
- errorMessage_: {
- type: String,
- computed: 'computeErrorMessage_(hintMessage, inputValid)',
- },
- },
+ /** @private */
+ errorMessage_: {
+ type: String,
+ computed: 'computeErrorMessage_(hintMessage, inputValid)',
+ },
- listeners: {
- 'input-change': 'onInputChange_',
- },
+ };
+ }
+
+ ready() {
+ super.ready();
+
+ this.addEventListener(
+ 'input-change',
+ e => this.onInputChangeEvent_(/** @type {!CustomEvent<string>} */ (e)));
+ }
/** @return {!CrInputElement} The cr-input field element for InputBehavior. */
getInput() {
return /** @type {!CrInputElement} */ (this.$.userValue);
- },
+ }
/**
* @param {!CustomEvent<string>} e Contains the new input value.
* @private
*/
- onInputChange_(e) {
+ onInputChangeEvent_(e) {
this.inputString_ = e.detail;
- },
+ }
/**
* @return {boolean} Whether the input should be disabled.
@@ -85,10 +106,11 @@
*/
getDisabled_() {
return this.disabled && this.inputValid;
- },
+ }
/**
* @param {!KeyboardEvent} e The keyboard event
+ * @private
*/
onKeydown_(e) {
if (['.', 'e', 'E', '-', '+'].includes(e.key)) {
@@ -99,7 +121,7 @@
if (e.key === 'Enter') {
this.onBlur_();
}
- },
+ }
/** @private */
onBlur_() {
@@ -109,19 +131,19 @@
if (this.$.userValue.value === '') {
this.$.userValue.value = this.defaultValue;
}
- },
+ }
/** @private */
- onInputChanged_() {
+ onInputStringChanged_() {
this.inputValid = this.computeValid_();
this.currentValue = this.inputString_;
- },
+ }
/** @private */
onCurrentValueChanged_() {
this.inputString_ = this.currentValue;
this.resetString();
- },
+ }
/**
* @return {boolean} Whether input value represented by inputString_ is
@@ -132,7 +154,7 @@
// Make sure value updates first, in case inputString_ was updated by JS.
this.$.userValue.value = this.inputString_;
return !this.$.userValue.invalid;
- },
+ }
/**
* @return {string}
@@ -140,5 +162,9 @@
*/
computeErrorMessage_() {
return this.inputValid ? '' : this.hintMessage;
- },
-});
+ }
+}
+
+customElements.define(
+ PrintPreviewNumberSettingsSectionElement.is,
+ PrintPreviewNumberSettingsSectionElement);
diff --git a/chrome/test/data/webui/print_preview/invalid_settings_browsertest.js b/chrome/test/data/webui/print_preview/invalid_settings_browsertest.js
index c273f0d..2c81c319 100644
--- a/chrome/test/data/webui/print_preview/invalid_settings_browsertest.js
+++ b/chrome/test/data/webui/print_preview/invalid_settings_browsertest.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import {CloudPrintInterfaceEventType, CloudPrintInterfaceImpl, Destination, DestinationConnectionStatus, DestinationOrigin, DestinationStore, DestinationType, LocalDestinationInfo, makeRecentDestination, MeasurementSystemUnitType, NativeInitialSettings, NativeLayer, NativeLayerImpl, PluginProxyImpl, PrintPreviewAppElement, PrintPreviewDestinationSettingsElement, PrintPreviewLayoutSettingsElement, ScalingType, State, whenReady} from 'chrome://print/print_preview.js';
+import {CloudPrintInterfaceEventType, CloudPrintInterfaceImpl, Destination, DestinationConnectionStatus, DestinationOrigin, DestinationStore, DestinationType, LocalDestinationInfo, makeRecentDestination, MeasurementSystemUnitType, NativeInitialSettings, NativeLayer, NativeLayerImpl, PluginProxyImpl, PrintPreviewAppElement, PrintPreviewDestinationSettingsElement, PrintPreviewLayoutSettingsElement, PrintPreviewNumberSettingsSectionElement, ScalingType, State, whenReady} from 'chrome://print/print_preview.js';
import {assert} from 'chrome://resources/js/assert.m.js';
import {isWindows} from 'chrome://resources/js/cr.m.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
@@ -352,7 +352,8 @@
assertEquals(State.ERROR, page.state);
assertTrue(
layoutSettings.shadowRoot.querySelector('select').disabled);
- assertTrue(scalingSettings.$$('cr-input').disabled);
+ assertTrue(scalingSettings.shadowRoot.querySelector('cr-input')
+ .disabled);
// The destination select dropdown should be enabled, so that the
// user can select a new printer.
@@ -377,7 +378,8 @@
// Settings sections are now active.
assertFalse(
layoutSettings.shadowRoot.querySelector('select').disabled);
- assertFalse(scalingSettings.$$('cr-input').disabled);
+ assertFalse(scalingSettings.shadowRoot.querySelector('cr-input')
+ .disabled);
// The destination select dropdown should still be enabled.
assertFalse(destinationSettings.shadowRoot
diff --git a/chrome/test/data/webui/print_preview/media_size_settings_test.js b/chrome/test/data/webui/print_preview/media_size_settings_test.js
index 49fbdfa5..38bcc17 100644
--- a/chrome/test/data/webui/print_preview/media_size_settings_test.js
+++ b/chrome/test/data/webui/print_preview/media_size_settings_test.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import {PrintPreviewModelElement, SelectOption} from 'chrome://print/print_preview.js';
+import {PrintPreviewMediaSizeSettingsElement, PrintPreviewModelElement, SelectOption} from 'chrome://print/print_preview.js';
import {assert} from 'chrome://resources/js/assert.m.js';
import {assertDeepEquals, assertEquals, assertFalse} from '../chai_assert.js';
@@ -35,7 +35,8 @@
});
test('settings select', function() {
- const settingsSelect = mediaSizeSection.$$('print-preview-settings-select');
+ const settingsSelect = mediaSizeSection.shadowRoot.querySelector(
+ 'print-preview-settings-select');
assertFalse(settingsSelect.disabled);
assertEquals(mediaSizeCapability, settingsSelect.capability);
assertEquals('mediaSize', settingsSelect.settingName);
@@ -46,7 +47,8 @@
const squareOption = mediaSizeCapability.option[1];
// Default is letter
- const settingsSelect = mediaSizeSection.$$('print-preview-settings-select');
+ const settingsSelect = mediaSizeSection.shadowRoot.querySelector(
+ 'print-preview-settings-select');
assertDeepEquals(letterOption, JSON.parse(settingsSelect.selectedValue));
assertDeepEquals(
letterOption, mediaSizeSection.getSettingValue('mediaSize'));
diff --git a/chrome/test/data/webui/print_preview/number_settings_section_interactive_test.js b/chrome/test/data/webui/print_preview/number_settings_section_interactive_test.js
index 4d44058..7e084b1 100644
--- a/chrome/test/data/webui/print_preview/number_settings_section_interactive_test.js
+++ b/chrome/test/data/webui/print_preview/number_settings_section_interactive_test.js
@@ -2,10 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import 'chrome://print/print_preview.js';
+import {PrintPreviewNumberSettingsSectionElement} from 'chrome://print/print_preview.js';
import {assert} from 'chrome://resources/js/assert.m.js';
import {triggerInputEvent} from 'chrome://test/print_preview/print_preview_test_utils.js';
+import {assertEquals, assertFalse, assertTrue} from '../chai_assert.js';
+
window.number_settings_section_interactive_test = {};
number_settings_section_interactive_test.suiteName =
'NumberSettingsSectionInteractiveTest';
@@ -20,15 +22,14 @@
/** @override */
setup(function() {
- PolymerTest.clearBody();
-
document.body.innerHTML = `
<print-preview-number-settings-section id="numberSettings"
min-value="1" max-value="100" default-value="50"
current-value="10" hint-message="incorrect value entered"
input-valid>
</print-preview-number-settings-section>`;
- numberSettings = document.querySelector('#numberSettings');
+ numberSettings = /** @type {!PrintPreviewNumberSettingsSectionElement} */ (
+ document.querySelector('#numberSettings'));
});
// Verifies that blurring the input will reset it to the default if it is