mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
gnu: icecat: Add fixes from Firefox ESR 45.5.0.
Includes fixes for CVE-2016-5290, CVE-2016-5291, CVE-2016-5297, CVE-2016-9064, and CVE-2016-9066. * gnu/packages/gnuzilla.scm (icecat)[source][patches]: Add fixes for aforementioned CVEs and other selected fixes from Firefox ESR 45.5.0. Note that the first six patches of CVE-2016-5290 and the patch for CVE-2016-9066 were already present, but were labeled by mozilla bug number instead of CVE. * gnu/packages/patches/icecat-CVE-2016-9064.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it.
This commit is contained in:
parent
56ac2bf442
commit
1a87aa7567
3 changed files with 1020 additions and 7 deletions
|
@ -612,6 +612,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/hypre-ldflags.patch \
|
||||
%D%/packages/patches/icecat-avoid-bundled-libraries.patch \
|
||||
%D%/packages/patches/icecat-binutils.patch \
|
||||
%D%/packages/patches/icecat-CVE-2016-9064.patch \
|
||||
%D%/packages/patches/icu4c-CVE-2014-6585.patch \
|
||||
%D%/packages/patches/icu4c-CVE-2015-1270.patch \
|
||||
%D%/packages/patches/icu4c-CVE-2015-4760.patch \
|
||||
|
|
|
@ -346,13 +346,29 @@ (define-public icecat
|
|||
,(mozilla-patch "icecat-CVE-2016-5284-pt5.patch" "0799490f4e6f" "1ypv6i48nabbhcqbach8fbgz9bmnhm7q5z9dnfid44z8g54l3f33")
|
||||
,(mozilla-patch "icecat-CVE-2016-5284-pt6.patch" "fc990e4ae8bc" "1s2cj505ajwwiy4xvn5zlmyzqpgahxmqqvis0a6xm6mjbjh02gm4")
|
||||
,(mozilla-patch "icecat-bug-1251088.patch" "5ffa912ed83e" "0v5lpv3c89c2d4y5acn0kyijv096axdnrvaj5ya5yypzfcaqxv24")
|
||||
,(mozilla-patch "icecat-bug-1292590.patch" "d4b5b8f3e373" "0w8cxn6ryhgxryy8k8i06yw4mknv509ns9ff1avd0hmgxa83mcdp")
|
||||
,(mozilla-patch "icecat-bug-1298169.patch" "adce603ae36d" "0mgs85cwx61bk17r7npl311l4m8yn4667wyhgjmm2ajiys6nn0yl")
|
||||
,(mozilla-patch "icecat-bug-1301496.patch" "97268426bb6f" "1z7hg796cgag025gm9pp2szz7w870s7naagdri1dlsilj797v8hr")
|
||||
,(mozilla-patch "icecat-bug-1299519.patch" "fc055950b6b8" "05iml5k3rzc653jk4imd111sh18625jxfxkcj12kjdihl0gdr4x4")
|
||||
,(mozilla-patch "icecat-bug-1303710.patch" "6f845c23565b" "01dlbnmpsnwr448fajs276y62gl03r74k1hxnwsg6ihwhnfdvn5a")
|
||||
,(mozilla-patch "icecat-bug-1301343.patch" "e5d51ca7a3c0" "0hshcz24hc6pkz5pcqxhajm17ibwrlfn1s00frfnpjjy56vacfz0")
|
||||
,(mozilla-patch "icecat-bug-1299686.patch" "576f1725a57e" "1lic9d3r8r1vcniw1g3ca71390lw3dmwjsw55dp6z96hyjbcq3fd")))
|
||||
,(mozilla-patch "icecat-CVE-2016-5290-pt1.patch" "d4b5b8f3e373" "0w8cxn6ryhgxryy8k8i06yw4mknv509ns9ff1avd0hmgxa83mcdp")
|
||||
,(mozilla-patch "icecat-CVE-2016-5290-pt2.patch" "adce603ae36d" "0mgs85cwx61bk17r7npl311l4m8yn4667wyhgjmm2ajiys6nn0yl")
|
||||
,(mozilla-patch "icecat-CVE-2016-5290-pt3.patch" "97268426bb6f" "1z7hg796cgag025gm9pp2szz7w870s7naagdri1dlsilj797v8hr")
|
||||
,(mozilla-patch "icecat-CVE-2016-5290-pt4.patch" "fc055950b6b8" "05iml5k3rzc653jk4imd111sh18625jxfxkcj12kjdihl0gdr4x4")
|
||||
,(mozilla-patch "icecat-CVE-2016-5290-pt5.patch" "6f845c23565b" "01dlbnmpsnwr448fajs276y62gl03r74k1hxnwsg6ihwhnfdvn5a")
|
||||
,(mozilla-patch "icecat-CVE-2016-5290-pt6.patch" "e5d51ca7a3c0" "0hshcz24hc6pkz5pcqxhajm17ibwrlfn1s00frfnpjjy56vacfz0")
|
||||
,(mozilla-patch "icecat-CVE-2016-5290-pt7.patch" "61d1463acd04" "1iig4a79dxmfcr6w82mdhyl88wy7d36g5n4p24632kbabgl9j9sz")
|
||||
,(mozilla-patch "icecat-CVE-2016-5290-pt8.patch" "8e0bab4216de" "1knq8h5ni8crfndi3p78b2pyj5lzchqw67vk0yx061r76mq4wp4r")
|
||||
,(mozilla-patch "icecat-CVE-2016-5290-pt9.patch" "bb10104dc89e" "1flvagckrzfk7hs2xzb5j3s5i0ck57ygyskh5494xmpa2a1nnsqj")
|
||||
,(mozilla-patch "icecat-CVE-2016-5290-pt10.patch" "7006b275b829" "0sqagm247wx94mf51fyhdkn0vf1a1qy9i829shjnhssd79srxmnn")
|
||||
,(mozilla-patch "icecat-CVE-2016-5290-pt11.patch" "32ce7be98543" "1y2r9i4p1qpqi75mlwmibr51whz5h1vj28c6mh6ik57dxkqxbclb")
|
||||
,(mozilla-patch "icecat-CVE-2016-5291.patch" "3ff0c89f3b26" "1prn74aglshaj27jfrpd2s2i4slpljw4rbzjxc1qgwjvkq4m6j6f")
|
||||
,(mozilla-patch "icecat-CVE-2016-5296.patch" "5e39c1c2fded" "0rjza37gvpzhbqfmpad33kljnpl1yfd9wm8xf7ll6bay3m8cqj6j")
|
||||
,(mozilla-patch "icecat-CVE-2016-5297.patch" "46b07bdbf8b2" "1n8y1c5l0ms81dra7jsx8mp633ak5qvx105drvlg9hn3m0fwv1lj")
|
||||
,(search-patch "icecat-CVE-2016-9064.patch") ; adapted for icecat based on:
|
||||
; "00c2b7baaa0b" "0y02yb7r62656nq9dji9dnwils2lxqasjz5byv62j1xa87r7f9hp"
|
||||
,(mozilla-patch "icecat-CVE-2016-9066.patch" "576f1725a57e" "1lic9d3r8r1vcniw1g3ca71390lw3dmwjsw55dp6z96hyjbcq3fd")
|
||||
,(mozilla-patch "icecat-bug-1212939.patch" "4a0e851f83e4" "182vx1qxrr7r2175jjf0bcixwwm1khdj4sq0c8wnsyry7p9waq5q")
|
||||
,(mozilla-patch "icecat-bug-1168743.patch" "a1e06af61ab3" "07llk1ba6axjasiv30vicz96k55ff4mybxy21vjxk6j0asgyjz23")
|
||||
,(mozilla-patch "icecat-bug-1287176.patch" "0569d5dce9db" "1d41sqbq6jc3af73dz9w19win7v7c12kw1mp7j7b1gkadq46c4y7")
|
||||
,(mozilla-patch "icecat-bug-1263665.patch" "a79cafee93f4" "0bn7hpm8mh8qmkpz5wiridr792irrs5sjxyvryazy2i0p4pjh62p")
|
||||
,(mozilla-patch "icecat-bug-1304962.patch" "f61049d5f373" "04d1na31qqq7yq4jjvhq6vzqq3f23rwac8c6fw4h5fx1pdb3l997")
|
||||
,(mozilla-patch "icecat-bug-1314574.patch" "46b2558ca469" "00q8676xg4wb7p371wgi04nl05j7idkb2kna9a0l08k6lks9wdhh")))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
|
|
996
gnu/packages/patches/icecat-CVE-2016-9064.patch
Normal file
996
gnu/packages/patches/icecat-CVE-2016-9064.patch
Normal file
|
@ -0,0 +1,996 @@
|
|||
Copied from
|
||||
<https://hg.mozilla.org/releases/mozilla-esr45/raw-rev/00c2b7baaa0b>
|
||||
but with one hunk omitted: the git binary patch for
|
||||
toolkit/mozapps/extensions/test/addons/test_update_multi2/addon.xpi
|
||||
which is not present in the IceCat sources.
|
||||
|
||||
# HG changeset patch
|
||||
# User Andrew Swan <aswan@mozilla.com>
|
||||
# Date 1474063218 25200
|
||||
# Node ID 00c2b7baaa0b4bfb7d5f1aac31c094ea6b255e1f
|
||||
# Parent 46b07bdbf8b20cf3fdc28104add57ff58a55832b
|
||||
Bug 1303418 - Don't allow upgrades that change the addon ID. r=mossop, a=lizzard
|
||||
|
||||
MozReview-Commit-ID: JHINo8ShmeI
|
||||
|
||||
diff --git a/toolkit/mozapps/extensions/AddonManager.jsm b/toolkit/mozapps/extensions/AddonManager.jsm
|
||||
--- a/toolkit/mozapps/extensions/AddonManager.jsm
|
||||
+++ b/toolkit/mozapps/extensions/AddonManager.jsm
|
||||
@@ -2956,16 +2956,18 @@ this.AddonManager = {
|
||||
// The downloaded file seems to be corrupted in some way.
|
||||
ERROR_CORRUPT_FILE: -3,
|
||||
// An error occured trying to write to the filesystem.
|
||||
ERROR_FILE_ACCESS: -4,
|
||||
// The add-on must be signed and isn't.
|
||||
ERROR_SIGNEDSTATE_REQUIRED: -5,
|
||||
// The downloaded add-on had a different type than expected.
|
||||
ERROR_UNEXPECTED_ADDON_TYPE: -6,
|
||||
+ // The addon did not have the expected ID
|
||||
+ ERROR_INCORRECT_ID: -7,
|
||||
|
||||
// These must be kept in sync with AddonUpdateChecker.
|
||||
// No error was encountered.
|
||||
UPDATE_STATUS_NO_ERROR: 0,
|
||||
// The update check timed out
|
||||
UPDATE_STATUS_TIMEOUT: -1,
|
||||
// There was an error while downloading the update information.
|
||||
UPDATE_STATUS_DOWNLOAD_ERROR: -2,
|
||||
diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
|
||||
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
|
||||
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
|
||||
@@ -5473,16 +5473,37 @@ AddonInstall.prototype = {
|
||||
// loadManifestFromZipReader performs the certificate verification for us
|
||||
this.addon = yield loadManifestFromZipReader(zipreader, this.installLocation);
|
||||
}
|
||||
catch (e) {
|
||||
zipreader.close();
|
||||
return Promise.reject([AddonManager.ERROR_CORRUPT_FILE, e]);
|
||||
}
|
||||
|
||||
+ if (this.existingAddon) {
|
||||
+ // Check various conditions related to upgrades
|
||||
+ if (this.addon.id != this.existingAddon.id) {
|
||||
+ zipreader.close();
|
||||
+ return Promise.reject([AddonManager.ERROR_INCORRECT_ID,
|
||||
+ `Refusing to upgrade addon ${this.existingAddon.id} to different ID ${this.addon.id}`]);
|
||||
+ }
|
||||
+
|
||||
+ if (this.addon.type == "multipackage") {
|
||||
+ zipreader.close();
|
||||
+ return Promise.reject([AddonManager.ERROR_UNEXPECTED_ADDON_TYPE,
|
||||
+ `Refusing to upgrade addon ${this.existingAddon.id} to a multi-package xpi`]);
|
||||
+ }
|
||||
+
|
||||
+ if (this.existingAddon.type == "webextension" && this.addon.type != "webextension") {
|
||||
+ zipreader.close();
|
||||
+ return Promise.reject([AddonManager.ERROR_UNEXPECTED_ADDON_TYPE,
|
||||
+ "Webextensions may not be updated to other extension types"]);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (mustSign(this.addon.type)) {
|
||||
if (this.addon.signedState <= AddonManager.SIGNEDSTATE_MISSING) {
|
||||
// This add-on isn't properly signed by a signature that chains to the
|
||||
// trusted root.
|
||||
let state = this.addon.signedState;
|
||||
this.addon = null;
|
||||
zipreader.close();
|
||||
|
||||
@@ -5510,23 +5531,16 @@ AddonInstall.prototype = {
|
||||
} else {
|
||||
zipreader.close();
|
||||
return Promise.reject([AddonManager.ERROR_CORRUPT_FILE,
|
||||
"XPI is incorrectly signed"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- if (this.existingAddon && this.existingAddon.type == "webextension" &&
|
||||
- this.addon.type != "webextension") {
|
||||
- zipreader.close();
|
||||
- return Promise.reject([AddonManager.ERROR_UNEXPECTED_ADDON_TYPE,
|
||||
- "WebExtensions may not be upated to other extension types"]);
|
||||
- }
|
||||
-
|
||||
if (this.addon.type == "multipackage")
|
||||
return this._loadMultipackageManifests(zipreader);
|
||||
|
||||
zipreader.close();
|
||||
|
||||
this.updateAddonURIs();
|
||||
|
||||
this.addon._install = this;
|
||||
@@ -5791,16 +5805,17 @@ AddonInstall.prototype = {
|
||||
else {
|
||||
// TODO Should we send some event here (bug 557716)?
|
||||
this.state = AddonManager.STATE_CHECKING;
|
||||
new UpdateChecker(this.addon, {
|
||||
onUpdateFinished: aAddon => this.downloadCompleted(),
|
||||
}, AddonManager.UPDATE_WHEN_ADDON_INSTALLED);
|
||||
}
|
||||
}, ([error, message]) => {
|
||||
+ this.removeTemporaryFile();
|
||||
this.downloadFailed(error, message);
|
||||
});
|
||||
}
|
||||
else {
|
||||
if (aRequest instanceof Ci.nsIHttpChannel)
|
||||
this.downloadFailed(AddonManager.ERROR_NETWORK_FAILURE,
|
||||
aRequest.responseStatus + " " +
|
||||
aRequest.responseStatusText);
|
||||
diff --git a/toolkit/mozapps/extensions/test/addons/test_update_multi1/bootstrap.js b/toolkit/mozapps/extensions/test/addons/test_update_multi1/bootstrap.js
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/toolkit/mozapps/extensions/test/addons/test_update_multi1/bootstrap.js
|
||||
@@ -0,0 +1,5 @@
|
||||
+
|
||||
+function install(data, reason) {}
|
||||
+function startup(data, reason) {}
|
||||
+function shutdown(data, reason) {}
|
||||
+function uninstall(data, reason) {}
|
||||
diff --git a/toolkit/mozapps/extensions/test/addons/test_update_multi1/install.rdf b/toolkit/mozapps/extensions/test/addons/test_update_multi1/install.rdf
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/toolkit/mozapps/extensions/test/addons/test_update_multi1/install.rdf
|
||||
@@ -0,0 +1,16 @@
|
||||
+<?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>updatemulti@tests.mozilla.org</em:id>
|
||||
+ <em:version>1.0</em:version>
|
||||
+ <em:updateURL>http://localhost:4444/data/test_update_multi.rdf</em:updateURL>
|
||||
+ <em:bootstrap>true</em:bootstrap>
|
||||
+ <em:name>Test Addon 1</em:name>
|
||||
+<em:targetApplication><Description>
|
||||
+ <em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
+ <em:minVersion>1</em:minVersion>
|
||||
+ <em:maxVersion>1</em:maxVersion>
|
||||
+</Description></em:targetApplication>
|
||||
+</Description>
|
||||
+</RDF>
|
||||
diff --git a/toolkit/mozapps/extensions/test/addons/test_update_multi2/install.rdf b/toolkit/mozapps/extensions/test/addons/test_update_multi2/install.rdf
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/toolkit/mozapps/extensions/test/addons/test_update_multi2/install.rdf
|
||||
@@ -0,0 +1,9 @@
|
||||
+<?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>updatemulti@tests.mozilla.org</em:id>
|
||||
+ <em:type>32</em:type>
|
||||
+ <em:version>2.0</em:version>
|
||||
+</Description>
|
||||
+</RDF>
|
||||
diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid1/bootstrap.js b/toolkit/mozapps/extensions/test/addons/test_updateid1/bootstrap.js
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/toolkit/mozapps/extensions/test/addons/test_updateid1/bootstrap.js
|
||||
@@ -0,0 +1,5 @@
|
||||
+
|
||||
+function install(data, reason) {}
|
||||
+function startup(data, reason) {}
|
||||
+function shutdown(data, reason) {}
|
||||
+function uninstall(data, reason) {}
|
||||
diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid1/install.rdf b/toolkit/mozapps/extensions/test/addons/test_updateid1/install.rdf
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/toolkit/mozapps/extensions/test/addons/test_updateid1/install.rdf
|
||||
@@ -0,0 +1,16 @@
|
||||
+<?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>addon1@tests.mozilla.org</em:id>
|
||||
+ <em:version>1.0</em:version>
|
||||
+ <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL>
|
||||
+ <em:bootstrap>true</em:bootstrap>
|
||||
+ <em:name>Test Addon 1</em:name>
|
||||
+<em:targetApplication><Description>
|
||||
+ <em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
+ <em:minVersion>1</em:minVersion>
|
||||
+ <em:maxVersion>1</em:maxVersion>
|
||||
+</Description></em:targetApplication>
|
||||
+</Description>
|
||||
+</RDF>
|
||||
diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid2/bootstrap.js b/toolkit/mozapps/extensions/test/addons/test_updateid2/bootstrap.js
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/toolkit/mozapps/extensions/test/addons/test_updateid2/bootstrap.js
|
||||
@@ -0,0 +1,5 @@
|
||||
+
|
||||
+function install(data, reason) {}
|
||||
+function startup(data, reason) {}
|
||||
+function shutdown(data, reason) {}
|
||||
+function uninstall(data, reason) {}
|
||||
diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid2/install.rdf b/toolkit/mozapps/extensions/test/addons/test_updateid2/install.rdf
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/toolkit/mozapps/extensions/test/addons/test_updateid2/install.rdf
|
||||
@@ -0,0 +1,16 @@
|
||||
+<?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>addon1.changed@tests.mozilla.org</em:id>
|
||||
+ <em:version>2.0</em:version>
|
||||
+ <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL>
|
||||
+ <em:bootstrap>true</em:bootstrap>
|
||||
+ <em:name>Test Addon 1</em:name>
|
||||
+<em:targetApplication><Description>
|
||||
+ <em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
+ <em:minVersion>1</em:minVersion>
|
||||
+ <em:maxVersion>1</em:maxVersion>
|
||||
+</Description></em:targetApplication>
|
||||
+</Description>
|
||||
+</RDF>
|
||||
diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid2_2/install.rdf b/toolkit/mozapps/extensions/test/addons/test_updateid2_2/install.rdf
|
||||
deleted file mode 100644
|
||||
--- a/toolkit/mozapps/extensions/test/addons/test_updateid2_2/install.rdf
|
||||
+++ /dev/null
|
||||
@@ -1,24 +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>addon2@tests.mozilla.org</em:id>
|
||||
- <em:version>2.0</em:version>
|
||||
- <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL>
|
||||
-
|
||||
- <!-- Front End MetaData -->
|
||||
- <em:name>Test 2</em:name>
|
||||
- <em:description>Test Description</em:description>
|
||||
-
|
||||
- <em:targetApplication>
|
||||
- <Description>
|
||||
- <em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
- <em:minVersion>1</em:minVersion>
|
||||
- <em:maxVersion>1</em:maxVersion>
|
||||
- </Description>
|
||||
- </em:targetApplication>
|
||||
-
|
||||
- </Description>
|
||||
-</RDF>
|
||||
diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid2_5/install.rdf b/toolkit/mozapps/extensions/test/addons/test_updateid2_5/install.rdf
|
||||
deleted file mode 100644
|
||||
--- a/toolkit/mozapps/extensions/test/addons/test_updateid2_5/install.rdf
|
||||
+++ /dev/null
|
||||
@@ -1,24 +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>addon2@tests.mozilla.org</em:id>
|
||||
- <em:version>5.0</em:version>
|
||||
- <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL>
|
||||
-
|
||||
- <!-- Front End MetaData -->
|
||||
- <em:name>Test 2</em:name>
|
||||
- <em:description>Test Description</em:description>
|
||||
-
|
||||
- <em:targetApplication>
|
||||
- <Description>
|
||||
- <em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
- <em:minVersion>1</em:minVersion>
|
||||
- <em:maxVersion>1</em:maxVersion>
|
||||
- </Description>
|
||||
- </em:targetApplication>
|
||||
-
|
||||
- </Description>
|
||||
-</RDF>
|
||||
diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid3_3/bootstrap.js b/toolkit/mozapps/extensions/test/addons/test_updateid3_3/bootstrap.js
|
||||
deleted file mode 100644
|
||||
--- a/toolkit/mozapps/extensions/test/addons/test_updateid3_3/bootstrap.js
|
||||
+++ /dev/null
|
||||
@@ -1,21 +0,0 @@
|
||||
-Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
-
|
||||
-function install(data, reason) {
|
||||
- Services.prefs.setIntPref("bootstraptest.installed_version", 3);
|
||||
- Services.prefs.setIntPref("bootstraptest.install_reason", reason);
|
||||
-}
|
||||
-
|
||||
-function startup(data, reason) {
|
||||
- Services.prefs.setIntPref("bootstraptest.active_version", 3);
|
||||
- Services.prefs.setIntPref("bootstraptest.startup_reason", reason);
|
||||
-}
|
||||
-
|
||||
-function shutdown(data, reason) {
|
||||
- Services.prefs.setIntPref("bootstraptest.active_version", 0);
|
||||
- Services.prefs.setIntPref("bootstraptest.shutdown_reason", reason);
|
||||
-}
|
||||
-
|
||||
-function uninstall(data, reason) {
|
||||
- Services.prefs.setIntPref("bootstraptest.installed_version", 0);
|
||||
- Services.prefs.setIntPref("bootstraptest.uninstall_reason", reason);
|
||||
-}
|
||||
diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid3_3/install.rdf b/toolkit/mozapps/extensions/test/addons/test_updateid3_3/install.rdf
|
||||
deleted file mode 100644
|
||||
--- a/toolkit/mozapps/extensions/test/addons/test_updateid3_3/install.rdf
|
||||
+++ /dev/null
|
||||
@@ -1,25 +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>addon3@tests.mozilla.org</em:id>
|
||||
- <em:version>3.0</em:version>
|
||||
- <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL>
|
||||
- <em:bootstrap>true</em:bootstrap>
|
||||
-
|
||||
- <!-- Front End MetaData -->
|
||||
- <em:name>Test 3</em:name>
|
||||
- <em:description>Test Description</em:description>
|
||||
-
|
||||
- <em:targetApplication>
|
||||
- <Description>
|
||||
- <em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
- <em:minVersion>1</em:minVersion>
|
||||
- <em:maxVersion>1</em:maxVersion>
|
||||
- </Description>
|
||||
- </em:targetApplication>
|
||||
-
|
||||
- </Description>
|
||||
-</RDF>
|
||||
diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid4_4/bootstrap.js b/toolkit/mozapps/extensions/test/addons/test_updateid4_4/bootstrap.js
|
||||
deleted file mode 100644
|
||||
--- a/toolkit/mozapps/extensions/test/addons/test_updateid4_4/bootstrap.js
|
||||
+++ /dev/null
|
||||
@@ -1,21 +0,0 @@
|
||||
-Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
-
|
||||
-function install(data, reason) {
|
||||
- Services.prefs.setIntPref("bootstraptest.installed_version", 4);
|
||||
- Services.prefs.setIntPref("bootstraptest.install_reason", reason);
|
||||
-}
|
||||
-
|
||||
-function startup(data, reason) {
|
||||
- Services.prefs.setIntPref("bootstraptest.active_version", 4);
|
||||
- Services.prefs.setIntPref("bootstraptest.startup_reason", reason);
|
||||
-}
|
||||
-
|
||||
-function shutdown(data, reason) {
|
||||
- Services.prefs.setIntPref("bootstraptest.active_version", 0);
|
||||
- Services.prefs.setIntPref("bootstraptest.shutdown_reason", reason);
|
||||
-}
|
||||
-
|
||||
-function uninstall(data, reason) {
|
||||
- Services.prefs.setIntPref("bootstraptest.installed_version", 0);
|
||||
- Services.prefs.setIntPref("bootstraptest.uninstall_reason", reason);
|
||||
-}
|
||||
diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid4_4/install.rdf b/toolkit/mozapps/extensions/test/addons/test_updateid4_4/install.rdf
|
||||
deleted file mode 100644
|
||||
--- a/toolkit/mozapps/extensions/test/addons/test_updateid4_4/install.rdf
|
||||
+++ /dev/null
|
||||
@@ -1,25 +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>addon4@tests.mozilla.org</em:id>
|
||||
- <em:version>4.0</em:version>
|
||||
- <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL>
|
||||
- <em:bootstrap>true</em:bootstrap>
|
||||
-
|
||||
- <!-- Front End MetaData -->
|
||||
- <em:name>Test 4</em:name>
|
||||
- <em:description>Test Description</em:description>
|
||||
-
|
||||
- <em:targetApplication>
|
||||
- <Description>
|
||||
- <em:id>xpcshell@tests.mozilla.org</em:id>
|
||||
- <em:minVersion>1</em:minVersion>
|
||||
- <em:maxVersion>1</em:maxVersion>
|
||||
- </Description>
|
||||
- </em:targetApplication>
|
||||
-
|
||||
- </Description>
|
||||
-</RDF>
|
||||
diff --git a/toolkit/mozapps/extensions/test/xpcshell/data/test_update_multi.rdf b/toolkit/mozapps/extensions/test/xpcshell/data/test_update_multi.rdf
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/toolkit/mozapps/extensions/test/xpcshell/data/test_update_multi.rdf
|
||||
@@ -0,0 +1,26 @@
|
||||
+<?xml version="1.0" encoding="UTF-8"?>
|
||||
+
|
||||
+<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:extension:updatemulti@tests.mozilla.org">
|
||||
+ <em:updates>
|
||||
+ <Seq>
|
||||
+ <li>
|
||||
+ <Description>
|
||||
+ <em:version>2.0</em:version>
|
||||
+ <em:targetApplication>
|
||||
+ <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_update_multi2.xpi</em:updateLink>
|
||||
+ </Description>
|
||||
+ </em:targetApplication>
|
||||
+ </Description>
|
||||
+ </li>
|
||||
+ </Seq>
|
||||
+ </em:updates>
|
||||
+ </Description>
|
||||
+
|
||||
+</RDF>
|
||||
diff --git a/toolkit/mozapps/extensions/test/xpcshell/data/test_updateid.rdf b/toolkit/mozapps/extensions/test/xpcshell/data/test_updateid.rdf
|
||||
--- a/toolkit/mozapps/extensions/test/xpcshell/data/test_updateid.rdf
|
||||
+++ b/toolkit/mozapps/extensions/test/xpcshell/data/test_updateid.rdf
|
||||
@@ -9,77 +9,17 @@
|
||||
<li>
|
||||
<Description>
|
||||
<em:version>2.0</em:version>
|
||||
<em:targetApplication>
|
||||
<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_updateid2_2.xpi</em:updateLink>
|
||||
- </Description>
|
||||
- </em:targetApplication>
|
||||
- </Description>
|
||||
- </li>
|
||||
- </Seq>
|
||||
- </em:updates>
|
||||
- </Description>
|
||||
-
|
||||
- <Description about="urn:mozilla:extension:addon2@tests.mozilla.org">
|
||||
- <em:updates>
|
||||
- <Seq>
|
||||
- <li>
|
||||
- <Description>
|
||||
- <em:version>3.0</em:version>
|
||||
- <em:targetApplication>
|
||||
- <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_updateid3_3.xpi</em:updateLink>
|
||||
- </Description>
|
||||
- </em:targetApplication>
|
||||
- </Description>
|
||||
- </li>
|
||||
- </Seq>
|
||||
- </em:updates>
|
||||
- </Description>
|
||||
-
|
||||
- <Description about="urn:mozilla:extension:addon3@tests.mozilla.org">
|
||||
- <em:updates>
|
||||
- <Seq>
|
||||
- <li>
|
||||
- <Description>
|
||||
- <em:version>4.0</em:version>
|
||||
- <em:targetApplication>
|
||||
- <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_updateid4_4.xpi</em:updateLink>
|
||||
- </Description>
|
||||
- </em:targetApplication>
|
||||
- </Description>
|
||||
- </li>
|
||||
- </Seq>
|
||||
- </em:updates>
|
||||
- </Description>
|
||||
-
|
||||
- <Description about="urn:mozilla:extension:addon4@tests.mozilla.org">
|
||||
- <em:updates>
|
||||
- <Seq>
|
||||
- <li>
|
||||
- <Description>
|
||||
- <em:version>5.0</em:version>
|
||||
- <em:targetApplication>
|
||||
- <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_updateid2_5.xpi</em:updateLink>
|
||||
+ <em:updateLink>http://localhost:4444/addons/test_updateid2.xpi</em:updateLink>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
</Description>
|
||||
</li>
|
||||
</Seq>
|
||||
</em:updates>
|
||||
</Description>
|
||||
|
||||
diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_updateid.js b/toolkit/mozapps/extensions/test/xpcshell/test_updateid.js
|
||||
--- a/toolkit/mozapps/extensions/test/xpcshell/test_updateid.js
|
||||
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_updateid.js
|
||||
@@ -2,421 +2,85 @@
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
|
||||
// This verifies that updating an add-on to a new ID works
|
||||
|
||||
// The test extension uses an insecure update url.
|
||||
Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||
|
||||
-Components.utils.import("resource://testing-common/httpd.js");
|
||||
-var testserver;
|
||||
const profileDir = gProfD.clone();
|
||||
profileDir.append("extensions");
|
||||
|
||||
-function resetPrefs() {
|
||||
- Services.prefs.setIntPref("bootstraptest.active_version", -1);
|
||||
- Services.prefs.setIntPref("bootstraptest.installed_version", -1);
|
||||
- Services.prefs.setIntPref("bootstraptest.startup_reason", -1);
|
||||
- Services.prefs.setIntPref("bootstraptest.shutdown_reason", -1);
|
||||
- Services.prefs.setIntPref("bootstraptest.install_reason", -1);
|
||||
- Services.prefs.setIntPref("bootstraptest.uninstall_reason", -1);
|
||||
-}
|
||||
-
|
||||
-function getActiveVersion() {
|
||||
- return Services.prefs.getIntPref("bootstraptest.active_version");
|
||||
-}
|
||||
-
|
||||
-function getInstalledVersion() {
|
||||
- return Services.prefs.getIntPref("bootstraptest.installed_version");
|
||||
-}
|
||||
-
|
||||
-function run_test() {
|
||||
- createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
|
||||
-
|
||||
- // Create and configure the HTTP server.
|
||||
- testserver = new HttpServer();
|
||||
- testserver.registerDirectory("/data/", do_get_file("data"));
|
||||
- testserver.registerDirectory("/addons/", do_get_file("addons"));
|
||||
- testserver.start(4444);
|
||||
-
|
||||
- do_test_pending();
|
||||
- run_test_1();
|
||||
-}
|
||||
-
|
||||
-function end_test() {
|
||||
- testserver.stop(do_test_finished);
|
||||
-}
|
||||
-
|
||||
-function installUpdate(aInstall, aCallback) {
|
||||
- aInstall.addListener({
|
||||
- onInstallEnded: function(aInstall) {
|
||||
- // give the startup time to run
|
||||
- do_execute_soon(function() {
|
||||
- aCallback(aInstall);
|
||||
- });
|
||||
- }
|
||||
- });
|
||||
-
|
||||
- aInstall.install();
|
||||
-}
|
||||
-
|
||||
-// Verify that an update to an add-on with a new ID uninstalls the old add-on
|
||||
-function run_test_1() {
|
||||
- writeInstallRDFForExtension({
|
||||
- id: "addon1@tests.mozilla.org",
|
||||
- version: "1.0",
|
||||
- updateURL: "http://localhost:4444/data/test_updateid.rdf",
|
||||
- targetApplications: [{
|
||||
- id: "xpcshell@tests.mozilla.org",
|
||||
- minVersion: "1",
|
||||
- maxVersion: "1"
|
||||
- }],
|
||||
- name: "Test Addon 1",
|
||||
- }, profileDir);
|
||||
-
|
||||
- startupManager();
|
||||
-
|
||||
- AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) {
|
||||
- do_check_neq(a1, null);
|
||||
- do_check_eq(a1.version, "1.0");
|
||||
+function promiseInstallUpdate(install) {
|
||||
+ return new Promise((resolve, reject) => {
|
||||
+ install.addListener({
|
||||
+ onDownloadFailed: () => {
|
||||
+ let err = new Error("download error");
|
||||
+ err.code = install.error;
|
||||
+ reject(err);
|
||||
+ },
|
||||
+ onInstallFailed: () => {
|
||||
+ let err = new Error("install error");
|
||||
+ err.code = install.error;
|
||||
+ reject(err);
|
||||
+ },
|
||||
+ onInstallEnded: resolve,
|
||||
+ });
|
||||
|
||||
- a1.findUpdates({
|
||||
- onUpdateAvailable: function(addon, install) {
|
||||
- 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, a1);
|
||||
-
|
||||
- installUpdate(install, check_test_1);
|
||||
- }
|
||||
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
- });
|
||||
-}
|
||||
-
|
||||
-function check_test_1(install) {
|
||||
- AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) {
|
||||
- // Existing add-on should have a pending upgrade
|
||||
- do_check_neq(a1.pendingUpgrade, null);
|
||||
- do_check_eq(a1.pendingUpgrade.id, "addon2@tests.mozilla.org");
|
||||
- do_check_eq(a1.pendingUpgrade.install.existingAddon, a1);
|
||||
- do_check_neq(a1.syncGUID);
|
||||
-
|
||||
- let a1SyncGUID = a1.syncGUID;
|
||||
-
|
||||
- restartManager();
|
||||
-
|
||||
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||
- "addon2@tests.mozilla.org"], function([a1, a2]) {
|
||||
- // Should have uninstalled the old and installed the new
|
||||
- do_check_eq(a1, null);
|
||||
- do_check_neq(a2, null);
|
||||
- do_check_neq(a2.syncGUID, null);
|
||||
-
|
||||
- // The Sync GUID should change when the ID changes
|
||||
- do_check_neq(a1SyncGUID, a2.syncGUID);
|
||||
-
|
||||
- a2.uninstall();
|
||||
-
|
||||
- do_execute_soon(run_test_2);
|
||||
- });
|
||||
- }));
|
||||
-}
|
||||
-
|
||||
-// Test that when the new add-on already exists we just upgrade that
|
||||
-function run_test_2() {
|
||||
- restartManager();
|
||||
- shutdownManager();
|
||||
-
|
||||
- writeInstallRDFForExtension({
|
||||
- id: "addon1@tests.mozilla.org",
|
||||
- version: "1.0",
|
||||
- updateURL: "http://localhost:4444/data/test_updateid.rdf",
|
||||
- targetApplications: [{
|
||||
- id: "xpcshell@tests.mozilla.org",
|
||||
- minVersion: "1",
|
||||
- maxVersion: "1"
|
||||
- }],
|
||||
- name: "Test Addon 1",
|
||||
- }, profileDir);
|
||||
- writeInstallRDFForExtension({
|
||||
- id: "addon2@tests.mozilla.org",
|
||||
- version: "1.0",
|
||||
- targetApplications: [{
|
||||
- id: "xpcshell@tests.mozilla.org",
|
||||
- minVersion: "1",
|
||||
- maxVersion: "1"
|
||||
- }],
|
||||
- name: "Test Addon 2",
|
||||
- }, profileDir);
|
||||
-
|
||||
- startupManager();
|
||||
-
|
||||
- AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) {
|
||||
- do_check_neq(a1, null);
|
||||
- do_check_eq(a1.version, "1.0");
|
||||
-
|
||||
- a1.findUpdates({
|
||||
- onUpdateAvailable: function(addon, install) {
|
||||
- installUpdate(install, check_test_2);
|
||||
- }
|
||||
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
+ install.install();
|
||||
});
|
||||
}
|
||||
|
||||
-function check_test_2(install) {
|
||||
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||
- "addon2@tests.mozilla.org"],
|
||||
- callback_soon(function([a1, a2]) {
|
||||
- do_check_eq(a1.pendingUpgrade, null);
|
||||
- // Existing add-on should have a pending upgrade
|
||||
- do_check_neq(a2.pendingUpgrade, null);
|
||||
- do_check_eq(a2.pendingUpgrade.id, "addon2@tests.mozilla.org");
|
||||
- do_check_eq(a2.pendingUpgrade.install.existingAddon, a2);
|
||||
-
|
||||
- restartManager();
|
||||
-
|
||||
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||
- "addon2@tests.mozilla.org"], function([a1, a2]) {
|
||||
- // Should have uninstalled the old and installed the new
|
||||
- do_check_neq(a1, null);
|
||||
- do_check_neq(a2, null);
|
||||
-
|
||||
- a1.uninstall();
|
||||
- a2.uninstall();
|
||||
-
|
||||
- do_execute_soon(run_test_3);
|
||||
- });
|
||||
- }));
|
||||
-}
|
||||
-
|
||||
-// Test that we rollback correctly when removing the old add-on fails
|
||||
-function run_test_3() {
|
||||
- restartManager();
|
||||
- shutdownManager();
|
||||
-
|
||||
- // This test only works on Windows
|
||||
- if (!("nsIWindowsRegKey" in AM_Ci)) {
|
||||
- run_test_4();
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- writeInstallRDFForExtension({
|
||||
- id: "addon1@tests.mozilla.org",
|
||||
- version: "1.0",
|
||||
- updateURL: "http://localhost:4444/data/test_updateid.rdf",
|
||||
- targetApplications: [{
|
||||
- id: "xpcshell@tests.mozilla.org",
|
||||
- minVersion: "1",
|
||||
- maxVersion: "1"
|
||||
- }],
|
||||
- name: "Test Addon 1",
|
||||
- }, profileDir);
|
||||
-
|
||||
- startupManager();
|
||||
+// Create and configure the HTTP server.
|
||||
+let testserver = createHttpServer(4444);
|
||||
+testserver.registerDirectory("/data/", do_get_file("data"));
|
||||
+testserver.registerDirectory("/addons/", do_get_file("addons"));
|
||||
|
||||
- AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) {
|
||||
- do_check_neq(a1, null);
|
||||
- do_check_eq(a1.version, "1.0");
|
||||
-
|
||||
- a1.findUpdates({
|
||||
- onUpdateAvailable: function(addon, install) {
|
||||
- installUpdate(install, check_test_3);
|
||||
- }
|
||||
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
- });
|
||||
-}
|
||||
-
|
||||
-function check_test_3(install) {
|
||||
- AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) {
|
||||
- // Existing add-on should have a pending upgrade
|
||||
- do_check_neq(a1.pendingUpgrade, null);
|
||||
- do_check_eq(a1.pendingUpgrade.id, "addon2@tests.mozilla.org");
|
||||
- do_check_eq(a1.pendingUpgrade.install.existingAddon, a1);
|
||||
-
|
||||
- // Lock the old add-on open so it can't be uninstalled
|
||||
- var file = profileDir.clone();
|
||||
- file.append("addon1@tests.mozilla.org");
|
||||
- if (!file.exists())
|
||||
- file.leafName += ".xpi";
|
||||
- else
|
||||
- file.append("install.rdf");
|
||||
-
|
||||
- var fstream = AM_Cc["@mozilla.org/network/file-output-stream;1"].
|
||||
- createInstance(AM_Ci.nsIFileOutputStream);
|
||||
- fstream.init(file, FileUtils.MODE_APPEND | FileUtils.MODE_WRONLY, FileUtils.PERMS_FILE, 0);
|
||||
-
|
||||
- restartManager();
|
||||
-
|
||||
- fstream.close();
|
||||
-
|
||||
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||
- "addon2@tests.mozilla.org"],
|
||||
- callback_soon(function([a1, a2]) {
|
||||
- // Should not have installed the new add-on but it should still be
|
||||
- // pending install
|
||||
- do_check_neq(a1, null);
|
||||
- do_check_eq(a2, null);
|
||||
-
|
||||
- restartManager();
|
||||
-
|
||||
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||
- "addon2@tests.mozilla.org"], function([a1, a2]) {
|
||||
- // Should have installed the new add-on
|
||||
- do_check_eq(a1, null);
|
||||
- do_check_neq(a2, null);
|
||||
-
|
||||
- a2.uninstall();
|
||||
-
|
||||
- do_execute_soon(run_test_4);
|
||||
- });
|
||||
- }));
|
||||
- }));
|
||||
+function run_test() {
|
||||
+ createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
|
||||
+ startupManager();
|
||||
+ run_next_test();
|
||||
}
|
||||
|
||||
-// Tests that upgrading to a bootstrapped add-on works but requires a restart
|
||||
-function run_test_4() {
|
||||
- restartManager();
|
||||
- shutdownManager();
|
||||
-
|
||||
- writeInstallRDFForExtension({
|
||||
- id: "addon2@tests.mozilla.org",
|
||||
- version: "2.0",
|
||||
- updateURL: "http://localhost:4444/data/test_updateid.rdf",
|
||||
- targetApplications: [{
|
||||
- id: "xpcshell@tests.mozilla.org",
|
||||
- minVersion: "1",
|
||||
- maxVersion: "1"
|
||||
- }],
|
||||
- name: "Test Addon 2",
|
||||
- }, profileDir);
|
||||
-
|
||||
- startupManager();
|
||||
-
|
||||
- resetPrefs();
|
||||
-
|
||||
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
|
||||
- do_check_neq(a2, null);
|
||||
- do_check_neq(a2.syncGUID, null);
|
||||
- do_check_eq(a2.version, "2.0");
|
||||
-
|
||||
- a2.findUpdates({
|
||||
- onUpdateAvailable: function(addon, install) {
|
||||
- installUpdate(install, check_test_4);
|
||||
- }
|
||||
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
- });
|
||||
-}
|
||||
-
|
||||
-function check_test_4() {
|
||||
- AddonManager.getAddonsByIDs(["addon2@tests.mozilla.org",
|
||||
- "addon3@tests.mozilla.org"],
|
||||
- callback_soon(function([a2, a3]) {
|
||||
- // Should still be pending install even though the new add-on is restartless
|
||||
- do_check_neq(a2, null);
|
||||
- do_check_eq(a3, null);
|
||||
-
|
||||
- do_check_neq(a2.pendingUpgrade, null);
|
||||
- do_check_eq(a2.pendingUpgrade.id, "addon3@tests.mozilla.org");
|
||||
-
|
||||
- do_check_eq(getInstalledVersion(), -1);
|
||||
- do_check_eq(getActiveVersion(), -1);
|
||||
-
|
||||
- restartManager();
|
||||
-
|
||||
- AddonManager.getAddonsByIDs(["addon2@tests.mozilla.org",
|
||||
- "addon3@tests.mozilla.org"], function([a2, a3]) {
|
||||
- // Should have updated
|
||||
- do_check_eq(a2, null);
|
||||
- do_check_neq(a3, null);
|
||||
-
|
||||
- do_check_eq(getInstalledVersion(), 3);
|
||||
- do_check_eq(getActiveVersion(), 3);
|
||||
-
|
||||
- do_execute_soon(run_test_5);
|
||||
- });
|
||||
- }));
|
||||
-}
|
||||
-
|
||||
-// Tests that upgrading to another bootstrapped add-on works without a restart
|
||||
-function run_test_5() {
|
||||
- AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) {
|
||||
- do_check_neq(a3, null);
|
||||
- do_check_eq(a3.version, "3.0");
|
||||
+// Verify that an update to an add-on with a new ID fails
|
||||
+add_task(function* test_update_new_id() {
|
||||
+ yield promiseInstallAllFiles([do_get_addon("test_updateid1")]);
|
||||
|
||||
- a3.findUpdates({
|
||||
- onUpdateAvailable: function(addon, install) {
|
||||
- installUpdate(install, check_test_5);
|
||||
- }
|
||||
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
- });
|
||||
-}
|
||||
-
|
||||
-function check_test_5() {
|
||||
- AddonManager.getAddonsByIDs(["addon3@tests.mozilla.org",
|
||||
- "addon4@tests.mozilla.org"],
|
||||
- callback_soon(function([a3, a4]) {
|
||||
- // Should have updated
|
||||
- do_check_eq(a3, null);
|
||||
- do_check_neq(a4, null);
|
||||
-
|
||||
- do_check_eq(getInstalledVersion(), 4);
|
||||
- do_check_eq(getActiveVersion(), 4);
|
||||
-
|
||||
- restartManager();
|
||||
-
|
||||
- AddonManager.getAddonsByIDs(["addon3@tests.mozilla.org",
|
||||
- "addon4@tests.mozilla.org"], function([a3, a4]) {
|
||||
- // Should still be gone
|
||||
- do_check_eq(a3, null);
|
||||
- do_check_neq(a4, null);
|
||||
-
|
||||
- do_check_eq(getInstalledVersion(), 4);
|
||||
- do_check_eq(getActiveVersion(), 4);
|
||||
-
|
||||
- run_test_6();
|
||||
- });
|
||||
- }));
|
||||
-}
|
||||
+ let addon = yield promiseAddonByID("addon1@tests.mozilla.org");
|
||||
+ do_check_neq(addon, null);
|
||||
+ do_check_eq(addon.version, "1.0");
|
||||
|
||||
-// Tests that upgrading to a non-bootstrapped add-on works but requires a restart
|
||||
-function run_test_6() {
|
||||
- AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) {
|
||||
- do_check_neq(a4, null);
|
||||
- do_check_eq(a4.version, "4.0");
|
||||
-
|
||||
- a4.findUpdates({
|
||||
- onUpdateAvailable: function(addon, install) {
|
||||
- installUpdate(install, check_test_6);
|
||||
- }
|
||||
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
- });
|
||||
-}
|
||||
+ let update = yield promiseFindAddonUpdates(addon, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
+ let install = update.updateAvailable;
|
||||
+ 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);
|
||||
|
||||
-function check_test_6() {
|
||||
- AddonManager.getAddonsByIDs(["addon4@tests.mozilla.org",
|
||||
- "addon2@tests.mozilla.org"],
|
||||
- callback_soon(function([a4, a2]) {
|
||||
- // Should still be pending install even though the old add-on is restartless
|
||||
- do_check_neq(a4, null);
|
||||
- do_check_eq(a2, null);
|
||||
-
|
||||
- do_check_neq(a4.pendingUpgrade, null);
|
||||
- do_check_eq(a4.pendingUpgrade.id, "addon2@tests.mozilla.org");
|
||||
-
|
||||
- do_check_eq(getInstalledVersion(), 4);
|
||||
- do_check_eq(getActiveVersion(), 4);
|
||||
+ yield Assert.rejects(promiseInstallUpdate(install),
|
||||
+ function(err) { return err.code == AddonManager.ERROR_INCORRECT_ID },
|
||||
+ "Upgrade to a different ID fails");
|
||||
|
||||
- restartManager();
|
||||
+ addon.uninstall();
|
||||
+});
|
||||
|
||||
- AddonManager.getAddonsByIDs(["addon4@tests.mozilla.org",
|
||||
- "addon2@tests.mozilla.org"], function([a4, a2]) {
|
||||
- // Should have updated
|
||||
- do_check_eq(a4, null);
|
||||
- do_check_neq(a2, null);
|
||||
+// Verify that an update to a multi-package xpi fails
|
||||
+add_task(function* test_update_new_id() {
|
||||
+ yield promiseInstallAllFiles([do_get_addon("test_update_multi1")]);
|
||||
|
||||
- do_check_eq(getInstalledVersion(), 0);
|
||||
- do_check_eq(getActiveVersion(), 0);
|
||||
+ let addon = yield promiseAddonByID("updatemulti@tests.mozilla.org");
|
||||
+ do_check_neq(addon, null);
|
||||
+ do_check_eq(addon.version, "1.0");
|
||||
|
||||
- end_test();
|
||||
- });
|
||||
- }));
|
||||
-}
|
||||
+ let update = yield promiseFindAddonUpdates(addon, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||
+ let install = update.updateAvailable;
|
||||
+ 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);
|
||||
+
|
||||
+ yield Assert.rejects(promiseInstallUpdate(install),
|
||||
+ function(err) { return err.code == AddonManager.ERROR_UNEXPECTED_ADDON_TYPE },
|
||||
+ "Upgrade to a multipackage xpi fails");
|
||||
+
|
||||
+ addon.uninstall();
|
||||
+});
|
||||
|
Loading…
Reference in a new issue