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

Quelle  test_reload.js   Sprache: JAVA

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


createAppInfo("xpcshell@tests.mozilla.org""XPCShell""1""42");

const ID = "webextension1@tests.mozilla.org";

const ADDONS = {
  webextension_1: {
    "manifest.json": {
      name: "Web Extension Name",
      version: "1.0",
      manifest_version: 2,
      browser_specific_settings: {
        gecko: {
          id: ID,
        },
      },
      icons: {
        48: "icon48.png",
        64: "icon64.png",
      },
    },
    "chrome.manifest""content webex ./\n",
  },
};

async function tearDownAddon(addon) {
  await addon.uninstall();
  await promiseShutdownManager();
}

add_task(async function test_reloading_a_temp_addon() {
  await promiseRestartManager();
  let xpi = AddonTestUtils.createTempXPIFile(ADDONS.webextension_1);
  const addon = await AddonManager.installTemporaryAddon(xpi);

  var receivedOnUninstalled = false;
  var receivedOnUninstalling = false;
  var receivedOnInstalled = false;
  var receivedOnInstalling = false;

  const onReload = new Promise(resolve => {
    const listener = {
      onUninstalling: addonObj => {
        if (addonObj.id === ID) {
          receivedOnUninstalling = true;
        }
      },
      onUninstalled: addonObj => {
        if (addonObj.id === ID) {
          receivedOnUninstalled = true;
        }
      },
      onInstalling: addonObj => {
        receivedOnInstalling = true;
        equal(addonObj.id, ID);
      },
      onInstalled: addonObj => {
        receivedOnInstalled = true;
        equal(addonObj.id, ID);
        // This should be the last event called.
        AddonManager.removeAddonListener(listener);
        resolve();
      },
    };
    AddonManager.addAddonListener(listener);
  });

  await addon.reload();
  await onReload;

  // Make sure reload() doesn't trigger uninstall events.
  equal(
    receivedOnUninstalled,
    false,
    "reload should not trigger onUninstalled"
  );
  equal(
    receivedOnUninstalling,
    false,
    "reload should not trigger onUninstalling"
  );

  // Make sure reload() triggers install events, like an upgrade.
  equal(receivedOnInstalling, true"reload should trigger onInstalling");
  equal(receivedOnInstalled, true"reload should trigger onInstalled");

  await tearDownAddon(addon);
});

add_task(async function test_can_reload_permanent_addon() {
  await promiseRestartManager();
  const { addon } = await AddonTestUtils.promiseInstallXPI(
    ADDONS.webextension_1
  );

  let disabledCalled = false;
  let enabledCalled = false;
  AddonManager.addAddonListener({
    onDisabled: () => {
      Assert.ok(!enabledCalled);
      disabledCalled = true;
    },
    onEnabled: () => {
      Assert.ok(disabledCalled);
      enabledCalled = true;
    },
  });

  await addon.reload();

  Assert.ok(disabledCalled);
  Assert.ok(enabledCalled);

  notEqual(addon, null);
  equal(addon.appDisabled, false);
  equal(addon.userDisabled, false);

  await tearDownAddon(addon);
});

add_task(async function test_reload_to_invalid_version_fails() {
  await promiseRestartManager();
  let tempdir = gTmpD.clone();

  // The initial version of the add-on will be compatible, and will therefore load
  const addonId = "invalid_version_cannot_be_reloaded@tests.mozilla.org";
  let manifest = {
    name: "invalid_version_cannot_be_reloaded",
    description: "test invalid_version_cannot_be_reloaded",
    manifest_version: 2,
    version: "1.0",
    browser_specific_settings: {
      gecko: {
        id: addonId,
      },
    },
  };

  let addonDir = await promiseWriteWebManifestForExtension(
    manifest,
    tempdir,
    "invalid_version"
  );
  await AddonManager.installTemporaryAddon(addonDir);

  let addon = await promiseAddonByID(addonId);
  notEqual(addon, null);
  equal(addon.id, addonId);
  equal(addon.version, "1.0");
  equal(addon.appDisabled, false);
  equal(addon.userDisabled, false);
  addonDir.remove(true);

  // update the manifest to make the add-on version incompatible, so the reload will reject
  manifest.browser_specific_settings.gecko.strict_min_version = "1";
  manifest.browser_specific_settings.gecko.strict_max_version = "1";
  manifest.version = "2.0";

  addonDir = await promiseWriteWebManifestForExtension(
    manifest,
    tempdir,
    "invalid_version",
    false
  );
  let expectedMsg = new RegExp(
    "Add-on invalid_version_cannot_be_reloaded@tests.mozilla.org is not compatible with application version. " +
      "add-on minVersion: 1. add-on maxVersion: 1."
  );

  await Assert.rejects(
    addon.reload(),
    expectedMsg,
    "Reload rejects when application version does not fall between minVersion and maxVersion"
  );

  let reloadedAddon = await promiseAddonByID(addonId);
  notEqual(reloadedAddon, null);
  equal(reloadedAddon.id, addonId);
  equal(reloadedAddon.version, "1.0");
  equal(reloadedAddon.appDisabled, false);
  equal(reloadedAddon.userDisabled, false);

  await tearDownAddon(reloadedAddon);
  addonDir.remove(true);
});

Messung V0.5
C=95 H=84 G=89

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