Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  test_serial_workers.html

  Sprache: HTML
 

 products/Sources/formale Sprachen/C/Firefox/dom/webserial/tests/mochitest/test_serial_workers.html


<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>Test Web Serial API - Worker Support</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <script src="serial_test_utils.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<script>

"use strict";

add_task(async function testSerialInWorkerWithNoPorts() {
  await cleanupSerialPorts();
  const worker = new Worker("serial_worker.js");

  const testPromise = new Promise((resolve, reject) => {
    worker.onmessage = (e) => {
      if (e.data.type === "test") {
        const { result, message } = e.data;
        ok(!!result, message);
      } else if (e.data.type === "done") {
        resolve();
      } else if (e.data.type === "error") {
        reject(new Error(e.data.message));
      }
    };

    worker.onerror = (e) => {
      reject(new Error(`Worker error: ${e.message}`));
    };
  });

  await testPromise;
  worker.terminate();
});

add_task(async function testWorkerCanAccessGrantedPort() {
  await cleanupSerialPorts();
  info("Requesting port in window context");
  SpecialPowers.wrap(document).notifyUserGestureActivation();
  const port = await navigator.serial.requestPort({ filters: [] });

  ok(port, "requestPort should succeed in window context");

  let ports = await navigator.serial.getPorts();
  is(ports.length, 1"Should have 1 port after requestPort in window");
  const portInfo = ports[0].getInfo();
  is(portInfo.usbVendorId, 0x2341, "expected usbVendorId from port");
  is(portInfo.usbProductId, 0x0043, "expected usbProductId from port");

  info("Creating worker to access granted port");
  const worker = new Worker("serial_worker_access.js");

  const testPromise = new Promise((resolve, reject) => {
    worker.onmessage = (e) => {
      if (e.data.type === "test") {
        const { result, message } = e.data;
        ok(result, message);
      } else if (e.data.type === "done") {
        resolve();
      } else if (e.data.type === "error") {
        reject(new Error(e.data.message));
      }
    };

    worker.onerror = (e) => {
      reject(new Error(`Worker error: ${e.message}`));
    };
  });

  try {
    await testPromise;
  } finally {
    worker.terminate();
    await port.forget();
    ports = await navigator.serial.getPorts();
    is(ports.length, 0"Should have 0 ports after forgetting");
  }
});


add_task(async function testWorkerCanForgetPort() {
  await cleanupSerialPorts();
  info("Requesting port in window context");
  SpecialPowers.wrap(document).notifyUserGestureActivation();
  const port = await navigator.serial.requestPort({ filters: [] });
  ok(port, "requestPort should succeed in window context");

  let ports = await navigator.serial.getPorts();
  is(ports.length, 1"Should have 1 port before worker forget");

  info("Creating worker to forget port");
  const worker = new Worker("serial_worker_forget.js");

  const testPromise = new Promise((resolve, reject) => {
    worker.onmessage = (e) => {
      if (e.data.type === "test") {
        const { result, message } = e.data;
        ok(result, message);
      } else if (e.data.type === "done") {
        resolve();
      } else if (e.data.type === "error") {
        reject(new Error(e.data.message));
      }
    };

    worker.onerror = (e) => {
      reject(new Error(`Worker error: ${e.message}`));
    };
  });

  try {
    await testPromise;
  } finally {
    worker.terminate();
  }

  // Verify from the window context that the port was actually removed
  ports = await navigator.serial.getPorts();
  is(ports.length, 0"Window getPorts() should return 0 ports after worker forget");
  await Assert.rejects(
    port.open({baudRate: 9600}),
    /InvalidStateError/,
    "Should fail to open port after worker forget"
  );
});

add_task(async function testWorkerCanOpenPort() {
  await cleanupSerialPorts();
  info("Requesting port in window context");
  SpecialPowers.wrap(document).notifyUserGestureActivation();
  const port = await navigator.serial.requestPort({ filters: [] });
  ok(port, "requestPort should succeed in window context");

  info("Creating worker to open port");
  const worker = new Worker("serial_worker_open.js");

  const testPromise = new Promise((resolve, reject) => {
    worker.onmessage = (e) => {
      if (e.data.type === "test") {
        const { result, message } = e.data;
        ok(result, message);
      } else if (e.data.type === "done") {
        resolve();
      } else if (e.data.type === "error") {
        reject(new Error(e.data.message));
      }
    };

    worker.onerror = (e) => {
      reject(new Error(`Worker error: ${e.message}`));
    };
  });

  try {
    await testPromise;
  } finally {
    worker.terminate();
    await port.forget();
  }
});

</script>
</body>
</html>

Messung V0.5 in Prozent
C=88 H=92 G=89

¤ Dauer der Verarbeitung: 0.24 Sekunden  (vorverarbeitet am  2026-08-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002