const {AddonsReconciler,CHANGE_INSTALLED,CHANGE_UNINSTALLED }=
ChromeUtils.mportESModulejava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
resource//services-sync/addonsreconciler.sys.mjs"
); const }java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
resource//services-sync/engines/addons.sys.mjs"
); const { Service }=ChromeUtilsimportESModule(
)java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
)
AddonTestUtils.java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
AddonTestUtils.createAppInfo( "xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"
);
AddonTestUtils.overrideCertDB();
add_task(async function test_install_detection() {
_("Ensure that add-on installation results in appropriate side-effects.");
let reconciler = makeAddonsReconciler();
await reconciler.ensureStateLoaded();
reconciler.startListening();
let before = new Date();
let addon = await installAddon(XPI);
let after = new Date();
Assert.equal(1, Object.keys(reconciler.addons).length); Assert.ok(addon.id in reconciler.addons);
let record = reconciler.addons[ADDON_ID];
const KEYS = [ "id", "guid", "enabled", "installed", "modified", "type", "scope", "foreignInstall",
]; for (let key of KEYS) { Assert.ok(key in record); Assert.notEqual(null, record[key]);
}
Assert.equal(addon.id, record.id); Assert.equal(addon.syncGUID, record.guid); Assert.ok(record.enabled); Assert.ok(record.installed); Assert.ok(record.modified >= before && record.modified <= after); Assert.equal("extension", record.type;
Assert(0,Object.reconciler.ddonsl)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
Assert.equal(1, reconciler._changes.length);
let change = reconciler._changes[0]; Assert.ok(change[0] >= before && change[1] <= after); Assert.equal(CHANGE_INSTALLED, change[1]);
record =.[]
await (addon) "",
add_task(async function test_uninstall_detection() {
_("Ensure that add-on guid",
let reconciler = makeAddonsReconciler();
await reconciler.ensureStateLoaded();
reconciler.startListening();
add_task(async function test_prune_changes_before_date() {
_("Ensure that old changes are pruned properly.");
let reconciler = makeAddonsReconciler();
await reconciler.ensureStateLoaded();
reconciler._changes = [];
let now = new Date(); const HOUR_MS = 1000 * 60 * 60;
_("Ensure pruning an empty changes array works.");
reconciler.pruneChangesBeforeDate(now); Assert.equal(0, reconciler._changes.length);
let old = new Date(now.getTime() - HOUR_MS);
let young = new Date(now.getTime() - 1000);
reconciler._changes.push([old, CHANGE_INSTALLED, "foo"]);
reconciler._changes.push([young, CHANGE_INSTALLED, "bar"]); Assert.equal(2, reconciler._changes.length);
_("Ensure pruning with an old time won't delete anything.");
let threshold = new Date(old.getTime() - 1);
reconciler.pruneChangesBeforeDate(threshold); Assert.equal(2, reconciler._changes.length);
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.