tor-browser

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

Bug1478740ChromeScript.js (2420B)


      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 function rejectPayment(requestId) {
     25  const responseData = Cc[
     26    "@mozilla.org/dom/payments/general-response-data;1"
     27  ].createInstance(Ci.nsIGeneralResponseData);
     28  responseData.initData({});
     29  const showResponse = Cc[
     30    "@mozilla.org/dom/payments/payment-show-action-response;1"
     31  ].createInstance(Ci.nsIPaymentShowActionResponse);
     32  showResponse.init(
     33    requestId,
     34    Ci.nsIPaymentActionResponse.PAYMENT_REJECTED,
     35    "", // payment method
     36    responseData, // payment method data
     37    "", // payer name
     38    "", // payer email
     39    ""
     40  ); // payer phone
     41  paymentSrv.respondPayment(
     42    showResponse.QueryInterface(Ci.nsIPaymentActionResponse)
     43  );
     44 }
     45 
     46 const DummyUIService = {
     47  testName: "",
     48  requestId: "",
     49  showPayment(requestId) {
     50    this.requestId = requestId;
     51    sendAsyncMessage("showing-payment", { data: "successful" });
     52  },
     53  abortPayment(requestId) {
     54    this.requestId = requestId;
     55  },
     56  completePayment(requestId) {
     57    this.requestId = requestId;
     58  },
     59  updatePayment(requestId) {
     60    this.requestId = requestId;
     61  },
     62  closePayment(requestId) {
     63    this.requestId = requestId;
     64  },
     65  QueryInterface: ChromeUtils.generateQI(["nsIPaymentUIService"]),
     66 };
     67 
     68 paymentSrv.setTestingUIService(
     69  DummyUIService.QueryInterface(Ci.nsIPaymentUIService)
     70 );
     71 
     72 addMessageListener("reject-payment", function () {
     73  rejectPayment(DummyUIService.requestId);
     74  sendAsyncMessage("reject-payment-complete");
     75 });
     76 
     77 addMessageListener("start-test", function (testName) {
     78  DummyUIService.testName = testName;
     79  sendAsyncMessage("start-test-complete");
     80 });
     81 
     82 addMessageListener("finish-test", function () {
     83  DummyUIService.testName = "";
     84  sendAsyncMessage("finish-test-complete");
     85 });
     86 
     87 addMessageListener("teardown", function () {
     88  paymentSrv.setTestingUIService(null);
     89  sendAsyncMessage("teardown-complete");
     90 });