tor-browser

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

onpaymentmethodchange-attribute.https.html (2699B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>Test for onpaymentmethodchange attribute</title>
      4 <link rel="help" href="https://w3c.github.io/browser-payment-api/#onpaymentmethodchange-attribute">
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 <script>
      8 "use strict";
      9 const testMethod = Object.freeze({ supportedMethods: "not-a-real-method" });
     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 defaultMethods = Object.freeze([testMethod, applePay]);
     21 const defaultDetails = Object.freeze({
     22  total: {
     23    label: "Total",
     24    amount: {
     25      currency: "USD",
     26      value: "1.00",
     27    },
     28  },
     29 });
     30 
     31 test(() => {
     32  const request = new PaymentRequest(defaultMethods, defaultDetails);
     33  assert_idl_attribute(request, "onpaymentmethodchange");
     34 }, "Must have a onpaymentmethodchange IDL attribute");
     35 
     36 test(() => {
     37  const request = new PaymentRequest(defaultMethods, defaultDetails);
     38  const ev = new Event("paymentmethodchange");
     39  let didHandle = false;
     40  request.onpaymentmethodchange = evt => {
     41    assert_equals(ev, evt, "must be same event");
     42    didHandle = true;
     43  };
     44  request.dispatchEvent(ev);
     45  assert_true(didHandle, "event did not fire");
     46 }, `onpaymentmethodchange attribute is a generic handler for "paymentmethodchange"`);
     47 
     48 test(() => {
     49  const request = new PaymentRequest(defaultMethods, defaultDetails);
     50  const ev = new PaymentMethodChangeEvent("paymentmethodchange");
     51  let didHandle = false;
     52  request.onpaymentmethodchange = evt => {
     53    assert_equals(ev, evt, "must be same event");
     54    didHandle = true;
     55  };
     56  request.dispatchEvent(ev);
     57  assert_true(didHandle, "event did not fire");
     58 }, `onpaymentmethodchange attribute is a handler for PaymentMethodChangeEvent`);
     59 
     60 test(() => {
     61  const request = new PaymentRequest(defaultMethods, defaultDetails);
     62  const ev = new PaymentMethodChangeEvent("paymentmethodchange", {
     63    methodName: "test"
     64  });
     65  let didHandle = false;
     66  let didListen = false;
     67  request.onpaymentmethodchange = evt => {
     68    assert_equals(ev, evt, "must be same event");
     69    didHandle = true;
     70  };
     71  request.addEventListener("paymentmethodchange", evt => {
     72    assert_equals(ev, evt, "must be same event");
     73    didListen = true;
     74  });
     75  request.dispatchEvent(ev);
     76  assert_true(didHandle, "onpaymentmethodchange did not receive the event");
     77  assert_true(didListen, "addEventListener did not receive the event");
     78 }, `onpaymentmethodchange attribute and listeners both work`);
     79 </script>