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

Quelle  test_imagecapture.html   Sprache: HTML

 
 products/sources/formale Sprachen/C/Firefox/dom/media/test/test_imagecapture.html


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

<head>
  <meta charset="utf-8">
  <title>ImageCapture tests</title>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <script type="text/javascript" src="gUM_support.js"></script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1041393">ImageCapture tests</a>
<script type="application/javascript">

// Check if the callback returns even no JS reference on it.
async function gcTest(track) {
  const repeat = 100;
  const promises = [];
  for (let i = 0; i < repeat; ++i) {
    const imageCapture = new ImageCapture(track);
    promises.push(new Promise((resolve, reject) => {
      imageCapture.onphoto = resolve;
      imageCapture.onerror = () =>
        reject(new Error(`takePhoto gcTest failure for capture ${i}`));
    }));
    imageCapture.takePhoto();
  }
  info("Call gc ");
  SpecialPowers.gc();
  await Promise.all(promises);
}

// Continue calling takePhoto() in rapid succession.
async function rapidTest(track) {
  const repeat = 100;
  const imageCapture = new ImageCapture(track);
  // "error" can fire synchronously in `takePhoto`
  const errorPromise = new Promise(r => imageCapture.onerror = r);
  for (let i = 0; i < repeat; ++i) {
    imageCapture.takePhoto();
  }
  for (let i = 0; i < repeat; ++i) {
    await Promise.race([
      new Promise(r => imageCapture.onphoto = r),
      errorPromise.then(() => Promise.reject(new Error("Capture failed"))),
    ]);
  }
}

// Check if the blob is decodable.
async function blobTest(track) {
  const imageCapture = new ImageCapture(track);
  // "error" can fire synchronously in `takePhoto`
  const errorPromise = new Promise(r => imageCapture.onerror = r);
  imageCapture.takePhoto();
  const blob = await Promise.race([
    new Promise(r => imageCapture.onphoto = r),
    errorPromise.then(() => Promise.reject(new Error("Capture failed"))),
  ]);

  const img = new Image();
  img.src = URL.createObjectURL(blob.data);
  await new Promise((resolve, reject) => {
    img.onload = resolve;
    img.onerror = () => reject(new Error("Decode failed"));
  });
}

// It should return an error event after disabling video track.
async function trackTest(track) {
  const imageCapture = new ImageCapture(track);
  track.enabled = false;
  try {
    const errorPromise = new Promise(r => imageCapture.onerror = r);
    imageCapture.takePhoto();
    const error = await Promise.race([
      errorPromise,
      new Promise(r => imageCapture.onphoto = r).then(
        () => Promise.reject(new Error("Disabled video track should fail"))),
    ]);
    is(error.imageCaptureError.code, error.imageCaptureError.PHOTO_ERROR,
      "Expected error code")
  } finally {
    track.enabled = true;
  }
}

async function init() {
  // Use loopback camera if available, otherwise fake.
  // MediaTrackGraph will be the backend of ImageCapture.
  await setupGetUserMediaTestPrefs();
  let stream = await navigator.mediaDevices.getUserMedia({video: true});
  return stream.getVideoTracks()[0];
}

async function start() {
  try {
    const track = await init();
    info("ImageCapture track disable test.");
    await trackTest(track);
    info("ImageCapture blob test.");
    await blobTest(track);
    info("ImageCapture rapid takePhoto() test.");
    await rapidTest(track);
    info("ImageCapture multiple instances test.");
    await gcTest(track);
  } catch (e) {
    ok(false, "Unexpected error during test: " + e);
  } finally {
    SimpleTest.finish();
  }
}

SimpleTest.requestCompleteLog();
SimpleTest.waitForExplicitFinish();

SpecialPowers.pushPrefEnv({
  "set": [
    ["dom.imagecapture.enabled", true],
    ["media.navigator.permission.disabled", true],
  ],
}, start);
</script>
</pre>
</body>
</html>

Messung V0.5
C=96 H=94 G=94

¤ Dauer der Verarbeitung: 0.21 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.