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 });