Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/payments/test/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 9 kB image not shown  

Quelle  test_closePayment.html   Sprache: HTML

 
 products/Sources/formale Sprachen/C/Firefox/dom/payments/test/test_closePayment.html


<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1408234
-->

<head>
  <meta charset="utf-8">
  <title>Test for closing PaymentRequest</title>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <script type="application/javascript" src="DefaultData.js"></script>
  <script type="application/javascript">

  "use strict";
  SimpleTest.waitForExplicitFinish();

  var gUrl = SimpleTest.getTestFileURL('ClosePaymentChromeScript.js');
  var gScript = SpecialPowers.loadChromeScript(gUrl);

  function testFailHandler(message) {
    ok(false, message);
  }
  function testPassHandler(message) {
    ok(true, message);
  }
  gScript.addMessageListener("test-fail", testFailHandler);
  gScript.addMessageListener("test-pass", testPassHandler);

  async function requestChromeAction(action, params) {
    gScript.sendAsyncMessage(action, params);
    await new Promise(resolve => {
      gScript.addMessageListener(`${action}-complete`, function completeListener() {
        gScript.removeMessageListener(`${action}-complete`, completeListener);
        resolve();
      });
    });
  }

  async function testCloseByReloading() {
    const testName = "testCloseByReloading";
    await requestChromeAction("test-setup", testName);
    info(testName);
    let nextStatus = ["creating""reloading"];
    let currStatus = nextStatus.shift();
    let ifr = document.createElement('iframe');
    await requestChromeAction("payment-num-set");

    await new Promise((resolve) => {
      let listener = function(event) {
        is(event.data, "successful",
           `${testName}: Expected 'successful' when ${currStatus}, but got '${event.data}'.`);
        if (currStatus === "creating") {
          ifr.contentWindow.location.reload();
        } else if (currStatus === "reloading") {
          window.removeEventListener("message", listener);
          resolve();
        }
        currStatus = nextStatus.shift();
      }
      window.addEventListener("message", listener);
      ifr.src = "simple_payment_request.html";
      document.body.appendChild(ifr);
    });

    await requestChromeAction("payment-num-check", 1);
    document.body.removeChild(ifr);

  }

  async function testCloseByRedirecting() {
    const testName = "testCloseByRedirecting";
    await requestChromeAction("test-setup", testName);
    return new Promise((resolve) => {
      let nextStatus = ["creating""redirecting"];
      let currStatus = nextStatus.shift();
      let ifr = document.createElement('iframe');
      let listener = async function(event) {
        is(event.data, "successful",
           `${testName}: Expected 'successful' when ${currStatus}, but got '${event.data}'.`);
        if (currStatus === "creating") {
          ifr.src = "blank_page.html";
        } else if (currStatus === "redirecting"){
          window.removeEventListener("message", listener);
          await requestChromeAction("close-check");
          document.body.removeChild(ifr);
          resolve();
        }
        currStatus = nextStatus.shift();
      };
      window.addEventListener("message", listener);
      ifr.src = "simple_payment_request.html";
      document.body.appendChild(ifr);
    });
  }

  async function testCloseByRedirectingAfterShow() {
    const testName = "testCloseByRedirectingAfterShow";
    await requestChromeAction("test-setup", testName);
    return new Promise((resolve) => {
      let nextStatus = ["creating""showing""redirecting"];
      let currStatus = nextStatus.shift();
      let ifr = document.createElement('iframe');
      let handler = undefined;
      let listener = async (event) => {
        is(event.data, "successful",
           `${testName}: Expected 'successful' when ${currStatus}, but got '${event.data}'.`);
        if (currStatus === "creating") {
          handler = SpecialPowers.getDOMWindowUtils(ifr.contentWindow).setHandlingUserInput(true);
          ifr.contentWindow.postMessage("show PaymentRequest""*");
        } else if (currStatus === "showing") {
          handler.destruct();
          ifr.src = "blank_page.html";
        } else if (currStatus === "redirecting") {
          window.removeEventListener("message", listener);
          await requestChromeAction("close-check");
          await requestChromeAction("reject-payment", true);
          document.body.removeChild(ifr);
          resolve();
        }
        currStatus = nextStatus.shift();
      }
      window.addEventListener("message", listener);
      ifr.src = "simple_payment_request.html";
      document.body.appendChild(ifr);
    });
  }

  async function testCloseByRemovingIframe() {
    const testName = "testCloseByRemovingIframe";
    await requestChromeAction("test-setup", testName);
    return new Promise((resolve) => {
      let nextStatus = ["creating"];
      let currStatus = nextStatus.shift();
      let ifr = document.createElement('iframe');
      let listener = async function(event) {
        is(event.data, "successful",
           `${testName}: Expected 'successful' when ${currStatus}, but got '${event.data}'.`);
        document.body.removeChild(ifr);
        window.removeEventListener("message", listener);
        await requestChromeAction("close-check");
        resolve();
      };
      window.addEventListener("message", listener);
      ifr.src = "simple_payment_request.html";
      document.body.appendChild(ifr);
    });
  }

  async function testUpdateWithRespondedPayment() {
    const testName = "testUpdateWithRespondedPayment";
    await requestChromeAction("test-setup", testName);
    return new Promise(resolve => {
      let nextStatus = ["creating""showing""closing""updating""finishing"];
      let currStatus = nextStatus.shift();
      let ifr = document.createElement('iframe');
      let handler = undefined;
      let listener = async function(event) {
        is(event.data, "successful",
           `${testName}: Expected 'successful' when ${currStatus}, but got '${event.data}'.`);
        switch (currStatus) {
          case "creating":
            handler = SpecialPowers.getDOMWindowUtils(ifr.contentWindow).setHandlingUserInput(true);
            ifr.contentWindow.postMessage("show PaymentRequest""*");
            break;
          case "showing":
            await requestChromeAction("update-payment");
            break;
          case "closing":
            await requestChromeAction("reject-payment", false);
            break;
          case "updating":
            await requestChromeAction("close-check");
            ifr.contentWindow.postMessage("updateWith PaymentRequest""*");
            break;
          case "finishing":
            handler.destruct();
            document.body.removeChild(ifr);
            window.removeEventListener("message", listener);
            resolve();
            break;
          default:
            ok(false, testName + ": Unknown status()" + currStatus);
            break;
        }
        currStatus = nextStatus.shift();
      }
      window.addEventListener("message", listener);
      ifr.src = "simple_payment_request.html";
      document.body.appendChild(ifr);
    });
  }

  function getLoadedPaymentRequest(iframe, url) {
    return new Promise(resolve => {
      iframe.addEventListener(
        "load",
        () => {
          const { PaymentRequest } = iframe.contentWindow;
          const request = new PaymentRequest(defaultMethods, defaultDetails);
          resolve(request);
        },
        { once: true }
      );
      iframe.src = url;
    });
  }

  async function testNonfullyActivePayment() {
    const testName = "testNonfullyActivePayment";
    await requestChromeAction("test-setup", testName);

    const outer = document.createElement("iframe");
    outer.allow = "payment";
    document.body.appendChild(outer);
    await getLoadedPaymentRequest(outer,"blank_page.html");

    const inner = outer.contentDocument.createElement("iframe");
    inner.allow = "payment";
    outer.contentDocument.body.appendChild(inner);

    const request = await getLoadedPaymentRequest(inner,"blank_page.html");
    ok(request, `${testName}: PaymentRequest in inner iframe should exist.`);

    await new Promise(res => {
      outer.addEventListener("load", res);
      outer.src = "simple_payment_request.html";
    });

    let handler = SpecialPowers.getDOMWindowUtils(inner.contentWindow).setHandlingUserInput(true);
    try {
      const showPromise = await request.show();
      ok(false, `${testName}: expected 'AbortError', but got resolved.`);
    } catch (error) {
      is(error.name, "AbortError",
         `${testName}: expected 'AbortError'.`);
    }
    await handler.destruct();
    inner.remove();
    outer.remove();
  }

  async function teardown() {
    return new Promise((resolve) => {
      gScript.addMessageListener("teardown-complete", function teardownCompleteHandler() {
        gScript.removeMessageListener("teardown-complete", teardownCompleteHandler);
        gScript.removeMessageListener("test-fail", testFailHandler);
        gScript.removeMessageListener("test-pass", testPassHandler);
        gScript.destroy();
        SimpleTest.finish();
        resolve();
      });
      gScript.sendAsyncMessage("teardown");
    });
  }

  async function runTests() {
    try {
      await testCloseByReloading();
      await testCloseByRedirecting();
      await testCloseByRedirectingAfterShow();
      await testCloseByRemovingIframe();
      await testUpdateWithRespondedPayment();
      await testNonfullyActivePayment();
      await teardown();
    } catch(e) {
      ok(false, "test_closePayment.html: Unexpected error: " + e.name);
      SimpleTest.finish();
    }
  }

  window.addEventListener('load', function() {
    SpecialPowers.pushPrefEnv({
      'set': [
        ['dom.payments.request.enabled', true],
      ]
    }, runTests);
  });
  </script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1408234">Mozilla Bug 1408234</a>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1483470">Mozilla Bug 1483470</a>
</body>
</html>

Messung V0.5
C=100 H=100 G=100

¤ Dauer der Verarbeitung: 0.26 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.