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

Quelle  test_persist_groupLimit.js   Sprache: JAVA

 
/**
 * Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/
 */


/**
 * This test is mainly to verify that persisted origins are not constrained by
 * the group limit.  It consits of these steps:
 * - Set the limits as small as our limits allow.  This does result in needing
 *   to perform 10 megs of writes which is a lot for a test but not horrible.
 * - Create databases for 2 origins under the same group.
 * - Have the foo2 origin use up the shared group quota.
 * - Verify neither origin can write additional data (via a single byte write).
 * - Do navigator.storage.persist() for that foo2 origin.
 * - Verify that both origins can now write an additional byte.  This
 *   demonstrates that:
 *   - foo2 no longer counts against the group limit at all since foo1 can
 *     write a byte.
 *   - foo2 is no longer constrained by the group limit itself.
 */

async function testSteps() {
  // The group limit is calculated as 20% of the global limit and the minimum
  // value of the group limit is 10 MB.

  const groupLimitKB = 10 * 1024;
  const globalLimitKB = groupLimitKB * 5;

  const urls = ["http://foo1.example.com", "http://foo2.example.com"];

  const foo2Index = 1;

  let index;

  info("Setting limits");

  setGlobalLimit(globalLimitKB);

  let request = clear();
  await requestFinished(request);

  info("Opening databases");

  let databases = [];
  for (index = 0; index < urls.length; index++) {
    let database = getSimpleDatabase(getPrincipal(urls[index]));

    request = database.open("data");
    await requestFinished(request);

    databases.push(database);
  }

  info("Filling up the whole group");

  try {
    request = databases[foo2Index].write(new ArrayBuffer(groupLimitKB * 1024));
    await requestFinished(request);
    ok(true"Should not have thrown");
  } catch (ex) {
    ok(false"Should not have thrown");
  }

  info("Verifying no more data can be written");

  for (index = 0; index < urls.length; index++) {
    try {
      request = databases[index].write(new ArrayBuffer(1));
      await requestFinished(request);
      ok(false"Should have thrown");
    } catch (e) {
      ok(true"Should have thrown");
      Assert.equal(
        e.resultCode,
        NS_ERROR_FILE_NO_DEVICE_SPACE,
        "Threw right result code"
      );
    }
  }

  info("Persisting origin");

  request = persist(getPrincipal(urls[foo2Index]));
  await requestFinished(request);

  info("Verifying more data data can be written");

  for (index = 0; index < urls.length; index++) {
    try {
      request = databases[index].write(new ArrayBuffer(1));
      await requestFinished(request);
      ok(true"Should not have thrown");
    } catch (ex) {
      ok(false"Should not have thrown");
    }
  }

  info("Closing databases");

  for (index = 0; index < urls.length; index++) {
    request = databases[index].close();
    await requestFinished(request);
  }

  finishTest();
}

Messung V0.5
C=90 H=77 G=83

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