test_bug1490698.html (4012B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=1490698 5 --> 6 <head> 7 <meta charset="utf-8"> 8 <title>Test for retry PaymentRequest</title> 9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 10 <script src="/tests/SimpleTest/SimpleTest.js"></script> 11 <script type="application/javascript" src="DefaultData.js"></script> 12 <script type="application/javascript"> 13 14 "use strict"; 15 SimpleTest.waitForExplicitFinish(); 16 17 const gUrl = SimpleTest.getTestFileURL('Bug1490698ChromeScript.js'); 18 const gScript = SpecialPowers.loadChromeScript(gUrl); 19 20 function testFailHandler(message) { 21 ok(false, message); 22 } 23 function testPassHandler(message) { 24 ok(true, message); 25 } 26 gScript.addMessageListener("test-fail", testFailHandler); 27 gScript.addMessageListener("test-pass", testPassHandler); 28 29 async function requestChromeAction(action, params) { 30 gScript.sendAsyncMessage(action, params); 31 await new Promise(resolve => { 32 gScript.addMessageListener(`${action}-complete`, function completeListener() { 33 gScript.removeMessageListener(`${action}-complete`, completeListener); 34 resolve(); 35 }); 36 }); 37 } 38 function unexpectedErrMsg(testName, errName, timing) { 39 return `${testName}: Unexpected error(${errName}) when ${timing} the PaymentRequest.`; 40 } 41 42 async function testInteractWithPaymentUnderWrongState() { 43 const testName = "testInteractWithPaymentUnderWrongState"; 44 await requestChromeAction("start-test", testName); 45 const payRequest = new PaymentRequest(defaultMethods, defaultDetails, defaultOptions); 46 ok(payRequest, testName + ": failed to create PaymentRequest."); 47 if (!payRequest) { 48 await requestChromeAction("finish-test"); 49 return; 50 } 51 const handler = SpecialPowers.getDOMWindowUtils(window).setHandlingUserInput(true); 52 let payResponse; 53 try { 54 payResponse = await payRequest.show(); 55 info(`${testName}: Interact with payment when PaymentRequest is eClosed`); 56 await requestChromeAction("interact-with-payment"); 57 handler.destruct(); 58 } catch(err) { 59 ok(false, unexpectedErrMsg(testName, err.name, "showing")); 60 handler.destruct(); 61 await requestChromeAction("finish-test"); 62 return; 63 } 64 try { 65 await payResponse.complete("success"); 66 ok(true, `${testName}: complete() is successful after PaymentRequest's state is eClosed.`); 67 } catch(err) { 68 ok(false, unexpectedErrMsg(testName, err.name, "completing")); 69 await requestChromeAction("finish-test"); 70 return; 71 } 72 try { 73 info(`${testName}: Interact with payment when PaymentRequest is completed`); 74 await requestChromeAction("interact-with-payment"); 75 } catch(err) { 76 ok(false, unexpectedErrMsg(testName, err.name, "completing")); 77 await requestChromeAction("finish-test"); 78 return; 79 } 80 await requestChromeAction("finish-test"); 81 } 82 83 function teardown() { 84 return new Promise((resolve, reject) => { 85 gScript.addMessageListener("teardown-complete", function teardownCompleteHandler() { 86 gScript.removeMessageListener("teardown-complete", teardownCompleteHandler); 87 gScript.removeMessageListener("test-fail", testFailHandler); 88 gScript.removeMessageListener("test-pass", testPassHandler); 89 gScript.destroy(); 90 SimpleTest.finish(); 91 resolve(); 92 }); 93 gScript.sendAsyncMessage("teardown"); 94 }); 95 } 96 97 async function runTests() { 98 try { 99 await testInteractWithPaymentUnderWrongState(); 100 await teardown(); 101 } catch(e) { 102 ok(false, "Unexpected error: " + e.name); 103 SimpleTest.finish(); 104 } 105 } 106 107 window.addEventListener('load', function() { 108 SpecialPowers.pushPrefEnv({ 109 'set': [ 110 ['dom.payments.request.enabled', true], 111 ] 112 }, runTests); 113 }); 114 </script> 115 </head> 116 <body> 117 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1490698">Mozilla Bug 1490698</a> 118 </body> 119 </html>