tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ShippingOptionsChromeScript.js (3515B)


      1 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
      2 /* Any copyright is dedicated to the Public Domain.
      3   http://creativecommons.org/publicdomain/zero/1.0/ */
      4 
      5 /* eslint-env mozilla/chrome-script */
      6 
      7 "use strict";
      8 
      9 const { XPCOMUtils } = ChromeUtils.importESModule(
     10  "resource://gre/modules/XPCOMUtils.sys.mjs"
     11 );
     12 
     13 const paymentSrv = Cc[
     14  "@mozilla.org/dom/payments/payment-request-service;1"
     15 ].getService(Ci.nsIPaymentRequestService);
     16 
     17 function emitTestFail(message) {
     18  sendAsyncMessage("test-fail", message);
     19 }
     20 function emitTestPass(message) {
     21  sendAsyncMessage("test-pass", message);
     22 }
     23 
     24 let expectedRequestOption = null;
     25 let expectedUpdatedOption = null;
     26 let changeShippingOption = null;
     27 
     28 function showResponse(requestId) {
     29  const showResponseData = Cc[
     30    "@mozilla.org/dom/payments/general-response-data;1"
     31  ].createInstance(Ci.nsIGeneralResponseData);
     32  showResponseData.initData({});
     33  const showActionResponse = Cc[
     34    "@mozilla.org/dom/payments/payment-show-action-response;1"
     35  ].createInstance(Ci.nsIPaymentShowActionResponse);
     36  showActionResponse.init(
     37    requestId,
     38    Ci.nsIPaymentActionResponse.PAYMENT_ACCEPTED,
     39    "testing-payment-method", // payment method
     40    showResponseData, // payment method data
     41    "Bill A. Pacheco", // payer name
     42    "", // payer email
     43    ""
     44  ); // payer phone
     45  paymentSrv.respondPayment(
     46    showActionResponse.QueryInterface(Ci.nsIPaymentActionResponse)
     47  );
     48 }
     49 
     50 function showRequest(requestId) {
     51  let request = paymentSrv.getPaymentRequestById(requestId);
     52  const message =
     53    "request.shippingOption should be " +
     54    expectedRequestOption +
     55    " when calling show(), but got " +
     56    request.shippingOption +
     57    ".";
     58  if (request.shippingOption != expectedRequestOption) {
     59    emitTestFail(message);
     60  } else {
     61    emitTestPass(message);
     62  }
     63  if (changeShippingOption) {
     64    paymentSrv.changeShippingOption(requestId, changeShippingOption);
     65  } else {
     66    showResponse(requestId);
     67  }
     68 }
     69 
     70 function updateRequest(requestId) {
     71  let request = paymentSrv.getPaymentRequestById(requestId);
     72  const message =
     73    "request.shippingOption should be " +
     74    expectedUpdatedOption +
     75    " when calling updateWith(), but got " +
     76    request.shippingOption +
     77    ".";
     78  if (request.shippingOption != expectedUpdatedOption) {
     79    emitTestFail(message);
     80  } else {
     81    emitTestPass(message);
     82  }
     83  showResponse(requestId);
     84 }
     85 
     86 const TestingUIService = {
     87  showPayment: showRequest,
     88  abortPayment(requestId) {},
     89  completePayment(requestId) {
     90    let request = paymentSrv.getPaymentRequestById(requestId);
     91    let completeResponse = Cc[
     92      "@mozilla.org/dom/payments/payment-complete-action-response;1"
     93    ].createInstance(Ci.nsIPaymentCompleteActionResponse);
     94    completeResponse.init(
     95      requestId,
     96      Ci.nsIPaymentActionResponse.COMPLETE_SUCCEEDED
     97    );
     98    paymentSrv.respondPayment(
     99      completeResponse.QueryInterface(Ci.nsIPaymentActionResponse)
    100    );
    101  },
    102  updatePayment: updateRequest,
    103  closePayment(requestId) {},
    104  QueryInterface: ChromeUtils.generateQI(["nsIPaymentUIService"]),
    105 };
    106 
    107 paymentSrv.setTestingUIService(
    108  TestingUIService.QueryInterface(Ci.nsIPaymentUIService)
    109 );
    110 
    111 addMessageListener("set-expected-results", function (results) {
    112  expectedRequestOption = results.requestResult;
    113  expectedUpdatedOption = results.responseResult;
    114  changeShippingOption = results.changeOptionResult;
    115 });
    116 
    117 addMessageListener("teardown", function () {
    118  paymentSrv.setTestingUIService(null);
    119  sendAsyncMessage("teardown-complete");
    120 });