Eine aufbereitete Darstellung der Quelle

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

Benutzer

Quelle  browser_test_lna_worker.js   Sprache: JAVA

 

"use strict";

// Tests that Local Network Access (LNA) checks are enforced for requests
// made from dedicated and shared workers.

Services.scriptloader.loadSubScript(
  new URL("head_local_network_access.js", gTestPath).href,
  this
);

add_setup(async function () {
  await setupLnaPrefs();
  await SpecialPowers.pushPrefEnv({
    set: [["dom.serviceWorkers.testing.enabled", true]],
  });
  await setupLnaServer();
});

requestLongerTimeout(5);

const sharedWorkerTestCases = [
  {
    type: "shared-worker-fetch",
    allowStatus: Cr.NS_OK,
    denyStatus: Cr.NS_ERROR_LOCAL_NETWORK_ACCESS_DENIED,
  },
  {
    type: "shared-worker-xhr",
    allowStatus: Cr.NS_OK,
    denyStatus: Cr.NS_ERROR_LOCAL_NETWORK_ACCESS_DENIED,
  },
];

// Shared worker: denied without persistent permission (no prompt shown)
add_task(async function test_lna_shared_worker_denied_without_permission() {
  Services.prefs.setCharPref(
    "network.lna.address_space.public.override",
    "127.0.0.1:4443"
  );
  for (const test of sharedWorkerTestCases) {
    const rand = Math.random();
    await runSingleTestCase(
      test,
      rand,
      test.denyStatus,
      `Shared worker ${test.type} denied without persistent permission`
    );
  }
  Services.prefs.clearUserPref("network.lna.address_space.public.override");
});

// Shared worker: allowed with persistent permission (no prompt shown)
add_task(async function test_lna_shared_worker_allowed_with_permission() {
  Services.prefs.setCharPref(
    "network.lna.address_space.public.override",
    "127.0.0.1:4443"
  );

  // Add persistent loopback-network permission for example.com
  let principal =
    Services.scriptSecurityManager.createContentPrincipalFromOrigin(
      "https://example.com"
    );
  Services.perms.addFromPrincipal(
    principal,
    "loopback-network",
    Services.perms.ALLOW_ACTION,
    Services.perms.EXPIRE_NEVER
  );

  for (const test of sharedWorkerTestCases) {
    const rand = Math.random();
    await runSingleTestCase(
      test,
      rand,
      test.allowStatus,
      `Shared worker ${test.type} allowed with persistent permission`
    );
  }

  Services.perms.removeFromPrincipal(principal, "loopback-network");
  Services.prefs.clearUserPref("network.lna.address_space.public.override");
});

const serviceWorkerTestCases = [
  {
    type: "service-worker-fetch",
    allowStatus: Cr.NS_OK,
    denyStatus: Cr.NS_ERROR_LOCAL_NETWORK_ACCESS_DENIED,
  },
];

// Service worker: denied without persistent permission (no prompt shown)
add_task(async function test_lna_service_worker_denied_without_permission() {
  Services.prefs.setCharPref(
    "network.lna.address_space.public.override",
    "127.0.0.1:4443"
  );
  for (const test of serviceWorkerTestCases) {
    const rand = Math.random();
    await runSingleTestCase(
      test,
      rand,
      test.denyStatus,
      `Service worker ${test.type} denied without persistent permission`
    );
  }
  Services.prefs.clearUserPref("network.lna.address_space.public.override");
});

// Service worker: allowed with persistent permission (no prompt shown)
add_task(async function test_lna_service_worker_allowed_with_permission() {
  Services.prefs.setCharPref(
    "network.lna.address_space.public.override",
    "127.0.0.1:4443"
  );

  let principal =
    Services.scriptSecurityManager.createContentPrincipalFromOrigin(
      "https://example.com"
    );
  Services.perms.addFromPrincipal(
    principal,
    "loopback-network",
    Services.perms.ALLOW_ACTION,
    Services.perms.EXPIRE_NEVER
  );

  for (const test of serviceWorkerTestCases) {
    const rand = Math.random();
    await runSingleTestCase(
      test,
      rand,
      test.allowStatus,
      `Service worker ${test.type} allowed with persistent permission`
    );
  }

  Services.perms.removeFromPrincipal(principal, "loopback-network");
  Services.prefs.clearUserPref("network.lna.address_space.public.override");
});

Messung V0.5 in Prozent
C=94 H=64 G=80

¤ Dauer der Verarbeitung: 0.18 Sekunden  (vorverarbeitet am  2026-10-02) ¤

*© 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=1126864
#Domains=2039723