<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>show() consumes user activation</title>
    <link rel="help" href="https://w3c.github.io/payment-request/#show-method" />
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="/resources/testdriver.js"></script>
    <script src="/resources/testdriver-vendor.js"></script>
  </head>
  <body>
    <script>
      const defaultMethods = [
        { supportedMethods: "basic-card" },
        {
          supportedMethods: "https://apple.com/apple-pay",
          data: {
            version: 3,
            merchantIdentifier: "merchant.com.example",
            countryCode: "US",
            merchantCapabilities: ["supports3DS"],
            supportedNetworks: ["visa"],
          },
        },
      ];

      const defaultDetails = {
        total: {
          label: "Total",
          amount: {
            currency: "USD",
            value: "1.00",
          },
        },
      };
      promise_test(async t => {
        const pr = new PaymentRequest(defaultMethods, defaultDetails);

        // Not activated by user gesture, so not allowed!
        await promise_rejects_dom(t, "SecurityError", pr.show());

        await test_driver.bless("Calls show() method");

        // Activated by user gesture, so all good.
        const showPromise = pr.show();

        // The activation has been consumed, so calling show() again would require
        // a new gesture.
        await promise_rejects_dom(t, "InvalidStateError", pr.show());

        // Abort the payment request
        pr.abort()
        await promise_rejects_dom(t, "AbortError", showPromise);
      }, "Calling share consumes user activation");
    </script>
  </body>
</html>
