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

Quelle  event_propagation_iframe.html   Sprache: HTML

 
 products/Sources/formale Sprachen/C/Firefox/dom/indexedDB/test/event_propagation_iframe.html


<!--
  Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/
-->

<html>
<head>
  <title>Indexed Database Property Test</title>

  <script type="text/javascript">

    let testGenerator = testSteps();

    function ok(val, message) {
      val = val ? "true" : "false";
      window.parent.postMessage("SimpleTest.ok(" + val + ", '" + message +
                                "');""*");
    }

    function grabEventAndContinueHandler(event) {
      testGenerator.next(event);
    }

    function errorHandler(event) {
      ok(false, "indexedDB error, code " + event.target.error.name);
      finishTest();
    }

    function finishTest() {
      testGenerator.return();
      window.parent.postMessage("SimpleTest.finish();""*");
    }

    const eventChain = [
      "IDBRequest",
      "IDBTransaction",
      "IDBDatabase",
    ];

    let captureCount = 0;
    let bubbleCount = 0;
    let atTargetCount = 0;

    function errorEventCounter(event) {
      ok(event.type == "error""Got an error event");
      ok(event.target instanceof window[eventChain[0]],
         "Correct event.target");

      let constructor;
      if (event.eventPhase == event.AT_TARGET) {
        atTargetCount++;
        constructor = eventChain[0];
      }
      else if (event.eventPhase == event.CAPTURING_PHASE) {
        constructor = eventChain[eventChain.length - 1 - captureCount++];
      }
      else if (event.eventPhase == event.BUBBLING_PHASE) {
        constructor = eventChain[++bubbleCount];
        if (bubbleCount == eventChain.length - 1) {
          event.preventDefault();
        }
      }
      ok(event.currentTarget instanceof window[constructor],
         "Correct event.currentTarget");

      if (bubbleCount == eventChain.length - 1) {
        ok(bubbleCount == captureCount,
           "Got same number of calls for both phases");
        ok(atTargetCount == 1, "Got one atTarget event");

        captureCount = bubbleCount = atTargetCount = 0;
        finishTest();
      }
    }

    function* testSteps() {
      window.parent.SpecialPowers.addPermission("indexedDB", true, document);

      let request = indexedDB.open(window.location.pathname, 1);
      request.onerror = errorHandler;
      request.onupgradeneeded = grabEventAndContinueHandler;
      let event = yield undefined;

      let db = event.target.result;
      db.onerror = errorEventCounter;
      db.addEventListener("error", errorEventCounter, true);

      event.target.onsuccess = grabEventAndContinueHandler;

      db.createObjectStore("foo", { autoIncrement: true });
      yield undefined;

      let transaction = db.transaction("foo""readwrite");
      transaction.addEventListener("error", errorEventCounter);
      transaction.addEventListener("error", errorEventCounter, true);

      let objectStore = transaction.objectStore("foo");

      request = objectStore.add({}, 1);
      request.onsuccess = grabEventAndContinueHandler;
      request.onerror = errorHandler;
      event = yield undefined;

      request = objectStore.add({}, 1);
      request.onsuccess = function() {
        ok(false, "Did not expect second add to succeed.");
      };
      request.onerror = errorEventCounter;
      yield undefined;

      transaction = db.transaction("foo""readwrite");
      transaction.addEventListener("error", errorEventCounter);
      transaction.addEventListener("error", errorEventCounter, true);

      objectStore = transaction.objectStore("foo");

      request = objectStore.add({}, 1);
      request.onsuccess = grabEventAndContinueHandler;
      request.onerror = errorHandler;
      event = yield undefined;

      request = objectStore.add({}, 1);
      request.onsuccess = function() {
        ok(false, "Did not expect second add to succeed.");
      };
      request.onerror = errorEventCounter;
      yield undefined;
    }
  </script>

</head>

<body onload="testGenerator.next();"></body>

</html>

Messung V0.5
C=91 H=96 G=93

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© 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.