mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 557269: Port old xpcshell tests to the new API. r=robstrong
--HG-- rename : toolkit/mozapps/extensions/test/unit/test_bug541420.js => toolkit/mozapps/extensions/test/xpcshell/test_bug541420.js
This commit is contained in:
parent
dd14cba960
commit
acbf6c0648
@ -289,7 +289,7 @@ function parseRDFManifest(id, type, updateKey, request) {
|
||||
function getRequiredProperty(ds, source, property) {
|
||||
let value = getProperty(ds, source, property);
|
||||
if (!value)
|
||||
throw new Error("Missing required property " + property);
|
||||
throw new Error("Update manifest is missing a required " + property + " property.");
|
||||
return value;
|
||||
}
|
||||
|
||||
@ -368,23 +368,35 @@ function parseRDFManifest(id, type, updateKey, request) {
|
||||
let items = ctr.GetElements();
|
||||
while (items.hasMoreElements()) {
|
||||
let item = items.getNext().QueryInterface(Ci.nsIRDFResource);
|
||||
let version = getRequiredProperty(ds, item, "version");
|
||||
let version = getProperty(ds, item, "version");
|
||||
if (!version) {
|
||||
WARN("Update manifest is missing a required version property.");
|
||||
continue;
|
||||
}
|
||||
|
||||
LOG("Found an update entry for " + id + " version " + version);
|
||||
|
||||
let targetApps = ds.GetTargets(item, EM_R("targetApplication"), true);
|
||||
while (targetApps.hasMoreElements()) {
|
||||
let targetApp = targetApps.getNext().QueryInterface(Ci.nsIRDFResource);
|
||||
|
||||
let appEntry = {};
|
||||
try {
|
||||
appEntry.id = getRequiredProperty(ds, targetApp, "id");
|
||||
appEntry.minVersion = getRequiredProperty(ds, targetApp, "minVersion");
|
||||
appEntry.maxVersion = getRequiredProperty(ds, targetApp, "maxVersion");
|
||||
}
|
||||
catch (e) {
|
||||
WARN(e);
|
||||
continue;
|
||||
}
|
||||
|
||||
let result = {
|
||||
version: version,
|
||||
updateURL: getProperty(ds, targetApp, "updateLink"),
|
||||
updateHash: getProperty(ds, targetApp, "updateHash"),
|
||||
updateInfoURL: getProperty(ds, targetApp, "updateInfoURL"),
|
||||
targetApplications: [{
|
||||
id: getRequiredProperty(ds, targetApp, "id"),
|
||||
minVersion: getRequiredProperty(ds, targetApp, "minVersion"),
|
||||
maxVersion: getRequiredProperty(ds, targetApp, "maxVersion"),
|
||||
}]
|
||||
targetApplications: [appEntry]
|
||||
};
|
||||
|
||||
if (result.updateURL && checkSecurity &&
|
||||
|
@ -84,6 +84,8 @@ const KEY_APP_SYSTEM_LOCAL = "app-system-local";
|
||||
const KEY_APP_SYSTEM_SHARE = "app-system-share";
|
||||
const KEY_APP_SYSTEM_USER = "app-system-user";
|
||||
|
||||
const CATEGORY_UPDATE_PARAMS = "extension-update-params";
|
||||
|
||||
const UNKNOWN_XPCOM_ABI = "unknownABI";
|
||||
const PREFIX_ITEM_URI = "urn:mozilla:item:";
|
||||
const XPI_PERMISSION = "install";
|
||||
@ -361,6 +363,13 @@ function loadManifestFromRDF(uri, stream) {
|
||||
if (addon.type == "theme" && !addon.internalName)
|
||||
throw new Error("Themes must include an internalName property");
|
||||
|
||||
// Only extensions are allowed to provide an optionsURL or aboutURL. For all
|
||||
// other types they are silently ignored
|
||||
if (addon.type != "extension") {
|
||||
addon.optionsURL = null;
|
||||
addon.aboutURL = null;
|
||||
}
|
||||
|
||||
addon.defaultLocale = readLocale(ds, root, true);
|
||||
|
||||
addon.locales = [];
|
||||
|
@ -18,6 +18,7 @@
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Test theme</em:name>
|
||||
<em:type>4</em:type>
|
||||
<em:internalName>test/1.0</em:internalName>
|
||||
<em:optionsURL>chrome://foo/content/bar.xul</em:optionsURL>
|
||||
<em:aboutURL>chrome://foo/content/bar.xul</em:aboutURL>
|
||||
|
||||
|
@ -1,22 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>test_bug378216_1@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Bug 378216 Test 1</em:name>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,27 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>test_bug378216_10@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Bug 378216 Test 10</em:name>
|
||||
<em:updateURL>http://localhost:4444/test_bug378216.rdf</em:updateURL>
|
||||
<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj
|
||||
Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD
|
||||
NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf
|
||||
awB/zH4KaPiY3vnrzQIDAQAB</em:updateKey>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,27 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>test_bug378216_11@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Bug 378216 Test 11</em:name>
|
||||
<em:updateURL>http://localhost:4444/test_bug378216.rdf</em:updateURL>
|
||||
<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj
|
||||
Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD
|
||||
NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf
|
||||
awB/zH4KaPiY3vnrzQIDAQAB</em:updateKey>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,27 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>test_bug378216_12@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Bug 378216 Test 12</em:name>
|
||||
<em:updateURL>http://localhost:4444/test_bug378216.rdf</em:updateURL>
|
||||
<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj
|
||||
Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD
|
||||
NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf
|
||||
awB/zH4KaPiY3vnrzQIDAQAB</em:updateKey>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,27 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>test_bug378216_13@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Bug 378216 Test 13</em:name>
|
||||
<em:updateURL>http://localhost:4444/test_bug378216.rdf</em:updateURL>
|
||||
<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj
|
||||
Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD
|
||||
NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf
|
||||
awB/zH4KaPiY3vnrzQIDAQAB</em:updateKey>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,23 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>test_bug378216_2@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Bug 378216 Test 2</em:name>
|
||||
<em:updateURL>http://localhost:4444/test_bug378216.rdf</em:updateURL>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,23 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>test_bug378216_3@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Bug 378216 Test 3</em:name>
|
||||
<em:updateURL>https://localhost:4444/test_bug378216_3/update.rdf</em:updateURL>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,26 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>test_bug378216_4@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Bug 378216 Test 4</em:name>
|
||||
<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj
|
||||
Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD
|
||||
NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf
|
||||
awB/zH4KaPiY3vnrzQIDAQAB</em:updateKey>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,27 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>test_bug378216_5@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Bug 378216 Test 5</em:name>
|
||||
<em:updateURL>http://localhost:4444/test_bug378216.rdf</em:updateURL>
|
||||
<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj
|
||||
Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD
|
||||
NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf
|
||||
awB/zH4KaPiY3vnrzQIDAQAB</em:updateKey>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,27 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>test_bug378216_6@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Bug 378216 Test 6</em:name>
|
||||
<em:updateURL>https://localhost:4444/test_bug378216_6/update.rdf</em:updateURL>
|
||||
<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj
|
||||
Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD
|
||||
NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf
|
||||
awB/zH4KaPiY3vnrzQIDAQAB</em:updateKey>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,27 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>test_bug378216_7@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Bug 378216 Test 7</em:name>
|
||||
<em:updateURL>http://localhost:4444/test_bug378216.rdf</em:updateURL>
|
||||
<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj
|
||||
Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD
|
||||
NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf
|
||||
awB/zH4KaPiY3vnrzQIDAQAB</em:updateKey>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,27 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>test_bug378216_8@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Bug 378216 Test 8</em:name>
|
||||
<em:updateURL>http://localhost:4444/test_bug378216.rdf</em:updateURL>
|
||||
<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj
|
||||
Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD
|
||||
NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf
|
||||
awB/zH4KaPiY3vnrzQIDAQAB</em:updateKey>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,27 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>test_bug378216_9@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>Bug 378216 Test 9</em:name>
|
||||
<em:updateURL>http://localhost:4444/test_bug378216.rdf</em:updateURL>
|
||||
<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj
|
||||
Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD
|
||||
NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf
|
||||
awB/zH4KaPiY3vnrzQIDAQAB</em:updateKey>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,22 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug392180@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>5</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<em:name>Bug 392180</em:name>
|
||||
<em:updateURL>http://localhost:4444/update.rdf?%UPDATE_TYPE%</em:updateURL>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
@ -1,25 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Compatible to install -->
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug396129_a@tests.mozilla.org</em:id>
|
||||
<em:version>1</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>2</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<em:name>Bug 396129 Test A</em:name>
|
||||
<em:updateURL>http://localhost:4444/data/test_bug396129.rdf</em:updateURL>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
||||
|
@ -1,25 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Incompatible until an update check -->
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug396129_a@tests.mozilla.org</em:id>
|
||||
<em:version>2</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<em:name>Bug 396129 Test A</em:name>
|
||||
<em:updateURL>http://localhost:4444/data/test_bug396129.rdf</em:updateURL>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
||||
|
@ -1,25 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Compatible to install -->
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug396129_b@tests.mozilla.org</em:id>
|
||||
<em:version>1</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>2</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<em:name>Bug 396129 Test B</em:name>
|
||||
<em:updateURL>http://localhost:4444/data/test_bug396129.rdf</em:updateURL>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
||||
|
@ -1,25 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Incompatible to install even after update check -->
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug396129_b@tests.mozilla.org</em:id>
|
||||
<em:version>2</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<em:name>Bug 396129 Test B</em:name>
|
||||
<em:updateURL>http://localhost:4444/data/test_bug396129.rdf</em:updateURL>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
||||
|
@ -1,25 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Compatible to install -->
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug396129_c@tests.mozilla.org</em:id>
|
||||
<em:version>1</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>2</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<em:name>Bug 396129 Test C</em:name>
|
||||
<em:updateURL>http://localhost:4444/data/test_bug396129.rdf</em:updateURL>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
||||
|
@ -1,24 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Incompatible to install and no update rdf -->
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug396129_c@tests.mozilla.org</em:id>
|
||||
<em:version>1</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<em:name>Bug 396129 Test C</em:name>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
||||
|
@ -1,25 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Compatible to install -->
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug396129_d@tests.mozilla.org</em:id>
|
||||
<em:version>1</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>2</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<em:name>Bug 396129 Test D</em:name>
|
||||
<em:updateURL>http://localhost:4444/data/test_bug396129.rdf</em:updateURL>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
||||
|
@ -1,25 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Compatible to install -->
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug396129_d@tests.mozilla.org</em:id>
|
||||
<em:version>1</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>2</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<em:name>Bug 396129 Test D</em:name>
|
||||
<em:updateURL>http://localhost:4444/data/test_bug396129.rdf</em:updateURL>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
||||
|
@ -1 +0,0 @@
|
||||
This is an add-on with no install.rdf that should fail to install.
|
@ -1 +0,0 @@
|
||||
This install.rdf is malformed.
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- This rdf is valid, but no install manifest resource -->
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
</RDF>
|
@ -1,19 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Invalid guid -->
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>{invalid-guid}</em:id>
|
||||
<em:version>1</em:version>
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
<em:name>Test for Bug 428341</em:name>
|
||||
</Description>
|
||||
</RDF>
|
@ -1,20 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Invalid platform -->
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug428341_5@tests.mozilla.org</em:id>
|
||||
<em:version>1</em:version>
|
||||
<em:targetPlatform>Linux</em:targetPlatform>
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
<em:name>Test for Bug 428341</em:name>
|
||||
</Description>
|
||||
</RDF>
|
@ -1,20 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Has an insecure update url -->
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug428341_6@tests.mozilla.org</em:id>
|
||||
<em:version>1</em:version>
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
<em:updateURL>http://localhost</em:updateURL>
|
||||
<em:name>Test for Bug 428341</em:name>
|
||||
</Description>
|
||||
</RDF>
|
@ -1,17 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug428341_7@tests.mozilla.org</em:id>
|
||||
<em:version>1</em:version>
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>unknown@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
<em:name>Test for Bug 428341</em:name>
|
||||
</Description>
|
||||
</RDF>
|
@ -1,17 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug428341_8@tests.mozilla.org</em:id>
|
||||
<em:version>1</em:version>
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>2</em:minVersion>
|
||||
<em:maxVersion>2</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
<em:name>Test for Bug 428341</em:name>
|
||||
</Description>
|
||||
</RDF>
|
@ -1,17 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug428341_9@tests.mozilla.org</em:id>
|
||||
<em:version>1</em:version>
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>toolkit@mozilla.org</em:id>
|
||||
<em:minVersion>2</em:minVersion>
|
||||
<em:maxVersion>2</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
<em:name>Test for Bug 428341</em:name>
|
||||
</Description>
|
||||
</RDF>
|
@ -1 +0,0 @@
|
||||
// Test add-on that attempts to use install.js to install.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,197 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<RDF:Description about="urn:mozilla:extension:test_bug378216_5@tests.mozilla.org">
|
||||
<em:updates>
|
||||
<RDF:Seq>
|
||||
<RDF:li>
|
||||
<RDF:Description>
|
||||
<em:version>2.0</em:version>
|
||||
<em:targetApplication>
|
||||
<RDF:Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
<em:updateLink>http://localhost:4444/broken.xpi</em:updateLink>
|
||||
</RDF:Description>
|
||||
</em:targetApplication>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
</RDF:Seq>
|
||||
</em:updates>
|
||||
</RDF:Description>
|
||||
|
||||
<RDF:Description about="urn:mozilla:extension:test_bug378216_7@tests.mozilla.org">
|
||||
<em:updates>
|
||||
<RDF:Seq>
|
||||
<RDF:li>
|
||||
<RDF:Description>
|
||||
<em:version>2.0</em:version>
|
||||
<em:targetApplication>
|
||||
<RDF:Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>2</em:maxVersion>
|
||||
<em:updateLink>http://localhost:4444/broken.xpi</em:updateLink>
|
||||
</RDF:Description>
|
||||
</em:targetApplication>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
</RDF:Seq>
|
||||
</em:updates>
|
||||
<em:signature>MIGTMA0GCSqGSIb3DQEBBQUAA4GBAMO1O2gwSCCth1GwYMgscfaNakpN40PJfOWt
|
||||
ub2HVdg8+OXMciF8d/9eVWm8eH/IxuxyZlmRZTs3O5tv9eWAY5uBCtqDf1WgTsGk
|
||||
jrgZow1fITkZI7w0//C8eKdMLAtGueGfNs2IlTd5P/0KH/hf1rPc1wUqEqKCd4+L
|
||||
BcVq13ad</em:signature>
|
||||
</RDF:Description>
|
||||
|
||||
<RDF:Description about="urn:mozilla:extension:test_bug378216_8@tests.mozilla.org">
|
||||
<em:updates>
|
||||
<RDF:Seq>
|
||||
<RDF:li>
|
||||
<RDF:Description>
|
||||
<em:version>2.0</em:version>
|
||||
<em:targetApplication>
|
||||
<RDF:Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
<em:updateLink>http://localhost:4444/broken.xpi</em:updateLink>
|
||||
</RDF:Description>
|
||||
</em:targetApplication>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
</RDF:Seq>
|
||||
</em:updates>
|
||||
<em:signature>MIGTMA0GCSqGSIb3DQEBBQUAA4GBAMH/33P/bn148mVkAB8i5X8c4LhY52E+MPUT
|
||||
yKHGpowZnRLgL2O0dfpm+rljOBfKi51322PFrsc6VIFml6x4Lrb5foxSyB0Vs9pb
|
||||
SEDFWUKquOQvceQ9iEx5Pe0VzrmUZgcQxd8ksSunWL4wJaBZ/evE5amFC6sw3pv/
|
||||
fjt8p3GN</em:signature>
|
||||
</RDF:Description>
|
||||
|
||||
<RDF:Description about="urn:mozilla:extension:test_bug378216_9@tests.mozilla.org">
|
||||
<em:updates>
|
||||
<RDF:Seq>
|
||||
<RDF:li>
|
||||
<RDF:Description>
|
||||
<em:version>2.0</em:version>
|
||||
<em:targetApplication>
|
||||
<RDF:Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
<em:updateLink>http://localhost:4444/broken.xpi</em:updateLink>
|
||||
<em:updateHash>sha1:78fc1d2887eda35b4ad2e3a0b60120ca271ce6e6</em:updateHash>
|
||||
</RDF:Description>
|
||||
</em:targetApplication>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
</RDF:Seq>
|
||||
</em:updates>
|
||||
<em:signature>MIGTMA0GCSqGSIb3DQEBBQUAA4GBAJ5Dv3Zd7/j5dLchCw9iO/cxPq8oOhOYD2M+
|
||||
jUKvmHCyTBRIEaJrE4N7yVbRYk++ERIfyVepLivsVi4pBmF7JTdw0NaKUA0LiOoT
|
||||
mRL8I7s5NPjCiiNcdqbncWyiZwIj1w1nkbWGTlH/gEjRW/LbvT4JAuec8yNFDa4S
|
||||
X8mOMf7k</em:signature>
|
||||
</RDF:Description>
|
||||
|
||||
<RDF:Description about="urn:mozilla:extension:test_bug378216_10@tests.mozilla.org">
|
||||
<em:updates>
|
||||
<RDF:Seq>
|
||||
<RDF:li>
|
||||
<RDF:Description>
|
||||
<em:version>2.0</em:version>
|
||||
<em:targetApplication>
|
||||
<RDF:Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
<em:updateLink>https://localhost:4444/broken.xpi</em:updateLink>
|
||||
</RDF:Description>
|
||||
</em:targetApplication>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
</RDF:Seq>
|
||||
</em:updates>
|
||||
<em:signature>MIGTMA0GCSqGSIb3DQEBBQUAA4GBAGvf7XqqoTl5WofrNq55E7W+UttOEDXLB3Oi
|
||||
XDiXe0i6njlozilseaUo1hgfQhhzN9gkyetP5tGBVcLRrVyliKpJmD6ABCVGW1lS
|
||||
qS+SEw7gDHyHkvwKMyWKedpRGChqLYnnf+Y+CX3MWLZLkwPXMKdTYgN3Rx0lEnJk
|
||||
37LSEMKE</em:signature>
|
||||
</RDF:Description>
|
||||
|
||||
<RDF:Description about="urn:mozilla:extension:test_bug378216_11@tests.mozilla.org">
|
||||
<em:updates>
|
||||
<RDF:Seq>
|
||||
<RDF:li>
|
||||
<RDF:Description>
|
||||
<em:version>2.0</em:version>
|
||||
<em:targetApplication>
|
||||
<RDF:Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
<em:updateLink>https://localhost:4444/broken.xpi</em:updateLink>
|
||||
<em:updateHash>sha1:78fc1d2887eda35b4ad2e3a0b60120ca271ce6e6</em:updateHash>
|
||||
</RDF:Description>
|
||||
</em:targetApplication>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
</RDF:Seq>
|
||||
</em:updates>
|
||||
<em:signature>MIGTMA0GCSqGSIb3DQEBBQUAA4GBACMX/KReOGSJ8CMGRroH1v3Gjv/Qs/pqH+Ow
|
||||
o+hCKWLUKx7hpJgVJkXXdAHW0U88NXlp1S2H0WqA7I/CdmNXJSPzzV/J4z1dZgXh
|
||||
JbW6mqNb0pj6nIe7g8OLzSxDgBmO4DUP5DAmnmqciJLWQzN7OdbcwrWz6xPN5kZF
|
||||
A90eF5zy</em:signature>
|
||||
</RDF:Description>
|
||||
|
||||
<RDF:Description about="urn:mozilla:extension:test_bug378216_12@tests.mozilla.org">
|
||||
<em:updates>
|
||||
<RDF:Seq>
|
||||
<RDF:li>
|
||||
<RDF:Description>
|
||||
<em:version>2.0</em:version>
|
||||
<em:targetApplication>
|
||||
<RDF:Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
<em:updateLink>http://localhost:4444/broken.xpi</em:updateLink>
|
||||
<em:updateHash>md2:78fc1d2887eda35b4ad2e3a0b60120ca271ce6e6</em:updateHash>
|
||||
</RDF:Description>
|
||||
</em:targetApplication>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
</RDF:Seq>
|
||||
</em:updates>
|
||||
<em:signature>MIGTMA0GCSqGSIb3DQEBBQUAA4GBAJRfcFvHIWxVyycCw8IjNmEhabc2uqA1zQwp
|
||||
5oKh3Y23hwIsQ6xy68Wtjte1NEYFRt5fWkbMXj9YQj6LpVbzBKiGATcrq6MycZKK
|
||||
o5N22cWbrKKRweJezTyN4eLfQg21pG7r8mdfS0bIA28ZVFtQOmORejoUesEouCGy
|
||||
eKYk9nS2</em:signature>
|
||||
</RDF:Description>
|
||||
|
||||
<RDF:Description about="urn:mozilla:extension:test_bug378216_13@tests.mozilla.org">
|
||||
<em:updates>
|
||||
<RDF:Seq>
|
||||
<RDF:li>
|
||||
<RDF:Description>
|
||||
<em:version>2.0</em:version>
|
||||
<em:targetApplication>
|
||||
<RDF:Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
<em:updateLink>https://localhost:4444/broken.xpi</em:updateLink>
|
||||
<em:updateHash>md2:78fc1d2887eda35b4ad2e3a0b60120ca271ce6e6</em:updateHash>
|
||||
</RDF:Description>
|
||||
</em:targetApplication>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
</RDF:Seq>
|
||||
</em:updates>
|
||||
<em:signature>MIGTMA0GCSqGSIb3DQEBBQUAA4GBALQKwzLFr/VOw3gJvv/LCh3/PWDd9FqmFnX+
|
||||
hJjBmCaUDtG7CXn1i0h8ed8IeRHpLLT7FCzVwU3bH9BUjdm8wc3ObtlNbd8go01a
|
||||
CoXz50r3rYPcYz4WS+7/+lvrUqsuWd9Wj+q0NeCPiNaaro6/AolE2Qf5JFRL3lxY
|
||||
lsKWAnVO</em:signature>
|
||||
</RDF:Description>
|
||||
</RDF:RDF>
|
@ -1,67 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<RDF:Description about="urn:mozilla:extension:bug396129_a@tests.mozilla.org">
|
||||
<em:updates>
|
||||
<RDF:Seq>
|
||||
<RDF:li>
|
||||
<RDF:Description>
|
||||
<em:version>2</em:version>
|
||||
<em:targetApplication>
|
||||
<RDF:Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>2</em:maxVersion>
|
||||
<em:updateLink>http://localhost:4444/addons/test_bug396129_a_2.xpi</em:updateLink>
|
||||
</RDF:Description>
|
||||
</em:targetApplication>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
</RDF:Seq>
|
||||
</em:updates>
|
||||
</RDF:Description>
|
||||
|
||||
<RDF:Description about="urn:mozilla:extension:bug396129_b@tests.mozilla.org">
|
||||
<em:updates>
|
||||
<RDF:Seq>
|
||||
<RDF:li>
|
||||
<RDF:Description>
|
||||
<em:version>2</em:version>
|
||||
<em:targetApplication>
|
||||
<RDF:Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
<em:updateLink>http://localhost:4444/addons/test_bug396129_b_2.xpi</em:updateLink>
|
||||
</RDF:Description>
|
||||
</em:targetApplication>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
</RDF:Seq>
|
||||
</em:updates>
|
||||
</RDF:Description>
|
||||
|
||||
<RDF:Description about="urn:mozilla:extension:bug396129_d@tests.mozilla.org">
|
||||
<em:updates>
|
||||
<RDF:Seq>
|
||||
<RDF:li>
|
||||
<RDF:Description>
|
||||
<em:version>2</em:version>
|
||||
<em:targetApplication>
|
||||
<RDF:Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>2</em:maxVersion>
|
||||
<em:updateLink>http://localhost:4444/addons/test_bug396129_d_2.xpi</em:updateLink>
|
||||
</RDF:Description>
|
||||
</em:targetApplication>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
</RDF:Seq>
|
||||
</em:updates>
|
||||
</RDF:Description>
|
||||
|
||||
</RDF:RDF>
|
||||
|
@ -1,20 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug424107@tests.mozilla.org</em:id>
|
||||
<em:version>1</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>5</em:minVersion>
|
||||
<em:maxVersion>5</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<em:name>Bug 424107 test 1</em:name>
|
||||
</Description>
|
||||
</RDF>
|
@ -1,20 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug424107@tests.mozilla.org</em:id>
|
||||
<em:version>2</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>5</em:minVersion>
|
||||
<em:maxVersion>5</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<em:name>Bug 424107 test 2</em:name>
|
||||
</Description>
|
||||
</RDF>
|
@ -1,22 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>bug486195@tests.mozilla.org</em:id>
|
||||
<em:version>1.0</em:version>
|
||||
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
<em:minVersion>1</em:minVersion>
|
||||
<em:maxVersion>1</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Front End MetaData -->
|
||||
<em:name>bug 486195 test</em:name>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
Binary file not shown.
@ -1,86 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Dave Townsend <dtownsend@oxymoronical.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2007
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
const PREF_MATCH_OS_LOCALE = "intl.locale.matchOS";
|
||||
const PREF_SELECTED_LOCALE = "general.useragent.locale";
|
||||
|
||||
const ADDON = "test_bug257155";
|
||||
const ID = "bug257155@tests.mozilla.org";
|
||||
|
||||
function run_test()
|
||||
{
|
||||
// Setup for test
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1");
|
||||
gPrefs.setBoolPref(PREF_MATCH_OS_LOCALE, false);
|
||||
gPrefs.setCharPref(PREF_SELECTED_LOCALE, "fr-FR");
|
||||
|
||||
// Install test add-on
|
||||
startupEM();
|
||||
gEM.installItemFromFile(do_get_addon(ADDON), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
var addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "fr-FR Name");
|
||||
restartEM();
|
||||
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "fr-FR Name");
|
||||
do_check_eq(getManifestProperty(ID, "description"), "fr-FR Description");
|
||||
|
||||
// Disable item
|
||||
gEM.disableItem(ID);
|
||||
restartEM();
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "fr-FR Name");
|
||||
|
||||
// Change locale
|
||||
gPrefs.setCharPref(PREF_SELECTED_LOCALE, "de-DE");
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "de-DE Name");
|
||||
do_check_eq(getManifestProperty(ID, "description"), "");
|
||||
|
||||
// Change to a locale not provided by the add-on
|
||||
gPrefs.setCharPref(PREF_SELECTED_LOCALE, "nl-NL");
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "Fallback Name");
|
||||
|
||||
shutdownEM();
|
||||
}
|
@ -1,458 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Alexander J. Vincent <ajvincent@gmail.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2007
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
// Disables security checking our updates which haven't been signed
|
||||
gPrefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
|
||||
// This allows the EM to attempt to display errors to the user without failing.
|
||||
var promptService = {
|
||||
// nsIPromptService
|
||||
alert: function alert(aParent,
|
||||
aDialogTitle,
|
||||
aText) {
|
||||
const title = "Bug 299716 test ";
|
||||
var keyChar = aText.charAt(title.length).toLowerCase();
|
||||
var id = "bug299716-" + keyChar + "@tests.mozilla.org";
|
||||
for (var i = 0; i < ADDONS.length; i++) {
|
||||
if (ADDONS[i].id != id) {
|
||||
continue;
|
||||
}
|
||||
|
||||
do_check_false(ADDONS[i].installed);
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
// nsIPromptService
|
||||
alertCheck: function alertCheck(aParent,
|
||||
aDialogTitle,
|
||||
aText,
|
||||
aCheckMsg,
|
||||
aCheckState) {
|
||||
do_throw("Unexpected call to alertCheck!");
|
||||
},
|
||||
|
||||
// nsIPromptService
|
||||
confirm: function confirm(aParent,
|
||||
aDialogTitle,
|
||||
aText) {
|
||||
do_throw("Unexpected call to confirm!");
|
||||
},
|
||||
|
||||
// nsIPromptService
|
||||
confirmCheck: function confirmCheck(aParent,
|
||||
aDialogTitle,
|
||||
aText,
|
||||
aCheckMsg,
|
||||
aCheckState) {
|
||||
do_throw("Unexpected call to confirmCheck!");
|
||||
},
|
||||
|
||||
// nsIPromptService
|
||||
confirmEx: function confirmEx(aParent,
|
||||
aDialogTitle,
|
||||
aText,
|
||||
aButtonFlags,
|
||||
aButton0Title,
|
||||
aButton1Title,
|
||||
aButton2Title,
|
||||
aCheckMsg,
|
||||
aCheckState) {
|
||||
do_throw("Unexpected call to confirmEx!");
|
||||
},
|
||||
|
||||
// nsIPromptService
|
||||
prompt: function prompt(aParent,
|
||||
aDialogTitle,
|
||||
aText,
|
||||
aValue,
|
||||
aCheckMsg,
|
||||
aCheckState) {
|
||||
do_throw("Unexpected call to prompt!");
|
||||
},
|
||||
|
||||
// nsIPromptService
|
||||
promptUsernameAndPassword:
|
||||
function promptUsernameAndPassword(aParent,
|
||||
aDialogTitle,
|
||||
aText,
|
||||
aUsername,
|
||||
aPassword,
|
||||
aCheckMsg,
|
||||
aCheckState) {
|
||||
do_throw("Unexpected call to promptUsernameAndPassword!");
|
||||
},
|
||||
|
||||
// nsIPromptService
|
||||
promptPassword: function promptPassword(aParent,
|
||||
aDialogTitle,
|
||||
aText,
|
||||
aPassword,
|
||||
aCheckMsg,
|
||||
aCheckState) {
|
||||
do_throw("Unexpected call to promptPassword!");
|
||||
},
|
||||
|
||||
// nsIPromptService
|
||||
select: function select(aParent,
|
||||
aDialogTitle,
|
||||
aText,
|
||||
aCount,
|
||||
aSelectList,
|
||||
aOutSelection) {
|
||||
do_throw("Unexpected call to select!");
|
||||
},
|
||||
|
||||
// nsISupports
|
||||
QueryInterface: function QueryInterface(iid) {
|
||||
if (iid.equals(Components.interfaces.nsIPromptService)
|
||||
|| iid.equals(Components.interfaces.nsISupports))
|
||||
return this;
|
||||
|
||||
throw Components.results.NS_ERROR_NO_INTERFACE;
|
||||
}
|
||||
};
|
||||
|
||||
var PromptServiceFactory = {
|
||||
createInstance: function createInstance(outer, iid) {
|
||||
if (outer != null)
|
||||
throw Components.results.NS_ERROR_NO_AGGREGATION;
|
||||
return promptService.QueryInterface(iid);
|
||||
}
|
||||
};
|
||||
const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
|
||||
var registrar = Components.manager.QueryInterface(nsIComponentRegistrar);
|
||||
const psID = Components.ID("{6cc9c9fe-bc0b-432b-a410-253ef8bcc699}");
|
||||
registrar.registerFactory(psID,
|
||||
"PromptService",
|
||||
"@mozilla.org/embedcomp/prompt-service;1",
|
||||
PromptServiceFactory);
|
||||
|
||||
const installListener = {
|
||||
// nsIAddonInstallListener
|
||||
onDownloadStarted: function(aAddon) {
|
||||
// do nothing.
|
||||
},
|
||||
|
||||
onDownloadEnded: function(aAddon) {
|
||||
// do nothing.
|
||||
},
|
||||
|
||||
onInstallStarted: function(aAddon) {
|
||||
// do nothing.
|
||||
},
|
||||
|
||||
onCompatibilityCheckStarted: function(aAddon) {
|
||||
// do nothing.
|
||||
},
|
||||
|
||||
onCompatibilityCheckEnded: function(aAddon, aStatus) {
|
||||
// do nothing.
|
||||
},
|
||||
|
||||
onInstallEnded: function(aAddon, aStatus) {
|
||||
// do nothing.
|
||||
},
|
||||
|
||||
onInstallsCompleted: function() {
|
||||
next_test();
|
||||
},
|
||||
|
||||
onDownloadProgress: function onProgress(aAddon, aValue, aMaxValue) {
|
||||
// do nothing.
|
||||
}
|
||||
};
|
||||
|
||||
// Update check listener.
|
||||
const checkListener = {
|
||||
// nsIAddonUpdateCheckListener
|
||||
onUpdateStarted: function onUpdateStarted() {
|
||||
// do nothing
|
||||
},
|
||||
|
||||
// nsIAddonUpdateCheckListener
|
||||
onUpdateEnded: function onUpdateEnded() {
|
||||
next_test();
|
||||
},
|
||||
|
||||
// nsIAddonUpdateCheckListener
|
||||
onAddonUpdateStarted: function onAddonUpdateStarted(aAddon) {
|
||||
// do nothing
|
||||
},
|
||||
|
||||
// nsIAddonUpdateCheckListener
|
||||
onAddonUpdateEnded: function onAddonUpdateEnded(aAddon, aStatus) {
|
||||
for (var i = 0; i < ADDONS.length; i++) {
|
||||
if (ADDONS[i].id == aAddon.id) {
|
||||
ADDONS[i].newItem = aAddon;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get the HTTP server.
|
||||
do_load_httpd_js();
|
||||
var testserver;
|
||||
var updateItems = [];
|
||||
|
||||
// Configure test.
|
||||
const DELAY = 2000;
|
||||
|
||||
var ADDONS = [
|
||||
// XPCShell
|
||||
{
|
||||
id: "bug299716-a@tests.mozilla.org",
|
||||
addon: "test_bug299716_a_1",
|
||||
installed: true,
|
||||
item: null,
|
||||
newItem: null
|
||||
},
|
||||
|
||||
// Toolkit
|
||||
{
|
||||
id: "bug299716-b@tests.mozilla.org",
|
||||
addon: "test_bug299716_b_1",
|
||||
installed: true,
|
||||
item: null,
|
||||
newItem: null
|
||||
},
|
||||
|
||||
// XPCShell + Toolkit
|
||||
{
|
||||
id: "bug299716-c@tests.mozilla.org",
|
||||
addon: "test_bug299716_c_1",
|
||||
installed: true,
|
||||
item: null,
|
||||
newItem: null
|
||||
},
|
||||
|
||||
// XPCShell (Toolkit invalid)
|
||||
{
|
||||
id: "bug299716-d@tests.mozilla.org",
|
||||
addon: "test_bug299716_d_1",
|
||||
installed: true,
|
||||
item: null,
|
||||
newItem: null
|
||||
},
|
||||
|
||||
// Toolkit (XPCShell invalid)
|
||||
{
|
||||
id: "bug299716-e@tests.mozilla.org",
|
||||
addon: "test_bug299716_e_1",
|
||||
installed: false,
|
||||
item: null,
|
||||
newItem: null,
|
||||
failedAppName: "XPCShell"
|
||||
},
|
||||
|
||||
// None (XPCShell, Toolkit invalid)
|
||||
{
|
||||
id: "bug299716-f@tests.mozilla.org",
|
||||
addon: "test_bug299716_f_1",
|
||||
installed: false,
|
||||
item: null,
|
||||
newItem: null,
|
||||
failedAppName: "XPCShell"
|
||||
},
|
||||
|
||||
// None (Toolkit invalid)
|
||||
{
|
||||
id: "bug299716-g@tests.mozilla.org",
|
||||
addon: "test_bug299716_g_1",
|
||||
installed: false,
|
||||
item: null,
|
||||
newItem: null,
|
||||
failedAppName: "Toolkit"
|
||||
},
|
||||
];
|
||||
|
||||
var currentAddonObj = null;
|
||||
var next_test = function() {};
|
||||
|
||||
function do_check_item(aItem, aVersion, aAddonsEntry) {
|
||||
if (aAddonsEntry.installed) {
|
||||
if (aItem == null)
|
||||
do_throw("Addon " + aAddonsEntry.id + " wasn't detected");
|
||||
if (aItem.version != aVersion)
|
||||
do_throw("Addon " + aAddonsEntry.id + " was version " + aItem.version + " instead of " + aVersion);
|
||||
} else {
|
||||
if (aItem != null)
|
||||
do_throw("Addon " + aAddonsEntry.id + " was detected");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Start the test by installing extensions.
|
||||
*/
|
||||
function run_test() {
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "5", "1.9");
|
||||
|
||||
const dataDir = do_get_file("data");
|
||||
const addonsDir = do_get_addon(ADDONS[0].addon).parent;
|
||||
|
||||
// Make sure we can actually get our data files.
|
||||
const xpiFile = addonsDir.clone();
|
||||
xpiFile.append("test_bug299716_a_2.xpi");
|
||||
do_check_true(xpiFile.exists());
|
||||
|
||||
// Create and configure the HTTP server.
|
||||
testserver = new nsHttpServer();
|
||||
testserver.registerDirectory("/addons/", addonsDir);
|
||||
testserver.registerDirectory("/data/", dataDir);
|
||||
testserver.start(4444);
|
||||
|
||||
// Make sure we can fetch the files over HTTP.
|
||||
const Ci = Components.interfaces;
|
||||
const xhr = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
|
||||
.createInstance(Ci.nsIXMLHttpRequest)
|
||||
xhr.open("GET", "http://localhost:4444/addons/test_bug299716_a_2.xpi", false);
|
||||
xhr.send(null);
|
||||
do_check_true(xhr.status == 200);
|
||||
|
||||
xhr.open("GET", "http://localhost:4444/data/test_bug299716.rdf", false);
|
||||
xhr.send(null);
|
||||
do_check_true(xhr.status == 200);
|
||||
|
||||
// Start the real test.
|
||||
startupEM();
|
||||
dump("\n\n*** INSTALLING NEW ITEMS\n\n");
|
||||
|
||||
for (var i = 0; i < ADDONS.length; i++) {
|
||||
gEM.installItemFromFile(do_get_addon(ADDONS[i].addon),
|
||||
NS_INSTALL_LOCATION_APPPROFILE);
|
||||
}
|
||||
dump("\n\n*** DONE INSTALLING NEW ITEMS\n\n");
|
||||
|
||||
do_test_pending();
|
||||
|
||||
// Give time for phone home to complete.
|
||||
do_timeout(DELAY, run_test_pt2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the versions of all items, and ask the extension manager to find updates.
|
||||
*/
|
||||
function run_test_pt2() {
|
||||
dump("\n\n*** RESTARTING EXTENSION MANAGER\n\n");
|
||||
restartEM();
|
||||
|
||||
// Try to update the items.
|
||||
for (var i = 0; i < ADDONS.length; i++) {
|
||||
var item = gEM.getItemForID(ADDONS[i].id);
|
||||
do_check_item(item, "0.1", ADDONS[i]);
|
||||
ADDONS[i].item = item;
|
||||
updateItems[updateItems.length] = item;
|
||||
}
|
||||
|
||||
dump("\n\n*** REQUESTING UPDATE\n\n");
|
||||
// checkListener will call run_test_pt3().
|
||||
next_test = run_test_pt3;
|
||||
try {
|
||||
gEM.update(updateItems,
|
||||
updateItems.length,
|
||||
Components.interfaces.nsIExtensionManager.UPDATE_CHECK_NEWVERSION,
|
||||
checkListener);
|
||||
do_throw("Shouldn't reach here!");
|
||||
} catch (e if (e instanceof Components.interfaces.nsIException &&
|
||||
e.result == Components.results.NS_ERROR_ILLEGAL_VALUE)) {
|
||||
// do nothing, this is good
|
||||
}
|
||||
|
||||
var addonsArray = [];
|
||||
for (var i = 0; i < ADDONS.length; i++) {
|
||||
if (ADDONS[i].item) {
|
||||
addonsArray.push(ADDONS[i].item);
|
||||
}
|
||||
}
|
||||
gEM.update(addonsArray,
|
||||
addonsArray.length,
|
||||
Components.interfaces.nsIExtensionManager.UPDATE_CHECK_NEWVERSION,
|
||||
checkListener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Install new items for each enabled extension.
|
||||
*/
|
||||
function run_test_pt3() {
|
||||
// Install the new items.
|
||||
var addonsArray = [];
|
||||
for (var i = 0; i < ADDONS.length; i++) {
|
||||
addonsArray.push(ADDONS[i].newItem);
|
||||
}
|
||||
dump("\n\n*** UPDATING " + addonsArray.length + " ITEMS\n\n");
|
||||
|
||||
// installListener will call run_test_pt4().
|
||||
next_test = run_test_pt4;
|
||||
|
||||
// Here, we have some bad items that try to update. Pepto-Bismol time.
|
||||
try {
|
||||
gEM.addDownloads(addonsArray, addonsArray.length, null);
|
||||
do_throw("Shouldn't reach here!");
|
||||
} catch (e if (e instanceof Components.interfaces.nsIException &&
|
||||
e.result == Components.results.NS_ERROR_ILLEGAL_VALUE)) {
|
||||
// do nothing, this is good
|
||||
}
|
||||
|
||||
for (i = addonsArray.length - 1; i >= 0; i--) {
|
||||
if (!addonsArray[i]) {
|
||||
addonsArray.splice(i, 1);
|
||||
}
|
||||
}
|
||||
|
||||
gEM.addInstallListener(installListener);
|
||||
|
||||
do_check_true(addonsArray.length > 0);
|
||||
gEM.addDownloads(addonsArray, addonsArray.length, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the final version of each extension.
|
||||
*/
|
||||
function run_test_pt4() {
|
||||
dump("\n\n*** RESTARTING EXTENSION MANAGER\n\n");
|
||||
restartEM();
|
||||
|
||||
dump("\n\n*** FINAL CHECKS\n\n");
|
||||
for (var i = 0; i < ADDONS.length; i++) {
|
||||
var item = gEM.getItemForID(ADDONS[i].id);
|
||||
do_check_item(item, "0.2", ADDONS[i]);
|
||||
}
|
||||
|
||||
testserver.stop(do_test_finished);
|
||||
}
|
@ -1,236 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Dave Townsend <dtownsend@oxymoronical.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2007
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests for update security restrictions.
|
||||
*
|
||||
* Install tests:
|
||||
*
|
||||
* Test updateKey updateURL expected
|
||||
*-------------------------------------------
|
||||
* 1 absent absent success
|
||||
* 2 absent http failure
|
||||
* 3 absent https success
|
||||
* 4 present absent success
|
||||
* 5 present http success
|
||||
* 6 present https success
|
||||
*
|
||||
* Update tests:
|
||||
*
|
||||
* Test signature updateHash updateLink expected
|
||||
*--------------------------------------------------------
|
||||
* 5 absent absent http fail
|
||||
* 7 broken absent http fail
|
||||
* 8 correct absent http no update
|
||||
* 9 correct sha1 http update
|
||||
* 10 corrent absent https update
|
||||
* 11 corrent sha1 https update
|
||||
* 12 corrent md2 http no update
|
||||
* 13 corrent md2 https update
|
||||
*/
|
||||
|
||||
do_load_httpd_js();
|
||||
var server;
|
||||
|
||||
// This allows the EM to attempt to display errors to the user without failing
|
||||
var promptService = {
|
||||
alert: function(aParent, aDialogTitle, aText) {
|
||||
},
|
||||
|
||||
alertCheck: function(aParent, aDialogTitle, aText, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
confirm: function(aParent, aDialogTitle, aText) {
|
||||
},
|
||||
|
||||
confirmCheck: function(aParent, aDialogTitle, aText, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
confirmEx: function(aParent, aDialogTitle, aText, aButtonFlags, aButton0Title, aButton1Title, aButton2Title, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
prompt: function(aParent, aDialogTitle, aText, aValue, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
promptUsernameAndPassword: function(aParent, aDialogTitle, aText, aUsername, aPassword, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
promptPassword: function(aParent, aDialogTitle, aText, aPassword, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
select: function(aParent, aDialogTitle, aText, aCount, aSelectList, aOutSelection) {
|
||||
},
|
||||
|
||||
QueryInterface: function(iid) {
|
||||
if (iid.equals(Components.interfaces.nsIPromptService)
|
||||
|| iid.equals(Components.interfaces.nsISupports))
|
||||
return this;
|
||||
|
||||
throw Components.results.NS_ERROR_NO_INTERFACE;
|
||||
}
|
||||
};
|
||||
|
||||
var PromptServiceFactory = {
|
||||
createInstance: function (outer, iid) {
|
||||
if (outer != null)
|
||||
throw Components.results.NS_ERROR_NO_AGGREGATION;
|
||||
return promptService.QueryInterface(iid);
|
||||
}
|
||||
};
|
||||
var registrar = Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar);
|
||||
registrar.registerFactory(Components.ID("{6cc9c9fe-bc0b-432b-a410-253ef8bcc699}"), "PromptService",
|
||||
"@mozilla.org/embedcomp/prompt-service;1", PromptServiceFactory);
|
||||
|
||||
|
||||
var updateListener = {
|
||||
onUpdateStarted: function()
|
||||
{
|
||||
},
|
||||
|
||||
onUpdateEnded: function()
|
||||
{
|
||||
server.stop(do_test_finished);
|
||||
},
|
||||
|
||||
onAddonUpdateStarted: function(addon)
|
||||
{
|
||||
},
|
||||
|
||||
onAddonUpdateEnded: function(addon, status)
|
||||
{
|
||||
var nsIAddonUpdateCheckListener = Components.interfaces.nsIAddonUpdateCheckListener;
|
||||
switch (addon.id)
|
||||
{
|
||||
case "test_bug378216_5@tests.mozilla.org":
|
||||
// Update has no signature
|
||||
do_check_eq(status, nsIAddonUpdateCheckListener.STATUS_FAILURE);
|
||||
break;
|
||||
case "test_bug378216_7@tests.mozilla.org":
|
||||
// Update has a signature that does not match
|
||||
do_check_eq(status, nsIAddonUpdateCheckListener.STATUS_FAILURE);
|
||||
break;
|
||||
case "test_bug378216_8@tests.mozilla.org":
|
||||
// Update has a signature but no secure update
|
||||
do_check_eq(status, nsIAddonUpdateCheckListener.STATUS_NO_UPDATE);
|
||||
break;
|
||||
case "test_bug378216_9@tests.mozilla.org":
|
||||
// Update has a signature and a hashed update
|
||||
do_check_eq(status, nsIAddonUpdateCheckListener.STATUS_UPDATE);
|
||||
do_check_eq(addon.version, "2.0");
|
||||
break;
|
||||
case "test_bug378216_10@tests.mozilla.org":
|
||||
// Update has a signature and a https update
|
||||
do_check_eq(status, nsIAddonUpdateCheckListener.STATUS_UPDATE);
|
||||
do_check_eq(addon.version, "2.0");
|
||||
break;
|
||||
case "test_bug378216_11@tests.mozilla.org":
|
||||
// Update has a signature and a hashed https update
|
||||
do_check_eq(status, nsIAddonUpdateCheckListener.STATUS_UPDATE);
|
||||
do_check_eq(addon.version, "2.0");
|
||||
break;
|
||||
case "test_bug378216_12@tests.mozilla.org":
|
||||
// Update has a signature and an insecure hash against the update
|
||||
do_check_eq(status, nsIAddonUpdateCheckListener.STATUS_NO_UPDATE);
|
||||
break;
|
||||
case "test_bug378216_13@tests.mozilla.org":
|
||||
// The insecure hash doesn't matter if we have an https link
|
||||
do_check_eq(status, nsIAddonUpdateCheckListener.STATUS_UPDATE);
|
||||
do_check_eq(addon.version, "2.0");
|
||||
break;
|
||||
default:
|
||||
do_throw("Update check for unknown "+addon.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function run_test()
|
||||
{
|
||||
// Setup for test
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1");
|
||||
startupEM();
|
||||
gEM.installItemFromFile(do_get_addon("test_bug378216_1"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
gEM.installItemFromFile(do_get_addon("test_bug378216_2"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
gEM.installItemFromFile(do_get_addon("test_bug378216_3"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
gEM.installItemFromFile(do_get_addon("test_bug378216_4"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
gEM.installItemFromFile(do_get_addon("test_bug378216_5"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
gEM.installItemFromFile(do_get_addon("test_bug378216_6"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
gEM.installItemFromFile(do_get_addon("test_bug378216_7"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
gEM.installItemFromFile(do_get_addon("test_bug378216_8"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
gEM.installItemFromFile(do_get_addon("test_bug378216_9"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
gEM.installItemFromFile(do_get_addon("test_bug378216_10"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
gEM.installItemFromFile(do_get_addon("test_bug378216_11"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
gEM.installItemFromFile(do_get_addon("test_bug378216_12"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
gEM.installItemFromFile(do_get_addon("test_bug378216_13"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
|
||||
restartEM();
|
||||
|
||||
do_check_neq(gEM.getItemForID("test_bug378216_1@tests.mozilla.org"), null);
|
||||
// Test 2 has an insecure updateURL and no updateKey so should fail to install
|
||||
do_check_eq(gEM.getItemForID("test_bug378216_2@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("test_bug378216_3@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("test_bug378216_4@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("test_bug378216_5@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("test_bug378216_6@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("test_bug378216_7@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("test_bug378216_8@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("test_bug378216_9@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("test_bug378216_10@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("test_bug378216_11@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("test_bug378216_12@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("test_bug378216_13@tests.mozilla.org"), null);
|
||||
|
||||
server = new nsHttpServer();
|
||||
server.registerDirectory("/", do_get_file("data"));
|
||||
server.start(4444);
|
||||
|
||||
var updates = [
|
||||
gEM.getItemForID("test_bug378216_5@tests.mozilla.org"),
|
||||
gEM.getItemForID("test_bug378216_7@tests.mozilla.org"),
|
||||
gEM.getItemForID("test_bug378216_8@tests.mozilla.org"),
|
||||
gEM.getItemForID("test_bug378216_9@tests.mozilla.org"),
|
||||
gEM.getItemForID("test_bug378216_10@tests.mozilla.org"),
|
||||
gEM.getItemForID("test_bug378216_11@tests.mozilla.org"),
|
||||
gEM.getItemForID("test_bug378216_12@tests.mozilla.org"),
|
||||
gEM.getItemForID("test_bug378216_13@tests.mozilla.org"),
|
||||
];
|
||||
|
||||
gEM.update(updates, updates.length,
|
||||
Components.interfaces.nsIExtensionManager.UPDATE_CHECK_NEWVERSION,
|
||||
updateListener);
|
||||
do_test_pending();
|
||||
}
|
@ -1,142 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Dave Townsend <dtownsend@oxymoronical.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2009
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
|
||||
const URI_XPINSTALL_CONFIRM_DIALOG = "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul";
|
||||
|
||||
// Finds the index of the given xpi in the dialogparamblock strings
|
||||
function findXPI(dpb, name) {
|
||||
for (var i = 0; i < 5; i++) {
|
||||
if (dpb.GetString(i * 4 + 1).substr(-(name.length + 1)) == "/" + name)
|
||||
return i * 4;
|
||||
}
|
||||
do_throw(name + " wasn't in the list");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Called to display the XPInstall dialog
|
||||
var WindowWatcher = {
|
||||
openWindow: function(parent, url, name, features, arguments) {
|
||||
do_check_eq(url, URI_XPINSTALL_CONFIRM_DIALOG);
|
||||
var dpb = arguments.QueryInterface(Ci.nsISupportsInterfacePointer)
|
||||
.data.QueryInterface(Ci.nsIDialogParamBlock);
|
||||
do_check_eq(dpb.GetInt(1), 20);
|
||||
|
||||
// Not defined what order they will be in so find them based on the filename
|
||||
var unsigned = findXPI(dpb, "unsigned.xpi");
|
||||
var signed = findXPI(dpb, "signed.xpi");
|
||||
var untrusted = findXPI(dpb, "signed-untrusted.xpi");
|
||||
var no_o = findXPI(dpb, "signed-no-o.xpi");
|
||||
var no_cn = findXPI(dpb, "signed-no-cn.xpi");
|
||||
|
||||
// Test the names and certs are correct
|
||||
do_check_eq(dpb.GetString(unsigned), "XPI Test");
|
||||
do_check_eq(dpb.GetString(unsigned + 3), "");
|
||||
|
||||
do_check_eq(dpb.GetString(signed), "Signed XPI Test");
|
||||
do_check_eq(dpb.GetString(signed + 3), "Object Signer");
|
||||
do_check_eq(dpb.GetString(no_o), "Signed XPI Test (No Org)");
|
||||
do_check_eq(dpb.GetString(no_o + 3), "Object Signer");
|
||||
do_check_eq(dpb.GetString(no_cn), "Signed XPI Test (No Common Name)");
|
||||
do_check_eq(dpb.GetString(no_cn + 3), "Mozilla Testing");
|
||||
|
||||
// XPIs signed by an unknown CA just appear to not be signed at all
|
||||
do_check_eq(dpb.GetString(untrusted), "Signed XPI Test - Untrusted");
|
||||
do_check_eq(dpb.GetString(untrusted + 3), "");
|
||||
|
||||
// Confirm the install
|
||||
dpb.SetInt(0, 0);
|
||||
},
|
||||
|
||||
QueryInterface: function(iid) {
|
||||
if (iid.equals(Ci.nsIWindowWatcher)
|
||||
|| iid.equals(Ci.nsISupports))
|
||||
return this;
|
||||
|
||||
throw Cr.NS_ERROR_NO_INTERFACE;
|
||||
}
|
||||
}
|
||||
|
||||
var WindowWatcherFactory = {
|
||||
createInstance: function createInstance(outer, iid) {
|
||||
if (outer != null)
|
||||
throw Components.results.NS_ERROR_NO_AGGREGATION;
|
||||
return WindowWatcher.QueryInterface(iid);
|
||||
}
|
||||
};
|
||||
|
||||
var registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
|
||||
registrar.registerFactory(Components.ID("{1dfeb90a-2193-45d5-9cb8-864928b2af55}"),
|
||||
"Fake Window Watcher",
|
||||
"@mozilla.org/embedcomp/window-watcher;1", WindowWatcherFactory);
|
||||
|
||||
function run_test()
|
||||
{
|
||||
// Setup for test
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1");
|
||||
|
||||
// Copy the certificate db to the profile
|
||||
do_get_file("data/cert8.db").copyTo(gProfD, null);
|
||||
do_get_file("data/key3.db").copyTo(gProfD, null);
|
||||
do_get_file("data/secmod.db").copyTo(gProfD, null);
|
||||
|
||||
// Copy the test add-ons into the install location
|
||||
var il = gProfD.clone();
|
||||
il.append("extensions");
|
||||
if (!il.exists())
|
||||
il.create(Ci.nsIFile.DIRECTORY_TYPE, 0755);
|
||||
do_get_file("data/unsigned.xpi").copyTo(il, null);
|
||||
do_get_file("data/signed.xpi").copyTo(il, null);
|
||||
do_get_file("data/signed-untrusted.xpi").copyTo(il, null);
|
||||
do_get_file("data/signed-tampered.xpi").copyTo(il, null);
|
||||
do_get_file("data/signed-no-o.xpi").copyTo(il, null);
|
||||
do_get_file("data/signed-no-cn.xpi").copyTo(il, null);
|
||||
|
||||
// Starting the EM will detect and attempt to install the xpis
|
||||
startupEM();
|
||||
do_check_neq(gEM.getItemForID("signed-xpi@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("unsigned-xpi@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("untrusted-xpi@tests.mozilla.org"), null);
|
||||
do_check_eq(gEM.getItemForID("tampered-xpi@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("signed-xpi-no-o@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("signed-xpi-no-cn@tests.mozilla.org"), null);
|
||||
|
||||
shutdownEM();
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Dave Townsend <dtownsend@oxymoronical.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2007
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
const ADDON = "test_bug257155";
|
||||
const ID = "bug257155@tests.mozilla.org";
|
||||
|
||||
function run_test()
|
||||
{
|
||||
// Setup for test
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1");
|
||||
startupEM();
|
||||
|
||||
// Install an extension
|
||||
gEM.installItemFromFile(do_get_addon(ADDON), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
var addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.id, ID);
|
||||
restartEM();
|
||||
|
||||
// Check after the restart
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.id, ID);
|
||||
|
||||
// Dummy extension should not exist
|
||||
addon = gEM.getItemForID("test-dummy-extension@mozilla.org");
|
||||
do_check_eq(addon, null);
|
||||
shutdownEM();
|
||||
}
|
@ -1,148 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Dave Townsend <dtownsend@oxymoronical.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2009
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
// Disables security checking our updates which haven't been signed
|
||||
gPrefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
|
||||
do_load_httpd_js();
|
||||
|
||||
var server;
|
||||
|
||||
var updateListener = {
|
||||
onUpdateStarted: function() {
|
||||
},
|
||||
|
||||
onUpdateEnded: function() {
|
||||
gNext();
|
||||
},
|
||||
|
||||
onAddonUpdateStarted: function(addon) {
|
||||
},
|
||||
|
||||
onAddonUpdateEnded: function(addon, status) {
|
||||
// No update rdf will get found so this should be a failure.
|
||||
do_check_eq(status, Ci.nsIAddonUpdateCheckListener.STATUS_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
var requestHandler = {
|
||||
handle: function(metadata, response) {
|
||||
var updateType = metadata.queryString;
|
||||
do_check_eq(updateType, gType);
|
||||
response.setStatusLine(metadata.httpVersion, 404, "Not Found");
|
||||
}
|
||||
}
|
||||
|
||||
var gAddon;
|
||||
var gNext;
|
||||
var gType;
|
||||
|
||||
function run_test() {
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
|
||||
|
||||
startupEM();
|
||||
gEM.installItemFromFile(do_get_addon("test_bug392180"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
restartEM();
|
||||
|
||||
gAddon = gEM.getItemForID("bug392180@tests.mozilla.org");
|
||||
do_check_neq(gAddon, null);
|
||||
|
||||
server = new nsHttpServer();
|
||||
server.registerPathHandler("/update.rdf", requestHandler);
|
||||
server.start(4444);
|
||||
do_test_pending();
|
||||
|
||||
run_test_1();
|
||||
}
|
||||
|
||||
function end_test() {
|
||||
server.stop(do_test_finished);
|
||||
}
|
||||
|
||||
function run_test_1() {
|
||||
// UPDATE_TYPE_COMPATIBILITY | UPDATE_TYPE_NEWVERSION;
|
||||
gType = 96;
|
||||
gNext = run_test_2;
|
||||
gEM.update([gAddon], 1, Ci.nsIExtensionManager.UPDATE_CHECK_NEWVERSION, updateListener);
|
||||
}
|
||||
|
||||
function run_test_2() {
|
||||
// UPDATE_TYPE_COMPATIBILITY;
|
||||
gType = 32;
|
||||
gNext = run_test_3;
|
||||
gEM.update([gAddon], 1, Ci.nsIExtensionManager.UPDATE_CHECK_COMPATIBILITY, updateListener);
|
||||
}
|
||||
|
||||
function run_test_3() {
|
||||
// UPDATE_TYPE_COMPATIBILITY | UPDATE_TYPE_NEWVERSION | UPDATE_WHEN_USER_REQUESTED;
|
||||
gType = 97;
|
||||
gNext = run_test_4;
|
||||
gEM.update([gAddon], 1, Ci.nsIExtensionManager.UPDATE_CHECK_NEWVERSION, updateListener,
|
||||
Ci.nsIExtensionManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
}
|
||||
|
||||
function run_test_4() {
|
||||
// UPDATE_TYPE_COMPATIBILITY | UPDATE_TYPE_NEWVERSION | UPDATE_WHEN_NEW_APP_DETECTED;
|
||||
gType = 98;
|
||||
gNext = run_test_5;
|
||||
gEM.update([gAddon], 1, Ci.nsIExtensionManager.UPDATE_CHECK_NEWVERSION, updateListener,
|
||||
Ci.nsIExtensionManager.UPDATE_WHEN_NEW_APP_DETECTED);
|
||||
}
|
||||
|
||||
function run_test_5() {
|
||||
// UPDATE_TYPE_COMPATIBILITY | UPDATE_WHEN_NEW_APP_INSTALLED;
|
||||
gType = 35;
|
||||
gNext = run_test_6;
|
||||
gEM.update([gAddon], 1, Ci.nsIExtensionManager.UPDATE_CHECK_COMPATIBILITY, updateListener,
|
||||
Ci.nsIExtensionManager.UPDATE_WHEN_NEW_APP_INSTALLED);
|
||||
}
|
||||
|
||||
function run_test_6() {
|
||||
// UPDATE_TYPE_COMPATIBILITY;
|
||||
gType = 35;
|
||||
gNext = end_test;
|
||||
try {
|
||||
gEM.update([gAddon], 1, Ci.nsIExtensionManager.UPDATE_CHECK_COMPATIBILITY, updateListener,
|
||||
16);
|
||||
do_throw("Should have thrown an exception");
|
||||
}
|
||||
catch (e) {
|
||||
do_check_eq(e.result, Components.results.NS_ERROR_ILLEGAL_VALUE);
|
||||
end_test();
|
||||
}
|
||||
}
|
@ -1,96 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Alexander J. Vincent <ajvincent@gmail.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2007
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
// Use the internal webserver for regular update pings
|
||||
gPrefs.setCharPref("extensions.update.url", "http://localhost:4444/");
|
||||
|
||||
const checkListener = {
|
||||
_onUpdateStartedCalled: false,
|
||||
_onUpdateEndedCalled: false,
|
||||
_onAddonUpdateStartedCount: 0,
|
||||
_onAddonUpdateEndedCount: 0,
|
||||
|
||||
// nsIAddonUpdateCheckListener
|
||||
onUpdateStarted: function onUpdateStarted() {
|
||||
this._onUpdateStartedCalled = true;
|
||||
},
|
||||
|
||||
// nsIAddonUpdateCheckListener
|
||||
onUpdateEnded: function onUpdateEnded() {
|
||||
this._onUpdateEndedCalled = true;
|
||||
run_test_pt2();
|
||||
},
|
||||
|
||||
// nsIAddonUpdateCheckListener
|
||||
onAddonUpdateStarted: function onAddonUpdateStarted(aAddon) {
|
||||
this._onAddonUpdateStartedCount++;
|
||||
},
|
||||
|
||||
// nsIAddonUpdateCheckListener
|
||||
onAddonUpdateEnded: function onAddonUpdateEnded(aAddon, aStatus) {
|
||||
this._onAddonUpdateEndedCount++;
|
||||
}
|
||||
}
|
||||
|
||||
// Get the HTTP server.
|
||||
do_load_httpd_js();
|
||||
var testserver;
|
||||
|
||||
/**
|
||||
* Run the test.
|
||||
*/
|
||||
function run_test() {
|
||||
// Start the http server. Will return empty update info but that's ok
|
||||
testserver = new nsHttpServer();
|
||||
testserver.start(4444);
|
||||
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "5", "1.9");
|
||||
startupEM();
|
||||
const Ci = Components.interfaces;
|
||||
gEM.update([], 0, Ci.nsIExtensionManager.UPDATE_SYNC_COMPATIBILITY, checkListener);
|
||||
do_test_pending();
|
||||
}
|
||||
|
||||
function run_test_pt2() {
|
||||
dump("Checking onUpdateStarted\n");
|
||||
do_check_true(checkListener._onUpdateStartedCalled);
|
||||
dump("Checking onUpdateEnded\n");
|
||||
do_check_true(checkListener._onUpdateEndedCalled);
|
||||
do_check_eq(checkListener._onAddonUpdateStartedCount, checkListener._onAddonUpdateEndedCount);
|
||||
testserver.stop(do_test_finished);
|
||||
}
|
@ -1,345 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Dave Townsend <dtownsend@oxymoronical.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2008
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
// Disables security checking our updates which haven't been signed
|
||||
gPrefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
|
||||
// Use the internal webserver for regular update pings, will just return an error
|
||||
gPrefs.setCharPref("extensions.update.url", "http://localhost:4444/");
|
||||
|
||||
// Get the HTTP server.
|
||||
do_load_httpd_js();
|
||||
var testserver;
|
||||
|
||||
var next_state = null;
|
||||
var needs_compatibility = false;
|
||||
var next_test = null;
|
||||
|
||||
// This allows the EM to attempt to display errors to the user without failing
|
||||
var promptService = {
|
||||
alert: function(aParent, aDialogTitle, aText) {
|
||||
},
|
||||
|
||||
alertCheck: function(aParent, aDialogTitle, aText, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
confirm: function(aParent, aDialogTitle, aText) {
|
||||
},
|
||||
|
||||
confirmCheck: function(aParent, aDialogTitle, aText, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
confirmEx: function(aParent, aDialogTitle, aText, aButtonFlags, aButton0Title, aButton1Title, aButton2Title, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
prompt: function(aParent, aDialogTitle, aText, aValue, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
promptUsernameAndPassword: function(aParent, aDialogTitle, aText, aUsername, aPassword, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
promptPassword: function(aParent, aDialogTitle, aText, aPassword, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
select: function(aParent, aDialogTitle, aText, aCount, aSelectList, aOutSelection) {
|
||||
},
|
||||
|
||||
QueryInterface: function(iid) {
|
||||
if (iid.equals(Components.interfaces.nsIPromptService)
|
||||
|| iid.equals(Components.interfaces.nsISupports))
|
||||
return this;
|
||||
|
||||
throw Components.results.NS_ERROR_NO_INTERFACE;
|
||||
}
|
||||
};
|
||||
|
||||
var PromptServiceFactory = {
|
||||
createInstance: function (outer, iid) {
|
||||
if (outer != null)
|
||||
throw Components.results.NS_ERROR_NO_AGGREGATION;
|
||||
return promptService.QueryInterface(iid);
|
||||
}
|
||||
};
|
||||
var registrar = Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar);
|
||||
registrar.registerFactory(Components.ID("{6cc9c9fe-bc0b-432b-a410-253ef8bcc699}"), "PromptService",
|
||||
"@mozilla.org/embedcomp/prompt-service;1", PromptServiceFactory);
|
||||
|
||||
// nsIAddonUpdateCheckListener
|
||||
var updateListener = {
|
||||
onUpdateStarted: function onUpdateStarted() {
|
||||
},
|
||||
|
||||
onUpdateEnded: function onUpdateEnded() {
|
||||
},
|
||||
|
||||
onAddonUpdateStarted: function onAddonUpdateStarted(aAddon) {
|
||||
},
|
||||
|
||||
onAddonUpdateEnded: function onAddonUpdateEnded(aAddon, aStatus) {
|
||||
if (next_test)
|
||||
next_test(aAddon, aStatus);
|
||||
}
|
||||
}
|
||||
|
||||
// nsIAddonInstallListener
|
||||
var installListener = {
|
||||
onDownloadStarted: function(aAddon) {
|
||||
do_check_eq(next_state, "onDownloadStarted");
|
||||
dump(next_state+"\n");
|
||||
|
||||
next_state = "onDownloadEnded";
|
||||
},
|
||||
|
||||
onDownloadEnded: function(aAddon) {
|
||||
do_check_eq(next_state, "onDownloadEnded");
|
||||
dump(next_state+"\n");
|
||||
|
||||
next_state = "onInstallStarted";
|
||||
},
|
||||
|
||||
onInstallStarted: function(aAddon) {
|
||||
do_check_eq(next_state, "onInstallStarted");
|
||||
dump(next_state+"\n");
|
||||
|
||||
if (needs_compatibility)
|
||||
next_state = "onCompatibilityCheckStarted";
|
||||
else
|
||||
next_state = "onInstallEnded";
|
||||
},
|
||||
|
||||
onCompatibilityCheckStarted: function(aAddon) {
|
||||
do_check_eq(next_state, "onCompatibilityCheckStarted");
|
||||
dump(next_state+"\n");
|
||||
|
||||
next_state = "onCompatibilityCheckEnded";
|
||||
},
|
||||
|
||||
onCompatibilityCheckEnded: function(aAddon, aStatus) {
|
||||
do_check_eq(next_state, "onCompatibilityCheckEnded");
|
||||
dump(next_state+"\n");
|
||||
|
||||
next_state = "onInstallEnded";
|
||||
},
|
||||
|
||||
onInstallEnded: function(aAddon, aStatus) {
|
||||
do_check_eq(next_state, "onInstallEnded");
|
||||
dump(next_state+"\n");
|
||||
|
||||
next_state = "onInstallsCompleted";
|
||||
},
|
||||
|
||||
onInstallsCompleted: function() {
|
||||
do_check_eq(next_state, "onInstallsCompleted");
|
||||
dump(next_state+"\n");
|
||||
|
||||
next_state = null;
|
||||
if (next_test)
|
||||
next_test();
|
||||
},
|
||||
|
||||
onDownloadProgress: function onProgress(aAddon, aValue, aMaxValue) {
|
||||
}
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "1.9");
|
||||
|
||||
const dataDir = do_get_file("data");
|
||||
const addonsDir = do_get_addon("test_bug396129_a_1").parent;
|
||||
|
||||
// Create and configure the HTTP server.
|
||||
testserver = new nsHttpServer();
|
||||
testserver.registerDirectory("/addons/", addonsDir);
|
||||
testserver.registerDirectory("/data/", dataDir);
|
||||
testserver.start(4444);
|
||||
|
||||
startupEM();
|
||||
|
||||
gEM.addInstallListener(installListener);
|
||||
|
||||
run_install_test();
|
||||
}
|
||||
|
||||
function run_install_test() {
|
||||
// All the v1 extensions should install synchronously
|
||||
needs_compatibility = false;
|
||||
|
||||
var addons = ["test_bug396129_a_1", "test_bug396129_b_1", "test_bug396129_c_1", "test_bug396129_d_1"];
|
||||
for (var i = 0; i < addons.length; i++) {
|
||||
next_state = "onInstallStarted";
|
||||
gEM.installItemFromFile(do_get_addon(addons[i]), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
do_check_eq(next_state, null);
|
||||
}
|
||||
|
||||
restartEM();
|
||||
|
||||
var item = gEM.getItemForID("bug396129_a@tests.mozilla.org");
|
||||
do_check_neq(item, null);
|
||||
|
||||
next_test = updatecheck_a;
|
||||
gEM.update([item], 1, Components.interfaces.nsIExtensionManager.UPDATE_CHECK_NEWVERSION, updateListener);
|
||||
|
||||
do_test_pending();
|
||||
}
|
||||
|
||||
function updatecheck_a(addon, status) {
|
||||
do_check_eq(status, Components.interfaces.nsIAddonUpdateCheckListener.STATUS_UPDATE);
|
||||
do_check_eq(addon.version, 2);
|
||||
|
||||
next_test = updated_a;
|
||||
needs_compatibility = true;
|
||||
next_state = "onDownloadStarted";
|
||||
gEM.addDownloads([addon], 1, null);
|
||||
}
|
||||
|
||||
function updated_a() {
|
||||
do_check_eq(next_state, null);
|
||||
|
||||
var item = gEM.getItemForID("bug396129_d@tests.mozilla.org");
|
||||
do_check_neq(item, null);
|
||||
|
||||
next_test = updatecheck_d;
|
||||
gEM.update([item], 1, Components.interfaces.nsIExtensionManager.UPDATE_CHECK_NEWVERSION, updateListener);
|
||||
}
|
||||
|
||||
function updatecheck_d(addon, status) {
|
||||
do_check_eq(status, Components.interfaces.nsIAddonUpdateCheckListener.STATUS_UPDATE);
|
||||
do_check_eq(addon.version, 2);
|
||||
|
||||
next_test = updated_d;
|
||||
needs_compatibility = false;
|
||||
next_state = "onDownloadStarted";
|
||||
gEM.addDownloads([addon], 1, null);
|
||||
}
|
||||
|
||||
function updated_d() {
|
||||
do_check_eq(next_state, null);
|
||||
restartEM();
|
||||
gEM.uninstallItem("bug396129_a@tests.mozilla.org");
|
||||
gEM.uninstallItem("bug396129_b@tests.mozilla.org");
|
||||
gEM.uninstallItem("bug396129_c@tests.mozilla.org");
|
||||
gEM.uninstallItem("bug396129_d@tests.mozilla.org");
|
||||
restartEM();
|
||||
do_check_eq(gEM.getItemForID("bug396129_a@tests.mozilla.org"), null);
|
||||
do_check_eq(gEM.getItemForID("bug396129_b@tests.mozilla.org"), null);
|
||||
do_check_eq(gEM.getItemForID("bug396129_c@tests.mozilla.org"), null);
|
||||
do_check_eq(gEM.getItemForID("bug396129_d@tests.mozilla.org"), null);
|
||||
|
||||
next_state = "onInstallStarted";
|
||||
needs_compatibility = true;
|
||||
next_test = installed_a;
|
||||
gEM.installItemFromFile(do_get_addon("test_bug396129_a_2"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
}
|
||||
|
||||
function installed_a() {
|
||||
do_check_eq(next_state, null);
|
||||
restartEM();
|
||||
// Should have been made compatible by the update information.
|
||||
do_check_neq(gEM.getItemForID("bug396129_a@tests.mozilla.org"), null);
|
||||
gEM.uninstallItem("bug396129_a@tests.mozilla.org");
|
||||
restartEM();
|
||||
do_check_eq(gEM.getItemForID("bug396129_a@tests.mozilla.org"), null);
|
||||
|
||||
next_state = "onInstallStarted";
|
||||
needs_compatibility = true;
|
||||
next_test = installed_b;
|
||||
gEM.installItemFromFile(do_get_addon("test_bug396129_b_2"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
}
|
||||
|
||||
function installed_b() {
|
||||
do_check_eq(next_state, null);
|
||||
restartEM();
|
||||
// Should have failed compatibility check.
|
||||
do_check_eq(gEM.getItemForID("bug396129_b@tests.mozilla.org"), null);
|
||||
|
||||
next_state = "onInstallStarted";
|
||||
needs_compatibility = true;
|
||||
next_test = installed_c;
|
||||
gEM.installItemFromFile(do_get_addon("test_bug396129_c_2"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
}
|
||||
|
||||
function installed_c() {
|
||||
do_check_eq(next_state, null);
|
||||
|
||||
restartEM();
|
||||
// Should have failed compatibility check.
|
||||
do_check_eq(gEM.getItemForID("bug396129_c@tests.mozilla.org"), null);
|
||||
|
||||
var item = Components.classes["@mozilla.org/updates/item;1"]
|
||||
.createInstance(Components.interfaces.nsIUpdateItem);
|
||||
item.init("bug396129_b@tests.mozilla.org", "", NS_INSTALL_LOCATION_APPPROFILE,
|
||||
"", "", "", " http://localhost:4444/addons/test_bug396129_b_2.xpi",
|
||||
"", "", "", "", 2, "");
|
||||
next_state = "onDownloadStarted";
|
||||
needs_compatibility = true;
|
||||
next_test = downloaded_b;
|
||||
gEM.addDownloads([item], 1, null);
|
||||
}
|
||||
|
||||
function downloaded_b() {
|
||||
do_check_eq(next_state, null);
|
||||
|
||||
restartEM();
|
||||
// Should have failed compatibility check.
|
||||
do_check_eq(gEM.getItemForID("bug396129_b@tests.mozilla.org"), null);
|
||||
|
||||
var item = Components.classes["@mozilla.org/updates/item;1"]
|
||||
.createInstance(Components.interfaces.nsIUpdateItem);
|
||||
item.init("bug396129_c@tests.mozilla.org", "", NS_INSTALL_LOCATION_APPPROFILE,
|
||||
"", "", "", " http://localhost:4444/addons/test_bug396129_c_2.xpi",
|
||||
"", "", "", "", 2, "");
|
||||
next_state = "onDownloadStarted";
|
||||
needs_compatibility = true;
|
||||
next_test = downloaded_c;
|
||||
gEM.addDownloads([item], 1, null);
|
||||
}
|
||||
|
||||
function downloaded_c() {
|
||||
do_check_eq(next_state, null);
|
||||
|
||||
restartEM();
|
||||
// Should have failed compatibility check.
|
||||
do_check_eq(gEM.getItemForID("bug396129_c@tests.mozilla.org"), null);
|
||||
|
||||
test_complete();
|
||||
}
|
||||
|
||||
function test_complete() {
|
||||
testserver.stop(do_test_finished);
|
||||
}
|
||||
|
@ -1,73 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Dave Townsend <dtownsend@oxymoronical.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2008
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
function run_test()
|
||||
{
|
||||
// Copy an initial add-on into the profile.
|
||||
var extension = gProfD.clone()
|
||||
extension.append("extensions");
|
||||
extension.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0755);
|
||||
extension.append("bug424107@tests.mozilla.org");
|
||||
extension.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0755);
|
||||
var sourcerdf = do_get_file("data/test_bug424107_1.rdf");
|
||||
sourcerdf.copyTo(extension, "install.rdf");
|
||||
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "5", "1.9");
|
||||
startupEM();
|
||||
var addon = gEM.getItemForID("bug424107@tests.mozilla.org");
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.version, 1);
|
||||
|
||||
// Uninstall
|
||||
extension.remove(true);
|
||||
|
||||
restartEM();
|
||||
addon = gEM.getItemForID("bug424107@tests.mozilla.org");
|
||||
do_check_eq(addon, null);
|
||||
|
||||
// Install a new version
|
||||
extension.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0755);
|
||||
sourcerdf = do_get_file("data/test_bug424107_2.rdf");
|
||||
sourcerdf.copyTo(extension, "install.rdf");
|
||||
|
||||
restartEM();
|
||||
addon = gEM.getItemForID("bug424107@tests.mozilla.org");
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.version, 2);
|
||||
}
|
||||
|
@ -1,268 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Dave Townsend <dtownsend@oxymoronical.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2008
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
// Use the internal webserver for regular update pings, will just return an error
|
||||
gPrefs.setCharPref("extensions.update.url", "http://localhost:4444/");
|
||||
|
||||
do_load_httpd_js();
|
||||
var testserver;
|
||||
|
||||
// This allows the EM to attempt to display errors to the user without failing
|
||||
var promptService = {
|
||||
alert: function(aParent, aDialogTitle, aText) {
|
||||
},
|
||||
|
||||
alertCheck: function(aParent, aDialogTitle, aText, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
confirm: function(aParent, aDialogTitle, aText) {
|
||||
},
|
||||
|
||||
confirmCheck: function(aParent, aDialogTitle, aText, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
confirmEx: function(aParent, aDialogTitle, aText, aButtonFlags, aButton0Title, aButton1Title, aButton2Title, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
prompt: function(aParent, aDialogTitle, aText, aValue, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
promptUsernameAndPassword: function(aParent, aDialogTitle, aText, aUsername, aPassword, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
promptPassword: function(aParent, aDialogTitle, aText, aPassword, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
select: function(aParent, aDialogTitle, aText, aCount, aSelectList, aOutSelection) {
|
||||
},
|
||||
|
||||
QueryInterface: function(iid) {
|
||||
if (iid.equals(Components.interfaces.nsIPromptService)
|
||||
|| iid.equals(Components.interfaces.nsISupports))
|
||||
return this;
|
||||
|
||||
throw Components.results.NS_ERROR_NO_INTERFACE;
|
||||
}
|
||||
};
|
||||
|
||||
var PromptServiceFactory = {
|
||||
createInstance: function (outer, iid) {
|
||||
if (outer != null)
|
||||
throw Components.results.NS_ERROR_NO_AGGREGATION;
|
||||
return promptService.QueryInterface(iid);
|
||||
}
|
||||
};
|
||||
var registrar = Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar);
|
||||
registrar.registerFactory(Components.ID("{6cc9c9fe-bc0b-432b-a410-253ef8bcc699}"), "PromptService",
|
||||
"@mozilla.org/embedcomp/prompt-service;1", PromptServiceFactory);
|
||||
|
||||
var gNextState = null;
|
||||
var gIndex = null;
|
||||
var ADDONS = [
|
||||
{
|
||||
id: null,
|
||||
addon: "test_bug428341_1",
|
||||
error: -8,
|
||||
checksCompatibility: false
|
||||
},
|
||||
{
|
||||
id: null,
|
||||
addon: "test_bug428341_2",
|
||||
error: -8,
|
||||
checksCompatibility: false
|
||||
},
|
||||
{
|
||||
id: null,
|
||||
addon: "test_bug428341_3",
|
||||
error: -8,
|
||||
checksCompatibility: false
|
||||
},
|
||||
{
|
||||
id: "{invalid-guid}",
|
||||
addon: "test_bug428341_4",
|
||||
error: -2,
|
||||
checksCompatibility: false
|
||||
},
|
||||
{
|
||||
id: "bug428341_5@tests.mozilla.org",
|
||||
addon: "test_bug428341_5",
|
||||
error: -5,
|
||||
checksCompatibility: false
|
||||
},
|
||||
{
|
||||
id: "bug428341_6@tests.mozilla.org",
|
||||
addon: "test_bug428341_6",
|
||||
error: -7,
|
||||
checksCompatibility: false
|
||||
},
|
||||
{
|
||||
id: "bug428341_7@tests.mozilla.org",
|
||||
addon: "test_bug428341_7",
|
||||
error: -3,
|
||||
checksCompatibility: false
|
||||
},
|
||||
{
|
||||
id: "bug428341_8@tests.mozilla.org",
|
||||
addon: "test_bug428341_8",
|
||||
error: -3,
|
||||
checksCompatibility: true
|
||||
},
|
||||
{
|
||||
id: "bug428341_9@tests.mozilla.org",
|
||||
addon: "test_bug428341_9",
|
||||
error: -3,
|
||||
checksCompatibility: true
|
||||
}
|
||||
];
|
||||
|
||||
// nsIAddonInstallListener
|
||||
var installListener = {
|
||||
onDownloadStarted: function(aAddon) {
|
||||
do_throw("onDownloadStarted should not be called for a direct install");
|
||||
},
|
||||
|
||||
onDownloadEnded: function(aAddon) {
|
||||
do_throw("onDownloadEnded should not be called for a direct install");
|
||||
},
|
||||
|
||||
onInstallStarted: function(aAddon) {
|
||||
var state = "onInstallStarted";
|
||||
if (gNextState != state) {
|
||||
do_throw("Encountered invalid state installing add-on " + ADDONS[gIndex].addon +
|
||||
". Saw " + state + " but expected " + gNextState);
|
||||
}
|
||||
|
||||
dump("Seen " + state + " for add-on " + ADDONS[gIndex].addon + "\n");
|
||||
|
||||
if (ADDONS[gIndex].checksCompatibility)
|
||||
gNextState = "onCompatibilityCheckStarted";
|
||||
else
|
||||
gNextState = "onInstallEnded";
|
||||
},
|
||||
|
||||
onCompatibilityCheckStarted: function(aAddon) {
|
||||
var state = "onCompatibilityCheckStarted";
|
||||
if (gNextState != state) {
|
||||
do_throw("Encountered invalid state installing add-on " + ADDONS[gIndex].addon +
|
||||
". Saw " + state + " but expected " + gNextState);
|
||||
}
|
||||
|
||||
dump("Seen " + state + " for add-on " + ADDONS[gIndex].addon + "\n");
|
||||
|
||||
gNextState = "onCompatibilityCheckEnded";
|
||||
},
|
||||
|
||||
onCompatibilityCheckEnded: function(aAddon, aStatus) {
|
||||
var state = "onCompatibilityCheckEnded";
|
||||
if (gNextState != state) {
|
||||
do_throw("Encountered invalid state installing add-on " + ADDONS[gIndex].addon +
|
||||
". Saw " + state + " but expected " + gNextState);
|
||||
}
|
||||
|
||||
dump("Seen " + state + " for add-on " + ADDONS[gIndex].addon + "\n");
|
||||
|
||||
gNextState = "onInstallEnded";
|
||||
},
|
||||
|
||||
onInstallEnded: function(aAddon, aStatus) {
|
||||
var state = "onInstallEnded";
|
||||
if (gNextState != state) {
|
||||
do_throw("Encountered invalid state installing add-on " + ADDONS[gIndex].addon +
|
||||
". Saw " + state + " but expected " + gNextState);
|
||||
}
|
||||
|
||||
if (ADDONS[gIndex].id && ADDONS[gIndex].id != aAddon.id)
|
||||
do_throw("Add-on " + ADDONS[gIndex].addon + " had an incorrect id " + aAddon.id);
|
||||
|
||||
if (aStatus != ADDONS[gIndex].error)
|
||||
do_throw("Add-on " + ADDONS[gIndex].addon + " returned incorrect status " + aStatus + ".");
|
||||
|
||||
dump("Seen " + state + " for add-on " + ADDONS[gIndex].addon + "\n");
|
||||
|
||||
gNextState = "onInstallsCompleted";
|
||||
},
|
||||
|
||||
onInstallsCompleted: function() {
|
||||
var state = "onInstallsCompleted";
|
||||
if (gNextState != state) {
|
||||
do_throw("Encountered invalid state installing add-on " + ADDONS[gIndex].addon +
|
||||
". Saw " + state + " but expected " + gNextState);
|
||||
}
|
||||
|
||||
dump("Seen " + state + " for add-on " + ADDONS[gIndex].addon + "\n");
|
||||
|
||||
gNextState = null;
|
||||
gIndex++;
|
||||
installNextAddon();
|
||||
},
|
||||
|
||||
onDownloadProgress: function onProgress(aAddon, aValue, aMaxValue) {
|
||||
do_throw("onDownloadProgress should not be called for a direct install");
|
||||
}
|
||||
}
|
||||
|
||||
function installNextAddon() {
|
||||
if (gIndex >= ADDONS.length) {
|
||||
testserver.stop(do_test_finished);
|
||||
return;
|
||||
}
|
||||
|
||||
gNextState = "onInstallStarted";
|
||||
try {
|
||||
dump("Installing add-on " + ADDONS[gIndex].addon + "\n");
|
||||
gEM.installItemFromFile(do_get_addon(ADDONS[gIndex].addon),
|
||||
NS_INSTALL_LOCATION_APPPROFILE);
|
||||
}
|
||||
catch (e) {
|
||||
do_throw("Exception installing add-on " + ADDONS[gIndex].addon + " " + e);
|
||||
}
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
|
||||
startupEM();
|
||||
gEM.addInstallListener(installListener);
|
||||
gIndex = 0;
|
||||
do_test_pending();
|
||||
|
||||
// Create and configure the HTTP server.
|
||||
testserver = new nsHttpServer();
|
||||
testserver.start(4444);
|
||||
|
||||
installNextAddon();
|
||||
}
|
@ -1,157 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Dave Townsend <dtownsend@oxymoronical.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2009
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
// Disables security checking our updates which haven't been signed
|
||||
gPrefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
|
||||
// This allows the EM to attempt to display errors to the user without failing
|
||||
var promptService = {
|
||||
alert: function(aParent, aDialogTitle, aText) {
|
||||
},
|
||||
|
||||
alertCheck: function(aParent, aDialogTitle, aText, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
confirm: function(aParent, aDialogTitle, aText) {
|
||||
},
|
||||
|
||||
confirmCheck: function(aParent, aDialogTitle, aText, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
confirmEx: function(aParent, aDialogTitle, aText, aButtonFlags, aButton0Title, aButton1Title, aButton2Title, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
prompt: function(aParent, aDialogTitle, aText, aValue, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
promptUsernameAndPassword: function(aParent, aDialogTitle, aText, aUsername, aPassword, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
promptPassword: function(aParent, aDialogTitle, aText, aPassword, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
select: function(aParent, aDialogTitle, aText, aCount, aSelectList, aOutSelection) {
|
||||
},
|
||||
|
||||
QueryInterface: function(iid) {
|
||||
if (iid.equals(Components.interfaces.nsIPromptService)
|
||||
|| iid.equals(Components.interfaces.nsISupports))
|
||||
return this;
|
||||
|
||||
throw Components.results.NS_ERROR_NO_INTERFACE;
|
||||
}
|
||||
};
|
||||
|
||||
var PromptServiceFactory = {
|
||||
createInstance: function (outer, iid) {
|
||||
if (outer != null)
|
||||
throw Components.results.NS_ERROR_NO_AGGREGATION;
|
||||
return promptService.QueryInterface(iid);
|
||||
}
|
||||
};
|
||||
var registrar = Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar);
|
||||
registrar.registerFactory(Components.ID("{6cc9c9fe-bc0b-432b-a410-253ef8bcc699}"),
|
||||
"PromptService",
|
||||
"@mozilla.org/embedcomp/prompt-service;1", PromptServiceFactory);
|
||||
|
||||
var ADDONS = [
|
||||
"test_bug470377_1",
|
||||
"test_bug470377_2",
|
||||
"test_bug470377_3",
|
||||
"test_bug470377_4",
|
||||
"test_bug470377_5",
|
||||
];
|
||||
|
||||
var InstallListener = {
|
||||
onDownloadStarted: function(aAddon) {
|
||||
},
|
||||
|
||||
onDownloadProgress: function onProgress(aAddon, aValue, aMaxValue) {
|
||||
},
|
||||
|
||||
onDownloadEnded: function(aAddon) {
|
||||
},
|
||||
|
||||
onInstallStarted: function(aAddon) {
|
||||
},
|
||||
|
||||
onCompatibilityCheckStarted: function(aAddon) {
|
||||
if (aAddon.id == "bug470377_1@tests.mozilla.org")
|
||||
do_throw("Shouldn't perform a compatibility check for test_bug470377_1");
|
||||
},
|
||||
|
||||
onCompatibilityCheckEnded: function(aAddon, aStatus) {
|
||||
},
|
||||
|
||||
onInstallEnded: function(aAddon, aStatus) {
|
||||
},
|
||||
|
||||
onInstallsCompleted: function() {
|
||||
if (ADDONS.length == 0) {
|
||||
do_execute_soon(check_test);
|
||||
return;
|
||||
}
|
||||
gEM.installItemFromFile(do_get_addon(ADDONS.shift()), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
}
|
||||
};
|
||||
|
||||
do_load_httpd_js();
|
||||
var server;
|
||||
|
||||
function run_test() {
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2");
|
||||
|
||||
server = new nsHttpServer();
|
||||
server.registerDirectory("/", do_get_file("data/test_bug470377"));
|
||||
server.start(4444);
|
||||
|
||||
do_test_pending();
|
||||
startupEM();
|
||||
gEM.addInstallListener(InstallListener);
|
||||
gEM.installItemFromFile(do_get_addon(ADDONS.shift()), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
}
|
||||
|
||||
function check_test() {
|
||||
restartEM();
|
||||
do_check_eq(gEM.getItemForID("bug470377_1@tests.mozilla.org"), null);
|
||||
do_check_eq(gEM.getItemForID("bug470377_2@tests.mozilla.org"), null);
|
||||
do_check_eq(gEM.getItemForID("bug470377_3@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("bug470377_4@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("bug470377_5@tests.mozilla.org"), null);
|
||||
do_test_finished();
|
||||
}
|
@ -1,158 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Dave Townsend <dtownsend@oxymoronical.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2009
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
// Disables security checking our updates which haven't been signed
|
||||
gPrefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
// Disables compatibility checking
|
||||
gPrefs.setBoolPref("extensions.checkCompatibility.2", false);
|
||||
|
||||
// This allows the EM to attempt to display errors to the user without failing
|
||||
var promptService = {
|
||||
alert: function(aParent, aDialogTitle, aText) {
|
||||
},
|
||||
|
||||
alertCheck: function(aParent, aDialogTitle, aText, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
confirm: function(aParent, aDialogTitle, aText) {
|
||||
},
|
||||
|
||||
confirmCheck: function(aParent, aDialogTitle, aText, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
confirmEx: function(aParent, aDialogTitle, aText, aButtonFlags, aButton0Title, aButton1Title, aButton2Title, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
prompt: function(aParent, aDialogTitle, aText, aValue, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
promptUsernameAndPassword: function(aParent, aDialogTitle, aText, aUsername, aPassword, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
promptPassword: function(aParent, aDialogTitle, aText, aPassword, aCheckMsg, aCheckState) {
|
||||
},
|
||||
|
||||
select: function(aParent, aDialogTitle, aText, aCount, aSelectList, aOutSelection) {
|
||||
},
|
||||
|
||||
QueryInterface: function(iid) {
|
||||
if (iid.equals(Components.interfaces.nsIPromptService)
|
||||
|| iid.equals(Components.interfaces.nsISupports))
|
||||
return this;
|
||||
|
||||
throw Components.results.NS_ERROR_NO_INTERFACE;
|
||||
}
|
||||
};
|
||||
|
||||
var PromptServiceFactory = {
|
||||
createInstance: function (outer, iid) {
|
||||
if (outer != null)
|
||||
throw Components.results.NS_ERROR_NO_AGGREGATION;
|
||||
return promptService.QueryInterface(iid);
|
||||
}
|
||||
};
|
||||
var registrar = Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar);
|
||||
registrar.registerFactory(Components.ID("{6cc9c9fe-bc0b-432b-a410-253ef8bcc699}"),
|
||||
"PromptService",
|
||||
"@mozilla.org/embedcomp/prompt-service;1", PromptServiceFactory);
|
||||
|
||||
var ADDONS = [
|
||||
"test_bug470377_1",
|
||||
"test_bug470377_2",
|
||||
"test_bug470377_3",
|
||||
"test_bug470377_4",
|
||||
"test_bug470377_5",
|
||||
];
|
||||
|
||||
var InstallListener = {
|
||||
onDownloadStarted: function(aAddon) {
|
||||
},
|
||||
|
||||
onDownloadProgress: function onProgress(aAddon, aValue, aMaxValue) {
|
||||
},
|
||||
|
||||
onDownloadEnded: function(aAddon) {
|
||||
},
|
||||
|
||||
onInstallStarted: function(aAddon) {
|
||||
},
|
||||
|
||||
onCompatibilityCheckStarted: function(aAddon) {
|
||||
do_throw("Shouldn't perform any compatibility checks but did for " + aAddon.id);
|
||||
},
|
||||
|
||||
onCompatibilityCheckEnded: function(aAddon, aStatus) {
|
||||
},
|
||||
|
||||
onInstallEnded: function(aAddon, aStatus) {
|
||||
},
|
||||
|
||||
onInstallsCompleted: function() {
|
||||
if (ADDONS.length == 0) {
|
||||
do_execute_soon(check_test);
|
||||
return;
|
||||
}
|
||||
gEM.installItemFromFile(do_get_addon(ADDONS.shift()), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
}
|
||||
};
|
||||
|
||||
do_load_httpd_js();
|
||||
var server;
|
||||
|
||||
function run_test() {
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2");
|
||||
|
||||
server = new nsHttpServer();
|
||||
server.registerDirectory("/", do_get_file("data/test_bug470377"));
|
||||
server.start(4444);
|
||||
|
||||
do_test_pending();
|
||||
startupEM();
|
||||
gEM.addInstallListener(InstallListener);
|
||||
gEM.installItemFromFile(do_get_addon(ADDONS.shift()), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
}
|
||||
|
||||
function check_test() {
|
||||
restartEM();
|
||||
do_check_eq(gEM.getItemForID("bug470377_1@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("bug470377_2@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("bug470377_3@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("bug470377_4@tests.mozilla.org"), null);
|
||||
do_check_neq(gEM.getItemForID("bug470377_5@tests.mozilla.org"), null);
|
||||
do_test_finished();
|
||||
}
|
@ -1,94 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Dave Townsend <dtownsend@oxymoronical.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2009
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
var installListenerA = {};
|
||||
var installListenerB = {};
|
||||
var installListenerC = {};
|
||||
var installListenerD = {};
|
||||
var installListenerE = {};
|
||||
|
||||
function run_test() {
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "1.9");
|
||||
startupEM();
|
||||
|
||||
// Add some listeners
|
||||
do_check_eq(gEM.addInstallListener(installListenerA), 0);
|
||||
do_check_eq(gEM.addInstallListener(installListenerB), 1);
|
||||
do_check_eq(gEM.addInstallListener(installListenerC), 2);
|
||||
// Now stack is ABC
|
||||
|
||||
// Should get back the same id if adding the same listener twice
|
||||
do_check_eq(gEM.addInstallListener(installListenerA), 0);
|
||||
do_check_eq(gEM.addInstallListener(installListenerB), 1);
|
||||
do_check_eq(gEM.addInstallListener(installListenerC), 2);
|
||||
// Stack is still ABC
|
||||
|
||||
// Removing a listener shouldn't affect the id of the others
|
||||
gEM.removeInstallListenerAt(0);
|
||||
do_check_eq(gEM.addInstallListener(installListenerB), 1);
|
||||
do_check_eq(gEM.addInstallListener(installListenerC), 2);
|
||||
// Stack is .BC
|
||||
|
||||
// Adding a new listener should still give a higher id than previously
|
||||
do_check_eq(gEM.addInstallListener(installListenerD), 3);
|
||||
// Stack is .BCD
|
||||
|
||||
// Removing and re-adding the highest listener should give the same result.
|
||||
gEM.removeInstallListenerAt(3);
|
||||
do_check_eq(gEM.addInstallListener(installListenerE), 3);
|
||||
// Stack is .BCE
|
||||
|
||||
do_check_eq(gEM.addInstallListener(installListenerD), 4);
|
||||
gEM.removeInstallListenerAt(3);
|
||||
do_check_eq(gEM.addInstallListener(installListenerE), 5);
|
||||
// Stack is .BC.DE
|
||||
|
||||
// Stack should shorten down to the last listener
|
||||
gEM.removeInstallListenerAt(4);
|
||||
gEM.removeInstallListenerAt(5);
|
||||
do_check_eq(gEM.addInstallListener(installListenerD), 3);
|
||||
// Stack is .BCD
|
||||
|
||||
// Stack should get down to 0
|
||||
gEM.removeInstallListenerAt(1);
|
||||
gEM.removeInstallListenerAt(2);
|
||||
gEM.removeInstallListenerAt(3);
|
||||
do_check_eq(gEM.addInstallListener(installListenerE), 0);
|
||||
gEM.removeInstallListenerAt(0);
|
||||
// Stack is empty
|
||||
}
|
@ -1,130 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Dave Townsend <dtownsend@oxymoronical.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2009
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
|
||||
const ID = "bug486195@tests.mozilla.org";
|
||||
const REGKEY = "SOFTWARE\\Mozilla\\XPCShell\\Extensions";
|
||||
|
||||
function run_test()
|
||||
{
|
||||
if (!("nsIWindowsRegKey" in Ci))
|
||||
return;
|
||||
|
||||
var extension = do_get_file("data/test_bug486195");
|
||||
|
||||
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
// --- Modified nsIWindowsRegKey implementation ---
|
||||
|
||||
/**
|
||||
* This is a mock nsIWindowsRegistry implementation. It only implements the
|
||||
* methods that the extension manager requires.
|
||||
*/
|
||||
function MockWindowsRegKey() {
|
||||
}
|
||||
|
||||
MockWindowsRegKey.prototype = {
|
||||
// --- Overridden nsISupports interface functions ---
|
||||
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIWindowsRegKey]),
|
||||
|
||||
// --- Overridden nsIWindowsRegKey interface functions ---
|
||||
|
||||
open: function(aRootKey, aRelPath, aMode) {
|
||||
if (aRootKey != Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE)
|
||||
throw Components.results.NS_ERROR_FAILURE;
|
||||
if (aRelPath != REGKEY)
|
||||
throw Components.results.NS_ERROR_FAILURE;
|
||||
},
|
||||
|
||||
close: function() {
|
||||
},
|
||||
|
||||
get valueCount() {
|
||||
return 1;
|
||||
},
|
||||
|
||||
getValueName: function(aIndex) {
|
||||
if (aIndex == 0)
|
||||
return ID;
|
||||
throw Components.results.NS_ERROR_FAILURE;
|
||||
},
|
||||
|
||||
readStringValue: function(aName) {
|
||||
if (aName == ID)
|
||||
return extension.path;
|
||||
throw Components.results.NS_ERROR_FAILURE;
|
||||
}
|
||||
};
|
||||
|
||||
var factory = {
|
||||
createInstance: function(aOuter, aIid) {
|
||||
if (aOuter != null)
|
||||
throw Cr.NS_ERROR_NO_AGGREGATION;
|
||||
|
||||
var key = new MockWindowsRegKey();
|
||||
return key.QueryInterface(aIid);
|
||||
}
|
||||
};
|
||||
|
||||
Components.manager.QueryInterface(Ci.nsIComponentRegistrar)
|
||||
.registerFactory(Components.ID("{0478de5b-0f38-4edb-851d-4c99f1ed8eba}"),
|
||||
"Mock Windows Registry Implementation",
|
||||
"@mozilla.org/windows-registry-key;1", factory);
|
||||
|
||||
// Setup for test
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1");
|
||||
|
||||
// Install test add-on
|
||||
startupEM();
|
||||
var addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
var installLocation = gEM.getInstallLocation(ID);
|
||||
var path = installLocation.getItemLocation(ID);
|
||||
do_check_eq(extension.path, path.path);
|
||||
path.append("install.rdf");
|
||||
path = installLocation.getItemLocation(ID);
|
||||
do_check_eq(extension.path, path.path);
|
||||
|
||||
shutdownEM();
|
||||
|
||||
Components.manager.unregisterFactory(Components.ID("{0478de5b-0f38-4edb-851d-4c99f1ed8eba}"),
|
||||
factory);
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Dave Townsend <dtownsend@oxymoronical.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2009
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
const ID = "{972ce4c6-7e08-4474-a285-3208198ce6fd}";
|
||||
|
||||
function run_test()
|
||||
{
|
||||
// Setup for test
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1");
|
||||
startupEM();
|
||||
|
||||
var addon = gEM.getItemForID(ID);
|
||||
// Some applications don't have the default theme defined
|
||||
if (!addon)
|
||||
return;
|
||||
|
||||
var iconURL = getManifestProperty(ID, "iconURL");
|
||||
var location = gEM.getInstallLocation(ID);
|
||||
var file = location.getItemFile(ID, "icon.png");
|
||||
var ioservice = Components.classes["@mozilla.org/network/io-service;1"]
|
||||
.getService(Components.interfaces.nsIIOService);
|
||||
var uri = ioservice.newURI(iconURL, null, null);
|
||||
uri.QueryInterface(Components.interfaces.nsIFileURL);
|
||||
do_check_true(uri.file.equals(file));
|
||||
|
||||
shutdownEM();
|
||||
}
|
@ -262,17 +262,32 @@ function isExtensionInAddonsList(dir, id) {
|
||||
return isItemInAddonsList("extensions", dir, id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Escapes any occurances of &, ", < or > with XML entities.
|
||||
*
|
||||
* @param str
|
||||
* The string to escape
|
||||
* @return The escaped string
|
||||
*/
|
||||
function escapeXML(str) {
|
||||
return str.toString()
|
||||
.replace(/&/g, "&")
|
||||
.replace(/"/g, """)
|
||||
.replace(/</g, "<")
|
||||
.replace(/>/g, ">");
|
||||
}
|
||||
|
||||
function writeLocaleStrings(data) {
|
||||
let rdf = "";
|
||||
["name", "description", "creator", "homepageURL"].forEach(function(prop) {
|
||||
if (prop in data)
|
||||
rdf += "<em:" + prop + ">" + data[prop] + "</em:" + prop + ">\n";
|
||||
rdf += "<em:" + prop + ">" + escapeXML(data[prop]) + "</em:" + prop + ">\n";
|
||||
});
|
||||
|
||||
["developer", "translator", "contributor"].forEach(function(prop) {
|
||||
if (prop in data) {
|
||||
data[prop].forEach(function(value) {
|
||||
rdf += "<em:" + prop + ">" + value + "</em:" + prop + ">\n";
|
||||
rdf += "<em:" + prop + ">" + escapeXML(value) + "</em:" + prop + ">\n";
|
||||
});
|
||||
}
|
||||
});
|
||||
@ -300,7 +315,7 @@ function writeInstallRDFToDir(data, dir) {
|
||||
["id", "version", "type", "internalName", "updateURL", "updateKey",
|
||||
"optionsURL", "aboutURL", "iconURL"].forEach(function(prop) {
|
||||
if (prop in data)
|
||||
rdf += "<em:" + prop + ">" + data[prop] + "</em:" + prop + ">\n";
|
||||
rdf += "<em:" + prop + ">" + escapeXML(data[prop]) + "</em:" + prop + ">\n";
|
||||
});
|
||||
|
||||
rdf += writeLocaleStrings(data);
|
||||
@ -310,7 +325,7 @@ function writeInstallRDFToDir(data, dir) {
|
||||
rdf += "<em:targetApplication><Description>\n";
|
||||
["id", "minVersion", "maxVersion"].forEach(function(prop) {
|
||||
if (prop in app)
|
||||
rdf += "<em:" + prop + ">" + app[prop] + "</em:" + prop + ">\n";
|
||||
rdf += "<em:" + prop + ">" + escapeXML(app[prop]) + "</em:" + prop + ">\n";
|
||||
});
|
||||
rdf += "</Description></em:targetApplication>\n";
|
||||
});
|
||||
@ -540,6 +555,74 @@ function ensure_test_completed() {
|
||||
do_check_eq(gExpectedInstalls.length, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* A helper method to install an array of AddonInstall to completion and then
|
||||
* call a provided callback.
|
||||
*
|
||||
* @param installs
|
||||
* The array of AddonInstalls to install
|
||||
* @param callback
|
||||
* The callback to call when all installs have finished
|
||||
*/
|
||||
function completeAllInstalls(installs, callback) {
|
||||
if (count == 0) {
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
|
||||
let count = installs.length;
|
||||
|
||||
function installCompleted(install) {
|
||||
install.removeListener(listener);
|
||||
|
||||
if (--count == 0)
|
||||
callback();
|
||||
}
|
||||
|
||||
let listener = {
|
||||
onDownloadFailed: installCompleted,
|
||||
onDownloadCancelled: installCompleted,
|
||||
onInstallFailed: installCompleted,
|
||||
onInstallCancelled: installCompleted,
|
||||
onInstallEnded: installCompleted
|
||||
};
|
||||
|
||||
installs.forEach(function(install) {
|
||||
install.addListener(listener);
|
||||
install.install();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* A helper method to install an array of files and call a callback after the
|
||||
* installs are completed.
|
||||
*
|
||||
* @param files
|
||||
* The array of files to install
|
||||
* @param callback
|
||||
* The callback to call when all installs have finished
|
||||
* @param ignoreIncompatible
|
||||
* Optional parameter to ignore add-ons that are incompatible in
|
||||
* aome way with the application
|
||||
*/
|
||||
function installAllFiles(files, callback, ignoreIncompatible) {
|
||||
let count = files.length;
|
||||
let installs = [];
|
||||
|
||||
files.forEach(function(file) {
|
||||
AddonManager.getInstallForFile(file, function(install) {
|
||||
if (!install)
|
||||
do_throw("No AddonInstall created for " + file.path);
|
||||
|
||||
if (!ignoreIncompatible || !install.addon.appDisabled)
|
||||
installs.push(install);
|
||||
|
||||
if (--count == 0)
|
||||
completeAllInstalls(installs, callback);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if ("nsIWindowsRegKey" in AM_Ci) {
|
||||
var MockRegistry = {
|
||||
LOCAL_MACHINE: {},
|
||||
|
@ -18,6 +18,9 @@ function dummy(id) {
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
|
||||
startupManager();
|
||||
|
||||
var temp = {};
|
||||
Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", temp);
|
||||
do_check_eq(typeof temp.LightweightThemeManager, "object");
|
242
toolkit/mozapps/extensions/test/xpcshell/test_bug299716.js
Normal file
242
toolkit/mozapps/extensions/test/xpcshell/test_bug299716.js
Normal file
@ -0,0 +1,242 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Alexander J. Vincent <ajvincent@gmail.com>.
|
||||
*
|
||||
* Portions created by the Initial Developer are Copyright (C) 2007
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL
|
||||
*
|
||||
* ***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
// Disables security checking our updates which haven't been signed
|
||||
Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
|
||||
// Update check listener.
|
||||
const checkListener = {
|
||||
pendingCount: 0,
|
||||
|
||||
onUpdateAvailable: function onUpdateAvailable(aAddon, aInstall) {
|
||||
for (var i = 0; i < ADDONS.length; i++) {
|
||||
if (ADDONS[i].id == aAddon.id) {
|
||||
ADDONS[i].newInstall = aInstall;
|
||||
return;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
onUpdateFinished: function onUpdateFinished() {
|
||||
if (--this.pendingCount == 0)
|
||||
next_test();
|
||||
}
|
||||
}
|
||||
|
||||
// Get the HTTP server.
|
||||
do_load_httpd_js();
|
||||
var testserver;
|
||||
|
||||
var ADDONS = [
|
||||
// XPCShell
|
||||
{
|
||||
id: "bug299716-a@tests.mozilla.org",
|
||||
addon: "test_bug299716_a_1",
|
||||
installed: true,
|
||||
item: null,
|
||||
newInstall: null
|
||||
},
|
||||
|
||||
// Toolkit
|
||||
{
|
||||
id: "bug299716-b@tests.mozilla.org",
|
||||
addon: "test_bug299716_b_1",
|
||||
installed: true,
|
||||
item: null,
|
||||
newInstall: null
|
||||
},
|
||||
|
||||
// XPCShell + Toolkit
|
||||
{
|
||||
id: "bug299716-c@tests.mozilla.org",
|
||||
addon: "test_bug299716_c_1",
|
||||
installed: true,
|
||||
item: null,
|
||||
newInstall: null
|
||||
},
|
||||
|
||||
// XPCShell (Toolkit invalid)
|
||||
{
|
||||
id: "bug299716-d@tests.mozilla.org",
|
||||
addon: "test_bug299716_d_1",
|
||||
installed: true,
|
||||
item: null,
|
||||
newInstall: null
|
||||
},
|
||||
|
||||
// Toolkit (XPCShell invalid)
|
||||
{
|
||||
id: "bug299716-e@tests.mozilla.org",
|
||||
addon: "test_bug299716_e_1",
|
||||
installed: false,
|
||||
item: null,
|
||||
newInstall: null,
|
||||
failedAppName: "XPCShell"
|
||||
},
|
||||
|
||||
// None (XPCShell, Toolkit invalid)
|
||||
{
|
||||
id: "bug299716-f@tests.mozilla.org",
|
||||
addon: "test_bug299716_f_1",
|
||||
installed: false,
|
||||
item: null,
|
||||
newInstall: null,
|
||||
failedAppName: "XPCShell"
|
||||
},
|
||||
|
||||
// None (Toolkit invalid)
|
||||
{
|
||||
id: "bug299716-g@tests.mozilla.org",
|
||||
addon: "test_bug299716_g_1",
|
||||
installed: false,
|
||||
item: null,
|
||||
newInstall: null,
|
||||
failedAppName: "Toolkit"
|
||||
},
|
||||
];
|
||||
|
||||
var next_test = function() {};
|
||||
|
||||
function do_check_item(aItem, aVersion, aAddonsEntry) {
|
||||
if (aAddonsEntry.installed) {
|
||||
if (aItem == null)
|
||||
do_throw("Addon " + aAddonsEntry.id + " wasn't detected");
|
||||
if (aItem.version != aVersion)
|
||||
do_throw("Addon " + aAddonsEntry.id + " was version " + aItem.version + " instead of " + aVersion);
|
||||
} else {
|
||||
if (aItem != null)
|
||||
do_throw("Addon " + aAddonsEntry.id + " was detected");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Start the test by installing extensions.
|
||||
*/
|
||||
function run_test() {
|
||||
do_test_pending();
|
||||
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "5", "1.9");
|
||||
|
||||
const dataDir = do_get_file("data");
|
||||
const addonsDir = do_get_addon(ADDONS[0].addon).parent;
|
||||
|
||||
// Make sure we can actually get our data files.
|
||||
const xpiFile = addonsDir.clone();
|
||||
xpiFile.append("test_bug299716_a_2.xpi");
|
||||
do_check_true(xpiFile.exists());
|
||||
|
||||
// Create and configure the HTTP server.
|
||||
testserver = new nsHttpServer();
|
||||
testserver.registerDirectory("/addons/", addonsDir);
|
||||
testserver.registerDirectory("/data/", dataDir);
|
||||
testserver.start(4444);
|
||||
|
||||
// Make sure we can fetch the files over HTTP.
|
||||
const Ci = Components.interfaces;
|
||||
const xhr = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
|
||||
.createInstance(Ci.nsIXMLHttpRequest)
|
||||
xhr.open("GET", "http://localhost:4444/addons/test_bug299716_a_2.xpi", false);
|
||||
xhr.send(null);
|
||||
do_check_true(xhr.status == 200);
|
||||
|
||||
xhr.open("GET", "http://localhost:4444/data/test_bug299716.rdf", false);
|
||||
xhr.send(null);
|
||||
do_check_true(xhr.status == 200);
|
||||
|
||||
// Start the real test.
|
||||
startupManager();
|
||||
dump("\n\n*** INSTALLING NEW ITEMS\n\n");
|
||||
|
||||
installAllFiles([do_get_addon(a.addon) for each (a in ADDONS)], run_test_pt2,
|
||||
true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the versions of all items, and ask the extension manager to find updates.
|
||||
*/
|
||||
function run_test_pt2() {
|
||||
dump("\n\n*** DONE INSTALLING NEW ITEMS\n\n");
|
||||
dump("\n\n*** RESTARTING EXTENSION MANAGER\n\n");
|
||||
restartManager();
|
||||
|
||||
AddonManager.getAddons([a.id for each (a in ADDONS)], function(items) {
|
||||
dump("\n\n*** REQUESTING UPDATE\n\n");
|
||||
// checkListener will call run_test_pt3().
|
||||
next_test = run_test_pt3;
|
||||
|
||||
// Try to update the items.
|
||||
for (var i = 0; i < ADDONS.length; i++) {
|
||||
var item = items[i];
|
||||
do_check_item(item, "0.1", ADDONS[i]);
|
||||
|
||||
if (item) {
|
||||
checkListener.pendingCount++;
|
||||
ADDONS[i].item = item;
|
||||
item.findUpdates(checkListener, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Install new items for each enabled extension.
|
||||
*/
|
||||
function run_test_pt3() {
|
||||
// Install the new items.
|
||||
dump("\n\n*** UPDATING ITEMS\n\n");
|
||||
completeAllInstalls([a.newInstall for each(a in ADDONS) if (a.newInstall)],
|
||||
run_test_pt4);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the final version of each extension.
|
||||
*/
|
||||
function run_test_pt4() {
|
||||
dump("\n\n*** RESTARTING EXTENSION MANAGER\n\n");
|
||||
restartManager();
|
||||
|
||||
dump("\n\n*** FINAL CHECKS\n\n");
|
||||
AddonManager.getAddons([a.id for each (a in ADDONS)], function(items) {
|
||||
for (var i = 0; i < ADDONS.length; i++) {
|
||||
var item = items[i];
|
||||
do_check_item(item, "0.2", ADDONS[i]);
|
||||
}
|
||||
|
||||
testserver.stop(do_test_finished);
|
||||
});
|
||||
}
|
@ -37,33 +37,7 @@
|
||||
*/
|
||||
|
||||
// Disables security checking our updates which haven't been signed
|
||||
gPrefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
|
||||
// Update check listener.
|
||||
const checkListener = {
|
||||
// nsIAddonUpdateCheckListener
|
||||
onUpdateStarted: function onUpdateStarted() {
|
||||
},
|
||||
|
||||
// nsIAddonUpdateCheckListener
|
||||
onUpdateEnded: function onUpdateEnded() {
|
||||
var item = gEM.getItemForID(ADDON.id);
|
||||
do_check_eq(item.version, 0.1);
|
||||
do_check_eq(item.targetAppID, "xpcshell@tests.mozilla.org");
|
||||
do_check_eq(item.minAppVersion, 1);
|
||||
do_check_eq(item.maxAppVersion, 1);
|
||||
|
||||
testserver.stop(do_test_finished);
|
||||
},
|
||||
|
||||
// nsIAddonUpdateCheckListener
|
||||
onAddonUpdateStarted: function onAddonUpdateStarted(aAddon) {
|
||||
},
|
||||
|
||||
// nsIAddonUpdateCheckListener
|
||||
onAddonUpdateEnded: function onAddonUpdateEnded(aAddon, aStatus) {
|
||||
}
|
||||
}
|
||||
Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
|
||||
// Get the HTTP server.
|
||||
do_load_httpd_js();
|
||||
@ -75,7 +49,9 @@ var ADDON = {
|
||||
};
|
||||
|
||||
function run_test() {
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
|
||||
do_test_pending();
|
||||
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "1.9");
|
||||
|
||||
const dataDir = do_get_file("data");
|
||||
const addonsDir = do_get_addon(ADDON.addon).parent;
|
||||
@ -86,22 +62,22 @@ function run_test() {
|
||||
testserver.registerDirectory("/data/", dataDir);
|
||||
testserver.start(4444);
|
||||
|
||||
startupEM();
|
||||
startupManager();
|
||||
|
||||
// Should just install.
|
||||
gEM.installItemFromFile(do_get_addon(ADDON.addon),
|
||||
NS_INSTALL_LOCATION_APPPROFILE);
|
||||
restartEM();
|
||||
installAllFiles([do_get_addon(ADDON.addon)], function() {
|
||||
restartManager();
|
||||
|
||||
var item = gEM.getItemForID(ADDON.id);
|
||||
do_check_eq(item.version, 0.1);
|
||||
do_check_eq(item.targetAppID, "xpcshell@tests.mozilla.org");
|
||||
do_check_eq(item.minAppVersion, 1);
|
||||
do_check_eq(item.maxAppVersion, 1);
|
||||
AddonManager.getAddon(ADDON.id, function(item) {
|
||||
do_check_eq(item.version, 0.1);
|
||||
do_check_false(item.isCompatible);
|
||||
|
||||
do_test_pending();
|
||||
item.findUpdates({
|
||||
onUpdateFinished: function(addon) {
|
||||
do_check_false(item.isCompatible);
|
||||
|
||||
gEM.update([item], 1,
|
||||
Components.interfaces.nsIExtensionManager.UPDATE_SYNC_COMPATIBILITY,
|
||||
checkListener);
|
||||
testserver.stop(do_test_finished);
|
||||
}
|
||||
}, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
});
|
||||
});
|
||||
}
|
@ -37,15 +37,14 @@
|
||||
*/
|
||||
|
||||
// Disables security checking our updates which haven't been signed
|
||||
gPrefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
|
||||
// Get the HTTP server.
|
||||
do_load_httpd_js();
|
||||
var testserver;
|
||||
|
||||
var next_test = null;
|
||||
|
||||
var gItemsNotCheck = [];
|
||||
var gItemsNotChecked =[];
|
||||
|
||||
var ADDONS = [ {id: "bug324121_1@tests.mozilla.org",
|
||||
addon: "test_bug324121_1",
|
||||
@ -77,69 +76,88 @@ var ADDONS = [ {id: "bug324121_1@tests.mozilla.org",
|
||||
|
||||
// nsIAddonUpdateCheckListener
|
||||
var updateListener = {
|
||||
onUpdateStarted: function onUpdateStarted() {
|
||||
},
|
||||
pendingCount: 0,
|
||||
|
||||
onUpdateEnded: function onUpdateEnded() {
|
||||
// Verify that all items that should be checked have been checked.
|
||||
do_check_eq(gItemsNotCheck.length, 0);
|
||||
test_complete();
|
||||
},
|
||||
|
||||
onAddonUpdateStarted: function onAddonUpdateStarted(aAddon) {
|
||||
},
|
||||
|
||||
onAddonUpdateEnded: function onAddonUpdateEnded(aAddon, aStatus) {
|
||||
var nsIAddonUpdateCheckListener = Ci.nsIAddonUpdateCheckListener;
|
||||
switch (aAddon.id)
|
||||
{
|
||||
onUpdateAvailable: function onAddonUpdateEnded(aAddon) {
|
||||
switch (aAddon.id) {
|
||||
// add-on disabled - should not happen
|
||||
case "bug324121_1@tests.mozilla.org":
|
||||
// add-on disabled - should not happen
|
||||
do_throw("Update check for disabled add-on " + aAddon.id);
|
||||
break;
|
||||
case "bug324121_2@tests.mozilla.org":
|
||||
// app id compatible update available
|
||||
do_check_eq(aStatus, nsIAddonUpdateCheckListener.STATUS_UPDATE);
|
||||
break;
|
||||
case "bug324121_3@tests.mozilla.org":
|
||||
// app id incompatible update available
|
||||
do_check_eq(aStatus, nsIAddonUpdateCheckListener.STATUS_NO_UPDATE);
|
||||
break;
|
||||
case "bug324121_4@tests.mozilla.org":
|
||||
// update rdf not found
|
||||
do_check_eq(aStatus, nsIAddonUpdateCheckListener.STATUS_FAILURE);
|
||||
break;
|
||||
// app id already compatible - should not happen
|
||||
case "bug324121_5@tests.mozilla.org":
|
||||
// app id already compatible - should not happen
|
||||
do_throw("Update check for compatible add-on " + aAddon.id);
|
||||
break;
|
||||
case "bug324121_6@tests.mozilla.org":
|
||||
// toolkit id compatible update available
|
||||
do_check_eq(aStatus, nsIAddonUpdateCheckListener.STATUS_UPDATE);
|
||||
break;
|
||||
case "bug324121_7@tests.mozilla.org":
|
||||
// toolkit id incompatible update available
|
||||
do_check_eq(aStatus, nsIAddonUpdateCheckListener.STATUS_NO_UPDATE);
|
||||
break;
|
||||
case "bug324121_8@tests.mozilla.org":
|
||||
// update rdf not found
|
||||
do_check_eq(aStatus, nsIAddonUpdateCheckListener.STATUS_FAILURE);
|
||||
break;
|
||||
// toolkit id already compatible - should not happen
|
||||
case "bug324121_9@tests.mozilla.org":
|
||||
// toolkit id already compatible - should not happen
|
||||
do_throw("Update check for compatible add-on " + aAddon.id);
|
||||
do_throw("Should not have seen an update check for " + aAddon.id);
|
||||
break;
|
||||
|
||||
// app id incompatible update available
|
||||
case "bug324121_3@tests.mozilla.org":
|
||||
// update rdf not found
|
||||
case "bug324121_4@tests.mozilla.org":
|
||||
// toolkit id incompatible update available
|
||||
case "bug324121_7@tests.mozilla.org":
|
||||
// update rdf not found
|
||||
case "bug324121_8@tests.mozilla.org":
|
||||
do_throw("Should be no update available for " + aAddon.id);
|
||||
break;
|
||||
|
||||
// Updates available
|
||||
case "bug324121_2@tests.mozilla.org":
|
||||
case "bug324121_6@tests.mozilla.org":
|
||||
break;
|
||||
|
||||
default:
|
||||
do_throw("Update check for unknown " + aAddon.id);
|
||||
}
|
||||
|
||||
// pos should always be >= 0 so just let this throw if this fails
|
||||
var pos = gItemsNotCheck.indexOf(aAddon.id);
|
||||
gItemsNotCheck.splice(pos, 1);
|
||||
var pos = gItemsNotChecked.indexOf(aAddon.id);
|
||||
gItemsNotChecked.splice(pos, 1);
|
||||
},
|
||||
|
||||
onNoUpdateAvailable: function onNoUpdateAvailable(aAddon) {
|
||||
switch (aAddon.id) {
|
||||
// add-on disabled - should not happen
|
||||
case "bug324121_1@tests.mozilla.org":
|
||||
// app id already compatible - should not happen
|
||||
case "bug324121_5@tests.mozilla.org":
|
||||
// toolkit id already compatible - should not happen
|
||||
case "bug324121_9@tests.mozilla.org":
|
||||
do_throw("Should not have seen an update check for " + aAddon.id);
|
||||
break;
|
||||
|
||||
// app id incompatible update available
|
||||
case "bug324121_3@tests.mozilla.org":
|
||||
// update rdf not found
|
||||
case "bug324121_4@tests.mozilla.org":
|
||||
// toolkit id incompatible update available
|
||||
case "bug324121_7@tests.mozilla.org":
|
||||
// update rdf not found
|
||||
case "bug324121_8@tests.mozilla.org":
|
||||
break;
|
||||
|
||||
// Updates available
|
||||
case "bug324121_2@tests.mozilla.org":
|
||||
case "bug324121_6@tests.mozilla.org":
|
||||
do_throw("Should be an update available for " + aAddon.id);
|
||||
break;
|
||||
|
||||
default:
|
||||
do_throw("Update check for unknown " + aAddon.id);
|
||||
}
|
||||
|
||||
// pos should always be >= 0 so just let this throw if this fails
|
||||
var pos = gItemsNotChecked.indexOf(aAddon.id);
|
||||
gItemsNotChecked.splice(pos, 1);
|
||||
},
|
||||
|
||||
onUpdateFinished: function onUpdateFinished(aAddon) {
|
||||
if (--this.pendingCount == 0)
|
||||
test_complete();
|
||||
}
|
||||
};
|
||||
|
||||
function run_test() {
|
||||
do_test_pending();
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2");
|
||||
|
||||
const dataDir = do_get_file("data");
|
||||
@ -149,40 +167,44 @@ function run_test() {
|
||||
testserver.registerDirectory("/data/", dataDir);
|
||||
testserver.start(4444);
|
||||
|
||||
startupEM();
|
||||
startupManager();
|
||||
|
||||
var addons = ["test_bug324121_1"];
|
||||
for (var k in ADDONS)
|
||||
gEM.installItemFromFile(do_get_addon(ADDONS[k].addon),
|
||||
NS_INSTALL_LOCATION_APPPROFILE);
|
||||
installAllFiles([do_get_addon(a.addon) for each (a in ADDONS)], function() {
|
||||
restartManager();
|
||||
AddonManager.getAddon(ADDONS[0].id, function(addon) {
|
||||
addon.userDisabled = true;
|
||||
restartManager();
|
||||
|
||||
restartEM();
|
||||
gEM.disableItem(ADDONS[0].id);
|
||||
restartEM();
|
||||
AddonManager.getAddonsByTypes(["extension"], function(installedItems) {
|
||||
var items = [];
|
||||
|
||||
var items = gEM.getIncompatibleItemList("3", "3", Ci.nsIUpdateItem.TYPE_ANY,
|
||||
false);
|
||||
for (let k = 0; k < ADDONS.length; k++) {
|
||||
for (let i = 0; i < installedItems.length; i++) {
|
||||
if (ADDONS[k].id != installedItems[i].id)
|
||||
continue;
|
||||
if (installedItems[i].userDisabled)
|
||||
continue;
|
||||
|
||||
// Verify only items incompatible with the next app version are returned
|
||||
for (var k in ADDONS) {
|
||||
var found = false;
|
||||
for (var i = 0; i < items.length; ++i) {
|
||||
if (ADDONS[k].id == items[i].id) {
|
||||
gItemsNotCheck.push(items[i].id);
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
do_check_true(ADDONS[k].shouldCheck == found);
|
||||
}
|
||||
if (ADDONS[k].shouldCheck == installedItems[i].isCompatibleWith("3", "3")) {
|
||||
do_throw(installedItems[i].id + " had the wrong compatibility: " +
|
||||
installedItems[i].isCompatibleWith("3", "3"));
|
||||
}
|
||||
|
||||
gEM.update(items, items.length, Ci.nsIExtensionManager.UPDATE_NOTIFY_NEWVERSION,
|
||||
updateListener, Ci.nsIExtensionManager.UPDATE_WHEN_USER_REQUESTED,
|
||||
"3", "3");
|
||||
|
||||
do_test_pending();
|
||||
if (ADDONS[k].shouldCheck) {
|
||||
gItemsNotChecked.push(ADDONS[k].id);
|
||||
updateListener.pendingCount++;
|
||||
installedItems[i].findUpdates(updateListener,
|
||||
AddonManager.UPDATE_WHEN_USER_REQUESTED,
|
||||
"3", "3");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function test_complete() {
|
||||
do_check_eq(gItemsNotChecked.length, 0);
|
||||
testserver.stop(do_test_finished);
|
||||
}
|
@ -40,7 +40,7 @@ const PREF_MATCH_OS_LOCALE = "intl.locale.matchOS";
|
||||
const PREF_SELECTED_LOCALE = "general.useragent.locale";
|
||||
|
||||
// Disables security checking our updates which haven't been signed
|
||||
gPrefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
|
||||
do_load_httpd_js();
|
||||
|
||||
@ -62,7 +62,7 @@ var EXPECTED = [
|
||||
id: "bug335238_2@tests.mozilla.org",
|
||||
version: "28at",
|
||||
maxAppVersion: "7",
|
||||
status: "userDisabled,needsDependencies",
|
||||
status: "userDisabled",
|
||||
appId: "xpcshell@tests.mozilla.org",
|
||||
appVersion: "1",
|
||||
appOs: "XPCShell",
|
||||
@ -82,23 +82,15 @@ var ADDONS = [
|
||||
var server;
|
||||
|
||||
var updateListener = {
|
||||
onUpdateStarted: function()
|
||||
{
|
||||
pendingCount: 0,
|
||||
|
||||
onUpdateAvailable: function(aAddon) {
|
||||
do_throw("Should not have seen an update for " + aAddon.id);
|
||||
},
|
||||
|
||||
onUpdateEnded: function()
|
||||
{
|
||||
server.stop(do_test_finished);
|
||||
},
|
||||
|
||||
onAddonUpdateStarted: function(addon)
|
||||
{
|
||||
},
|
||||
|
||||
onAddonUpdateEnded: function(addon, status)
|
||||
{
|
||||
// No update rdf will get found so this should be a failure.
|
||||
do_check_eq(status, Ci.nsIAddonUpdateCheckListener.STATUS_FAILURE);
|
||||
|
||||
onUpdateFinished: function() {
|
||||
if (--this.pendingCount == 0)
|
||||
server.stop(do_test_finished);
|
||||
}
|
||||
}
|
||||
|
||||
@ -119,33 +111,31 @@ var requestHandler = {
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
do_test_pending();
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
|
||||
|
||||
gPrefs.setBoolPref(PREF_MATCH_OS_LOCALE, false);
|
||||
gPrefs.setCharPref(PREF_SELECTED_LOCALE, "en-US");
|
||||
|
||||
startupEM();
|
||||
for (var k in ADDONS)
|
||||
gEM.installItemFromFile(do_get_addon(ADDONS[k].addon),
|
||||
NS_INSTALL_LOCATION_APPPROFILE);
|
||||
|
||||
restartEM();
|
||||
gEM.disableItem(ADDONS[1].id);
|
||||
restartEM();
|
||||
|
||||
var updates = [];
|
||||
for (var k in ADDONS) {
|
||||
do_check_neq(gEM.getInstallLocation(ADDONS[k].id), null);
|
||||
var addon = gEM.getItemForID(ADDONS[k].id);
|
||||
updates.push(addon);
|
||||
}
|
||||
|
||||
server = new nsHttpServer();
|
||||
server.registerPathHandler("/0", requestHandler);
|
||||
server.registerPathHandler("/1", requestHandler);
|
||||
server.start(4444);
|
||||
|
||||
gEM.update(updates, updates.length, false, updateListener);
|
||||
|
||||
do_test_pending();
|
||||
Services.prefs.setBoolPref(PREF_MATCH_OS_LOCALE, false);
|
||||
Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "en-US");
|
||||
|
||||
startupManager();
|
||||
installAllFiles([do_get_addon(a.addon) for each (a in ADDONS)], function() {
|
||||
|
||||
restartManager();
|
||||
AddonManager.getAddon(ADDONS[1].id, function(addon) {
|
||||
addon.userDisabled = true;
|
||||
restartManager();
|
||||
|
||||
AddonManager.getAddons([a.id for each (a in ADDONS)], function(installedItems) {
|
||||
installedItems.forEach(function(item) {
|
||||
updateListener.pendingCount++;
|
||||
item.findUpdates(updateListener, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
@ -45,20 +45,24 @@ const ID = "bug371495@tests.mozilla.org";
|
||||
function run_test()
|
||||
{
|
||||
// Setup for test
|
||||
do_test_pending();
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1");
|
||||
|
||||
// Install test add-on
|
||||
startupEM();
|
||||
gEM.installItemFromFile(do_get_addon(ADDON), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
var addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "Test theme");
|
||||
restartEM();
|
||||
startupManager();
|
||||
installAllFiles([do_get_addon(ADDON)], function() {
|
||||
AddonManager.getAddon(ID, function(addon) {
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "Test theme");
|
||||
restartManager();
|
||||
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(getManifestProperty(ID, "optionsURL"), "");
|
||||
do_check_eq(getManifestProperty(ID, "aboutURL"), "");
|
||||
AddonManager.getAddon(ID, function(addon) {
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.optionsURL, null);
|
||||
do_check_eq(addon.aboutURL, null);
|
||||
|
||||
shutdownEM();
|
||||
do_test_finished();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
@ -50,9 +50,9 @@ var observer = {
|
||||
|
||||
function initTest()
|
||||
{
|
||||
do_test_pending();
|
||||
// Setup extension manager
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
|
||||
startupEM();
|
||||
|
||||
// Register our parameter handlers
|
||||
gComponentRegistrar.registerFactory(CLASS_ID, "Test component", CONTRACT_ID, paramHandlerFactory);
|
||||
@ -61,40 +61,74 @@ function initTest()
|
||||
|
||||
// Register observer to get notified when URLs are requested
|
||||
gObserverService.addObserver(observer, "http-on-modify-request", false);
|
||||
|
||||
// Install a test extension into the profile
|
||||
let dir = gProfD.clone();
|
||||
dir.append("extensions");
|
||||
dir.append("test@mozilla.org");
|
||||
writeInstallRDFToDir({
|
||||
id: "test@mozilla.org",
|
||||
version: "1.0",
|
||||
name: "Test extension",
|
||||
updateURL: gTestURL,
|
||||
targetApplications: [{
|
||||
id: "xpcshell@tests.mozilla.org",
|
||||
minVersion: "1",
|
||||
maxVersion: "1"
|
||||
}],
|
||||
}, dir);
|
||||
|
||||
startupManager();
|
||||
}
|
||||
|
||||
function shutdownTest()
|
||||
{
|
||||
shutdownEM();
|
||||
shutdownManager();
|
||||
|
||||
gComponentRegistrar.unregisterFactory(CLASS_ID, paramHandlerFactory);
|
||||
gCategoryManager.deleteCategoryEntry("extension-update-params", "CUSTOM1", false);
|
||||
gCategoryManager.deleteCategoryEntry("extension-update-params", "CUSTOM2", false);
|
||||
|
||||
gObserverService.removeObserver(observer, "http-on-modify-request");
|
||||
|
||||
do_test_finished();
|
||||
}
|
||||
|
||||
function run_test()
|
||||
{
|
||||
initTest();
|
||||
|
||||
var item = Cc["@mozilla.org/updates/item;1"].createInstance(Ci.nsIUpdateItem);
|
||||
item.init("test@mozilla.org", "1.0", "app-profile", "0.0", "100.0", "Test extension",
|
||||
null, null, "", null, null, item.TYPE_EXTENSION, "xpcshell@tests.mozilla.org");
|
||||
|
||||
gExpectedURL = gTestURL.replace(/%ITEM_ID%/, item.id)
|
||||
gExpectedURL = gTestURL.replace(/%ITEM_ID%/, "test@mozilla.org")
|
||||
.replace(/%CUSTOM1%/, "custom_parameter_1")
|
||||
.replace(/%CUSTOM2%/, "custom_parameter_2");
|
||||
|
||||
// Replace extension update URL
|
||||
gPrefs.setCharPref("extensions.update.url", gTestURL);
|
||||
AddonManager.getAddon("test@mozilla.org", function(item) {
|
||||
// Initiate update
|
||||
item.findUpdates({
|
||||
onNoCompatibilityUpdateAvailable: function(addon) {
|
||||
do_throw("Should not have seen no compatibility update");
|
||||
},
|
||||
|
||||
// Initiate update
|
||||
gEM.update([item], 1, Ci.nsIExtensionManager.UPDATE_SYNC_COMPATIBILITY, null);
|
||||
onUpdateAvailable: function(addon, install) {
|
||||
ensure_test_completed();
|
||||
|
||||
do_check_true(gSeenExpectedURL);
|
||||
do_check_eq(addon, a1);
|
||||
do_check_eq(install.name, addon.name);
|
||||
do_check_eq(install.version, "2.0");
|
||||
do_check_eq(install.state, AddonManager.STATE_AVAILABLE);
|
||||
do_check_eq(install.existingAddon, addon);
|
||||
|
||||
gPrefs.clearUserPref("extensions.update.url");
|
||||
prepare_test({}, [
|
||||
"onDownloadStarted",
|
||||
"onDownloadEnded",
|
||||
], check_test_1);
|
||||
install.install();
|
||||
},
|
||||
|
||||
shutdownTest();
|
||||
onUpdateFinished: function(addon) {
|
||||
do_check_true(gSeenExpectedURL);
|
||||
shutdownTest();
|
||||
}
|
||||
}, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
});
|
||||
}
|
@ -37,7 +37,7 @@
|
||||
*/
|
||||
|
||||
// Disables security checking our updates which haven't been signed
|
||||
gPrefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
|
||||
do_load_httpd_js();
|
||||
var server;
|
||||
@ -45,56 +45,45 @@ var server;
|
||||
// nsIAddonUpdateCheckListener implementation
|
||||
var updateListener = {
|
||||
_count: 0,
|
||||
|
||||
onUpdateStarted: function onUpdateStarted()
|
||||
{
|
||||
|
||||
onUpdateAvailable: function onAddonUpdateEnded(aAddon, aInstall) {
|
||||
do_check_eq(aInstall.version, 10);
|
||||
},
|
||||
|
||||
onUpdateEnded: function onUpdateEnded()
|
||||
{
|
||||
do_check_eq(this._count, 2);
|
||||
server.stop(do_test_finished);
|
||||
onNoUpdateAvailable: function onNoUpdateAvailable(aAddon) {
|
||||
do_throw("Expected an available update for " + aAddon.id);
|
||||
},
|
||||
|
||||
onAddonUpdateStarted: function onAddonUpdateStarted(aAddon)
|
||||
{
|
||||
onUpdateFinished: function onUpdateFinished() {
|
||||
if (++this._count == 2)
|
||||
server.stop(do_test_finished);
|
||||
},
|
||||
|
||||
onAddonUpdateEnded: function onAddonUpdateEnded(aAddon, aStatus)
|
||||
{
|
||||
this._count++;
|
||||
do_check_eq(aStatus, Components.interfaces.nsIAddonUpdateCheckListener.STATUS_UPDATE);
|
||||
do_check_eq(aAddon.version, 10);
|
||||
}
|
||||
}
|
||||
|
||||
function run_test()
|
||||
{
|
||||
// Setup for test
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
|
||||
|
||||
startupEM();
|
||||
|
||||
gEM.installItemFromFile(do_get_addon("test_bug394300_1"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
gEM.installItemFromFile(do_get_addon("test_bug394300_2"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
|
||||
restartEM();
|
||||
|
||||
var updates = [
|
||||
gEM.getItemForID("bug394300_1@tests.mozilla.org"),
|
||||
gEM.getItemForID("bug394300_2@tests.mozilla.org")
|
||||
];
|
||||
|
||||
do_check_neq(updates[0], null);
|
||||
do_check_neq(updates[1], null);
|
||||
|
||||
server = new nsHttpServer();
|
||||
server.registerDirectory("/", do_get_file("data"));
|
||||
server.start(4444);
|
||||
|
||||
do_test_pending();
|
||||
|
||||
gEM.update(updates, updates.length,
|
||||
Components.interfaces.nsIExtensionManager.UPDATE_CHECK_NEWVERSION,
|
||||
updateListener);
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
|
||||
startupManager();
|
||||
|
||||
installAllFiles([do_get_addon("test_bug394300_1"),
|
||||
do_get_addon("test_bug394300_2")], function() {
|
||||
|
||||
restartManager();
|
||||
|
||||
AddonManager.getAddons(["bug394300_1@tests.mozilla.org",
|
||||
"bug394300_2@tests.mozilla.org"], function(updates) {
|
||||
|
||||
do_check_neq(updates[0], null);
|
||||
do_check_neq(updates[1], null);
|
||||
|
||||
server = new nsHttpServer();
|
||||
server.registerDirectory("/", do_get_file("data"));
|
||||
server.start(4444);
|
||||
|
||||
updates[0].findUpdates(updateListener, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
updates[1].findUpdates(updateListener, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
});
|
||||
});
|
||||
}
|
@ -45,65 +45,106 @@ const ID = "bug397778@tests.mozilla.org";
|
||||
function run_test()
|
||||
{
|
||||
// Setup for test
|
||||
do_test_pending();
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1");
|
||||
gPrefs.setBoolPref(PREF_MATCH_OS_LOCALE, false);
|
||||
gPrefs.setCharPref(PREF_SELECTED_LOCALE, "fr-FR");
|
||||
Services.prefs.setBoolPref(PREF_MATCH_OS_LOCALE, false);
|
||||
Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "fr-FR");
|
||||
|
||||
// Install test add-on
|
||||
startupEM();
|
||||
gEM.installItemFromFile(do_get_addon(ADDON), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
var addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "fr Name");
|
||||
restartEM();
|
||||
startupManager();
|
||||
installAllFiles([do_get_addon(ADDON)], function() {
|
||||
restartManager();
|
||||
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "fr Name");
|
||||
do_check_eq(getManifestProperty(ID, "description"), "fr Description");
|
||||
|
||||
// Disable item
|
||||
gEM.disableItem(ID);
|
||||
restartEM();
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "fr Name");
|
||||
|
||||
run_test_1();
|
||||
});
|
||||
}
|
||||
|
||||
function run_test_1() {
|
||||
AddonManager.getAddon(ID, function(addon) {
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "fr Name");
|
||||
do_check_eq(addon.description, "fr Description");
|
||||
|
||||
// Disable item
|
||||
addon.userDisabled = true;
|
||||
restartManager();
|
||||
|
||||
AddonManager.getAddon(ID, function(newAddon) {
|
||||
do_check_neq(newAddon, null);
|
||||
do_check_eq(newAddon.name, "fr Name");
|
||||
|
||||
run_test_2();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function run_test_2() {
|
||||
// Change locale. The more specific de-DE is the best match
|
||||
gPrefs.setCharPref(PREF_SELECTED_LOCALE, "de");
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "de-DE Name");
|
||||
do_check_eq(getManifestProperty(ID, "description"), "");
|
||||
|
||||
Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "de");
|
||||
restartManager();
|
||||
|
||||
AddonManager.getAddon(ID, function(addon) {
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "de-DE Name");
|
||||
do_check_eq(addon.description, null);
|
||||
|
||||
run_test_3();
|
||||
});
|
||||
}
|
||||
|
||||
function run_test_3() {
|
||||
// Change locale. Locale case should have no effect
|
||||
gPrefs.setCharPref(PREF_SELECTED_LOCALE, "DE-de");
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "de-DE Name");
|
||||
do_check_eq(getManifestProperty(ID, "description"), "");
|
||||
|
||||
Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "DE-de");
|
||||
restartManager();
|
||||
|
||||
AddonManager.getAddon(ID, function(addon) {
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "de-DE Name");
|
||||
do_check_eq(addon.description, null);
|
||||
|
||||
run_test_4();
|
||||
});
|
||||
}
|
||||
|
||||
function run_test_4() {
|
||||
// Change locale. es-ES should closely match
|
||||
gPrefs.setCharPref(PREF_SELECTED_LOCALE, "es-AR");
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "es-ES Name");
|
||||
do_check_eq(getManifestProperty(ID, "description"), "es-ES Description");
|
||||
|
||||
Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "es-AR");
|
||||
restartManager();
|
||||
|
||||
AddonManager.getAddon(ID, function(addon) {
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "es-ES Name");
|
||||
do_check_eq(addon.description, "es-ES Description");
|
||||
|
||||
run_test_5();
|
||||
});
|
||||
}
|
||||
|
||||
function run_test_5() {
|
||||
// Change locale. Either zh-CN or zh-TW could match
|
||||
gPrefs.setCharPref(PREF_SELECTED_LOCALE, "zh");
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
if (addon.name != "zh-TW Name" && addon.name != "zh-CN Name")
|
||||
do_throw("zh matched to " + addon.name);
|
||||
|
||||
Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "zh");
|
||||
restartManager();
|
||||
|
||||
AddonManager.getAddon(ID, function(addon) {
|
||||
do_check_neq(addon, null);
|
||||
if (addon.name != "zh-TW Name" && addon.name != "zh-CN Name")
|
||||
do_throw("zh matched to " + addon.name);
|
||||
|
||||
run_test_6();
|
||||
});
|
||||
}
|
||||
|
||||
function run_test_6() {
|
||||
// Unknown locale should try to match against en-US as well. Of en,en-GB
|
||||
// en should match as being less specific
|
||||
gPrefs.setCharPref(PREF_SELECTED_LOCALE, "nl-NL");
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "en Name");
|
||||
do_check_eq(getManifestProperty(ID, "description"), "en Description");
|
||||
|
||||
shutdownEM();
|
||||
Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "nl-NL");
|
||||
restartManager();
|
||||
|
||||
AddonManager.getAddon(ID, function(addon) {
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "en Name");
|
||||
do_check_eq(addon.description, "en Description");
|
||||
|
||||
do_test_finished();
|
||||
});
|
||||
}
|
@ -42,20 +42,19 @@ const ID = "bug425657@tests.mozilla.org";
|
||||
function run_test()
|
||||
{
|
||||
// Setup for test
|
||||
do_test_pending();
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1");
|
||||
|
||||
// Install test add-on
|
||||
startupEM();
|
||||
gEM.installItemFromFile(do_get_addon(ADDON), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
var addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "Deutsches W\u00f6rterbuch");
|
||||
restartEM();
|
||||
startupManager();
|
||||
installAllFiles([do_get_addon(ADDON)], function() {
|
||||
restartManager();
|
||||
AddonManager.getAddon(ID, function(addon) {
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "Deutsches W\u00f6rterbuch");
|
||||
do_check_eq(addon.name.length, 20);
|
||||
|
||||
addon = gEM.getItemForID(ID);
|
||||
do_check_neq(addon, null);
|
||||
do_check_eq(addon.name, "Deutsches W\u00f6rterbuch");
|
||||
do_check_eq(addon.name.length, 20);
|
||||
|
||||
shutdownEM();
|
||||
do_test_finished();
|
||||
});
|
||||
});
|
||||
}
|
@ -152,12 +152,12 @@ function run_test() {
|
||||
do_test_pending();
|
||||
|
||||
// This should have no effect as the blocklist is disabled
|
||||
gPrefs.setCharPref(PREF_BLOCKLIST_URL, "http://localhost:4444/1");
|
||||
gPrefs.setBoolPref(PREF_BLOCKLIST_ENABLED, false);
|
||||
Services.prefs.setCharPref(PREF_BLOCKLIST_URL, "http://localhost:4444/1");
|
||||
Services.prefs.setBoolPref(PREF_BLOCKLIST_ENABLED, false);
|
||||
timerService.fireTimer(BLOCKLIST_TIMER);
|
||||
|
||||
// Some values have to be on the default branch to work
|
||||
var defaults = gPrefs.QueryInterface(Components.interfaces.nsIPrefService)
|
||||
var defaults = Services.prefs.QueryInterface(Components.interfaces.nsIPrefService)
|
||||
.getDefaultBranch(null);
|
||||
defaults.setCharPref(PREF_APP_UPDATE_CHANNEL, "updatechannel");
|
||||
defaults.setCharPref(PREF_APP_DISTRIBUTION, "distribution");
|
||||
@ -165,10 +165,10 @@ function run_test() {
|
||||
defaults.setCharPref(PREF_GENERAL_USERAGENT_LOCALE, "locale");
|
||||
|
||||
// This should correctly escape everything
|
||||
gPrefs.setCharPref(PREF_BLOCKLIST_URL, "http://localhost:4444/2?" +
|
||||
Services.prefs.setCharPref(PREF_BLOCKLIST_URL, "http://localhost:4444/2?" +
|
||||
"%APP_ID%&%APP_VERSION%&%PRODUCT%&%VERSION%&%BUILD_ID%&" +
|
||||
"%BUILD_TARGET%&%LOCALE%&%CHANNEL%&" +
|
||||
"%OS_VERSION%&%PLATFORM_VERSION%&%DISTRIBUTION%&%DISTRIBUTION_VERSION%");
|
||||
gPrefs.setBoolPref(PREF_BLOCKLIST_ENABLED, true);
|
||||
Services.prefs.setBoolPref(PREF_BLOCKLIST_ENABLED, true);
|
||||
timerService.fireTimer(BLOCKLIST_TIMER);
|
||||
}
|
@ -55,8 +55,8 @@ var dirProvider2 = {
|
||||
throw Components.results.NS_ERROR_NO_INTERFACE;
|
||||
}
|
||||
};
|
||||
gDirSvc.QueryInterface(Components.interfaces.nsIDirectoryService)
|
||||
.registerProvider(dirProvider2);
|
||||
Services.dirsvc.QueryInterface(Components.interfaces.nsIDirectoryService)
|
||||
.registerProvider(dirProvider2);
|
||||
|
||||
function run_test()
|
||||
{
|
||||
@ -67,6 +67,6 @@ function run_test()
|
||||
// Setup for test
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1");
|
||||
|
||||
startupEM();
|
||||
startupManager();
|
||||
do_check_false(log.exists());
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user