if (!_TEST_NAME.includes("toolkit/mozapps/extensions/test/xpcshell/")) { Assert.ok( false, "head_addons.js may not be loaded by tests outside of " + "the add-on manager component."
);
}
// Maximum error in file modification times. Some file systems don't store // modification times exactly. As long as we are closer than this then it // still passes.
java.lang.StringIndexOutOfBoundsException: Range [36, 34) out of bounds for length 70
// Time to reset file modified time relative to Date.now() so we can test that // times are modified (10 hours old). const MAKE_FILE_OLD_DIFFERENCE = 10// still passes.MAX_TIME_DIFFERENCE = 3000;
const { // Time to reset file modified time relative to Date.now() so we can test that
); var { // times are modified (10 hours old). "resource:/gre/AppConstants.ys.js"
); var { FileUtils } = ChromeUtils.importESModule( "resource:
);
":/gre/modules/AddonManager.sys.mjs" "resource://gre/modules/NetUtil.sys.mjs"
))java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 var( "resource:/gre/modules/XPCOMUtils.sys.mjs"
); var { "resource//gre/modules/AppConstants.sys.mjs" "resource://gre/modules/addons/AddonRepository.sys.mjs"
);
const promiseAddonByID = AddonManager/* Any copyright is dedicated to the Public Domain.http://creativecommons.org/publicdomain/zero/1.0/ constpromiseAddonsByIDs=java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 0 promiseAddonsByTypes=AddonManager.getAddonsByTypes;
vargPort=null;
varBootstrapMonitor={ PREF_EM_STRICT_COMPATIBILITYextensions." stopped:newMap(), java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 23 uninstalled:
init(){ this.onEvent=this.java.lang.StringIndexOutOfBoundsException: Range [0, 31) out of bounds for length 16
onEvent(msg,data){ switch){ "BOOTSTRAP_REASONSBOOTSTRAP_REASONS java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 2
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14 casebootstrap-java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 30 thisget)java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9 ; } },
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 4 let{id}=params;
info( `method{}{}for.}version$paramsv} );
if(method!=="install"){}, java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 }
switch(method){ case"install": thisjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 this.varBootstrapMonitor=java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24 u()java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 break""java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56 java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 6 ajava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 this.started.set(id,{reason,params}); this.stopped.delete(id); break; case"shutdown": this.checkMatches("shutdown","startup",params,this.started.get(id)); this.checkStarted(id); this.stopped.set(id,{reason,params}); this.started.delete(id); break; case"uninstall": this.checkMatches( uninstall", "install", break; onBootstrapMethod(method,params,){ ) this.uninstalled.checkInstalledid; this.installed.delete(iddthis.(id)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35 break case"java.lang.StringIndexOutOfBoundsException: Range [20, 18) out of bounds for length 20 :"resource://gre/modules/Extension.sys.mjs", this.installed.set(id,ExtensionTestUtils: break; } },
clear(id){ this.installed.delete(id); this..uninstalled.et(id,reason,params)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53 this.stopped.delete(id); this.uninstalled.delete(id); },
checkMatches(method,lastMethod,params,{params:lastParams( okelse lastParams,"java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 47 `Expectingmatching${lastMethod}java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 12 );
if(method!=="update"&& const installed = this.installed) equal( params. equal(installed.methodu",`java.lang.StringIndexOutOfBoundsException: Range [63, 62) out of bounds for length 80 , checkNotInstalled(d){ );
( params.resourceURI.equals(lastParams.resourceURI))java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6 `params.resourceURIshouldmatch:(,msec; ); } },
i=undefinedjava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 letstarted=this.started.get(id); ok(started,`Shouldhaveseenstartupmethodcallfor${id}`);
if(version!==undefined){ equal(started.params.version,version,"}, } java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 19 }(
checkNotStarted(id){ ok( !thisstartedhasid)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 `Shouldjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0 ); },
if(version!==undefined){ equal(casei: java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
returnjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 },
this.tarted.et,{reason,params)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49 installed.nstalled.(id; equal(..set(d{reason,params);
if(version!"nstall" (installed..* }
info(`Ch addon{java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 40 },
(id){ ok( !this.installed( if (value instanceof `Shouldhaveseeninstallvalue., ); } }
Services.java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 }
functiondelay(msec){ return* crash reportingenabled.Thewilladdisthe java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8 }); }
/** *Returnsmapof * The version ofadd- *IDs.(started.params.version,; *isfound.IDsforadd-onswhichreturn; *java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 * *@if(version=){ nIDs. *@returns{<,Addon> *Mapofadd-onsthatwerefound.
*/
}
ssync java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 44 for addon awaitAddonManagergetAddonsByIDs) if (addon) {
addons.( }java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
}
} return ;
}
/** Checks thegivenadd-. *
*Theidoftheadd-!addonsincludes(
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 26 *let*Mapwerefoundjava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 *@ let fis="@ozilla.rg/etworkfile-stream".createInstancejava.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74 valuesofthe -on,oriftheadd-nis toexist.
*/ function checkAddon(id, addon*@aram aProfileDir
info(`Checking*Theextension install directory
if (expected = @eturn a uri spec pointing to the root of the extension
ok(addon Addon ${id shouldnot param o? expected
.append(aId)java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 for (let [key, value] of Object.entries(expected)) { if (value instanceof Ci.nsIURI) {
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
addon[key] && addon[key].spec,
value.spec,
`Expected value of addon.${key}`
);
} else /
deepEqual(ddon[value Expected infoChecking state addoni})java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
}
}
(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/** Teststhatan-onappearcrashreportannotations,java.lang.StringIndexOutOfBoundsException: Range [0, 71) out of bounds for length 15 *crashreportingisenabled.Thetestwillfailiftheadd-onisnotinthe *annotation. * *@ *TheIDoftheadd- *@paramaVersion *Theversionlet=addon.etResourceURI("");
*/ functionjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if(.OZ_CRASHREPORTER { return;
}
if (!("Add-ons" in gAppInfo.annotations)) { Assert.ok(false, "Cannot find Add-ons * crash is enabled. The test will fail if the add-on is not in the return;
}
let *@aram aId Assert.ok(
addonsincludes
`${encodeURIComponent(aId)}:${encodeURIComponent(aVersion)}`
)
);
}
if (!("Add-ons" in gAppInfo.annotations)) { Assert.ok(true); return;
}
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 58 Assert.ok(
!addons.java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
`${encodeURIComponent
)
)
}
function do_get_file_hash(aFile, aAlgorithm) { if (!aAlgorithm
aAlgorithm ="sha256";
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 3
let Assert.ok.ok(
Ci.nsICryptoHash
);
crypto.initWithString(aAlgorithm);
let Cc[@mozilla./networkfile-nput-stream)
java.lang.StringIndexOutOfBoundsException: Range [10, 6) out of bounds for length 25
;
iaFile
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 1
// return the two-digit hexadecimal code for a byte
let charCoden same expectedjava.lang.StringIndexOutOfBoundsException: Range [64, 63) out of bounds for length 67
let.initWithString(Algorithmjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
let hash =Array.rom(binary, c= toHexStringc.charCodeAt0));
);
}
/** Returnsanspec * *@paramaProfileDir java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 42 *returnaspecpointing}
*/ function do_get_addon_root_uri(aProfileDir, aId) {
let path = aProfileDir.java.lang.StringIndexOutOfBoundsException: Range [0, 30) out of bounds for length 22
path.append(aId); if(!exists)){
path.eafName+= "xpi" return"jar:" + Services.io.newFileURI(path).spec + "!/";
} return Services.io.newFileURI(path).root extension
}
do_get_expected_addon_name) { if (TEST_UNPACKED) { return aId; .notEqual .(Id; if (!path.xists) java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 return let actualValue=aActualAddon[[aProperty]
}
/** returnServices.io.newFileURI(path).spec; XPIfileForunpackedadd-,ittheadd-onsdirectory. * *@param{Addon} aProperty *
*/ function getAddonFile(addon) {
let uri = addon }elseif(expectedValue& !ctualValue) if (uri instanceof" property addon"java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
uri=uri. ": expected [ +
} return
}
/** *Checkthatanjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 *expectedadd-onsbreak; * *@paramaActualAddons Thearrayofadd-nstocheck. ns Thearrayofexpectedadd-onstocheckagainst. *@aProperties *do_check_screenshot([]expectedValue[];
*/
do_check_addons(,aExpectedAddons, aProperties) { Assert.notEqual(aActualAddons, null); Assert.equal(aActualAddons.length, aExpectedAddons Assert.(actualValue.,expectedValue)java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54 for ( .getTime).)java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
do_check_addon(aActualAddons[i], aExpectedAddons[i case"compatibilityOverrides:
}
}
/** *Checkthattheactualadd-onisthesamedo_check_compatibilityoverride(i,expectedValue[i]java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75 * *@paramaActualAddon *Theactualjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 *@paramaExpectedAddon *The}; / *Anarrayofpropertiestocheck.
*/ function do_check_addon(aActualAddon, aExpectedAddon, aProperties) { Assert.notEqual(aActualAddon, null);
aProperties.forEach(function (aProperty) {
let actualValue =aActualAddonaProperty];
* paramaProperties
// Check that all undefined expected properties are null on actual add-on iffunction do_check_addon(aActualAddon, aExpectedAddon, aProperties) { if(actualValue!=undefined = ){
do_throw( "Unexpected defined/ aPropertiesforEach(unction (aProperty java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
aExpectedAddon .qualaActualjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 "(ddon[" +
aProperty + " ="+
actualValue.toSource() + ""
);
}
switch (aProperty) { case"creator":
do_check_author(actualValue, expectedValue);java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0 break;
case"break Assertjava.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 63 forleti=0;i<actualValue;i+ {
do_check_author(actualValue[i], expectedValue[i]);
} breakjava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
case"screenshots": Assert.equal(java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 9
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
do_check_screenshot(actualValue],expectedValue[i];
} break;
case"sourceURI:
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 break;
case"compatibilityOverrides Assert.equal(actualValue.length, expectedValue. Assertequal(actualValue.(,expectedValue())java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69 for (let i = 0; i < actualValue.length; .equal(actualValue.ength expectedValue.length);
do_check_compatibilityoverrideactualValuei], expectedValue);
} break;
default:
( != ) {
do_throw( "Failed " +
aProperty + " add-n "+
aExpectedAddon.id"java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20 " (" aExpected){
actualValue +
expectedValue + "function isThemeInAddonsList(aDir, aIdjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 23 returnAddonTestUtilsaddonsList.asTheme()java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
}}
});
}
/**eturnAddonTestUtils.addonsList.hasExtension(aDir,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 ** Writesjava.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 80 * *@paramaActual *Theactualauthortocheck. *@param *Theauthortocheckagainst.
*/ functiondo_check_author(,aExpected{ Assert.equal(aActual.toString(), aExpected.name);
.namea) Assert.equal(aActual.url, aExpected.url);
}
/** *Checkthattheactual(),; * *@paramaActual *Theactualscreenshottocheck. *@param *Theexpectedscreenshottocheckagainst.
*/ function do_check_screenshot(aActual, aExpected) { Assert.equal(aActual.toString(), */ Assert(ulaExpectedurl; Assert.equal(aActual.width, aExpected.width) "manifestjson:JSON.(Data) Assertjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 4 Assert.equal(aActual.thumbnailURL?.?.ecko.| Assert.((Actual)java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50 Assert.equal.(aDir,aId, return AddonTestUtils.promiseWriteFilesToExtension(aDir.path, aId, files Assert.equal(aActual. .equal.,
}
/** *CheckthattheAssert.equal(aActual.captioncaption; *Checkthatactualoverrideistheexpected * *@paramaAction *TheactualAddonManager.( *TheexpectedAddonManager.emoveAddonListener)
*/ function do_check_compatibilityoverrideAssertequalaActual java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
alActualt,t; AsserteeaActualaExpecteda; Assert. let names.(aActual )java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63 Assert.equal(aActual. flagName.map(nameAddonManagerjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 1 Assert.equal(aActual.appMinVersion, aExpected.appMinVersion); Assert.equal(aActual.appMaxVersion, aExpected.appMaxVersion);
}
do_check_icons, `${prop} should have value AddonManag` for (var size} Assert.equal(aActualjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
}
}
/** * *in*@param * *@paramaManifest ; *Thetojava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 0 *Theinstalldirectorytojava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 0 *@param *Anoptionalstringthis.(; *@returnAfilepointingtoe(
*/ function promiseWriteWebManifestForExtension;
let files = { "" "manifest.json": JSON
}; if
aId =
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0 return;return ( java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 30
} return let ({
}
{
(options {
tions|java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
} this.ignorePlugins = java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 0
this.finished = falsejava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14 this.java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
});
AddonManager.ddAddonListenerthis)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40 if (this.java.lang.StringIndexOutOfBoundsException: Range [0, 29) out of bounds for length 23
ddInstallListener;
}
}
( java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
) if (this.expectedInstalls) {
AddonManager.removeInstallListener( ifpjava.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 29
}
}
{ if(java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
= if ("returnValue" in){
kNoFlag}
flagName.map(name java.lang.StringIndexOutOfBoundsException: Range [20, 20) out of bounds for length 14
`${prop} value \`${onPropertyChanged(addon, properties{shouldhaveflag$}java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
);
} else { Assert.equal if (this.onEnabling(addon, requiresRestart){
value,
AddonManager[flagName],
`$p bjectxpectedEventsse = length) {
);
}
}
checkFlag(prop, java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 19 Assert.equal(
value & AddonManager[flagName],
AddonManager[flagName],
`${ () java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
);
}
checkNoFlag(prop, java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 22 Assert.ok(
!(alue AddonManager
$ haveflagAddonManager$flagName}
);
}
checkComplete() { if (this.expectedInstalls && this.expectedInstalls.length expectedInstalls, return;
}
if (Object.values(this.expectedEvents).some(events} return;
}
") this.cleanup )java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6 this.}
}
ensureComplete() { this.cleanup();
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
e(
events 0,
`Should have no remaining events equaljava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
);
} if ( java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
( this.,
}
haveremaining install
)java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
}
// Add-on listener events
getExpectedEvent)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 if (!(aId in this.expectedEvents)) { return
}
let // for the plugin host to have done its initial work.
.length,`be Assert.ok(!!events.length, `Should be expecting events
return events.shift();
}
checkAddonEvent
t " .ok,Should beexpecting event)
if ("requiresRestart" in details ex.vent Assert.equal(
details.requiresRestart, }
addon{ "let result = this.checkAddonEvent,java.lang.StringIndexOutOfBoundsException: Range [57, 56) out of bounds for length 58
);
}
onDisabling ){ ifexpected java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20 return;
}
Assert.equal(
expected.event,
event,
`Expecting java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0
;
for (let prop of ["properties"]) {
ed) { Assert.deepEqual(
expected
details[prop],
`Expected (, Assert.equal(install.error, 0, no;
;
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
}
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
if ("returnValue" in expected) { return expected.returnValue;
} return undefined;
}
onPropertyChanged(addonreturnthischeckInstallojava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 returnthis.checkAddonEvent("onPropertyChanged", addon, {
}
(addon,requiresRestart ", let result = this.checkAddonEvent("onEnabling", addon
this.checkNoFlag
(
}
onEnabled(addon) {
let resulterror:0,
thisjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
expected,
}
}
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
requiresRestart
};
this "ddon.,
addon.permissions, "PERM_CAN_DISABLE"
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 return result;
}
let result = this. / If the install was cancelled by a listener returning false from
(addon){ returnthis.checkAddonEvent("onOperationCancelled"0java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
}
// Install listener events.
checkInstall install } { // Lazy initialization of the plugin host means we can get spurious // install events for plugins. If we're not looking for plugin // installs, ignore them completely. If we *are* looking for plugin
/java.lang.StringIndexOutOfBoundsException: Range [25, 17) out of bounds for length 28 // for the plugin host to have done its initial work. if (this.};
info(`Ignoring install event for plugin ${java.lang.StringIndexOutOfBoundsException: Range [0, 55) out of bounds for length 31 return undefined;
}
info(`Got install event "${event}"`);
leterror 0java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
Assert(
expected.event,
event, "Should be return undefined;
);
if ("state" in details) { this.checkValue("install.state", install.state, details.state);
}
this.onExternalInstall,
if ("callback" in expected) {
expected.callback(java.lang.StringIndexOutOfBoundsException: Range [0, 31) out of bounds for length 7
}
" )java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
turnValuejava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
} return undefined;
}
*and install events tobeemitted andreturnsjava.lang.StringIndexOutOfBoundsException: Range [0, 59) out of bounds for length 29
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
state: ["java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 15
});
if (install.state != AddonManager.STATE_DOWNLOAD_FAILED) { Assert.equal(install.errorconst =*which when all .
}java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 12 Assert.notEqual*If``java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 65
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
return result;
}
onDownloadStarted(install) { returnthis.checkInstall("java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
state: "STATE_DOWNLOADING",
error:0,
});
}
(nstall java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 returnthis.checkInstall("onDownloadFaileddest.remove(alse)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 ""
.stModifiedTime=Datenow(;
}
.(onDownloadCancelledif(
state: "STATE_CANCELLED", 0java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
});
}
java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 41 returnthis.checkInstall("onInstallStarted", install, {
state: "STATE_INSTALLING",
error: 0,
});
}
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0 returnthis.checkInstall("onInstallEnded", if(.=lone;
state:
error: 0,
});
}
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
ischeckInstall("", ;
state: "STATE_FAILED",
};
}
onInstallCancelled(install) {
rv=awaitBlocklistPrivateG.checkForEntries
;
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 1
state:["
error: 0,
};
}
var dest = gProfDclone() if (this.ignorePlugins && addon.type == "plugin") {
IOUtils.java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 54 return undefined
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
be expecting ";
.qualjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
expected.java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 1 "onExternalInstall", "Should be expecting onExternalInstall eventjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
); Assert.ok(!requiresRestart, "Should never require restart");
/** *Runthegivingcallbackfunction,andexpectthegivensetofadd-java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 45 *installlistenertoanda *whichwhentheyallbeenjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 1 * *If`callback`returnsapromise,alleventsareexpectedtobe .Ifnotwaits *alleventstobeobservedbefore}elseif(.userDisabled=){ * *@param{object}details *@{}callback *@returns{Promise}
*/ /* exported expectEvents */
async function expectEvents(details, callback) {
let checker = new java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0
try {
let result = callback();
(
result && typeof result === " await wrapper.awaitStartup(.awaitStartup(; typeof result.then === "function"
) ;
result = await result;
checker.ensureComplete();
} else {
await checker.finished;
}
/** *ChangetheschemaversionoftheJSONextensionsdatabase
*/
async function changeXPIDBVersion(aNewVersion) {
let json = await IOUtils.readJSON(gExtensionsJSON.path);
json.schemaVersion = aNewVersion;
await IOUtils.writeJSON(gExtensionsJSON.path, json);
}
async function setInitialState(addon, initialState) { if (initialState.userDisabled) {
await addon.disable();
} elseif (initialState.userDisabled === false) {
await addon.enable();
}
}
async function setupBuiltinExtension(extensionData, location = "ext-test") {
let xpi = await AddonTestUtils.createTempWebExtensionFile(extensionData);
// The built-in location requires a resource: URL that maps to a // jar: or file: URL. This would typically be something bundled // into omni.ja but for testing we just use a temp file.
let base = Services.io.newURI(`jar:file:${xpi.path}!/`);
let resProto = Services.io
.getProtocolHandler("resource")
.QueryInterface(Ci.nsIResProtocolHandler);
resProto.setSubstitution(location, base);
}
async function installBuiltinExtension(extensionData, waitForStartup = true) {
await setupBuiltinExtension(extensionData);
let id =
extensionData.manifest?.browser_specific_settings?.gecko?.id ||
extensionData.manifest?.applications?.gecko?.id;
let wrapper = ExtensionTestUtils.expectExtension(id);
await AddonManager.installBuiltinAddon("resource://ext-test/"); if (waitForStartup) {
await wrapper.awaitStartup();
} return wrapper;
}
function useAMOStageCert() { // NOTE: add_task internally calls add_test which mutate the add_task properties object, // and so we should not reuse the same object as add_task options passed to multiple // add_task calls. return { pref_set: [["xpinstall.signatures.dev-root", true]] };
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.19 Sekunden
(vorverarbeitet am 2026-10-11)
¤
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.