summaryrefslogtreecommitdiffstats
path: root/browser/extensions/formautofill/content/editDialog.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-12 05:43:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-12 05:43:14 +0000
commit8dd16259287f58f9273002717ec4d27e97127719 (patch)
tree3863e62a53829a84037444beab3abd4ed9dfc7d0 /browser/extensions/formautofill/content/editDialog.js
parentReleasing progress-linux version 126.0.1-1~progress7.99u1. (diff)
downloadfirefox-8dd16259287f58f9273002717ec4d27e97127719.tar.xz
firefox-8dd16259287f58f9273002717ec4d27e97127719.zip
Merging upstream version 127.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'browser/extensions/formautofill/content/editDialog.js')
-rw-r--r--browser/extensions/formautofill/content/editDialog.js233
1 files changed, 0 insertions, 233 deletions
diff --git a/browser/extensions/formautofill/content/editDialog.js b/browser/extensions/formautofill/content/editDialog.js
deleted file mode 100644
index 467acbdd07..0000000000
--- a/browser/extensions/formautofill/content/editDialog.js
+++ /dev/null
@@ -1,233 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/* exported EditAddressDialog, EditCreditCardDialog */
-/* eslint-disable mozilla/balanced-listeners */ // Not relevant since the document gets unloaded.
-
-"use strict";
-
-ChromeUtils.defineESModuleGetters(this, {
- AutofillTelemetry: "resource://gre/modules/shared/AutofillTelemetry.sys.mjs",
- formAutofillStorage: "resource://autofill/FormAutofillStorage.sys.mjs",
-});
-
-class AutofillEditDialog {
- constructor(subStorageName, elements, record) {
- this._storageInitPromise = formAutofillStorage.initialize();
- this._subStorageName = subStorageName;
- this._elements = elements;
- this._record = record;
- this.localizeDocument();
- window.addEventListener("DOMContentLoaded", this, { once: true });
- }
-
- async init() {
- this.updateSaveButtonState();
- this.attachEventListeners();
- // For testing only: signal to tests that the dialog is ready for testing.
- // This is likely no longer needed since retrieving from storage is fully
- // handled in manageDialog.js now.
- window.dispatchEvent(new CustomEvent("FormReady"));
- }
-
- /**
- * Get storage and ensure it has been initialized.
- *
- * @returns {object}
- */
- async getStorage() {
- await this._storageInitPromise;
- return formAutofillStorage[this._subStorageName];
- }
-
- /**
- * Asks FormAutofillParent to save or update an record.
- *
- * @param {object} record
- * @param {string} guid [optional]
- */
- async saveRecord(record, guid) {
- let storage = await this.getStorage();
- if (guid) {
- await storage.update(guid, record);
- } else {
- await storage.add(record);
- }
- }
-
- /**
- * Handle events
- *
- * @param {DOMEvent} event
- */
- handleEvent(event) {
- switch (event.type) {
- case "DOMContentLoaded": {
- this.init();
- break;
- }
- case "click": {
- this.handleClick(event);
- break;
- }
- case "input": {
- this.handleInput(event);
- break;
- }
- case "keypress": {
- this.handleKeyPress(event);
- break;
- }
- case "contextmenu": {
- if (
- !HTMLInputElement.isInstance(event.target) &&
- !HTMLTextAreaElement.isInstance(event.target)
- ) {
- event.preventDefault();
- }
- break;
- }
- }
- }
-
- /**
- * Handle click events
- *
- * @param {DOMEvent} event
- */
- handleClick(event) {
- if (event.target == this._elements.cancel) {
- window.close();
- }
- if (event.target == this._elements.save) {
- this.handleSubmit();
- }
- }
-
- /**
- * Handle input events
- */
- handleInput(_e) {
- this.updateSaveButtonState();
- }
-
- /**
- * Handle key press events
- *
- * @param {DOMEvent} event
- */
- handleKeyPress(event) {
- if (event.keyCode == KeyEvent.DOM_VK_ESCAPE) {
- window.close();
- }
- }
-
- updateSaveButtonState() {
- // Toggle disabled attribute on the save button based on
- // whether the form is filled or empty.
- if (!Object.keys(this._elements.fieldContainer.buildFormObject()).length) {
- this._elements.save.setAttribute("disabled", true);
- } else {
- this._elements.save.removeAttribute("disabled");
- }
- }
-
- /**
- * Attach event listener
- */
- attachEventListeners() {
- window.addEventListener("keypress", this);
- window.addEventListener("contextmenu", this);
- this._elements.controlsContainer.addEventListener("click", this);
- document.addEventListener("input", this);
- }
-
- // An interface to be inherited.
- localizeDocument() {}
-
- recordFormSubmit() {
- let method = this._record?.guid ? "edit" : "add";
- AutofillTelemetry.recordManageEvent(this.telemetryType, method);
- }
-}
-
-class EditAddressDialog extends AutofillEditDialog {
- telemetryType = AutofillTelemetry.ADDRESS;
-
- constructor(elements, record) {
- super("addresses", elements, record);
- if (record) {
- AutofillTelemetry.recordManageEvent(this.telemetryType, "show_entry");
- }
- }
-
- localizeDocument() {
- if (this._record?.guid) {
- document.l10n.setAttributes(
- this._elements.title,
- "autofill-edit-address-title"
- );
- }
- }
-
- async handleSubmit() {
- await this.saveRecord(
- this._elements.fieldContainer.buildFormObject(),
- this._record ? this._record.guid : null
- );
- this.recordFormSubmit();
-
- window.close();
- }
-}
-
-class EditCreditCardDialog extends AutofillEditDialog {
- telemetryType = AutofillTelemetry.CREDIT_CARD;
-
- constructor(elements, record) {
- elements.fieldContainer._elements.billingAddress.disabled = true;
- super("creditCards", elements, record);
- elements.fieldContainer._elements.ccNumber.addEventListener(
- "blur",
- this._onCCNumberFieldBlur.bind(this)
- );
- if (record) {
- AutofillTelemetry.recordManageEvent(this.telemetryType, "show_entry");
- }
- }
-
- _onCCNumberFieldBlur() {
- let elem = this._elements.fieldContainer._elements.ccNumber;
- this._elements.fieldContainer.updateCustomValidity(elem);
- }
-
- localizeDocument() {
- if (this._record?.guid) {
- document.l10n.setAttributes(
- this._elements.title,
- "autofill-edit-card-title2"
- );
- }
- }
-
- async handleSubmit() {
- let creditCard = this._elements.fieldContainer.buildFormObject();
- if (!this._elements.fieldContainer._elements.form.reportValidity()) {
- return;
- }
-
- try {
- await this.saveRecord(
- creditCard,
- this._record ? this._record.guid : null
- );
-
- this.recordFormSubmit();
-
- window.close();
- } catch (ex) {
- console.error(ex);
- }
- }
-}