--- a/toolkit/components/payments/res/debugging.js
+++ b/toolkit/components/payments/res/debugging.js
@@ -2,16 +2,34 @@
* 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/. */
const paymentDialog = window.parent.document.querySelector("payment-dialog");
// The requestStore should be manipulated for most changes but autofill storage changes
// happen through setStateFromParent which includes some consistency checks.
const requestStore = paymentDialog.requestStore;
+// keep the payment options checkboxes in sync w. actual state
+const paymentOptionsUpdater = {
+ stateChangeCallback(state) {
+ this.render(state);
+ },
+ render(state) {
+ let options = state.request.paymentOptions;
+ let checkboxes = document.querySelectorAll("#paymentOptions input[type='checkbox']");
+ for (let input of checkboxes) {
+ if (options.hasOwnProperty(input.name)) {
+ input.checked = options[input.name];
+ }
+ }
+ },
+};
+
+requestStore.subscribe(paymentOptionsUpdater);
+
let REQUEST_1 = {
tabId: 9,
topLevelPrincipal: {URI: {displayHost: "tschaeff.github.io"}},
requestId: "3797081f-a96b-c34b-a58b-1083c6e66e25",
paymentMethods: [],
paymentDetails: {
id: "",
totalItem: {label: "Demo total", amount: {currency: "EUR", value: "1.00"}, pending: false},
@@ -115,38 +133,16 @@ let REQUEST_2 = {
requestPayerName: false,
requestPayerEmail: false,
requestPayerPhone: false,
requestShipping: true,
shippingType: "shipping",
},
};
-let REQUEST_CONTACT_NO_SHIPPING = {
- tabId: 10,
- topLevelPrincipal: {URI: {displayHost: "example.org"}},
- requestId: "8288347a-ccec-4190-b4b1-673dbc709738",
- paymentMethods: [],
- paymentDetails: {
- id: "",
- totalItem: {label: "", amount: {currency: "EUR", value: "1234.56"}, pending: false},
- displayItems: [],
- shippingOptions: [],
- modifiers: null,
- error: "",
- },
- paymentOptions: {
- requestPayerName: true,
- requestPayerEmail: true,
- requestPayerPhone: true,
- requestShipping: false,
- shippingType: "shipping",
- },
-};
-
let ADDRESSES_1 = {
"48bnds6854t": {
"address-level1": "MI",
"address-level2": "Some City",
"country": "US",
"guid": "48bnds6854t",
"name": "Mr. Foo",
"postal-code": "90210",
@@ -263,18 +259,39 @@ let buttonActions = {
setRequest1() {
requestStore.setState({request: REQUEST_1});
},
setRequest2() {
requestStore.setState({request: REQUEST_2});
},
- setRequestContactNoShipping() {
- requestStore.setState({request: REQUEST_CONTACT_NO_SHIPPING});
+ setRequestPayerName() {
+ buttonActions.setPaymentOptions();
+ },
+ setRequestPayerEmail() {
+ buttonActions.setPaymentOptions();
+ },
+ setRequestPayerPhone() {
+ buttonActions.setPaymentOptions();
+ },
+ setRequestShipping() {
+ buttonActions.setPaymentOptions();
+ },
+
+ setPaymentOptions() {
+ let options = {};
+ let checkboxes = document.querySelectorAll("#paymentOptions input[type='checkbox']");
+ for (let input of checkboxes) {
+ options[input.name] = input.checked;
+ }
+ let req = Object.assign({}, requestStore.getState().request, {
+ paymentOptions: options,
+ });
+ requestStore.setState({ request: req });
},
setShippingError() {
let request = Object.assign({}, requestStore.getState().request);
request.paymentDetails = Object.assign({}, requestStore.getState().request.paymentDetails);
request.paymentDetails.error = "Error!";
request.paymentDetails.shippingOptions = [];
requestStore.setState({