// -*- indent-tabs-mode: nil; js-indent-level: 2 -*- /* 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/. */ let Cc = Components.classes; let Ci = Components.interfaces; let Cu = Components.utils; Components.utils.import("resource://gre/modules/SharedPreferences.jsm"); Components.utils.import("resource://gre/modules/Promise.jsm"); let ppmm = Cc["@mozilla.org/parentprocessmessagemanager;1"].getService(Ci.nsIMessageListenerManager); let deferred = 0; let shouldPass = true; let reqId = 0; function getRequestId(increment) { reqId += increment; return "Request" + reqId; } let paymentSuccess = { receiveMessage: function(aMsg) { let msg = aMsg.json; if (shouldPass) { do_check_eq(msg.requestId, getRequestId(0)); } else { do_throw("Test should not have passed"); } deferred.resolve(); } } let paymentFailed = { receiveMessage: function(aMsg) { let msg = aMsg.json; if (shouldPass) { do_throw("Test should not have failed: " + msg.errorMsg); } else { do_check_eq(msg.requestId, getRequestId(0)); do_check_eq(msg.errorMsg, "FAILED CORRECTLY"); } deferred.resolve(); } } add_task(function test_get_set() { let ui = Cc["@mozilla.org/payment/ui-glue;1"].getService(Ci.nsIPaymentUIGlue); deferred = Promise.defer(); let id = getRequestId(1); ui.confirmPaymentRequest(id, [{ wrappedJSObject: { type: "Fake Provider" } }], function(aRequestId, type) { do_check_eq(type, "Fake Provider"); deferred.resolve(); }, function(id, msg) { do_throw("confirmPaymentRequest should not have failed"); deferred.resolve(); }); yield deferred.promise; }); add_task(function test_default() { ppmm.addMessageListener("Payment:Success", paymentSuccess); ppmm.addMessageListener("Payment:Failed", paymentFailed); let ui = Cc["@mozilla.org/payment/ui-glue;1"].getService(Ci.nsIPaymentUIGlue); deferred = Promise.defer(); let id = getRequestId(1); shouldPass = true; ui.showPaymentFlow(id, { uri: "chrome://roboextender/content/paymentsUI.html", jwt: "#pass" }, function(id, msg) { do_throw("confirmPaymentRequest should not have failed"); deferred.resolve(); }); yield deferred.promise; deferred = Promise.defer(); id = getRequestId(1); shouldPass = false; ui.showPaymentFlow(id, { uri: "chrome://roboextender/content/paymentsUI.html", jwt: "#fail" }, function(id, msg) { do_throw("confirmPaymentRequest should not have failed"); deferred.resolve(); }); yield deferred.promise; ppmm.removeMessageListener("Payment:Success", paymentSuccess); ppmm.removeMessageListener("Payment:Failed", paymentFailed); }); run_next_test();