tor-browser

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

payment-request-abort-method.https.html (3368B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8" />
      3 <title>Test for PaymentRequest.abort() method</title>
      4 <link rel="help" href="https://w3c.github.io/payment-request/#abort-method" />
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 <script src="/resources/testdriver.js"></script>
      8 <script src="/resources/testdriver-vendor.js"></script>
      9 <script>
     10 "use strict";
     11 setup({
     12  // Ignore unhandled rejections resulting from .show()'s acceptPromise
     13  // not being explicitly handled.
     14  allow_uncaught_exception: true,
     15  explicit_timeout: true,
     16 });
     17 const basicCard = Object.freeze({ supportedMethods: "basic-card" });
     18 const applePay = Object.freeze({
     19  supportedMethods: "https://apple.com/apple-pay",
     20  data: {
     21    version: 3,
     22    merchantIdentifier: "merchant.com.example",
     23    countryCode: "US",
     24    merchantCapabilities: ["supports3DS"],
     25    supportedNetworks: ["visa"],
     26  },
     27 });
     28 const defaultMethods = Object.freeze([basicCard, applePay]);
     29 const defaultDetails = Object.freeze({
     30  total: {
     31    label: "Total",
     32    amount: {
     33      currency: "USD",
     34      value: "1.00",
     35    },
     36  },
     37 });
     38 
     39 promise_test(async t => {
     40  // request is in "created" state
     41  const request = new PaymentRequest(defaultMethods, defaultDetails);
     42  await promise_rejects_dom(t, "InvalidStateError", request.abort());
     43 }, `Throws if the promise [[state]] is not "interactive"`);
     44 
     45 promise_test(async t => {
     46  const request = new PaymentRequest(defaultMethods, defaultDetails);
     47  const promises = new Set([
     48    request.abort(),
     49    request.abort(),
     50    request.abort(),
     51  ]);
     52  assert_equals(promises.size, 3, "Must have three unique objects");
     53 }, "Calling abort() multiple times is always a new object.");
     54 
     55 promise_test(async t => {
     56  const request = new PaymentRequest(defaultMethods, defaultDetails);
     57  await test_driver.bless("show payment request");
     58  const acceptPromise = request.show();
     59  await request.abort();
     60  await promise_rejects_dom(t, "AbortError", acceptPromise);
     61  // As request is now "closed", trying to show it will fail
     62  await test_driver.bless("show payment request");
     63  await promise_rejects_dom(t, "InvalidStateError", request.show());
     64 }, "The same request cannot be shown multiple times.");
     65 
     66 promise_test(async t => {
     67  // request is in "created" state.
     68  const request = new PaymentRequest(defaultMethods, defaultDetails);
     69  await promise_rejects_dom(t, "InvalidStateError", request.abort());
     70  // Call it again, for good measure.
     71  await promise_rejects_dom(t, "InvalidStateError", request.abort());
     72  // The request's state is "created", so let's show it
     73  // which changes the state to "interactive.".
     74  await test_driver.bless("show payment request");
     75  const acceptPromise = request.show();
     76  // Let's set request the state to "closed" by calling .abort()
     77  await request.abort();
     78  // The request is now "closed", so...
     79  await promise_rejects_dom(t, "InvalidStateError", request.abort());
     80  await promise_rejects_dom(t, "AbortError", acceptPromise);
     81 }, "Aborting a request before it is shown doesn't prevent it from being shown later.");
     82 </script>
     83 <small>
     84  If you find a buggy test, please
     85  <a href="https://github.com/web-platform-tests/wpt/issues">file a bug</a> and
     86  tag one of the
     87  <a
     88    href="https://github.com/web-platform-tests/wpt/blob/master/payment-request/META.yml"
     89    >suggested reviewers</a
     90  >.
     91 </small>