diff options
Diffstat (limited to 'browser/components/payments/res/unprivileged-fallbacks.js')
-rw-r--r-- | browser/components/payments/res/unprivileged-fallbacks.js | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/browser/components/payments/res/unprivileged-fallbacks.js b/browser/components/payments/res/unprivileged-fallbacks.js new file mode 100644 index 0000000000..ee7e47a7df --- /dev/null +++ b/browser/components/payments/res/unprivileged-fallbacks.js @@ -0,0 +1,159 @@ +/* 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/. */ + +/** + * This file defines fallback objects to be used during development outside + * of the paymentDialogWrapper. When loaded in the wrapper, a frame script + * overwrites these methods. Since these methods need to get overwritten in the + * global scope, it can't be converted into an ES module. + */ + +/* eslint-disable no-console */ +/* exported log, PaymentDialogUtils */ + +"use strict"; + +var log = { + error: console.error.bind(console, "paymentRequest.xhtml:"), + warn: console.warn.bind(console, "paymentRequest.xhtml:"), + info: console.info.bind(console, "paymentRequest.xhtml:"), + debug: console.debug.bind(console, "paymentRequest.xhtml:"), +}; + +var PaymentDialogUtils = { + getAddressLabel(address, addressFields = null) { + if (addressFields) { + let requestedFields = addressFields.trim().split(/\s+/); + return ( + requestedFields + .filter(f => f && address[f]) + .map(f => address[f]) + .join(", ") + ` (${address.guid})` + ); + } + return `${address.name} (${address.guid})`; + }, + + getCreditCardNetworks() { + // Shim for list of known and supported credit card network ids as exposed by + // toolkit/modules/CreditCard.jsm + return [ + "amex", + "cartebancaire", + "diners", + "discover", + "jcb", + "mastercard", + "mir", + "unionpay", + "visa", + ]; + }, + isCCNumber(str) { + return !!str.replace(/[-\s]/g, "").match(/^\d{9,}$/); + }, + DEFAULT_REGION: "US", + countries: new Map([ + ["US", "United States"], + ["CA", "Canada"], + ["DE", "Germany"], + ]), + getFormFormat(country) { + if (country == "DE") { + return { + addressLevel3Label: "suburb", + addressLevel2Label: "city", + addressLevel1Label: "province", + addressLevel1Options: null, + postalCodeLabel: "postalCode", + fieldsOrder: [ + { + fieldId: "name", + newLine: true, + }, + { + fieldId: "organization", + newLine: true, + }, + { + fieldId: "street-address", + newLine: true, + }, + { fieldId: "postal-code" }, + { fieldId: "address-level2" }, + ], + postalCodePattern: "\\d{5}", + countryRequiredFields: [ + "street-address", + "address-level2", + "postal-code", + ], + }; + } + + let addressLevel1Options = null; + if (country == "US") { + addressLevel1Options = new Map([ + ["CA", "California"], + ["MA", "Massachusetts"], + ["MI", "Michigan"], + ]); + } else if (country == "CA") { + addressLevel1Options = new Map([ + ["NS", "Nova Scotia"], + ["ON", "Ontario"], + ["YT", "Yukon"], + ]); + } + + let fieldsOrder = [ + { fieldId: "name", newLine: true }, + { fieldId: "street-address", newLine: true }, + { fieldId: "address-level2" }, + { fieldId: "address-level1" }, + { fieldId: "postal-code" }, + { fieldId: "organization" }, + ]; + if (country == "BR") { + fieldsOrder.splice(2, 0, { fieldId: "address-level3" }); + } + + return { + addressLevel3Label: "suburb", + addressLevel2Label: "city", + addressLevel1Label: country == "US" ? "state" : "province", + addressLevel1Options, + postalCodeLabel: country == "US" ? "zip" : "postalCode", + fieldsOrder, + // The following values come from addressReferences.js and should not be changed. + /* eslint-disable-next-line max-len */ + postalCodePattern: + country == "US" + ? "(\\d{5})(?:[ \\-](\\d{4}))?" + : "[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] ?\\d[ABCEGHJ-NPRSTV-Z]\\d", + countryRequiredFields: + country == "US" || country == "CA" + ? [ + "street-address", + "address-level2", + "address-level1", + "postal-code", + ] + : ["street-address", "address-level2", "postal-code"], + }; + }, + findAddressSelectOption(selectEl, address, fieldName) { + return null; + }, + getDefaultPreferences() { + let prefValues = { + saveCreditCardDefaultChecked: false, + saveAddressDefaultChecked: true, + }; + return prefValues; + }, + isOfficialBranding() { + return false; + }, +}; |