<!doctype html>
<meta charset=utf-8>
<title>Payment Request interface IDL tests</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/WebIDLParser.js></script>
<script src=/resources/idlharness.js></script>
<script>
promise_test(async () => {
  const urls =  ["/interfaces/dom.idl", "/interfaces/payment-request.idl"];
  const [dom, payment_request] = await Promise.all(
    urls.map(url => fetch(url).then(r => r.text())));
  const idlArray = new IdlArray();
  idlArray.add_untested_idls(dom);
  idlArray.add_idls(payment_request);

  // typedef EventHandler from HTML
  // https://html.spec.whatwg.org/#eventhandler
  idlArray.add_idls(`
    [TreatNonObjectAsNull]
    callback EventHandlerNonNull = any (Event event);
    typedef EventHandlerNonNull? EventHandler;
  `);
  const methods = "[{supportedMethods: 'foo'}]";
  const amount = "{currency: 'USD', value: '0'}";
  const details = `{total: {label: 'bar', amount: ${amount}} }`;
  idlArray.add_objects({
    PaymentRequest: [`new PaymentRequest(${methods}, ${details})`],
  });
  idlArray.test();
}, "Setup for Payment Request API IDL tests.");
</script>
