tor-browser

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

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>