payment-request-onshippingaddresschange-attribute.https.html (2844B)
1 <!DOCTYPE html> 2 <!-- Copyright © 2017 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> 3 <meta charset="utf-8"> 4 <title>Test for onshippingaddresschange attribute</title> 5 <link rel="help" href="https://w3c.github.io/browser-payment-api/#onshippingaddresschange-attribute"> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script> 9 "use strict"; 10 const applePay = Object.freeze({ 11 supportedMethods: "https://apple.com/apple-pay", 12 data: { 13 version: 3, 14 merchantIdentifier: "merchant.com.example", 15 countryCode: "US", 16 merchantCapabilities: ["supports3DS"], 17 supportedNetworks: ["visa"], 18 } 19 }); 20 const basicCard = Object.freeze({ supportedMethods: "basic-card" }); 21 const defaultMethods = Object.freeze([basicCard, applePay]); 22 const defaultDetails = Object.freeze({ 23 total: { 24 label: "Total", 25 amount: { 26 currency: "USD", 27 value: "1.00", 28 }, 29 }, 30 }); 31 32 test(() => { 33 const request = new PaymentRequest(defaultMethods, defaultDetails); 34 assert_idl_attribute(request, "onshippingaddresschange"); 35 }, "Must have a onshippingaddresschange IDL attribute"); 36 37 test(() => { 38 const request = new PaymentRequest(defaultMethods, defaultDetails); 39 const ev = new Event("shippingaddresschange"); 40 let didHandle = false; 41 request.onshippingaddresschange = evt => { 42 assert_equals(ev, evt, "must be same event"); 43 didHandle = true; 44 }; 45 request.dispatchEvent(ev); 46 assert_true(didHandle, "event did not fire"); 47 }, `onshippingaddresschange attribute is a generic handler for "shippingaddresschange"`); 48 49 test(() => { 50 const request = new PaymentRequest(defaultMethods, defaultDetails); 51 const ev = new PaymentRequestUpdateEvent("shippingaddresschange"); 52 let didHandle = false; 53 request.onshippingaddresschange = evt => { 54 assert_equals(ev, evt, "must be same event"); 55 didHandle = true; 56 }; 57 request.dispatchEvent(ev); 58 assert_true(didHandle, "event did not fire"); 59 }, `onshippingaddresschange attribute is a handler for PaymentRequestUpdateEvent`); 60 61 test(() => { 62 const request = new PaymentRequest(defaultMethods, defaultDetails); 63 const ev = new PaymentRequestUpdateEvent("shippingaddresschange"); 64 let didHandle = false; 65 let didListen = false; 66 request.onshippingaddresschange = evt => { 67 assert_equals(ev, evt, "must be same event"); 68 didHandle = true; 69 }; 70 request.addEventListener("shippingaddresschange", evt => { 71 assert_equals(ev, evt, "must be same event"); 72 didListen = true; 73 }); 74 request.dispatchEvent(ev); 75 assert_true(didHandle, "onshippingaddresschange did not receive the event"); 76 assert_true(didListen, "addEventListener did not receive the event"); 77 }, `onshippingaddresschange attribute and listeners both work`); 78 </script>