summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/webextensions/test/xpcshell/data
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2018-02-10 02:49:12 -0500
committerMatt A. Tobin <email@mattatobin.com>2018-02-10 02:49:12 -0500
commit4fb11cd5966461bccc3ed1599b808237be6b0de9 (patch)
treed7f0ccd49cebb3544d52635ff1bd6ed4d763823f /toolkit/mozapps/webextensions/test/xpcshell/data
parentf164d9124708b50789dbb6959e1de96cc5697c48 (diff)
downloadUXP-4fb11cd5966461bccc3ed1599b808237be6b0de9.tar
UXP-4fb11cd5966461bccc3ed1599b808237be6b0de9.tar.gz
UXP-4fb11cd5966461bccc3ed1599b808237be6b0de9.tar.lz
UXP-4fb11cd5966461bccc3ed1599b808237be6b0de9.tar.xz
UXP-4fb11cd5966461bccc3ed1599b808237be6b0de9.zip
Move WebExtensions enabled Add-ons Manager
Diffstat (limited to 'toolkit/mozapps/webextensions/test/xpcshell/data')
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/BootstrapMonitor.jsm30
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_change.xml31
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update1.rdf144
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update2.rdf144
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update3.rdf144
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/app_update.xml62
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/blocklist_update1.xml3
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/blocklist_update2.xml26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/manual_update.xml27
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_block.xml18
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_empty.xml7
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_start.xml30
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_warn.xml33
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/corrupt.xpi1
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/corruptfile.xpibin0 -> 633 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/empty.xpibin0 -> 197 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/from_sources/bootstrap.js1
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/from_sources/install.rdf28
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/pluginInfoURL_block.xml45
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad.txt1
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad.xml3
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad2.xml3
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/empty.xml5
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/good.xml11
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/missing.xml3
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/unsigned.xpibin0 -> 452 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/bootstrap.js29
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/install.rdf24
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/test.txt1
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/bootstrap.js29
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/install.rdf24
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/test.txt1
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_badid.xpibin0 -> 5151 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_broken.xpibin0 -> 5298 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_good.xpibin0 -> 5158 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_63_hash.xpibin0 -> 4471 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_63_plain.xpibin0 -> 4433 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_64_hash.xpibin0 -> 4474 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_64_plain.xpibin0 -> 4436 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_65_hash.xpibin0 -> 4487 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_badid.xpibin0 -> 6443 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_broken.xpibin0 -> 6563 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_signed.xpibin0 -> 6425 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_unsigned.xpibin0 -> 2436 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_1/install.rdf23
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_1/test.txt1
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_2/install.rdf23
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_2/test.txt1
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/preliminary_bootstrap_2.xpibin0 -> 5161 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_1.xpibin0 -> 5150 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_2.xpibin0 -> 5149 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_badid_2.xpibin0 -> 5155 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_nonbootstrap_2.xpibin0 -> 4627 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_nonbootstrap_badid_2.xpibin0 -> 4634 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/unsigned_bootstrap_2.xpibin0 -> 1156 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/unsigned_nonbootstrap_2.xpibin0 -> 691 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/bootstrap.js1
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_1.xpibin0 -> 4692 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_1_badcert.xpibin0 -> 4808 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_2.xpibin0 -> 4695 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_1.xpibin0 -> 4692 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_2.xpibin0 -> 4695 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_3.xpibin0 -> 4697 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_1.xpibin0 -> 4689 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_2.xpibin0 -> 4691 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_3.xpibin0 -> 4693 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system4_1.xpibin0 -> 4692 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system5_1.xpibin0 -> 4691 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_1_unpack.xpibin0 -> 4708 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_2_notBootstrap.xpibin0 -> 4682 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_3_notMultiprocess.xpibin0 -> 4675 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_complete.xpibin0 -> 5090 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_complete_2.xpibin0 -> 4706 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer.xpibin0 -> 5095 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_2.xpibin0 -> 4701 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_also.xpibin0 -> 5117 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_also_2.xpibin0 -> 4716 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_ignore.xpibin0 -> 5098 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_ignore_2.xpibin0 -> 4707 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_failed_update.xpibin0 -> 735 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository.xml820
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_cache.xml182
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_ignore.xml23
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_normal.xml23
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_strict.xml23
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_empty.xml3
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_failed.xml21
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_getAddonsByIDs.xml187
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_backgroundupdate.rdf70
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_metadata_filters_1.xml21
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_prefs_1.xml28
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_regexp_1.xml20
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug299716.rdf181
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug299716_2.rdf23
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug324121.rdf91
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug393285.xml30
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug394300.rdf159
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug424262.xml185
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug449027_app.xml333
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug449027_toolkit.xml208
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug468528.xml15
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_1.rdf17
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_2.rdf17
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_3.rdf17
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_4.rdf17
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_5.rdf17
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_1.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_2.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_3.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_4.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_5.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_1.xml17
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_2.xml10
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_empty.xml4
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_outdated_1.xml13
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_outdated_2.xml13
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug526598_1.xpibin0 -> 458 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug526598_2.xpibin0 -> 458 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug541420.xpibin0 -> 577 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug542391.rdf25
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug554133.xml292
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug619730.xml7
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_bug655254.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_compatoverrides.xml228
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_corrupt.rdf44
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_complete/bootstrap.js24
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_defer/bootstrap.js34
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_ignore/bootstrap.js26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_complete.json11
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_complete.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_defer.json11
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_defer.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_ignore.json11
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_ignore.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_dictionary.rdf65
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/bootstrap.js21
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/install.rdf23
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/subdir/dummy.txt1
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/subdir/subdir2/dummy2.txt1
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist.xml304
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist2.xml31
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist_AllOS.xml783
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist_OSVersion.xml32
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_1.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_2.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_3.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_install.rdf63
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_install.xml53
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_migrate.rdf125
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_migrate4.rdf46
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_no_update.json7
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/ancient.xml8
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/new.xml8
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/old.xml8
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_pluginBlocklistCtp.xml26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_pluginBlocklistCtpUndo.xml10
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_proxy/bootstrap.js1
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_softblocked1.xml9
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_sourceURI.xml18
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_temporary/bootstrap.js1
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_update.json215
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_update.rdf270
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_update.xml26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_update_multi.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecheck.json327
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecheck.rdf419
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_ignore.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_normal.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_strict.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/test_updateid.rdf26
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/unsigned.xpibin0 -> 452 bytes
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/data/webext-implicit-id.xpibin0 -> 4182 bytes
172 files changed, 7801 insertions, 0 deletions
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/BootstrapMonitor.jsm b/toolkit/mozapps/webextensions/test/xpcshell/data/BootstrapMonitor.jsm
new file mode 100644
index 000000000..7c1e4aa9d
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/BootstrapMonitor.jsm
@@ -0,0 +1,30 @@
+Components.utils.import("resource://gre/modules/Services.jsm");
+
+this.EXPORTED_SYMBOLS = [ "monitor" ];
+
+function notify(event, originalMethod, data, reason) {
+ let info = {
+ event,
+ data: Object.assign({}, data, {
+ installPath: data.installPath.path,
+ resourceURI: data.resourceURI.spec,
+ }),
+ reason
+ };
+
+ let subject = {wrappedJSObject: {data}};
+
+ Services.obs.notifyObservers(subject, "bootstrapmonitor-event", JSON.stringify(info));
+
+ // If the bootstrap scope already declares a method call it
+ if (originalMethod)
+ originalMethod(data, reason);
+}
+
+// Allows a simple one-line bootstrap script:
+// Components.utils.import("resource://xpcshelldata/bootstrapmonitor.jsm").monitor(this);
+this.monitor = function(scope) {
+ for (let event of ["install", "startup", "shutdown", "uninstall"]) {
+ scope[event] = notify.bind(null, event, scope[event]);
+ }
+}
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_change.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_change.xml
new file mode 100644
index 000000000..a229a653a
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_change.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem id="softblock1@tests.mozilla.org">
+ <versionRange severity="1" minVersion="2" maxVersion="3"/>
+ </emItem>
+ <emItem id="softblock2@tests.mozilla.org">
+ <versionRange severity="1" minVersion="2" maxVersion="3"/>
+ </emItem>
+ <emItem id="softblock3@tests.mozilla.org">
+ <versionRange severity="1" minVersion="2" maxVersion="3"/>
+ </emItem>
+ <emItem id="softblock4@tests.mozilla.org">
+ <versionRange severity="1" minVersion="2" maxVersion="3"/>
+ </emItem>
+ <emItem id="softblock5@tests.mozilla.org">
+ <versionRange severity="1" minVersion="2" maxVersion="3"/>
+ </emItem>
+ <emItem id="hardblock@tests.mozilla.org">
+ <versionRange minVersion="2" maxVersion="3"/>
+ </emItem>
+ <!-- Two RegExp matches, so test flags work - first shouldn't match. -->
+ <emItem id="/^RegExp/">
+ <versionRange severity="1" minVersion="2" maxVersion="3"/>
+ </emItem>
+ <emItem id="/^RegExp/i">
+ <versionRange severity="2" minVersion="2" maxVersion="3"/>
+ </emItem>
+ </emItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update1.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update1.rdf
new file mode 100644
index 000000000..588290968
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update1.rdf
@@ -0,0 +1,144 @@
+<?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:softblock1@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>2</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft1_2.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:softblock2@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>2</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft2_2.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:softblock3@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>2</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft3_2.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:softblock4@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>2</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft4_2.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:theme:softblock5@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>2</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft5_2.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:hardblock@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>2</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_hard1_2.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:regexpblock@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>2</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_regexp1_2.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+</RDF:RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update2.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update2.rdf
new file mode 100644
index 000000000..5c3747f5f
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update2.rdf
@@ -0,0 +1,144 @@
+<?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:softblock1@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>3</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft1_3.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:softblock2@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>3</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft2_3.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:softblock3@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>3</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft3_3.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:softblock4@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>3</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft4_3.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:theme:softblock5@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>3</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft5_3.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:hardblock@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>3</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_hard1_3.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:regexpblock@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>3</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_regexp1_3.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+</RDF:RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update3.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update3.rdf
new file mode 100644
index 000000000..d60708414
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update3.rdf
@@ -0,0 +1,144 @@
+<?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:softblock1@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>4</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft1_1.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:softblock2@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>4</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft2_1.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:softblock3@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>4</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft3_1.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:softblock4@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>4</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft4_1.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:theme:softblock5@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>4</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_soft5_1.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:hardblock@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>4</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_hard1_1.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:regexpblock@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>4</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>*</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/blocklist_regexp1_1.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+</RDF:RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/app_update.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/app_update.xml
new file mode 100644
index 000000000..85a66fe55
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/app_update.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem id="softblock1@tests.mozilla.org">
+ <versionRange severity="1">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="2" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="softblock2@tests.mozilla.org">
+ <versionRange severity="1">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="2" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="softblock3@tests.mozilla.org">
+ <versionRange severity="1">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="2" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="softblock4@tests.mozilla.org">
+ <versionRange severity="1">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="2" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="softblock5@tests.mozilla.org">
+ <versionRange severity="1">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="2" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="hardblock@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="2" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="/^RegExp/">
+ <versionRange severity="1">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="2" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="/^RegExp/i">
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="2" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ </emItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/blocklist_update1.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/blocklist_update1.xml
new file mode 100644
index 000000000..87011cd39
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/blocklist_update1.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist"/>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/blocklist_update2.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/blocklist_update2.xml
new file mode 100644
index 000000000..867a34255
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/blocklist_update2.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem id="softblock1@tests.mozilla.org">
+ <versionRange severity="1"/>
+ </emItem>
+ <emItem id="softblock2@tests.mozilla.org">
+ <versionRange severity="1"/>
+ </emItem>
+ <emItem id="softblock3@tests.mozilla.org">
+ <versionRange severity="1"/>
+ </emItem>
+ <emItem id="softblock4@tests.mozilla.org">
+ <versionRange severity="1"/>
+ </emItem>
+ <emItem id="softblock5@tests.mozilla.org">
+ <versionRange severity="1"/>
+ </emItem>
+ <emItem id="hardblock@tests.mozilla.org"/>
+ <emItem id="/^RegExp/">
+ <versionRange severity="1"/>
+ </emItem>
+ <emItem id="/^RegExp/i"/>
+ </emItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/manual_update.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/manual_update.xml
new file mode 100644
index 000000000..df9276525
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/manual_update.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem id="softblock1@tests.mozilla.org">
+ <versionRange severity="1" minVersion="1" maxVersion="2"/>
+ </emItem>
+ <emItem id="softblock2@tests.mozilla.org">
+ <versionRange severity="1" minVersion="1" maxVersion="2"/>
+ </emItem>
+ <emItem id="softblock3@tests.mozilla.org">
+ <versionRange severity="1" minVersion="1" maxVersion="2"/>
+ </emItem>
+ <emItem id="softblock4@tests.mozilla.org">
+ <versionRange severity="1" minVersion="1" maxVersion="2"/>
+ </emItem>
+ <emItem id="softblock5@tests.mozilla.org">
+ <versionRange severity="1" minVersion="1" maxVersion="2"/>
+ </emItem>
+ <emItem id="hardblock@tests.mozilla.org">
+ <versionRange minVersion="1" maxVersion="2"/>
+ </emItem>
+ <emItem id="/^RegExp/i">
+ <versionRange minVersion="1" maxVersion="2"/>
+ </emItem>
+ </emItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_block.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_block.xml
new file mode 100644
index 000000000..1f673ef2f
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_block.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem id="test_bug455906_1@tests.mozilla.org" blockID="test_bug455906_1@tests.mozilla.org"/>
+ <emItem id="test_bug455906_2@tests.mozilla.org" blockID="test_bug455906_2@tests.mozilla.org"/>
+ <emItem id="test_bug455906_3@tests.mozilla.org" blockID="test_bug455906_3@tests.mozilla.org"/>
+ <emItem id="test_bug455906_4@tests.mozilla.org" blockID="test_bug455906_4@tests.mozilla.org"/>
+ <emItem id="test_bug455906_5@tests.mozilla.org" blockID="test_bug455906_5@tests.mozilla.org"/>
+ <emItem id="test_bug455906_6@tests.mozilla.org" blockID="test_bug455906_6@tests.mozilla.org"/>
+ <emItem id="test_bug455906_7@tests.mozilla.org" blockID="test_bug455906_7@tests.mozilla.org"/>
+ </emItems>
+ <pluginItems>
+ <pluginItem blockID="test_bug455906_plugin">
+ <match name="name" exp="^test_bug455906"/>
+ </pluginItem>
+ </pluginItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_empty.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_empty.xml
new file mode 100644
index 000000000..88d22f281
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_empty.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem id="dummy_bug455906_2@tests.mozilla.org"/>
+ </emItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_start.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_start.xml
new file mode 100644
index 000000000..daba6f4c1
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_start.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem id="test_bug455906_4@tests.mozilla.org">
+ <versionRange severity="-1"/>
+ </emItem>
+ <emItem id="test_bug455906_5@tests.mozilla.org">
+ <versionRange severity="1"/>
+ </emItem>
+ <emItem id="test_bug455906_6@tests.mozilla.org">
+ <versionRange severity="2"/>
+ </emItem>
+ <emItem id="dummy_bug455906_1@tests.mozilla.org"/>
+ </emItems>
+ <pluginItems>
+ <pluginItem>
+ <match name="name" exp="^test_bug455906_4$"/>
+ <versionRange severity="0"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug455906_5$"/>
+ <versionRange severity="1"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug455906_6$"/>
+ <versionRange severity="2"/>
+ </pluginItem>
+ </pluginItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_warn.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_warn.xml
new file mode 100644
index 000000000..232fd0d07
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_warn.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem id="test_bug455906_1@tests.mozilla.org">
+ <versionRange severity="-1"/>
+ </emItem>
+ <emItem id="test_bug455906_2@tests.mozilla.org">
+ <versionRange severity="-1"/>
+ </emItem>
+ <emItem id="test_bug455906_3@tests.mozilla.org">
+ <versionRange severity="-1"/>
+ </emItem>
+ <emItem id="test_bug455906_4@tests.mozilla.org">
+ <versionRange severity="-1"/>
+ </emItem>
+ <emItem id="test_bug455906_5@tests.mozilla.org">
+ <versionRange severity="-1"/>
+ </emItem>
+ <emItem id="test_bug455906_6@tests.mozilla.org">
+ <versionRange severity="-1"/>
+ </emItem>
+ <emItem id="test_bug455906_7@tests.mozilla.org">
+ <versionRange severity="-1"/>
+ </emItem>
+ </emItems>
+ <pluginItems>
+ <pluginItem>
+ <match name="name" exp="^test_bug455906"/>
+ <versionRange severity="-1"/>
+ </pluginItem>
+ </pluginItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/corrupt.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/corrupt.xpi
new file mode 100644
index 000000000..35d7bd5e5
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/corrupt.xpi
@@ -0,0 +1 @@
+This is a corrupt zip file
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/corruptfile.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/corruptfile.xpi
new file mode 100644
index 000000000..0c30989aa
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/corruptfile.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/empty.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/empty.xpi
new file mode 100644
index 000000000..74ed2b817
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/empty.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/from_sources/bootstrap.js b/toolkit/mozapps/webextensions/test/xpcshell/data/from_sources/bootstrap.js
new file mode 100644
index 000000000..1666f2972
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/from_sources/bootstrap.js
@@ -0,0 +1 @@
+Components.utils.import("resource://xpcshell-data/BootstrapMonitor.jsm").monitor(this);
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/from_sources/install.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/from_sources/install.rdf
new file mode 100644
index 000000000..f02a3869c
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/from_sources/install.rdf
@@ -0,0 +1,28 @@
+<?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>bootstrap1@tests.mozilla.org</em:id>
+ <em:version>1.0</em:version>
+ <em:bootstrap>true</em:bootstrap>
+
+ <!-- Front End MetaData -->
+ <em:name>Test Bootstrap 1</em:name>
+ <em:description>Test Description</em:description>
+
+ <em:iconURL>chrome://foo/skin/icon.png</em:iconURL>
+ <em:aboutURL>chrome://foo/content/about.xul</em:aboutURL>
+ <em:optionsURL>chrome://foo/content/options.xul</em:optionsURL>
+
+ <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/webextensions/test/xpcshell/data/pluginInfoURL_block.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/pluginInfoURL_block.xml
new file mode 100644
index 000000000..75e252a46
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/pluginInfoURL_block.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ </emItems>
+ <pluginItems>
+ <pluginItem blockID="test_plugin_wInfoURL">
+ <match name="name" exp="^test_with_infoURL"/>
+ <match name="version" exp="^5"/>
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="1" maxVersion="*"/>
+ </targetApplication>
+ </versionRange>
+ <infoURL>http://test.url.com/</infoURL>
+ </pluginItem>
+ <pluginItem blockID="test_plugin_wAltInfoURL">
+ <match name="name" exp="^test_with_altInfoURL"/>
+ <match name="version" exp="^5"/>
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="1" maxVersion="*"/>
+ </targetApplication>
+ </versionRange>
+ <infoURL>http://alt.test.url.com/</infoURL>
+ </pluginItem>
+ <pluginItem blockID="test_plugin_noInfoURL">
+ <match name="name" exp="^test_no_infoURL"/>
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="1" maxVersion="*"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <pluginItem blockID="test_plugin_newVersion">
+ <match name="name" exp="^test_newVersion"/>
+ <infoURL>http://test.url2.com/</infoURL>
+ <versionRange minVersion="1" maxVersion="2">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="1" maxVersion="*"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ </pluginItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad.txt b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad.txt
new file mode 100644
index 000000000..f17f98b15
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad.txt
@@ -0,0 +1 @@
+Not an xml file! \ No newline at end of file
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad.xml
new file mode 100644
index 000000000..0e3d415c4
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<foobar></barfoo> \ No newline at end of file
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad2.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad2.xml
new file mode 100644
index 000000000..55ad1c7d5
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad2.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<test></test>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/empty.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/empty.xml
new file mode 100644
index 000000000..42cb20bd0
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/empty.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<updates>
+ <addons></addons>
+</updates>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/good.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/good.xml
new file mode 100644
index 000000000..e1da86fa5
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/good.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<updates>
+ <addons>
+ <addon id="test1" URL="http://example.com/test1.xpi"/>
+ <addon id="test2" URL="http://example.com/test2.xpi" hashFunction="md5" hashValue="djhfgsjdhf"/>
+ <addon id="test3" URL="http://example.com/test3.xpi" version="1.0" size="45"/>
+ <addon id="test4"/>
+ <addon URL="http://example.com/test5.xpi"/>
+ </addons>
+</updates>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/missing.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/missing.xml
new file mode 100644
index 000000000..8c9501478
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/missing.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<updates></updates>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/unsigned.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/unsigned.xpi
new file mode 100644
index 000000000..51b00475a
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/unsigned.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/bootstrap.js b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/bootstrap.js
new file mode 100644
index 000000000..0cf01d319
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/bootstrap.js
@@ -0,0 +1,29 @@
+Components.utils.import("resource://gre/modules/Services.jsm");
+
+const VERSION = 1;
+
+// Test steps chain from pref observers on *_reason,
+// so always set that last
+function install(data, reason) {
+ Services.prefs.setIntPref("bootstraptest.installed_version", VERSION);
+ Services.prefs.setIntPref("bootstraptest.install_oldversion", data.oldVersion);
+ Services.prefs.setIntPref("bootstraptest.install_reason", reason);
+}
+
+function startup(data, reason) {
+ Services.prefs.setIntPref("bootstraptest.active_version", VERSION);
+ Services.prefs.setIntPref("bootstraptest.startup_oldversion", data.oldVersion);
+ Services.prefs.setIntPref("bootstraptest.startup_reason", reason);
+}
+
+function shutdown(data, reason) {
+ Services.prefs.setIntPref("bootstraptest.active_version", 0);
+ Services.prefs.setIntPref("bootstraptest.shutdown_newversion", data.newVersion);
+ Services.prefs.setIntPref("bootstraptest.shutdown_reason", reason);
+}
+
+function uninstall(data, reason) {
+ Services.prefs.setIntPref("bootstraptest.installed_version", 0);
+ Services.prefs.setIntPref("bootstraptest.uninstall_newversion", data.newVersion);
+ Services.prefs.setIntPref("bootstraptest.uninstall_reason", reason);
+}
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/install.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/install.rdf
new file mode 100644
index 000000000..9d08c357c
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/install.rdf
@@ -0,0 +1,24 @@
+<?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@tests.mozilla.org</em:id>
+ <em:version>1.0</em:version>
+ <em:bootstrap>true</em:bootstrap>
+
+ <!-- Front End MetaData -->
+ <em:name>Test Add-on</em:name>
+ <em:updateURL>http://localhost:4444/update.rdf</em:updateURL>
+
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>2</em:minVersion>
+ <em:maxVersion>5</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/test.txt b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/test.txt
new file mode 100644
index 000000000..11686f61c
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/test.txt
@@ -0,0 +1 @@
+This test file can be altered to break signing checks.
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/bootstrap.js b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/bootstrap.js
new file mode 100644
index 000000000..718c82be4
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/bootstrap.js
@@ -0,0 +1,29 @@
+Components.utils.import("resource://gre/modules/Services.jsm");
+
+const VERSION = 2;
+
+// Test steps chain from pref observers on *_reason,
+// so always set that last
+function install(data, reason) {
+ Services.prefs.setIntPref("bootstraptest.installed_version", VERSION);
+ Services.prefs.setIntPref("bootstraptest.install_oldversion", data.oldVersion);
+ Services.prefs.setIntPref("bootstraptest.install_reason", reason);
+}
+
+function startup(data, reason) {
+ Services.prefs.setIntPref("bootstraptest.active_version", VERSION);
+ Services.prefs.setIntPref("bootstraptest.startup_oldversion", data.oldVersion);
+ Services.prefs.setIntPref("bootstraptest.startup_reason", reason);
+}
+
+function shutdown(data, reason) {
+ Services.prefs.setIntPref("bootstraptest.active_version", 0);
+ Services.prefs.setIntPref("bootstraptest.shutdown_newversion", data.newVersion);
+ Services.prefs.setIntPref("bootstraptest.shutdown_reason", reason);
+}
+
+function uninstall(data, reason) {
+ Services.prefs.setIntPref("bootstraptest.installed_version", 0);
+ Services.prefs.setIntPref("bootstraptest.uninstall_newversion", data.newVersion);
+ Services.prefs.setIntPref("bootstraptest.uninstall_reason", reason);
+}
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/install.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/install.rdf
new file mode 100644
index 000000000..0a345dd92
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/install.rdf
@@ -0,0 +1,24 @@
+<?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@tests.mozilla.org</em:id>
+ <em:version>2.0</em:version>
+ <em:bootstrap>true</em:bootstrap>
+
+ <!-- Front End MetaData -->
+ <em:name>Test Add-on</em:name>
+ <em:updateURL>http://localhost:4444/update.rdf</em:updateURL>
+
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>4</em:minVersion>
+ <em:maxVersion>6</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/test.txt b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/test.txt
new file mode 100644
index 000000000..11686f61c
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/test.txt
@@ -0,0 +1 @@
+This test file can be altered to break signing checks.
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_badid.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_badid.xpi
new file mode 100644
index 000000000..9d6f0c708
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_badid.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_broken.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_broken.xpi
new file mode 100644
index 000000000..4496a90cf
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_broken.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_good.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_good.xpi
new file mode 100644
index 000000000..e61e3c721
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_good.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_63_hash.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_63_hash.xpi
new file mode 100644
index 000000000..1682a7506
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_63_hash.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_63_plain.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_63_plain.xpi
new file mode 100644
index 000000000..cd67e25fc
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_63_plain.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_64_hash.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_64_hash.xpi
new file mode 100644
index 000000000..e4040a274
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_64_hash.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_64_plain.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_64_plain.xpi
new file mode 100644
index 000000000..ca453b9d5
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_64_plain.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_65_hash.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_65_hash.xpi
new file mode 100644
index 000000000..69579d2dc
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_65_hash.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_badid.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_badid.xpi
new file mode 100644
index 000000000..6e23eb214
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_badid.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_broken.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_broken.xpi
new file mode 100644
index 000000000..0ba0f30d1
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_broken.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_signed.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_signed.xpi
new file mode 100644
index 000000000..33101f63c
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_signed.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_unsigned.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_unsigned.xpi
new file mode 100644
index 000000000..3146870d8
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_unsigned.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_1/install.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_1/install.rdf
new file mode 100644
index 000000000..97ae60988
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_1/install.rdf
@@ -0,0 +1,23 @@
+<?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@tests.mozilla.org</em:id>
+ <em:version>1.0</em:version>
+
+ <!-- Front End MetaData -->
+ <em:name>Test Add-on</em:name>
+ <em:updateURL>http://localhost:4444/update.rdf</em:updateURL>
+
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>2</em:minVersion>
+ <em:maxVersion>5</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_1/test.txt b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_1/test.txt
new file mode 100644
index 000000000..11686f61c
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_1/test.txt
@@ -0,0 +1 @@
+This test file can be altered to break signing checks.
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_2/install.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_2/install.rdf
new file mode 100644
index 000000000..df2fd8081
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_2/install.rdf
@@ -0,0 +1,23 @@
+<?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@tests.mozilla.org</em:id>
+ <em:version>2.0</em:version>
+
+ <!-- Front End MetaData -->
+ <em:name>Test Add-on</em:name>
+ <em:updateURL>http://localhost:4444/update.rdf</em:updateURL>
+
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>4</em:minVersion>
+ <em:maxVersion>6</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_2/test.txt b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_2/test.txt
new file mode 100644
index 000000000..11686f61c
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_2/test.txt
@@ -0,0 +1 @@
+This test file can be altered to break signing checks.
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/preliminary_bootstrap_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/preliminary_bootstrap_2.xpi
new file mode 100644
index 000000000..ec38fcc65
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/preliminary_bootstrap_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_1.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_1.xpi
new file mode 100644
index 000000000..fc2842399
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_1.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_2.xpi
new file mode 100644
index 000000000..327c8a187
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_badid_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_badid_2.xpi
new file mode 100644
index 000000000..efad21d1b
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_badid_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_nonbootstrap_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_nonbootstrap_2.xpi
new file mode 100644
index 000000000..d6ddbcec3
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_nonbootstrap_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_nonbootstrap_badid_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_nonbootstrap_badid_2.xpi
new file mode 100644
index 000000000..5898d83e4
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_nonbootstrap_badid_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/unsigned_bootstrap_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/unsigned_bootstrap_2.xpi
new file mode 100644
index 000000000..9d50f0825
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/unsigned_bootstrap_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/unsigned_nonbootstrap_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/unsigned_nonbootstrap_2.xpi
new file mode 100644
index 000000000..6ba1efd72
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/unsigned_nonbootstrap_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/bootstrap.js b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/bootstrap.js
new file mode 100644
index 000000000..1666f2972
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/bootstrap.js
@@ -0,0 +1 @@
+Components.utils.import("resource://xpcshell-data/BootstrapMonitor.jsm").monitor(this);
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_1.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_1.xpi
new file mode 100644
index 000000000..2fc2fd189
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_1.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_1_badcert.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_1_badcert.xpi
new file mode 100644
index 000000000..e7e50c8ea
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_1_badcert.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_2.xpi
new file mode 100644
index 000000000..a858cf74a
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_1.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_1.xpi
new file mode 100644
index 000000000..911632e49
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_1.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_2.xpi
new file mode 100644
index 000000000..102a053bb
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_3.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_3.xpi
new file mode 100644
index 000000000..295e77611
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_3.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_1.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_1.xpi
new file mode 100644
index 000000000..954995619
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_1.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_2.xpi
new file mode 100644
index 000000000..dc8632aef
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_3.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_3.xpi
new file mode 100644
index 000000000..3f818172a
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_3.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system4_1.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system4_1.xpi
new file mode 100644
index 000000000..1f70b1a75
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system4_1.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system5_1.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system5_1.xpi
new file mode 100644
index 000000000..fc636e97f
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system5_1.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_1_unpack.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_1_unpack.xpi
new file mode 100644
index 000000000..ff620966d
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_1_unpack.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_2_notBootstrap.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_2_notBootstrap.xpi
new file mode 100644
index 000000000..e474dbd59
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_2_notBootstrap.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_3_notMultiprocess.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_3_notMultiprocess.xpi
new file mode 100644
index 000000000..1ccde90c5
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_3_notMultiprocess.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_complete.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_complete.xpi
new file mode 100644
index 000000000..94d9e47d2
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_complete.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_complete_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_complete_2.xpi
new file mode 100644
index 000000000..28c8561c6
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_complete_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer.xpi
new file mode 100644
index 000000000..daf55c0d4
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_2.xpi
new file mode 100644
index 000000000..75cacbbc8
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_also.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_also.xpi
new file mode 100644
index 000000000..2eb6b7fc9
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_also.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_also_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_also_2.xpi
new file mode 100644
index 000000000..fb588b3e0
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_also_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_ignore.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_ignore.xpi
new file mode 100644
index 000000000..7a5eb265d
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_ignore.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_ignore_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_ignore_2.xpi
new file mode 100644
index 000000000..dc6749355
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_ignore_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_failed_update.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_failed_update.xpi
new file mode 100644
index 000000000..3c673ac2e
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_failed_update.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository.xml
new file mode 100644
index 000000000..0bebca2c1
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository.xml
@@ -0,0 +1,820 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="1111">
+ <!-- Passes all requirements -->
+ <addon>
+ <name>PASS</name>
+ <type id="1">Extension</type>
+ <guid>test1@tests.mozilla.org</guid>
+ <version>1.1</version>
+ <authors>
+ <author>
+ <name>Test Creator 1</name>
+ <link>http://localhost:%PORT%/creator1.html</link>
+ </author>
+ </authors>
+ <status id="8">Preliminarily Reviewed</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <!-- Test that a negative rating is ignored -->
+ <rating>-2</rating>
+ <!-- Test that a <reviews> with a blank review URL is ignored -->
+ <reviews num=" 1111 "> </reviews>
+ <!-- Test that a negative total_downloads is ignored -->
+ <total_downloads>-2</total_downloads>
+ <install>http://localhost:%PORT%/test1.xpi</install>
+ </addon>
+
+ <!-- Passes requirements. Tests optional attributes. Also tests that
+ integer properties that are NaN in the XML are ignored -->
+ <addon>
+ <name>PASS</name>
+ <!-- Test that extensions pass -->
+ <type id="1">Extension</type>
+ <guid>test2@tests.mozilla.org</guid>
+ <version>1.2</version>
+ <authors>
+ <!-- Test that the first author becomes the creator,
+ and the second one is a developer -->
+ <author>
+ <name>Test Creator 2</name>
+ <link>http://localhost:%PORT%/creator2.html</link>
+ </author>
+ <author>
+ <name>Test Developer 2</name>
+ <link>http://localhost:%PORT%/developer2.html</link>
+ </author>
+ </authors>
+ <summary>&lt;h1&gt;Test Summary 2&lt;/h1&gt;&lt;p&gt;paragraph&lt;/p&gt;</summary>
+ <description>Test Description 2&lt;br&gt;newline</description>
+ <developer_comments>Test Developer
+ Comments 2</developer_comments>
+ <eula>Test EULA 2</eula>
+ <icon size="64">http://localhost:%PORT%/icon2-64.png</icon>
+ <icon size="48">http://localhost:%PORT%/icon2-48.png</icon>
+ <icon size="32">http://localhost:%PORT%/icon2-32.png</icon>
+ <status id="4">Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <!-- Test that multiple preview images are correctly parsed -->
+ <previews>
+ <preview primary="0">
+ <full type="image/png">http://localhost:%PORT%/full1-2.png</full>
+ <thumbnail type="image/png">http://localhost:%PORT%/thumbnail1-2.png</thumbnail>
+ </preview>
+ <preview primary="0">
+ <full type="image/png">http://localhost:%PORT%/full2-2.png</full>
+ <thumbnail type="image/png">http://localhost:%PORT%/thumbnail2-2.png</thumbnail>
+ <caption>Caption 2</caption>
+ </preview>
+ </previews>
+ <rating>NaN</rating>
+ <!-- Test that learnmore is used as the add-on's homepageURL
+ if there is no homepage defined -->
+ <learnmore>http://localhost:%PORT%/learnmore2.html</learnmore>
+ <homepage/>
+ <support>http://localhost:%PORT%/support2.html</support>
+ <contribution_data>
+ <link>http://localhost:%PORT%/contribution2.html</link>
+ <meet_developers>http://localhost:%PORT%/meetDevelopers2.html</meet_developers>
+ </contribution_data>
+ <reviews num="NaN">http://localhost:%PORT%/review2.html</reviews>
+ <total_downloads>NaN</total_downloads>
+ <weekly_downloads>NaN</weekly_downloads>
+ <daily_users>NaN</daily_users>
+ <last_updated epoch="NaN">Not an acual date</last_updated>
+ <install size="NaN" os="ALL">http://localhost:%PORT%/test2.xpi</install>
+ </addon>
+
+ <!-- Passes requirements. Tests optional attributes with extra whitespace. -->
+ <addon>
+ <name> PASS </name>
+ <!-- Test that themes pass -->
+ <type id=" 2 ">Theme</type>
+ <guid> test3@tests.mozilla.org </guid>
+ <version> 1.3 </version>
+ <authors>
+ <!-- Test that authors with blank names are ignored -->
+ <author>
+ <name> </name>
+ <link> http://localhost:%PORT%/ignore3.html </link>
+ </author>
+ <!-- Test that authors with blank links are ignored -->
+ <author>
+ <name> Test Creator Ignore </name>
+ <link> </link>
+ </author>
+ <author>
+ <name> Test Creator 3 </name>
+ <link> http://localhost:%PORT%/creator3.html </link>
+ </author>
+ <author>
+ <name> First Test Developer 3 </name>
+ <link> http://localhost:%PORT%/developer1-3.html </link>
+ </author>
+ <author>
+ <name> </name>
+ <link> </link>
+ </author>
+ <author>
+ <name> Second Test Developer 3 </name>
+ <link> http://localhost:%PORT%/developer2-3.html </link>
+ </author>
+ </authors>
+ <summary> Test Summary 3 </summary>
+ <description> Test Description 3&lt;br&gt;&lt;ul&gt;&lt;li&gt;List item 1&lt;li&gt;List item 2&lt;/ul&gt; </description>
+ <developer_comments> Test Developer Comments 3 </developer_comments>
+ <eula> Test EULA 3 </eula>
+ <icon size="32"> http://localhost:%PORT%/icon3.png </icon>
+ <status id=" 8 ">Preliminarily Reviewed</status>
+ <!-- Test that an incompatible + compatible application list passes -->
+ <compatible_applications>
+ <application>
+ <appID> unknown@tests.mozilla.org </appID>
+ <min_version> 1 </min_version>
+ <max_version> 1 </max_version>
+ </application>
+ <application>
+ <appID> xpcshell@tests.mozilla.org </appID>
+ <min_version> 1 </min_version>
+ <max_version> 1 </max_version>
+ </application>
+ </compatible_applications>
+ <!-- Test that primary images appear first in the add-on's screenshots array -->
+ <previews>
+ <preview primary=" 0 ">
+ <full type=" image/png "> http://localhost:%PORT%/full2-3.png </full>
+ <caption> Caption 2 - 3 </caption>
+ </preview>
+ <!-- Test that a preview without a <full> element is ignored -->
+ <preview primary=" 0 ">
+ <caption> Caption ignore - 3 </caption>
+ </preview>
+ <!-- Test that a preview with an empty <full> element is ignored -->
+ <preview primary=" 0 ">
+ <full type=" image/png "> </full>
+ <caption> Caption ignore - 3 </caption>
+ <preview primary=" 1 ">
+ <full type=" image/png "> http://localhost:%PORT%/full1-3.png </full>
+ <thumbnail type=" image/png "> http://localhost:%PORT%/thumbnail1-3.png </thumbnail>
+ <caption> Caption 1 - 3 </caption>
+ </preview>
+ <preview primary=" 0 ">
+ <full type=" image/png "> http://localhost:%PORT%/full3-3.png </full>
+ <thumbnail type=" image/png "> http://localhost:%PORT%/thumbnail3-3.png </thumbnail>
+ <caption> Caption 3 - 3 </caption>
+ </preview>
+ </preview>
+ </previews>
+ <!-- Test that a rating between 1 and 5 is correctly parsed -->
+ <rating> 2 </rating>
+ <!-- Test that hompage is used as the add-on's homepageURL
+ even if learnmore is defined -->
+ <learnmore> http://localhost:%PORT%/learnmore3.html </learnmore>
+ <homepage> http://localhost:%PORT%/homepage3.html </homepage>
+ <support> http://localhost:%PORT%/support3.html </support>
+ <contribution_data>
+ <link> http://localhost:%PORT%/contribution3.html </link>
+ <suggested_amount currency="USD"> $11.11 </suggested_amount>
+ <meet_developers> http://localhost:%PORT%/meetDevelopers3.html </meet_developers>
+ </contribution_data>
+ <reviews num=" 1111 "> http://localhost:%PORT%/review3.html </reviews>
+ <total_downloads> 2222 </total_downloads>
+ <weekly_downloads> 3333 </weekly_downloads>
+ <daily_users> 4444 </daily_users>
+ <last_updated epoch=" 1265033045 "> 2010-02-01T14:04:05Z </last_updated>
+ <!-- Test that an incompatible install is ignored -->
+ <install size=" 9999 " os=" UNKNOWN "> http://localhost:%PORT%/fail3.xpi </install>
+ <!-- Test that OS matching is case-insensitive -->
+ <install size=" 5555 " os=" xpCShell " hash=" sha1:c26f0b0d62e5dcddcda95074d3f3fedb9bbc26e3 "> http://localhost:%PORT%/test3.xpi </install>
+ </addon>
+
+ <!-- Fails because name is undefined -->
+ <addon>
+ <type id="1">Extension</type>
+ <guid>test4@tests.mozilla.org</guid>
+ <version>1.4</version>
+ <authors><author><name>Test Creator 4</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with undefined name should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test4.xpi</install>
+ </addon>
+
+ <!-- Fails because name is empty-->
+ <addon>
+ <name> </name>
+ <type id="1">Extension</type>
+ <guid>test5@tests.mozilla.org</guid>
+ <version>1.5</version>
+ <authors><author><name>Test Creator 5</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with empty name should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test5.xpi</install>
+ </addon>
+
+ <!-- Fails because type is undefined -->
+ <addon>
+ <name>FAIL</name>
+ <guid>test6@tests.mozilla.org</guid>
+ <version>1.6</version>
+ <authors><author><name>Test Creator 6</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with undefined type should be ignored</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test6.xpi</install>
+ </addon>
+
+ <!-- Fails because type is empty -->
+ <addon>
+ <name>FAIL</name>
+ <type id="">Empty id attribute</type>
+ <guid>test7@tests.mozilla.org</guid>
+ <version>1.7</version>
+ <authors><author><name>Test Creator 7</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with empty type should be ignored</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test7.xpi</install>
+ </addon>
+
+ <!-- Fails because type is unknown -->
+ <addon>
+ <name>FAIL</name>
+ <type id="9999">Unknown</type>
+ <guid>test8@tests.mozilla.org</guid>
+ <version>1.8</version>
+ <authors><author><name>Test Creator 8</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with unknown type should be ignored</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test8.xpi</install>
+ </addon>
+
+ <!-- Fails because guid is undefined -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <version>1.9</version>
+ <authors><author><name>Test Creator 9</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with undefined guid should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test9.xpi</install>
+ </addon>
+
+ <!-- Fails because guid is empty -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid> </guid>
+ <version>1.10</version>
+ <authors><author><name>Test Creator 10</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with empty guid should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test10.xpi</install>
+ </addon>
+
+ <!-- Fails because guid matches previously successful result -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test1@tests.mozilla.org</guid>
+ <version>1.11</version>
+ <authors><author><name>Test Creator 11</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with a guid that matches a previously successful result should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test11.xpi</install>
+ </addon>
+
+ <!-- Fails because guid matches already installed add-on -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test_AddonRepository_1@tests.mozilla.org</guid>
+ <version>1.12</version>
+ <authors><author><name>Test Creator 12</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with a guid that matches an installed Addon should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test12.xpi</install>
+ </addon>
+
+ <!-- Fails because version is undefined -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test13@tests.mozilla.org</guid>
+ <authors><author><name>Test Creator 13</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with undefined version should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test13.xpi</install>
+ </addon>
+
+ <!-- Fails because version is empty -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test14@tests.mozilla.org</guid>
+ <version> </version>
+ <authors><author><name>Test Creator 14</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with empty version should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test14.xpi</install>
+ </addon>
+
+ <!-- Fails because authors undefined -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test15@tests.mozilla.org</guid>
+ <version>1.15</version>
+ <status id="4">Public</status>
+ <summary>Add-on with undefined authors should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test15.xpi</install>
+ </addon>
+
+ <!-- Fails because it has no defined author elements -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test16@tests.mozilla.org</guid>
+ <version>1.16</version>
+ <authors></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with no defined author elements should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test16.xpi</install>
+ </addon>
+
+ <!-- Fails because no non-empty author elements -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test17@tests.mozilla.org</guid>
+ <version>1.17</version>
+ <authors>
+ <author><name></name></author>
+ <author><name></name> </author>
+ </authors>
+ <status id="4">Public</status>
+ <summary>Add-on with no non-empty author elements should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test17.xpi</install>
+ </addon>
+
+ <!-- Fails because status is undefined -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test18@tests.mozilla.org</guid>
+ <version>1.18</version>
+ <authors><author><name>Test Creator 18</name></author></authors>
+ <summary>Add-on with undefined status should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test18.xpi</install>
+ </addon>
+
+ <!-- Fails because status is not Public -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test19@tests.mozilla.org</guid>
+ <version>1.19</version>
+ <authors><author><name>Test Creator 19</name></author></authors>
+ <status id="9999">Unknown</status>
+ <summary>Add-on with non-Public status should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test19.xpi</install>
+ </addon>
+
+ <!-- Fails because compatible_applications is undefined -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test20@tests.mozilla.org</guid>
+ <version>1.20</version>
+ <authors><author><name>Test Creator 20</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with undefined compatible_applications should be ignored.</summary>
+ <install>http://localhost:%PORT%/test20.xpi</install>
+ </addon>
+
+ <!-- Fails because no compatible applications matched -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test21@tests.mozilla.org</guid>
+ <version>1.21</version>
+ <authors><author><name>Test Creator 21</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with no compatible applications should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>unknown@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test21.xpi</install>
+ </addon>
+
+ <!-- Fails because compatible application's min version is undefined -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test22@tests.mozilla.org</guid>
+ <version>1.22</version>
+ <authors><author><name>Test Creator 22</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with too high of a compatible application min version should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <max_version>2.0</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test22.xpi</install>
+ </addon>
+
+ <!-- Fails because compatible application's min version too high -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test23@tests.mozilla.org</guid>
+ <version>1.23</version>
+ <authors><author><name>Test Creator 23</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with too high of a compatible application min version should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1.1</min_version>
+ <max_version>2.0</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test23.xpi</install>
+ </addon>
+
+ <!-- Fails because compatible application's max version is undefined -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test24@tests.mozilla.org</guid>
+ <version>1.24</version>
+ <authors><author><name>Test Creator 24</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with too low of a compatible application max version should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>0.9</min_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test24.xpi</install>
+ </addon>
+
+ <!-- Fails because compatible application's max version is too low -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test25@tests.mozilla.org</guid>
+ <version>1.25</version>
+ <authors><author><name>Test Creator 25</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with too low of a compatible application max version should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>0.9</min_version>
+ <max_version>0.9.9</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test25.xpi</install>
+ </addon>
+
+ <!-- Fails because XPI URL is undefined -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test26@tests.mozilla.org</guid>
+ <version>1.26</version>
+ <authors><author><name>Test Creator 26</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with undefined XPI URL should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ </addon>
+
+ <!-- Fails because XPI URL is empty -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test27@tests.mozilla.org</guid>
+ <version>1.27</version>
+ <authors><author><name>Test Creator 27</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with an empty XPI URL should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install> </install>
+ </addon>
+
+ <!-- Fails because install not compatible with OS -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test28@tests.mozilla.org</guid>
+ <version>1.28</version>
+ <authors><author><name>Test Creator 28</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with no installs with compatible OS should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install os="UNKNOWN1">http://localhost:%PORT%/test28.xpi</install>
+ <install os="UNKNOWN2">http://localhost:%PORT%/test28.xpi</install>
+ </addon>
+
+ <!-- Fails because XPI URL matches an installing AddonInstall -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test29@tests.mozilla.org</guid>
+ <version>1.29</version>
+ <authors><author><name>Test Creator 29</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with an XPI URL that matches an installing AddonInstall should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/addons/test_AddonRepository_2.xpi</install>
+ </addon>
+
+ <!-- Passes because the add-on has the right payment info -->
+ <addon>
+ <name>PASS</name>
+ <type id="1">Extension</type>
+ <guid>purchase1@tests.mozilla.org</guid>
+ <version>2.0</version>
+ <authors>
+ <author>
+ <name>Test Creator - Last Passing</name>
+ <link>http://localhost:%PORT%/creatorLastPassing.html</link>
+ </author>
+ </authors>
+ <status id="4">Public</status>
+ <all_compatible_os>
+ <os>ALL</os>
+ </all_compatible_os>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <rating>5</rating>
+ <payment_data>
+ <link>http://localhost:%PORT%/purchaseURL1</link>
+ <amount amount="5">$5</amount>
+ </payment_data>
+ </addon>
+
+ <!-- Passes because the add-on has the right payment info -->
+ <addon>
+ <name>PASS</name>
+ <type id="1">Extension</type>
+ <guid>purchase2@tests.mozilla.org</guid>
+ <version>2.0</version>
+ <authors>
+ <author>
+ <name>Test Creator - Last Passing</name>
+ <link>http://localhost:%PORT%/creatorLastPassing.html</link>
+ </author>
+ </authors>
+ <status id="4">Public</status>
+ <all_compatible_os>
+ <os>XPCShell</os>
+ </all_compatible_os>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <rating>5</rating>
+ <payment_data>
+ <link>http://localhost:%PORT%/purchaseURL2</link>
+ <amount amount="10.0">$10</amount>
+ </payment_data>
+ </addon>
+
+ <!-- Fails because the add-on doesn't match the platform -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>purchase3@tests.mozilla.org</guid>
+ <version>2.0</version>
+ <authors>
+ <author>
+ <name>Test Creator - Last Passing</name>
+ <link>http://localhost:%PORT%/creatorLastPassing.html</link>
+ </author>
+ </authors>
+ <status id="4">Public</status>
+ <all_compatible_os>
+ <os>FOO</os>
+ </all_compatible_os>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <rating>5</rating>
+ <payment_data>
+ <link>http://localhost:%PORT%/purchaseURL3</link>
+ <amount amount="10">$10</amount>
+ </payment_data>
+ </addon>
+
+ <!-- Passes because the Addon that has a matching XPI URL
+ has a state = STATE_AVAILABLE (non-active install). This is the
+ last passing add-on. -->
+ <addon>
+ <name>PASS</name>
+ <type id="1">Extension</type>
+ <guid>test-lastPassing@tests.mozilla.org</guid>
+ <version>2.0</version>
+ <authors>
+ <author>
+ <name>Test Creator - Last Passing</name>
+ <link>http://localhost:%PORT%/creatorLastPassing.html</link>
+ </author>
+ </authors>
+ <status id="4">Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <!-- Test that a rating > 5 becomes a rating = 5 -->
+ <rating>10</rating>
+ <install>http://localhost:%PORT%/addons/test_AddonRepository_3.xpi</install>
+ </addon>
+
+ <!-- Fails because of MAX_RESULTS limit. The previous <addon> should
+ be the last passing add-on in order to correctly test the limit. -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test-surpassesLimit@tests.mozilla.org</guid>
+ <version>9.9</version>
+ <authors><author><name>Test Creator - Surpasses Limit</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on should not be added because doing so would surpass MAX_RESULTS limit</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test-surpassesLimit.xpi</install>
+ </addon>
+</searchresults>
+
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_cache.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_cache.xml
new file mode 100644
index 000000000..f707f1217
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_cache.xml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="1111">
+ <addon>
+ <name>Repo Add-on 1</name>
+ <type id="1">Extension</type>
+ <guid>test_AddonRepository_1@tests.mozilla.org</guid>
+ <version>2.1</version>
+ <authors>
+ <author>
+ <name>Repo Add-on 1 - Creator</name>
+ <link>http://localhost:4444/repo/1/creator.html</link>
+ </author>
+ <author>
+ <name>Repo Add-on 1 - First Developer</name>
+ <link>http://localhost:4444/repo/1/firstDeveloper.html</link>
+ </author>
+ <author>
+ <name>Repo Add-on 1 - Second Developer</name>
+ <link>http://localhost:4444/repo/1/secondDeveloper.html</link>
+ </author>
+ </authors>
+ <summary>Repo Add-on 1 - Description&lt;br&gt;Second line</summary>
+ <description>&lt;p&gt;Repo Add-on 1 - Full Description &amp;amp; some extra&lt;/p&gt;</description>
+ <eula>Repo Add-on 1 - EULA</eula>
+ <developer_comments>Repo Add-on 1
+ Developer Comments</developer_comments>
+ <icon size="32">http://localhost/repo/1/icon.png</icon>
+ <status id="4">Public</status>
+ <rating>1</rating>
+ <learnmore>http://localhost/repo/1/learnmore.html</learnmore>
+ <homepage>http://localhost/repo/1/homepage.html</homepage>
+ <support>http://localhost/repo/1/support.html</support>
+ <contribution_data>
+ <link>http://localhost/repo/1/contribution.html</link>
+ <suggested_amount currency="USD">$11.11</suggested_amount>
+ <meet_developers>http://localhost/repo/1/meetDevelopers.html</meet_developers>
+ </contribution_data>
+ <reviews num="1111">http://localhost/repo/1/review.html</reviews>
+ <total_downloads>2221</total_downloads>
+ <weekly_downloads>3331</weekly_downloads>
+ <daily_users>4441</daily_users>
+ <last_updated epoch="9">1970-01-01T00:00:09Z</last_updated>
+ <install size="9">http://localhost:4444/repo/1/install.xpi</install>
+ </addon>
+
+ <addon>
+ <name>Repo Add-on 2</name>
+ <type id="2">Theme</type>
+ <guid>test_AddonRepository_2@tests.mozilla.org</guid>
+ <version>2.2</version>
+ <authors>
+ <author>
+ <name>Repo Add-on 2 - Creator</name>
+ <link>http://localhost:4444/repo/2/creator.html</link>
+ </author>
+ <author>
+ <name>Repo Add-on 2 - First Developer</name>
+ <link>http://localhost:4444/repo/2/firstDeveloper.html</link>
+ </author>
+ <author>
+ <name>Repo Add-on 2 - Second Developer</name>
+ <link>http://localhost:4444/repo/2/secondDeveloper.html</link>
+ </author>
+ </authors>
+ <summary>Repo Add-on 2 - Description</summary>
+ <description>Repo Add-on 2 - Full Description</description>
+ <eula>Repo Add-on 2 - EULA</eula>
+ <developer_comments>Repo Add-on 2 - Developer Comments</developer_comments>
+ <icon size="32">http://localhost/repo/2/icon.png</icon>
+ <status id="9">Unknown</status>
+ <previews>
+ <preview primary="1">
+ <full type="image/png">http://localhost:4444/repo/2/firstFull.png</full>
+ <thumbnail type="image/png">http://localhost:4444/repo/2/firstThumbnail.png</thumbnail>
+ <caption>Repo Add-on 2 - First Caption</caption>
+ </preview>
+ <preview primary="0">
+ <full type="image/png">http://localhost:4444/repo/2/secondFull.png</full>
+ <thumbnail type="image/png">http://localhost:4444/repo/2/secondThumbnail.png</thumbnail>
+ <caption>Repo Add-on 2 - Second Caption</caption>
+ </preview>
+ </previews>
+ <rating>2</rating>
+ <learnmore>http://localhost/repo/2/learnmore.html</learnmore>
+ <homepage>http://localhost/repo/2/homepage.html</homepage>
+ <support>http://localhost/repo/2/support.html</support>
+ <contribution_data>
+ <link>http://localhost/repo/2/contribution.html</link>
+ <meet_developers>http://localhost/repo/2/meetDevelopers.html</meet_developers>
+ </contribution_data>
+ <reviews num="1112">http://localhost/repo/2/review.html</reviews>
+ <total_downloads>2222</total_downloads>
+ <weekly_downloads>3332</weekly_downloads>
+ <daily_users>4442</daily_users>
+ <last_updated epoch="9">1970-01-01T00:00:09Z</last_updated>
+ <install size="9">http://localhost:4444/repo/2/install.xpi</install>
+ </addon>
+
+ <addon>
+ <name>Repo Add-on 3</name>
+ <type id="2">Theme</type>
+ <guid>test_AddonRepository_3@tests.mozilla.org</guid>
+ <version>2.3</version>
+ <icon size="32">http://localhost/repo/3/icon.png</icon>
+ <previews>
+ <preview primary="1">
+ <full type="image/png">http://localhost:4444/repo/3/firstFull.png</full>
+ <thumbnail type="image/png">http://localhost:4444/repo/3/firstThumbnail.png</thumbnail>
+ <caption>Repo Add-on 3 - First Caption</caption>
+ </preview>
+ <preview primary="0">
+ <full type="image/png">http://localhost:4444/repo/3/secondFull.png</full>
+ <thumbnail type="image/png">http://localhost:4444/repo/3/secondThumbnail.png</thumbnail>
+ <caption>Repo Add-on 3 - Second Caption</caption>
+ </preview>
+ </previews>
+ </addon>
+
+ <addon_compatibility hosted="true" id="123">
+ <guid>test_AddonRepository_1@tests.mozilla.org</guid>
+ <name>PASS</name>
+ <version_ranges>
+ <!-- Will be included -->
+ <version_range type="incompatible">
+ <min_version>0.1</min_version>
+ <max_version>0.2</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <application_id>666</application_id>
+ <min_version>3.0</min_version>
+ <max_version>4.0</max_version>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ </application>
+ </compatible_applications>
+ </version_range>
+ <!-- Will be included -->
+ <version_range type="incompatible">
+ <min_version>0.2</min_version>
+ <max_version>0.3</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <application_id>666</application_id>
+ <min_version>5.0</min_version>
+ <max_version>6.0</max_version>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ </application>
+ </compatible_applications>
+ </version_range>
+ <!-- Won't be included - invalid type attribute -->
+ <version_range type="unknown">
+ <min_version>9</min_version>
+ <max_version>10</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <application_id>666</application_id>
+ <min_version>10.0</min_version>
+ <max_version>11.0</max_version>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ </application>
+ </compatible_applications>
+ </version_range>
+ <!-- Won't be included - no matching appID -->
+ <version_range type="incompatible">
+ <min_version>0.2</min_version>
+ <max_version>0.3</max_version>
+ <compatible_applications>
+ <application>
+ <name>Unknown App</name>
+ <application_id>123</application_id>
+ <min_version>1.0</min_version>
+ <max_version>999.0</max_version>
+ <appID>unknown-app@tests.mozilla.org</appID>
+ </application>
+ </compatible_applications>
+ </version_range>
+ </version_ranges>
+ </addon_compatibility>
+</searchresults>
+
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_ignore.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_ignore.xml
new file mode 100644
index 000000000..003095727
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_ignore.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="123">
+ <addon>
+ <name>Test Repo Add-on - ignore</name>
+ <type id="1">Extension</type>
+ <guid>compatmode-ignore@tests.mozilla.org</guid>
+ <version>1.1</version>
+ <authors>
+ <author>
+ <name>Test Creator 1</name>
+ <link>http://localhost:%PORT%/creator1.html</link>
+ </author>
+ </authors>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test1.xpi</install>
+ </addon>
+</searchresults>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_normal.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_normal.xml
new file mode 100644
index 000000000..fec8b09ca
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_normal.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="123">
+ <addon>
+ <name>Test Repo Add-on - normal</name>
+ <type id="1">Extension</type>
+ <guid>compatmode-normal@tests.mozilla.org</guid>
+ <version>1.1</version>
+ <authors>
+ <author>
+ <name>Test Creator 1</name>
+ <link>http://localhost:%PORT%/creator1.html</link>
+ </author>
+ </authors>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test1.xpi</install>
+ </addon>
+</searchresults>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_strict.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_strict.xml
new file mode 100644
index 000000000..f99256b87
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_strict.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="123">
+ <addon>
+ <name>Test Repo Add-on - strict</name>
+ <type id="1">Extension</type>
+ <guid>compatmode-strict@tests.mozilla.org</guid>
+ <version>1.1</version>
+ <authors>
+ <author>
+ <name>Test Creator 1</name>
+ <link>http://localhost:%PORT%/creator1.html</link>
+ </author>
+ </authors>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test1.xpi</install>
+ </addon>
+</searchresults>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_empty.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_empty.xml
new file mode 100644
index 000000000..4cd5c1443
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_empty.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="9999" />
+
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_failed.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_failed.xml
new file mode 100644
index 000000000..d02fa0249
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_failed.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="9999">
+<!-- Cause XML parse error so that the search fails -->
+<!-- <addon> -->
+ <name>PASS</name>
+ <type id="1">Extension</type>
+ <guid>test1@tests.mozilla.org</guid>
+ <version>1.1</version>
+ <authors><author><name>Test Creator 1</name></author></authors>
+ <status id="4">Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test1.xpi</install>
+ </addon>
+</searchresults>
+
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_getAddonsByIDs.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_getAddonsByIDs.xml
new file mode 100644
index 000000000..8a6167969
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_getAddonsByIDs.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="1111">
+ <!-- Passes even though XPI URL matches an installing AddonInstall.
+ Tests optional attributes. -->
+ <addon>
+ <name>PASS</name>
+ <type id="1">Extension</type>
+ <guid>test1@tests.mozilla.org</guid>
+ <version>1.1</version>
+ <authors>
+ <author>
+ <name>Test Creator 1</name>
+ <link>http://localhost:%PORT%/creator1.html</link>
+ </author>
+ <author>
+ <name>Test Developer 1</name>
+ <link>http://localhost:%PORT%/developer1.html</link>
+ </author>
+ </authors>
+ <summary>Test Summary 1</summary>
+ <description>Test Description 1</description>
+ <eula>Test EULA 1</eula>
+ <developer_comments>Test Developer Comments 1</developer_comments>
+ <icon size="32">http://localhost:%PORT%/icon1.png</icon>
+ <status id="8">Preliminarily Reviewed</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <previews>
+ <preview primary="1">
+ <full type="image/png" width="400" height="300">
+ http://localhost:%PORT%/full1-1.png
+ </full>
+ <thumbnail type="image/png" width="200" height="150">
+ http://localhost:%PORT%/thumbnail1-1.png
+ </thumbnail>
+ <caption>Caption 1 - 1</caption>
+ </preview>
+ <preview primary="0">
+ <full type="image/png">http://localhost:%PORT%/full2-1.png</full>
+ <thumbnail type="image/png">http://localhost:%PORT%/thumbnail2-1.png</thumbnail>
+ <caption>Caption 2 - 1</caption>
+ </preview>
+ </previews>
+ <rating>4</rating>
+ <learnmore>http://localhost:%PORT%/learnmore1.html</learnmore>
+ <support>http://localhost:%PORT%/support1.html</support>
+ <contribution_data>
+ <link>http://localhost:%PORT%/contribution1.html</link>
+ <suggested_amount currency="USD">$11.11</suggested_amount>
+ <meet_developers>http://localhost:%PORT%/meetDevelopers1.html</meet_developers>
+ </contribution_data>
+ <reviews num="1111">http://localhost:%PORT%/review1.html</reviews>
+ <total_downloads>2222</total_downloads>
+ <weekly_downloads>3333</weekly_downloads>
+ <daily_users>4444</daily_users>
+ <last_updated epoch="1265033045">2010-02-01T14:04:05Z</last_updated>
+ <install size="5555">http://localhost:%PORT%/addons/test_AddonRepository_2.xpi</install>
+ </addon>
+
+ <addon_compatibility hosted="true" id="123">
+ <guid>test1@tests.mozilla.org</guid>
+ <name>PASS</name>
+ <version_ranges>
+ <!-- Will be included -->
+ <version_range type="incompatible">
+ <min_version>0.1</min_version>
+ <max_version>0.2</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <application_id>666</application_id>
+ <min_version>3.0</min_version>
+ <max_version>4.0</max_version>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ </application>
+ </compatible_applications>
+ </version_range>
+ <!-- Will be included -->
+ <version_range type="incompatible">
+ <min_version>0.2</min_version>
+ <max_version>0.3</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <application_id>666</application_id>
+ <min_version>5.0</min_version>
+ <max_version>6.0</max_version>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ </application>
+ </compatible_applications>
+ </version_range>
+ <!-- Won't be included - invalid type attribute -->
+ <version_range type="unknown">
+ <min_version>9</min_version>
+ <max_version>10</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <application_id>666</application_id>
+ <min_version>10.0</min_version>
+ <max_version>11.0</max_version>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ </application>
+ </compatible_applications>
+ </version_range>
+ <!-- Won't be included - no matching appID -->
+ <version_range type="incompatible">
+ <min_version>0.2</min_version>
+ <max_version>0.3</max_version>
+ <compatible_applications>
+ <application>
+ <name>Unknown App</name>
+ <application_id>123</application_id>
+ <min_version>1.0</min_version>
+ <max_version>999.0</max_version>
+ <appID>unknown-app@tests.mozilla.org</appID>
+ </application>
+ </compatible_applications>
+ </version_range>
+ </version_ranges>
+ </addon_compatibility>
+
+ <!-- Fails because guid matches previously successful result -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>test1@tests.mozilla.org</guid>
+ <version>1.2</version>
+ <authors><author><name>Test Creator 2</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with a guid that matches a previously successful result should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test2.xpi</install>
+ </addon>
+
+ <!-- Fails because guid was not requested -->
+ <addon>
+ <name>FAIL</name>
+ <type id="1">Extension</type>
+ <guid>notRequested@tests.mozilla.org</guid>
+ <version>1.3</version>
+ <authors><author><name>Test Creator 3</name></author></authors>
+ <status id="4">Public</status>
+ <summary>Add-on with a guid that wasn't requested should be ignored.</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test3.xpi</install>
+ </addon>
+
+ <!-- Passes even though guid matches already installed add-on,
+ type is unknown, no defined author elements, status is not Public,
+ no compatible applications matched, no installs compatible with OS
+ -->
+ <addon>
+ <name>PASS</name>
+ <type id="2">Theme</type>
+ <guid>test_AddonRepository_1@tests.mozilla.org</guid>
+ <version>1.4</version>
+ <status id="9999">Unknown</status>
+ <compatible_applications>
+ <application>
+ <appID>unknown@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install os="UNKNOWN1">http://localhost:%PORT%/test4.xpi</install>
+ <install os="UNKNOWN2">http://localhost:%PORT%/test4.xpi</install>
+ </addon>
+</searchresults>
+
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_backgroundupdate.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_backgroundupdate.rdf
new file mode 100644
index 000000000..ab7cdef34
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_backgroundupdate.rdf
@@ -0,0 +1,70 @@
+<?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:addon1@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <!-- app id compatible update available -->
+ <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:%PORT%/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:addon2@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <!-- app id compatible update available -->
+ <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:%PORT%/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:addon3@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <!-- app id compatible update available -->
+ <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:%PORT%/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+</RDF:RDF>
+
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_metadata_filters_1.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_metadata_filters_1.xml
new file mode 100644
index 000000000..368a6ed53
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_metadata_filters_1.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem name="/^Mozilla Corp\.$/">
+ <versionRange severity="1">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="1" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="/block2/" name="/^Moz/" creator="Dangerous"
+ homepageURL="/\.dangerous\.com/" updateURL="/\.dangerous\.com/">
+ <versionRange severity="3">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="1" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ </emItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_prefs_1.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_prefs_1.xml
new file mode 100644
index 000000000..41df457b0
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_prefs_1.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem id="block1@tests.mozilla.org">
+ <prefs>
+ <pref>test.blocklist.pref1</pref>
+ <pref>test.blocklist.pref2</pref>
+ </prefs>
+ <versionRange severity="1">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="1" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="block2@tests.mozilla.org">
+ <prefs>
+ <pref>test.blocklist.pref3</pref>
+ <pref>test.blocklist.pref4</pref>
+ </prefs>
+ <versionRange severity="3">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="1" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ </emItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_regexp_1.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_regexp_1.xml
new file mode 100644
index 000000000..20035c6a2
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_regexp_1.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem id="/block1/">
+ <versionRange severity="1">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="1" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="/block1/">
+ <versionRange severity="2">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="1" maxVersion="2.*"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ </emItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug299716.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug299716.rdf
new file mode 100644
index 000000000..d60d8ca3f
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug299716.rdf
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE RDF:RDF [
+ <!ENTITY bug299716 "urn:mozilla:extension:bug299716">
+ <!ENTITY addons_prefix "http://localhost:4444/addons/test_bug299716">
+ <!ENTITY v0.2 "<em:version>0.2</em:version>">
+
+ <!ENTITY xpcshell.app "
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>5</em:minVersion>
+ <em:maxVersion>5</em:maxVersion>
+ ">
+
+ <!ENTITY toolkit.app "
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>1.9</em:minVersion>
+ <em:maxVersion>1.9</em:maxVersion>
+ ">
+
+ <!ENTITY invalidRange "
+ <em:minVersion>30</em:minVersion>
+ <em:maxVersion>30</em:maxVersion>
+ ">
+
+ <!ENTITY xpcshell.invalid "
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ &invalidRange;
+ ">
+
+ <!ENTITY toolkit.invalid "
+ <em:id>toolkit@mozilla.org</em:id>
+ &invalidRange;
+ ">
+]>
+<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+ <!-- XPCShell -->
+ <RDF:Description about="&bug299716;-a@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li RDF:resource="&bug299716;-a@tests.mozilla.org:0.2"/>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="&bug299716;-a@tests.mozilla.org:0.2">
+ &v0.2;
+ <em:targetApplication>
+ <RDF:Description em:updateLink="&addons_prefix;_a_2.xpi">
+ &xpcshell.app;
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+
+ <!-- Toolkit -->
+ <RDF:Description about="&bug299716;-b@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li RDF:resource="&bug299716;-b@tests.mozilla.org:0.2"/>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="&bug299716;-b@tests.mozilla.org:0.2">
+ &v0.2;
+ <em:targetApplication>
+ <RDF:Description em:updateLink="&addons_prefix;_b_2.xpi">
+ &toolkit.app;
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+
+ <!-- XPCShell + Toolkit -->
+ <RDF:Description about="&bug299716;-c@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li RDF:resource="&bug299716;-c@tests.mozilla.org:0.2"/>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="&bug299716;-c@tests.mozilla.org:0.2">
+ &v0.2;
+ <em:targetApplication>
+ <RDF:Description em:updateLink="&addons_prefix;_c_2.xpi">
+ &xpcshell.app;
+ </RDF:Description>
+ </em:targetApplication>
+ <em:targetApplication>
+ <RDF:Description em:updateLink="&addons_prefix;_c_2.xpi">
+ &toolkit.app;
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+
+ <!-- XPCShell (Toolkit invalid) -->
+ <RDF:Description about="&bug299716;-d@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li RDF:resource="&bug299716;-d@tests.mozilla.org:0.2"/>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="&bug299716;-d@tests.mozilla.org:0.2">
+ &v0.2;
+ <em:targetApplication>
+ <RDF:Description em:updateLink="&addons_prefix;_d_2.xpi">
+ &xpcshell.app;
+ </RDF:Description>
+ </em:targetApplication>
+ <em:targetApplication>
+ <RDF:Description em:updateLink="&addons_prefix;_d_2.xpi">
+ &toolkit.invalid;
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+
+ <!-- Toolkit (XPCShell invalid), should not install -->
+ <RDF:Description about="&bug299716;-e@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li RDF:resource="&bug299716;-e@tests.mozilla.org:0.2"/>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="&bug299716;-e@tests.mozilla.org:0.2">
+ &v0.2;
+ <em:targetApplication>
+ <RDF:Description em:updateLink="&addons_prefix;_e_2.xpi">
+ &xpcshell.invalid;
+ </RDF:Description>
+ </em:targetApplication>
+ <em:targetApplication>
+ <RDF:Description em:updateLink="&addons_prefix;_e_2.xpi">
+ &toolkit.app;
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+
+ <!-- None (XPCShell, Toolkit invalid), should not install -->
+ <RDF:Description about="&bug299716;-f@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li RDF:resource="&bug299716;-f@tests.mozilla.org:0.2"/>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="&bug299716;-f@tests.mozilla.org:0.2">
+ &v0.2;
+ <em:targetApplication>
+ <RDF:Description em:updateLink="&addons_prefix;_f_2.xpi">
+ &xpcshell.invalid;
+ </RDF:Description>
+ </em:targetApplication>
+ <em:targetApplication>
+ <RDF:Description em:updateLink="&addons_prefix;_f_2.xpi">
+ &toolkit.invalid;
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+
+ <!-- Toolkit (invalid), should not install -->
+ <RDF:Description about="&bug299716;-g@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li RDF:resource="&bug299716;-g@tests.mozilla.org:0.2"/>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+ <RDF:Description about="&bug299716;-g@tests.mozilla.org:0.2">
+ &v0.2;
+ <em:targetApplication>
+ <RDF:Description em:updateLink="&addons_prefix;_g_2.xpi">
+ &toolkit.invalid;
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+</RDF:RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug299716_2.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug299716_2.rdf
new file mode 100644
index 000000000..94a4ea450
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug299716_2.rdf
@@ -0,0 +1,23 @@
+<?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:bug299716-2@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.1</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>1.9</em:minVersion>
+ <em:maxVersion>2.0.*</em:maxVersion>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+</RDF:RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug324121.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug324121.rdf
new file mode 100644
index 000000000..2c453f756
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug324121.rdf
@@ -0,0 +1,91 @@
+<?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:bug324121_2@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <!-- app id compatible update available -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>2</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>3</em:minVersion>
+ <em:maxVersion>3</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:bug324121_3@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <!-- app id incompatible update available -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>2</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>2</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>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:bug324121_6@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <!-- toolkit id compatible update available -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>2</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>3</em:minVersion>
+ <em:maxVersion>3</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:bug324121_7@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <!-- toolkit id incompatible update available -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>2</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>2</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>
+ </RDF:Description>
+
+</RDF:RDF>
+
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug393285.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug393285.xml
new file mode 100644
index 000000000..1767b4332
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug393285.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem id="test_bug393285_2@tests.mozilla.org"/>
+ <emItem id="test_bug393285_3a@tests.mozilla.org">
+ <versionRange minVersion="1.0" maxVersion="1.0"/>
+ </emItem>
+ <emItem id="test_bug393285_3b@tests.mozilla.org">
+ <versionRange minVersion="1.0" maxVersion="1.0"/>
+ </emItem>
+ <emItem id="test_bug393285_4@tests.mozilla.org">
+ <versionRange minVersion="1.0" maxVersion="1.0">
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="1.0" maxVersion="1.0"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="test_bug393285_5@tests.mozilla.org" os="Darwin"/>
+ <emItem id="test_bug393285_6@tests.mozilla.org" os="XPCShell"/>
+ <emItem id="test_bug393285_7@tests.mozilla.org" os="Darwin,XPCShell,WINNT"/>
+ <emItem id="test_bug393285_8@tests.mozilla.org" xpcomabi="x86-msvc"/>
+ <emItem id="test_bug393285_9@tests.mozilla.org" xpcomabi="noarch-spidermonkey"/>
+ <emItem id="test_bug393285_10@tests.mozilla.org" xpcomabi="ppc-gcc3,noarch-spidermonkey,x86-msvc"/>
+ <emItem id="test_bug393285_11@tests.mozilla.org" os="Darwin" xpcomabi="ppc-gcc3,x86-msvc"/>
+ <emItem id="test_bug393285_12@tests.mozilla.org" os="Darwin" xpcomabi="ppc-gcc3,noarch-spidermonkey,x86-msvc"/>
+ <emItem id="test_bug393285_13@tests.mozilla.org" os="XPCShell" xpcomabi="ppc-gcc3,x86-msvc"/>
+ <emItem id="test_bug393285_14@tests.mozilla.org" os="XPCShell,WINNT" xpcomabi="ppc-gcc3,x86-msvc,noarch-spidermonkey"/>
+ </emItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug394300.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug394300.rdf
new file mode 100644
index 000000000..94e12527f
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug394300.rdf
@@ -0,0 +1,159 @@
+<?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:bug394300_1@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <!-- Not a valid install - incompatible app versions -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>20</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>2</em:minVersion>
+ <em:maxVersion>2</em:maxVersion>
+ <em:updateLink>http://localhost:4444/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <!-- Valid install should be the version detected -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>10</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>
+ <!-- Valid install. Detecting this would indicate that the order
+ of entries is playing a part in the update detection. -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>6</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>
+ <!-- Not a valid install - no minVersion or maxVersion specified -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>40</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:updateLink>http://localhost:4444/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <!-- Not a valid install - incompatible app versions -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>30</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>2</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>
+ </RDF:Description>
+
+ <RDF:Description about="urn:mozilla:extension:bug394300_2@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <!-- Not a valid install - incompatible app versions -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>20</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>2</em:minVersion>
+ <em:maxVersion>2</em:maxVersion>
+ <em:updateLink>http://localhost:4444/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <!-- Valid install should be the version detected -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>10</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>1.9</em:minVersion>
+ <em:maxVersion>1.9</em:maxVersion>
+ <em:updateLink>http://localhost:4444/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <!-- Valid install. Detecting this would indicate that the order
+ of entries is playing a part in the update detection. -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>6</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>1.9</em:minVersion>
+ <em:maxVersion>1.9</em:maxVersion>
+ <em:updateLink>http://localhost:4444/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <!-- Not a valid install - no minVersion or maxVersion specified -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>40</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:updateLink>http://localhost:4444/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <!-- Not a valid install - incompatible app versions -->
+ <RDF:li>
+ <RDF:Description>
+ <em:version>30</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>2</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>
+ </RDF:Description>
+
+</RDF:RDF>
+
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug424262.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug424262.xml
new file mode 100644
index 000000000..d797debbb
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug424262.xml
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="100">
+ <addon>
+ <name>TEST</name>
+ <type id='1'>Extension</type>
+ <guid>test1@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>TEST</name>
+ <rating>-5</rating>
+ <type id='1'>Extension</type>
+ <guid>test2@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>TEST</name>
+ <rating>0</rating>
+ <type id='1'>Extension</type>
+ <guid>test3@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>TEST</name>
+ <rating>2</rating>
+ <type id='1'>Extension</type>
+ <guid>test4@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>TEST</name>
+ <rating>4</rating>
+ <type id='1'>Extension</type>
+ <guid>test5@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>TEST</name>
+ <rating>5</rating>
+ <type id='1'>Extension</type>
+ <guid>test6@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>TEST</name>
+ <rating>10</rating>
+ <type id='1'>Extension</type>
+ <guid>test7@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>TEST</name>
+ <rating>100</rating>
+ <type id='1'>Extension</type>
+ <guid>test8@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+</searchresults>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug449027_app.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug449027_app.xml
new file mode 100644
index 000000000..f12ca1fa6
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug449027_app.xml
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <!-- All extensions are version 5 and tests run against appVersion 3 -->
+
+ <!-- Test 1 not listed, should never get blocked -->
+ <!-- Always blocked -->
+ <emItem id="test_bug449027_2@tests.mozilla.org"/>
+ <!-- Always blocked -->
+ <emItem id="test_bug449027_3@tests.mozilla.org">
+ <versionRange/>
+ </emItem>
+ <!-- Not blocked since neither version range matches -->
+ <emItem id="test_bug449027_4@tests.mozilla.org">
+ <versionRange minVersion="6"/>
+ <versionRange maxVersion="4"/>
+ </emItem>
+ <!-- Invalid version range, should not block -->
+ <emItem id="test_bug449027_5@tests.mozilla.org">
+ <versionRange minVersion="6" maxVersion="4"/>
+ </emItem>
+ <!-- Should block all of these -->
+ <emItem id="test_bug449027_6@tests.mozilla.org">
+ <versionRange minVersion="7" maxVersion="8"/>
+ <versionRange minVersion="5" maxVersion="6"/>
+ <versionRange maxVersion="4"/>
+ </emItem>
+ <emItem id="test_bug449027_7@tests.mozilla.org">
+ <versionRange maxVersion="4"/>
+ <versionRange minVersion="4" maxVersion="5"/>
+ <versionRange minVersion="6" maxVersion="7"/>
+ </emItem>
+ <emItem id="test_bug449027_8@tests.mozilla.org">
+ <versionRange minVersion="2" maxVersion="2"/>
+ <versionRange minVersion="4" maxVersion="6"/>
+ <versionRange minVersion="7" maxVersion="8"/>
+ </emItem>
+ <emItem id="test_bug449027_9@tests.mozilla.org">
+ <versionRange minVersion="4"/>
+ </emItem>
+ <emItem id="test_bug449027_10@tests.mozilla.org">
+ <versionRange minVersion="5"/>
+ </emItem>
+ <emItem id="test_bug449027_11@tests.mozilla.org">
+ <versionRange maxVersion="6"/>
+ </emItem>
+ <emItem id="test_bug449027_12@tests.mozilla.org">
+ <versionRange maxVersion="5"/>
+ </emItem>
+
+ <!-- This should block all versions for any application -->
+ <emItem id="test_bug449027_13@tests.mozilla.org">
+ <versionRange>
+ <targetApplication/>
+ </versionRange>
+ </emItem>
+ <!-- Shouldn't block -->
+ <emItem id="test_bug449027_14@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="foo@bar.com"/>
+ </versionRange>
+ </emItem>
+ <!-- Should block for any version of the app -->
+ <emItem id="test_bug449027_15@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org"/>
+ </versionRange>
+ </emItem>
+ <!-- Should still block -->
+ <emItem id="test_bug449027_16@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <!-- Not blocked since neither version range matches -->
+ <emItem id="test_bug449027_17@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="4"/>
+ <versionRange maxVersion="2"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <!-- Invalid version range, should not block -->
+ <emItem id="test_bug449027_18@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="6" maxVersion="4"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <!-- Should block all of these -->
+ <emItem id="test_bug449027_19@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="foo@bar.com"/>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="5" maxVersion="6"/>
+ <versionRange minVersion="3" maxVersion="4"/>
+ <versionRange maxVersion="2"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="test_bug449027_20@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange maxVersion="2"/>
+ <versionRange minVersion="2" maxVersion="3"/>
+ <versionRange minVersion="4" maxVersion="5"/>
+ </targetApplication>
+ <targetApplication id="foo@bar.com"/>
+ </versionRange>
+ </emItem>
+ <emItem id="test_bug449027_21@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="1" maxVersion="1"/>
+ <versionRange minVersion="2" maxVersion="4"/>
+ <versionRange minVersion="5" maxVersion="6"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="test_bug449027_22@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="foo@bar.com"/>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="3"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="test_bug449027_23@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="2"/>
+ </targetApplication>
+ <targetApplication id="foo@bar.com"/>
+ </versionRange>
+ </emItem>
+ <emItem id="test_bug449027_24@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange maxVersion="3"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="test_bug449027_25@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange maxVersion="4"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ </emItems>
+ <pluginItems>
+ <!-- All plugins are version 5 and tests run against appVersion 3 -->
+
+ <!-- Test 1 not listed, should never get blocked -->
+ <!-- Always blocked -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_2$"/>
+ </pluginItem>
+ <!-- Always blocked -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_3$"/>
+ <versionRange/>
+ </pluginItem>
+ <!-- Not blocked since neither version range matches -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_4$"/>
+ <versionRange minVersion="6"/>
+ <versionRange maxVersion="4"/>
+ </pluginItem>
+ <!-- Invalid version range, should not block -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_5$"/>
+ <versionRange minVersion="6" maxVersion="4"/>
+ </pluginItem>
+ <!-- Should block all of these -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_6$"/>
+ <versionRange minVersion="7" maxVersion="8"/>
+ <versionRange minVersion="5" maxVersion="6"/>
+ <versionRange maxVersion="4"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_7$"/>
+ <versionRange maxVersion="4"/>
+ <versionRange minVersion="4" maxVersion="5"/>
+ <versionRange minVersion="6" maxVersion="7"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_8$"/>
+ <versionRange minVersion="2" maxVersion="2"/>
+ <versionRange minVersion="4" maxVersion="6"/>
+ <versionRange minVersion="7" maxVersion="8"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_9$"/>
+ <versionRange minVersion="4"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_10$"/>
+ <versionRange minVersion="5"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_11$"/>
+ <versionRange maxVersion="6"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_12$"/>
+ <versionRange maxVersion="5"/>
+ </pluginItem>
+
+ <!-- This should block all versions for any application -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_13$"/>
+ <versionRange>
+ <targetApplication/>
+ </versionRange>
+ </pluginItem>
+ <!-- Shouldn't block -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_14$"/>
+ <versionRange>
+ <targetApplication id="foo@bar.com"/>
+ </versionRange>
+ </pluginItem>
+ <!-- Should block for any version of the app -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_15$"/>
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org"/>
+ </versionRange>
+ </pluginItem>
+ <!-- Should still block -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_16$"/>
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <!-- Not blocked since neither version range matches -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_17$"/>
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="4"/>
+ <versionRange maxVersion="2"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <!-- Invalid version range, should not block -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_18$"/>
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="6" maxVersion="4"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <!-- Should block all of these -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_19$"/>
+ <versionRange>
+ <targetApplication id="foo@bar.com"/>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="5" maxVersion="6"/>
+ <versionRange minVersion="3" maxVersion="4"/>
+ <versionRange maxVersion="2"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_20$"/>
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange maxVersion="2"/>
+ <versionRange minVersion="2" maxVersion="3"/>
+ <versionRange minVersion="4" maxVersion="5"/>
+ </targetApplication>
+ <targetApplication id="foo@bar.com"/>
+ </versionRange>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_21$"/>
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="1" maxVersion="1"/>
+ <versionRange minVersion="2" maxVersion="4"/>
+ <versionRange minVersion="5" maxVersion="6"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_22$"/>
+ <versionRange>
+ <targetApplication id="foo@bar.com"/>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="3"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_23$"/>
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange minVersion="2"/>
+ </targetApplication>
+ <targetApplication id="foo@bar.com"/>
+ </versionRange>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_24$"/>
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange maxVersion="3"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_25$"/>
+ <versionRange>
+ <targetApplication id="xpcshell@tests.mozilla.org">
+ <versionRange maxVersion="4"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ </pluginItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug449027_toolkit.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug449027_toolkit.xml
new file mode 100644
index 000000000..ad8ec5ed9
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug449027_toolkit.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <!-- All extensions are version 5 and tests run against toolkitVersion 8 -->
+
+ <!-- Test 1-14 not listed, should never get blocked -->
+
+ <!-- Should block for any version of the app -->
+ <emItem id="test_bug449027_15@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org"/>
+ </versionRange>
+ </emItem>
+ <!-- Should still block -->
+ <emItem id="test_bug449027_16@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <!-- Not blocked since neither version range matches -->
+ <emItem id="test_bug449027_17@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange minVersion="9"/>
+ <versionRange maxVersion="7"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <!-- Invalid version range, should not block -->
+ <emItem id="test_bug449027_18@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange minVersion="11" maxVersion="9"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <!-- Should block all of these -->
+ <emItem id="test_bug449027_19@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="foo@bar.com"/>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange minVersion="10" maxVersion="11"/>
+ <versionRange minVersion="8" maxVersion="9"/>
+ <versionRange maxVersion="7"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="test_bug449027_20@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange maxVersion="7"/>
+ <versionRange minVersion="7" maxVersion="8"/>
+ <versionRange minVersion="9" maxVersion="10"/>
+ </targetApplication>
+ <targetApplication id="foo@bar.com"/>
+ </versionRange>
+ </emItem>
+ <emItem id="test_bug449027_21@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange minVersion="6" maxVersion="6"/>
+ <versionRange minVersion="7" maxVersion="9"/>
+ <versionRange minVersion="10" maxVersion="11"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="test_bug449027_22@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="foo@bar.com"/>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange minVersion="8"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="test_bug449027_23@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange minVersion="7"/>
+ </targetApplication>
+ <targetApplication id="foo@bar.com"/>
+ </versionRange>
+ </emItem>
+ <emItem id="test_bug449027_24@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange maxVersion="8"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ <emItem id="test_bug449027_25@tests.mozilla.org">
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange maxVersion="9"/>
+ </targetApplication>
+ </versionRange>
+ </emItem>
+ </emItems>
+ <pluginItems>
+ <!-- All plugins are version 5 and tests run against appVersion 3 -->
+
+ <!-- Test 1-14 not listed, should never get blocked -->
+ <!-- Should block for any version of the app -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_15$"/>
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org"/>
+ </versionRange>
+ </pluginItem>
+ <!-- Should still block -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_16$"/>
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <!-- Not blocked since neither version range matches -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_17$"/>
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange minVersion="9"/>
+ <versionRange maxVersion="7"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <!-- Invalid version range, should not block -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_18$"/>
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange minVersion="11" maxVersion="9"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <!-- Should block all of these -->
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_19$"/>
+ <versionRange>
+ <targetApplication id="foo@bar.com"/>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange minVersion="10" maxVersion="11"/>
+ <versionRange minVersion="8" maxVersion="9"/>
+ <versionRange maxVersion="7"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_20$"/>
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange maxVersion="7"/>
+ <versionRange minVersion="7" maxVersion="8"/>
+ <versionRange minVersion="9" maxVersion="10"/>
+ </targetApplication>
+ <targetApplication id="foo@bar.com"/>
+ </versionRange>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_21$"/>
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange minVersion="6" maxVersion="6"/>
+ <versionRange minVersion="7" maxVersion="9"/>
+ <versionRange minVersion="10" maxVersion="11"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_22$"/>
+ <versionRange>
+ <targetApplication id="foo@bar.com"/>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange minVersion="8"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_23$"/>
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange minVersion="7"/>
+ </targetApplication>
+ <targetApplication id="foo@bar.com"/>
+ </versionRange>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_24$"/>
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange maxVersion="8"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug449027_25$"/>
+ <versionRange>
+ <targetApplication id="toolkit@mozilla.org">
+ <versionRange maxVersion="9"/>
+ </targetApplication>
+ </versionRange>
+ </pluginItem>
+ </pluginItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug468528.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug468528.xml
new file mode 100644
index 000000000..85f0da57c
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug468528.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <pluginItems>
+ <pluginItem>
+ <match name="name" exp="^test_bug468528_1"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug468528_2["/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug468528_3"/>
+ </pluginItem>
+ </pluginItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_1.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_1.rdf
new file mode 100644
index 000000000..5397e8a87
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_1.rdf
@@ -0,0 +1,17 @@
+<?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>bug470377_1@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 470377</em:name>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_2.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_2.rdf
new file mode 100644
index 000000000..b1dde7f7a
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_2.rdf
@@ -0,0 +1,17 @@
+<?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>bug470377_2@tests.mozilla.org</em:id>
+ <em:version>1</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>1</em:minVersion>
+ <em:maxVersion>1</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ <em:name>Test for Bug 470377</em:name>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_3.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_3.rdf
new file mode 100644
index 000000000..ae483434a
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_3.rdf
@@ -0,0 +1,17 @@
+<?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>bug470377_3@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>Test for Bug 470377</em:name>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_4.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_4.rdf
new file mode 100644
index 000000000..97abacc5e
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_4.rdf
@@ -0,0 +1,17 @@
+<?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>bug470377_4@tests.mozilla.org</em:id>
+ <em:version>1</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>1</em:minVersion>
+ <em:maxVersion>2</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ <em:name>Test for Bug 470377</em:name>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_5.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_5.rdf
new file mode 100644
index 000000000..bff1104a7
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_5.rdf
@@ -0,0 +1,17 @@
+<?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>bug470377_5@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>3</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ <em:name>Test for Bug 470377</em:name>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_1.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_1.rdf
new file mode 100644
index 000000000..e4ad91ae9
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_1.rdf
@@ -0,0 +1,26 @@
+<?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_bug470377_1@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>1</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>unknown@tests.mozilla.org</em:id>
+ <em:minVersion>1</em:minVersion>
+ <em:maxVersion>2</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+</RDF:RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_2.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_2.rdf
new file mode 100644
index 000000000..10fcafd39
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_2.rdf
@@ -0,0 +1,26 @@
+<?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_bug470377_2@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>1</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>1</em:minVersion>
+ <em:maxVersion>1</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+</RDF:RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_3.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_3.rdf
new file mode 100644
index 000000000..684002462
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_3.rdf
@@ -0,0 +1,26 @@
+<?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_bug470377_3@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>1</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:%PORT%/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+</RDF:RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_4.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_4.rdf
new file mode 100644
index 000000000..6e7116239
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_4.rdf
@@ -0,0 +1,26 @@
+<?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_bug470377_4@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>1</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>1</em:minVersion>
+ <em:maxVersion>2</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+</RDF:RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_5.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_5.rdf
new file mode 100644
index 000000000..c926af934
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_5.rdf
@@ -0,0 +1,26 @@
+<?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_bug470377_5@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>1</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>1</em:minVersion>
+ <em:maxVersion>3</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/broken.xpi</em:updateLink>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+</RDF:RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_1.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_1.xml
new file mode 100644
index 000000000..c4cc2fe37
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_1.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <pluginItems>
+ <pluginItem>
+ <match name="name" exp="^test_bug514327_1"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug514327_2"/>
+ <versionRange severity="0"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_bug514327_3"/>
+ <versionRange severity="0"/>
+ </pluginItem>
+ </pluginItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_2.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_2.xml
new file mode 100644
index 000000000..cc0a0c69d
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_2.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <pluginItems>
+ <pluginItem>
+ <match name="name" exp="Test Plug-in"/>
+ <versionRange severity="0"/>
+ </pluginItem>
+ </pluginItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_empty.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_empty.xml
new file mode 100644
index 000000000..0261794f8
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_empty.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_outdated_1.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_outdated_1.xml
new file mode 100644
index 000000000..d651f8799
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_outdated_1.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <pluginItems>
+ <pluginItem>
+ <match name="name" exp="test_bug514327_1"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="test_bug514327_outdated"/>
+ <versionRange severity="0"/>
+ </pluginItem>
+ </pluginItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_outdated_2.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_outdated_2.xml
new file mode 100644
index 000000000..208444681
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_outdated_2.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <pluginItems>
+ <pluginItem>
+ <match name="name" exp="test_bug514327_2"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="test_bug514327_outdated"/>
+ <versionRange severity="0"/>
+ </pluginItem>
+ </pluginItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug526598_1.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug526598_1.xpi
new file mode 100644
index 000000000..2dbcc0b50
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug526598_1.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug526598_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug526598_2.xpi
new file mode 100644
index 000000000..86fc6baaa
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug526598_2.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug541420.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug541420.xpi
new file mode 100644
index 000000000..adb7be9ad
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug541420.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug542391.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug542391.rdf
new file mode 100644
index 000000000..db82cf675
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug542391.rdf
@@ -0,0 +1,25 @@
+<?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:override1x2-1x3@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <li>
+ <Description>
+ <em:version>1.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>1</em:minVersion>
+ <em:maxVersion>3</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug554133.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug554133.xml
new file mode 100644
index 000000000..736c10514
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug554133.xml
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="100">
+ <addon>
+ <name>PASS</name>
+ <type id='1'>Extension</type>
+ <guid>test1@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>FAIL</name>
+ <type id='1'>Extension</type>
+ <guid>test2@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <summary>Should not return an incompatible add-on</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>2</min_version>
+ <max_version>2</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>PASS</name>
+ <type id='1'>Extension</type>
+ <guid>test3@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>FAIL</name>
+ <type id='1'>Extension</type>
+ <guid>test4@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <summary>Should not return an add-on for a different OS</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install os="UNKNOWN">http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>PASS</name>
+ <type id='1'>Extension</type>
+ <guid>test5@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>FAIL</name>
+ <type id='1'>Extension</type>
+ <guid>test5@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <summary>Should not include the same result twice</summary>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>PASS</name>
+ <type id='1'>Extension</type>
+ <guid>test6@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>PASS</name>
+ <type id='1'>Extension</type>
+ <guid>test7@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>PASS</name>
+ <type id='1'>Extension</type>
+ <guid>test8@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>PASS</name>
+ <type id='1'>Extension</type>
+ <guid>test9@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>PASS</name>
+ <type id='1'>Extension</type>
+ <guid>test10@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>PASS</name>
+ <type id='1'>Extension</type>
+ <guid>test11@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+
+ <addon>
+ <name>PASS</name>
+ <type id='1'>Extension</type>
+ <guid>test12@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://localhost:%PORT%/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://localhost:%PORT%/test.xpi</install>
+ </addon>
+</searchresults>
+
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug619730.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug619730.xml
new file mode 100644
index 000000000..f2511c0de
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug619730.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <gfxItems testattr="GFX"><gfxItem/><gfxItem/></gfxItems>
+ <testItems testattr="FOO"><testItem/><testItem/><testItem/></testItems>
+ <fooItems/>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug655254.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug655254.rdf
new file mode 100644
index 000000000..9857dcb55
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug655254.rdf
@@ -0,0 +1,26 @@
+<?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:addon1@tests.mozilla.org">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>1</em:version>
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>1</em:minVersion>
+ <em:maxVersion>2</em:maxVersion>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+</RDF:RDF>
+
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_compatoverrides.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_compatoverrides.xml
new file mode 100644
index 000000000..c0d67d033
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_compatoverrides.xml
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="9">
+ <addon>
+ <name>Test addon 2</name>
+ <type id="1">Extension</type>
+ <guid>addon2@tests.mozilla.org</guid>
+ <version>1.0</version>
+ </addon>
+
+ <addon>
+ <name>Test addon 3</name>
+ <type id="1">Extension</type>
+ <guid>addon3@tests.mozilla.org</guid>
+ <version>1.0</version>
+ </addon>
+ <addon_compatibility hosted="true">
+ <name>Test addon 3</name>
+ <guid>addon3@tests.mozilla.org</guid>
+ <version_ranges>
+ <version_range type="incompatible">
+ <min_version>0.9</min_version>
+ <max_version>1.0</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>2</max_version>
+ </application>
+ </compatible_applications>
+ </version_range>
+ </version_ranges>
+ </addon_compatibility>
+
+ <addon>
+ <name>Test addon 4</name>
+ <type id="1">Extension</type>
+ <guid>addon4@tests.mozilla.org</guid>
+ <version>1.0</version>
+ </addon>
+ <addon_compatibility hosted="true">
+ <name>Test addon 4</name>
+ <guid>addon4@tests.mozilla.org</guid>
+ <version_ranges>
+ <version_range type="incompatible">
+ <min_version>0.9</min_version>
+ <max_version>1.0</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>2</max_version>
+ </application>
+ </compatible_applications>
+ </version_range>
+ </version_ranges>
+ </addon_compatibility>
+
+ <addon>
+ <name>Test addon 5</name>
+ <type id="1">Extension</type>
+ <guid>addon5@tests.mozilla.org</guid>
+ <version>1.0</version>
+ </addon>
+ <addon_compatibility hosted="true">
+ <name>Test addon 5</name>
+ <guid>addon5@tests.mozilla.org</guid>
+ <version_ranges>
+ <version_range type="incompatible">
+ <min_version>0.9</min_version>
+ <max_version>1.0</max_version>
+ <compatible_applications>
+ <application>
+ <name>Unknown App</name>
+ <appID>unknown-app@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>2</max_version>
+ </application>
+ </compatible_applications>
+ </version_range>
+ </version_ranges>
+ </addon_compatibility>
+
+ <addon>
+ <name>Test addon 6</name>
+ <type id="1">Extension</type>
+ <guid>addon6@tests.mozilla.org</guid>
+ <version>1.0</version>
+ </addon>
+ <addon_compatibility hosted="true">
+ <name>Test addon 6</name>
+ <guid>addon6@tests.mozilla.org</guid>
+ <version_ranges>
+ <version_range type="incompatible">
+ <min_version>0.5</min_version>
+ <max_version>0.9</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>2</max_version>
+ </application>
+ </compatible_applications>
+ </version_range>
+ </version_ranges>
+ </addon_compatibility>
+
+ <addon>
+ <name>Test addon 7</name>
+ <type id="1">Extension</type>
+ <guid>addon7@tests.mozilla.org</guid>
+ <version>1.0</version>
+ </addon>
+ <addon_compatibility hosted="true">
+ <name>Test addon 7</name>
+ <guid>addon7@tests.mozilla.org</guid>
+ <version_ranges>
+ <version_range type="incompatible">
+ <min_version>0.5</min_version>
+ <max_version>1.0</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>0.1</min_version>
+ <max_version>0.9</max_version>
+ </application>
+ </compatible_applications>
+ </version_range>
+ </version_ranges>
+ </addon_compatibility>
+
+ <addon>
+ <name>Test addon 8</name>
+ <type id="1">Extension</type>
+ <guid>addon8@tests.mozilla.org</guid>
+ <version>1.0</version>
+ </addon>
+ <addon_compatibility hosted="true">
+ <name>Test addon 8</name>
+ <guid>addon8@tests.mozilla.org</guid>
+ <version_ranges>
+ <version_range type="incompatible">
+ <min_version>6</min_version>
+ <max_version>6.2</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>0.9</min_version>
+ <max_version>9</max_version>
+ </application>
+ </compatible_applications>
+ </version_range>
+ <version_range type="incompatible">
+ <min_version>0.5</min_version>
+ <max_version>1.0</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>0.1</min_version>
+ <max_version>9</max_version>
+ </application>
+ <application>
+ <name>Unknown app</name>
+ <appID>unknown-app@tests.mozilla.org</appID>
+ <min_version>0.1</min_version>
+ <max_version>9</max_version>
+ </application>
+ </compatible_applications>
+ </version_range>
+ <version_range type="incompatible">
+ <min_version>0.1</min_version>
+ <max_version>0.2</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>0.1</min_version>
+ <max_version>0.9</max_version>
+ </application>
+ </compatible_applications>
+ </version_range>
+ </version_ranges>
+ </addon_compatibility>
+
+ <addon_compatibility hosted="false">
+ <name>Test addon 9</name>
+ <guid>addon9@tests.mozilla.org</guid>
+ <version_ranges>
+ <version_range type="incompatible">
+ <min_version>0.5</min_version>
+ <max_version>1.0</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>2</max_version>
+ </application>
+ </compatible_applications>
+ </version_range>
+ </version_ranges>
+ </addon_compatibility>
+
+ <addon_compatibility hosted="false">
+ <name>Test addon 10</name>
+ <guid>addon10@tests.mozilla.org</guid>
+ <version_ranges>
+ <version_range type="compatible">
+ <min_version>0.5</min_version>
+ <max_version>1.0</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>2</max_version>
+ </application>
+ </compatible_applications>
+ </version_range>
+ </version_ranges>
+ </addon_compatibility>
+
+</searchresults>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_corrupt.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_corrupt.rdf
new file mode 100644
index 000000000..f3341bdcf
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_corrupt.rdf
@@ -0,0 +1,44 @@
+<?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:addon3@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <li>
+ <Description>
+ <em:version>1.0</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>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <Description about="urn:mozilla:extension:addon4@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <li>
+ <Description>
+ <em:version>1.0</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>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_complete/bootstrap.js b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_complete/bootstrap.js
new file mode 100644
index 000000000..a81c90bf0
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_complete/bootstrap.js
@@ -0,0 +1,24 @@
+Components.utils.import("resource://gre/modules/Services.jsm");
+Components.utils.import("resource://gre/modules/AddonManager.jsm");
+
+const ADDON_ID = "test_delay_update_complete@tests.mozilla.org";
+const INSTALL_COMPLETE_PREF = "bootstraptest.install_complete_done";
+
+function install(data, reason) {}
+
+// normally we would use BootstrapMonitor here, but we need a reference to
+// the symbol inside `XPIProvider.jsm`.
+function startup(data, reason) {
+ // apply update immediately
+ if (data.hasOwnProperty("instanceID") && data.instanceID) {
+ AddonManager.addUpgradeListener(data.instanceID, (upgrade) => {
+ upgrade.install();
+ });
+ } else {
+ throw Error("no instanceID passed to bootstrap startup");
+ }
+}
+
+function shutdown(data, reason) {}
+
+function uninstall(data, reason) {}
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_defer/bootstrap.js b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_defer/bootstrap.js
new file mode 100644
index 000000000..25ffd8565
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_defer/bootstrap.js
@@ -0,0 +1,34 @@
+Components.utils.import("resource://gre/modules/Services.jsm");
+Components.utils.import("resource://gre/modules/AddonManager.jsm");
+
+const ADDON_ID = "test_delay_update_complete@tests.mozilla.org";
+const INSTALL_COMPLETE_PREF = "bootstraptest.install_complete_done";
+
+// global reference to hold upgrade object
+let gUpgrade;
+
+function install(data, reason) {}
+
+// normally we would use BootstrapMonitor here, but we need a reference to
+// the symbol inside `XPIProvider.jsm`.
+function startup(data, reason) {
+ // do not apply update immediately, hold on to for later
+ if (data.hasOwnProperty("instanceID") && data.instanceID) {
+ AddonManager.addUpgradeListener(data.instanceID, (upgrade) => {
+ gUpgrade = upgrade;
+ });
+ } else {
+ throw Error("no instanceID passed to bootstrap startup");
+ }
+
+ // add a listener so the test can pass control back
+ AddonManager.addAddonListener({
+ onFakeEvent: () => {
+ gUpgrade.install();
+ }
+ })
+}
+
+function shutdown(data, reason) {}
+
+function uninstall(data, reason) {}
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_ignore/bootstrap.js b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_ignore/bootstrap.js
new file mode 100644
index 000000000..7693c9c2d
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_ignore/bootstrap.js
@@ -0,0 +1,26 @@
+Components.utils.import("resource://gre/modules/Services.jsm");
+Components.utils.import("resource://gre/modules/AddonManager.jsm");
+
+const ADDON_ID = "test_delay_update_ignore@tests.mozilla.org";
+const TEST_IGNORE_PREF = "delaytest.ignore";
+
+function install(data, reason) {}
+
+// normally we would use BootstrapMonitor here, but we need a reference to
+// the symbol inside `XPIProvider.jsm`.
+function startup(data, reason) {
+ Services.prefs.setBoolPref(TEST_IGNORE_PREF, false);
+
+ // explicitly ignore update, will be queued for next restart
+ if (data.hasOwnProperty("instanceID") && data.instanceID) {
+ AddonManager.addUpgradeListener(data.instanceID, (upgrade) => {
+ Services.prefs.setBoolPref(TEST_IGNORE_PREF, true);
+ });
+ } else {
+ throw Error("no instanceID passed to bootstrap startup");
+ }
+}
+
+function shutdown(data, reason) {}
+
+function uninstall(data, reason) {}
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_complete.json b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_complete.json
new file mode 100644
index 000000000..cf3defdc7
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_complete.json
@@ -0,0 +1,11 @@
+{
+ "addons": {
+ "test_delay_update_complete_webext@tests.mozilla.org": {
+ "updates": [
+ { "version": "2.0",
+ "update_link": "http://localhost:%PORT%/addons/test_delay_update_complete_webextension_v2.xpi"
+ }
+ ]
+ }
+ }
+}
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_complete.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_complete.rdf
new file mode 100644
index 000000000..8af39cb0e
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_complete.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:test_delay_update_complete@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <!-- app id compatible update available -->
+ <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:%PORT%/addons/test_delay_update_complete_v2.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_defer.json b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_defer.json
new file mode 100644
index 000000000..2fcab10b5
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_defer.json
@@ -0,0 +1,11 @@
+{
+ "addons": {
+ "test_delay_update_defer_webext@tests.mozilla.org": {
+ "updates": [
+ { "version": "2.0",
+ "update_link": "http://localhost:%PORT%/addons/test_delay_update_defer_webextension_v2.xpi"
+ }
+ ]
+ }
+ }
+}
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_defer.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_defer.rdf
new file mode 100644
index 000000000..d44d4880f
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_defer.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:test_delay_update_defer@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <!-- app id compatible update available -->
+ <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:%PORT%/addons/test_delay_update_defer_v2.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_ignore.json b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_ignore.json
new file mode 100644
index 000000000..b7f48149d
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_ignore.json
@@ -0,0 +1,11 @@
+{
+ "addons": {
+ "test_delay_update_ignore_webext@tests.mozilla.org": {
+ "updates": [
+ { "version": "2.0",
+ "update_link": "http://localhost:%PORT%/addons/test_delay_update_ignore_webextension_v2.xpi"
+ }
+ ]
+ }
+ }
+}
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_ignore.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_ignore.rdf
new file mode 100644
index 000000000..866884f8d
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_ignore.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:test_delay_update_ignore@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <!-- app id compatible update available -->
+ <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:%PORT%/addons/test_delay_update_ignore_v2.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_dictionary.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_dictionary.rdf
new file mode 100644
index 000000000..364b3bba1
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_dictionary.rdf
@@ -0,0 +1,65 @@
+<?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:ab-CD@dictionaries.addons.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:%PORT%/addons/test_dictionary_3.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <Description about="urn:mozilla:extension:ef@dictionaries.addons.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:%PORT%/addons/test_dictionary_4.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <Description about="urn:mozilla:extension:gh@dictionaries.addons.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:%PORT%/addons/test_dictionary_5.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/bootstrap.js b/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/bootstrap.js
new file mode 100644
index 000000000..01682d3b7
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/bootstrap.js
@@ -0,0 +1,21 @@
+Components.utils.import("resource://gre/modules/Services.jsm");
+
+function install(data, reason) {
+ Services.prefs.setIntPref("bootstraptest.installed_version", 2);
+ Services.prefs.setIntPref("bootstraptest.install_reason", reason);
+}
+
+function startup(data, reason) {
+ Services.prefs.setIntPref("bootstraptest.active_version", 2);
+ 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/webextensions/test/xpcshell/data/test_distribution2_2/install.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/install.rdf
new file mode 100644
index 000000000..ebe547ccc
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/install.rdf
@@ -0,0 +1,23 @@
+<?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>
+
+ <!-- Front End MetaData -->
+ <em:name>Distributed add-ons test</em:name>
+ <em:bootstrap>true</em:bootstrap>
+
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>1</em:minVersion>
+ <em:maxVersion>5</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/subdir/dummy.txt b/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/subdir/dummy.txt
new file mode 100644
index 000000000..051aef85a
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/subdir/dummy.txt
@@ -0,0 +1 @@
+Test of a file in a sub directory \ No newline at end of file
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/subdir/subdir2/dummy2.txt b/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/subdir/subdir2/dummy2.txt
new file mode 100644
index 000000000..9eddc4493
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/subdir/subdir2/dummy2.txt
@@ -0,0 +1 @@
+Nested dummy file \ No newline at end of file
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist.xml
new file mode 100644
index 000000000..d535d2c3f
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist.xml
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <gfxItems>
+ <gfxBlacklistEntry blockID="g35">
+ <os>WINNT 6.1</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.2202 </driverVersion>
+ <driverVersionComparator> LESS_THAN </driverVersionComparator>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>WINNT 6.0</os>
+ <vendor>0xdcba</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_9_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.2202 </driverVersion>
+ <driverVersionComparator> LESS_THAN </driverVersionComparator>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry blockID="g36">
+ <os>WINNT 6.1</os>
+ <vendor>0xabab</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.2202 </driverVersion>
+ <driverVersionComparator> GREATER_THAN_OR_EQUAL </driverVersionComparator>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>WINNT 6.1</os>
+ <vendor>0xdcdc</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.1111 </driverVersion>
+ <driverVersionComparator> EQUAL </driverVersionComparator>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>abcd</vendor>
+ <devices>
+ <device>wxyz</device>
+ <device>asdf</device>
+ <device>erty</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 5 </driverVersion>
+ <driverVersionComparator> LESS_THAN_OR_EQUAL </driverVersionComparator>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>dcdc</vendor>
+ <devices>
+ <device>uiop</device>
+ <device>vbnm</device>
+ <device>hjkl</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 5 </driverVersion>
+ <driverVersionComparator> EQUAL </driverVersionComparator>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>abab</vendor>
+ <devices>
+ <device>ghjk</device>
+ <device>cvbn</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 7 </driverVersion>
+ <driverVersionComparator> GREATER_THAN_OR_EQUAL </driverVersionComparator>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>WINNT 6.1</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x6666</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DEVICE </featureStatus>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x6666</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DEVICE </featureStatus>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x6666</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DEVICE </featureStatus>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x6666</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DEVICE </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xdcdc</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_11_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.1112 </driverVersion>
+ <driverVersionMax> 8.52.323.1000 </driverVersionMax>
+ <driverVersionComparator> BETWEEN_EXCLUSIVE </driverVersionComparator>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xdcdc</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> OPENGL_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.50.322.1000 </driverVersion>
+ <driverVersionMax> 8.52.322.1112 </driverVersionMax>
+ <driverVersionComparator> BETWEEN_EXCLUSIVE </driverVersionComparator>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xdcdc</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_11_ANGLE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.1000 </driverVersion>
+ <driverVersionMax> 9.52.322.1000 </driverVersionMax>
+ <driverVersionComparator> BETWEEN_EXCLUSIVE </driverVersionComparator>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xdcdc</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> HARDWARE_VIDEO_DECODING </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 7.82.322.1000 </driverVersion>
+ <driverVersionMax> 9.25.322.1001 </driverVersionMax>
+ <driverVersionComparator> BETWEEN_INCLUSIVE </driverVersionComparator>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xdcdc</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.1112 </driverVersion>
+ <driverVersionMax> 9.52.322.1300 </driverVersionMax>
+ <driverVersionComparator> BETWEEN_INCLUSIVE </driverVersionComparator>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xdcdc</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION_DECODE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.1000 </driverVersion>
+ <driverVersionMax> 8.52.322.1112 </driverVersionMax>
+ <driverVersionComparator> BETWEEN_INCLUSIVE </driverVersionComparator>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xdcdc</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION_ENCODE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.1112 </driverVersion>
+ <driverVersionMax> 8.52.322.1200 </driverVersionMax>
+ <driverVersionComparator> BETWEEN_INCLUSIVE_START </driverVersionComparator>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xdcdc</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_MSAA </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.1000 </driverVersion>
+ <driverVersionMax> 8.52.322.1200 </driverVersionMax>
+ <driverVersionComparator> BETWEEN_INCLUSIVE_START </driverVersionComparator>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xdcdc</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_ANGLE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.1000 </driverVersion>
+ <driverVersionMax> 8.52.322.1112 </driverVersionMax>
+ <driverVersionComparator> BETWEEN_INCLUSIVE_START </driverVersionComparator>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xdcdc</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> CANVAS2D_ACCELERATION </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.1000 </driverVersion>
+ <driverVersionMax> 9.52.322.1000 </driverVersionMax>
+ <driverVersionComparator> BETWEEN_EXCLUSIVE </driverVersionComparator>
+ </gfxBlacklistEntry>
+
+ </gfxItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist2.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist2.xml
new file mode 100644
index 000000000..0ad8f6819
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist2.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <gfxItems>
+ <gfxBlacklistEntry>
+ <os>WINNT 6.1</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.2202 </driverVersion>
+ <driverVersionComparator> LESS_THAN </driverVersionComparator>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>WINNT 6.0</os>
+ <vendor>0xdcba</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_9_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.2202 </driverVersion>
+ <driverVersionComparator> LESS_THAN </driverVersionComparator>
+ </gfxBlacklistEntry>
+ </gfxItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist_AllOS.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist_AllOS.xml
new file mode 100644
index 000000000..f64676355
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist_AllOS.xml
@@ -0,0 +1,783 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <gfxItems>
+
+ <gfxBlacklistEntry blockID="g1">
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="15.0" maxVersion="15.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry blockID="g2">
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="15.0" maxVersion="22.0a1"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_9_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="16.0a1"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_10_LAYERS</feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="16.0a1" maxVersion="22.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_10_1_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="12.0" maxVersion="16.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> OPENGL_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry blockID="g11">
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="14.0b2" maxVersion="15.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_OPENGL </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_ANGLE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="12.0" maxVersion="16.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_MSAA </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange maxVersion="13.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> STAGEFRIGHT </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="42.0" maxVersion="13.0b2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="42.0" maxVersion="13.0b2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION_ENCODE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="42.0" maxVersion="13.0b2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION_DECODE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="17.2a2" maxVersion="15.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_11_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="15.0" maxVersion="13.2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> HARDWARE_VIDEO_DECODING </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>All</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="10.5" maxVersion="13.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_11_ANGLE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry blockID="g1">
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="15.0" maxVersion="15.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry blockID="g2">
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="15.0" maxVersion="22.0a1"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_9_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="16.0a1"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_10_LAYERS</feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="16.0a1" maxVersion="22.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_10_1_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="12.0" maxVersion="16.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> OPENGL_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry blockID="g11">
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="14.0b2" maxVersion="15.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_OPENGL </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_ANGLE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="12.0" maxVersion="16.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_MSAA </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange maxVersion="13.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> STAGEFRIGHT </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="42.0" maxVersion="13.0b2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="42.0" maxVersion="13.0b2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION_ENCODE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="42.0" maxVersion="13.0b2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION_DECODE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="17.2a2" maxVersion="15.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_11_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="15.0" maxVersion="13.2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> HARDWARE_VIDEO_DECODING </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="10.5" maxVersion="13.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_11_ANGLE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry blockID="g1">
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="15.0" maxVersion="15.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry blockID="g2">
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="15.0" maxVersion="22.0a1"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_9_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="16.0a1"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_10_LAYERS</feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="16.0a1" maxVersion="22.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_10_1_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="12.0" maxVersion="16.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> OPENGL_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry blockID="g11">
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="14.0b2" maxVersion="15.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_OPENGL </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_ANGLE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="12.0" maxVersion="16.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_MSAA </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange maxVersion="13.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> STAGEFRIGHT </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="42.0" maxVersion="13.0b2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="42.0" maxVersion="13.0b2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION_ENCODE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="42.0" maxVersion="13.0b2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION_DECODE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="17.2a2" maxVersion="15.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_11_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="15.0" maxVersion="13.2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> HARDWARE_VIDEO_DECODING </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Linux</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="10.5" maxVersion="13.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_11_ANGLE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry blockID="g1">
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="15.0" maxVersion="15.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry blockID="g2">
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="15.0" maxVersion="22.0a1"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_9_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="16.0a1"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_10_LAYERS</feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="16.0a1" maxVersion="22.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_10_1_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="12.0" maxVersion="16.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> OPENGL_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry blockID="g11">
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="14.0b2" maxVersion="15.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_OPENGL </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_ANGLE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="12.0" maxVersion="16.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBGL_MSAA </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange maxVersion="13.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> STAGEFRIGHT </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="42.0" maxVersion="13.0b2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="42.0" maxVersion="13.0b2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION_ENCODE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="42.0" maxVersion="13.0b2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> WEBRTC_HW_ACCELERATION_DECODE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="17.2a2" maxVersion="15.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_11_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="15.0" maxVersion="13.2"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> HARDWARE_VIDEO_DECODING </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ <gfxBlacklistEntry>
+ <os>Android</os>
+ <vendor>0xabcd</vendor>
+ <versionRange minVersion="10.5" maxVersion="13.0"/>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT3D_11_ANGLE </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ </gfxBlacklistEntry>
+
+ </gfxItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist_OSVersion.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist_OSVersion.xml
new file mode 100644
index 000000000..248868a2e
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist_OSVersion.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <gfxItems>
+ <gfxBlacklistEntry>
+ <os>WINNT 6.2</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> DIRECT2D </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.2202 </driverVersion>
+ <driverVersionComparator> LESS_THAN </driverVersionComparator>
+ </gfxBlacklistEntry>
+ <gfxBlacklistEntry>
+ <os>Darwin 13</os>
+ <vendor>0xabcd</vendor>
+ <devices>
+ <device>0x2783</device>
+ <device>0x1234</device>
+ <device>0x2782</device>
+ </devices>
+ <feature> OPENGL_LAYERS </feature>
+ <featureStatus> BLOCKED_DRIVER_VERSION </featureStatus>
+ <driverVersion> 8.52.322.2202 </driverVersion>
+ <driverVersionComparator> LESS_THAN </driverVersionComparator>
+ </gfxBlacklistEntry>
+ </gfxItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_1.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_1.rdf
new file mode 100644
index 000000000..016726021
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_1.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:hotfix@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <li>
+ <Description>
+ <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>
+ <em:updateLink>http://localhost:%PORT%/addons/test_hotfix_1.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_2.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_2.rdf
new file mode 100644
index 000000000..35a2befee
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_2.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:hotfix@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:%PORT%/addons/test_hotfix_2.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_3.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_3.rdf
new file mode 100644
index 000000000..7180da143
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_3.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:hotfix@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>2</em:minVersion>
+ <em:maxVersion>2</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/test_hotfix_3.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_install.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_install.rdf
new file mode 100644
index 000000000..fe82334fa
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_install.rdf
@@ -0,0 +1,63 @@
+<?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:addon3@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <li>
+ <Description>
+ <em:version>1.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>1</em:maxVersion>
+ </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>1.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>1</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <Description about="urn:mozilla:extension:addon7@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>0</em:minVersion>
+ <em:maxVersion>1</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_install.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_install.xml
new file mode 100644
index 000000000..33f14a2fd
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_install.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="1">
+ <addon>
+ <name>Real Test 2</name>
+ <type id='1'>Extension</type>
+ <guid>addon2@tests.mozilla.org</guid>
+ <version>1.0</version>
+ <authors>
+ <author>
+ <name>Test Creator</name>
+ <link>http://example.com/creator.html</link>
+ </author>
+ </authors>
+ <status id='4'>Public</status>
+ <summary>Repository summary</summary>
+ <description>Repository description</description>
+ <compatible_applications>
+ <application>
+ <name>Firefox</name>
+ <appID>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</appID>
+ <min_version>0</min_version>
+ <max_version>*</max_version>
+ </application>
+ <application>
+ <name>SeaMonkey</name>
+ <appID>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</appID>
+ <min_version>0</min_version>
+ <max_version>*</max_version>
+ </application>
+ </compatible_applications>
+ <compatible_os>ALL</compatible_os>
+ <install size="2">http://example.com/browser/toolkit/mozapps/extensions/test/browser/addons/browser_install1_2.xpi</install>
+ </addon>
+
+ <addon_compatibility hosted="false">
+ <guid>addon6@tests.mozilla.org</guid>
+ <name>Addon Test 6</name>
+ <version_ranges>
+ <version_range type="incompatible">
+ <min_version>1.0</min_version>
+ <max_version>1.0</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <min_version>1.0</min_version>
+ <max_version>1.0</max_version>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ </application>
+ </compatible_applications>
+ </version_range>
+ </version_ranges>
+ </addon_compatibility>
+</searchresults>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_migrate.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_migrate.rdf
new file mode 100644
index 000000000..d1dc992d5
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_migrate.rdf
@@ -0,0 +1,125 @@
+<?xml version="1.0"?>
+
+<!-- This is a copy of extensions.rdf from Firefox 3.5 including four
+ test extensions. Addon1 was user enabled, addon2 was user disabled, addon3
+ was pending user disable at the next restart and addon4 was pending user
+ enable at the next restart. Additionally addon1 and 2 have had
+ compatibility updates applies to make them compatible with the app and
+ toolkit respectively, addon3 and 4 have not. addon5 is disabled however
+ at the same time as the migration a new version should be detected. addon6
+ is pending install and needs a compatibility update to be compatible.
+ It also contains two themes in the profile -->
+
+<RDF:RDF xmlns:NS1="http://www.mozilla.org/2004/em-rdf#"
+ xmlns:NC="http://home.netscape.com/NC-rdf#"
+ xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <RDF:Description RDF:about="rdf:#$w8dNC3"
+ NS1:id="xpcshell@tests.mozilla.org"
+ NS1:minVersion="1"
+ NS1:maxVersion="1" />
+ <RDF:Description RDF:about="rdf:#$w8dNC4"
+ NS1:id="xpcshell@tests.mozilla.org"
+ NS1:minVersion="1"
+ NS1:maxVersion="2" />
+ <RDF:Description RDF:about="rdf:#$w8dNC5"
+ NS1:id="xpcshell@tests.mozilla.org"
+ NS1:minVersion="1"
+ NS1:maxVersion="2" />
+ <RDF:Description RDF:about="rdf:#$w8dNC6"
+ NS1:id="xpcshell@tests.mozilla.org"
+ NS1:minVersion="1"
+ NS1:maxVersion="2" />
+ <RDF:Description RDF:about="rdf:#$w8dNC2"
+ NS1:id="toolkit@mozilla.org"
+ NS1:minVersion="1"
+ NS1:maxVersion="1" />
+ <RDF:Description RDF:about="rdf:#$w8dNC1"
+ NS1:id="toolkit@mozilla.org"
+ NS1:minVersion="1"
+ NS1:maxVersion="2" />
+ <RDF:Description RDF:about="rdf:#$w8dNC7"
+ NS1:id="toolkit@mozilla.org"
+ NS1:minVersion="1"
+ NS1:maxVersion="2" />
+ <RDF:Description RDF:about="rdf:#$oadNC1"
+ NS1:id="xpcshell@tests.mozilla.org"
+ NS1:minVersion="1"
+ NS1:maxVersion="2" />
+ <RDF:Description RDF:about="rdf:#$TpnM4"
+ NS1:id="xpcshell@tests.mozilla.org"
+ NS1:updatedMinVersion="1"
+ NS1:updatedMaxVersion="2" />
+ <RDF:Description RDF:about="urn:mozilla:item:addon1@tests.mozilla.org"
+ NS1:installLocation="app-profile"
+ NS1:version="1.0"
+ NS1:name="Test 1">
+ <NS1:type NC:parseType="Integer">2</NS1:type>
+ <NS1:targetApplication RDF:resource="rdf:#$oadNC1"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:mozilla:item:addon2@tests.mozilla.org"
+ NS1:installLocation="app-profile"
+ NS1:version="2.0"
+ NS1:name="Test 2"
+ NS1:userDisabled="true">
+ <NS1:type NC:parseType="Integer">2</NS1:type>
+ <NS1:targetApplication RDF:resource="rdf:#$w8dNC1"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:mozilla:item:addon3@tests.mozilla.org"
+ NS1:installLocation="app-profile"
+ NS1:version="2.0"
+ NS1:name="Test 3"
+ NS1:userDisabled="needs-disable">
+ <NS1:type NC:parseType="Integer">2</NS1:type>
+ <NS1:targetApplication RDF:resource="rdf:#$w8dNC3"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:mozilla:item:addon4@tests.mozilla.org"
+ NS1:installLocation="app-profile"
+ NS1:version="2.0"
+ NS1:name="Test 4"
+ NS1:userDisabled="needs-enable">
+ <NS1:type NC:parseType="Integer">2</NS1:type>
+ <NS1:targetApplication RDF:resource="rdf:#$w8dNC2"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:mozilla:item:addon5@tests.mozilla.org"
+ NS1:installLocation="app-profile"
+ NS1:version="1.0"
+ NS1:name="Test 5"
+ NS1:userDisabled="true">
+ <NS1:type NC:parseType="Integer">2</NS1:type>
+ <NS1:targetApplication RDF:resource="rdf:#$w8dNC7"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:mozilla:item:addon6@tests.mozilla.org"
+ NS1:name="Test 6"
+ NS1:version="1.0"
+ NS1:newVersion="1.0"
+ NS1:installLocation="app-profile">
+ <NS1:type NC:parseType="Integer">2</NS1:type>
+ <NS1:targetApplication RDF:resource="rdf:#$TpnM4"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:mozilla:item:theme1@tests.mozilla.org"
+ NS1:installLocation="app-profile"
+ NS1:version="1.0"
+ NS1:name="Theme 2"
+ NS1:internalName="theme1/1.0">
+ <NS1:type NC:parseType="Integer">4</NS1:type>
+ <NS1:targetApplication RDF:resource="rdf:#$w8dNC5"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:mozilla:item:theme2@tests.mozilla.org"
+ NS1:installLocation="app-profile"
+ NS1:version="2.0"
+ NS1:name="Theme 2"
+ NS1:internalName="theme2/1.0">
+ <NS1:type NC:parseType="Integer">4</NS1:type>
+ <NS1:targetApplication RDF:resource="rdf:#$w8dNC6"/>
+ </RDF:Description>
+ <RDF:Seq RDF:about="urn:mozilla:item:root">
+ <RDF:li RDF:resource="urn:mozilla:item:addon1@tests.mozilla.org"/>
+ <RDF:li RDF:resource="urn:mozilla:item:addon2@tests.mozilla.org"/>
+ <RDF:li RDF:resource="urn:mozilla:item:addon3@tests.mozilla.org"/>
+ <RDF:li RDF:resource="urn:mozilla:item:addon4@tests.mozilla.org"/>
+ <RDF:li RDF:resource="urn:mozilla:item:addon5@tests.mozilla.org"/>
+ <RDF:li RDF:resource="urn:mozilla:item:addon6@tests.mozilla.org"/>
+ <RDF:li RDF:resource="urn:mozilla:item:theme1@tests.mozilla.org"/>
+ <RDF:li RDF:resource="urn:mozilla:item:theme2@tests.mozilla.org"/>
+ </RDF:Seq>
+</RDF:RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_migrate4.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_migrate4.rdf
new file mode 100644
index 000000000..a3bf4f8ae
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_migrate4.rdf
@@ -0,0 +1,46 @@
+<?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:addon5@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>0</em:minVersion>
+ <em:maxVersion>2</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <Description about="urn:mozilla:extension:addon6@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>0</em:minVersion>
+ <em:maxVersion>2</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/test_migrate4_6.xpi</em:updateLink>
+ <em:updateInfoURL>http://example.com/updateInfo.xhtml</em:updateInfoURL>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_no_update.json b/toolkit/mozapps/webextensions/test/xpcshell/data/test_no_update.json
new file mode 100644
index 000000000..2773c7f98
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_no_update.json
@@ -0,0 +1,7 @@
+{
+ "addons": {
+ "test_no_update_webext@tests.mozilla.org": {
+ "updates": []
+ }
+ }
+}
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/ancient.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/ancient.xml
new file mode 100644
index 000000000..699257f87
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/ancient.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem blockID="i454" id="ancient@tests.mozilla.org">
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ </emItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/new.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/new.xml
new file mode 100644
index 000000000..8cbfb5d6a
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/new.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1396046918000">
+ <emItems>
+ <emItem blockID="i454" id="new@tests.mozilla.org">
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ </emItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/old.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/old.xml
new file mode 100644
index 000000000..75bd6e934
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/old.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1296046918000">
+ <emItems>
+ <emItem blockID="i454" id="old@tests.mozilla.org">
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ </emItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_pluginBlocklistCtp.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_pluginBlocklistCtp.xml
new file mode 100644
index 000000000..d3564aebd
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_pluginBlocklistCtp.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <pluginItems>
+ <pluginItem>
+ <match name="name" exp="^test_plugin_0"/>
+ <versionRange minVersion="0" maxVersion="*" severity="0" vulnerabilitystatus="0"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_plugin_1"/>
+ <versionRange minVersion="0" maxVersion="*" severity="0" vulnerabilitystatus="1"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_plugin_2"/>
+ <versionRange minVersion="0" maxVersion="*" severity="0" vulnerabilitystatus="2"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_plugin_3"/>
+ <versionRange minVersion="0" maxVersion="*" vulnerabilitystatus="2"/>
+ </pluginItem>
+ <pluginItem>
+ <match name="name" exp="^test_plugin_4"/>
+ <versionRange minVersion="0" maxVersion="*" severity="1" vulnerabilitystatus="2"/>
+ </pluginItem>
+ </pluginItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_pluginBlocklistCtpUndo.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_pluginBlocklistCtpUndo.xml
new file mode 100644
index 000000000..7cd8496b3
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_pluginBlocklistCtpUndo.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <pluginItems>
+ <pluginItem>
+ <match name="name" exp="^Test Plug-in"/>
+ <versionRange minVersion="0" maxVersion="*" severity="0" vulnerabilitystatus="2"/>
+ </pluginItem>
+ </pluginItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_proxy/bootstrap.js b/toolkit/mozapps/webextensions/test/xpcshell/data/test_proxy/bootstrap.js
new file mode 100644
index 000000000..1666f2972
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_proxy/bootstrap.js
@@ -0,0 +1 @@
+Components.utils.import("resource://xpcshell-data/BootstrapMonitor.jsm").monitor(this);
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_softblocked1.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_softblocked1.xml
new file mode 100644
index 000000000..a1d18470c
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_softblocked1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
+ <emItems>
+ <emItem id="softblock1@tests.mozilla.org">
+ <versionRange severity="1"/>
+ </emItem>
+ </emItems>
+</blocklist>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_sourceURI.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_sourceURI.xml
new file mode 100644
index 000000000..949288e3f
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_sourceURI.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="1">
+ <!-- Passes all requirements -->
+ <addon>
+ <name>Test</name>
+ <type id="1">Extension</type>
+ <guid>addon@tests.mozilla.org</guid>
+ <version>1</version>
+ <compatible_applications>
+ <application>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ </application>
+ </compatible_applications>
+ <install>http://www.example.com/testaddon.xpi</install>
+ </addon>
+</searchresults>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_temporary/bootstrap.js b/toolkit/mozapps/webextensions/test/xpcshell/data/test_temporary/bootstrap.js
new file mode 100644
index 000000000..1666f2972
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_temporary/bootstrap.js
@@ -0,0 +1 @@
+Components.utils.import("resource://xpcshell-data/BootstrapMonitor.jsm").monitor(this);
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_update.json b/toolkit/mozapps/webextensions/test/xpcshell/data/test_update.json
new file mode 100644
index 000000000..027a9b233
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_update.json
@@ -0,0 +1,215 @@
+{
+ "addons": {
+ "addon1@tests.mozilla.org": {
+ "updates": [
+ {
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_min_version": "1"
+ }
+ }
+ },
+ {
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "2",
+ "strict_min_version": "2"
+ }
+ }
+ },
+ {
+ "version": "2.0",
+ "update_link": "http://localhost:%PORT%/addons/test_update.xpi",
+ "update_info_url": "http://example.com/updateInfo.xhtml",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_min_version": "1"
+ }
+ }
+ }
+ ]
+ },
+
+ "addon2@tests.mozilla.org": {
+ "updates": [
+ {
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "0",
+ "advisory_max_version": "1"
+ }
+ }
+ }
+ ]
+ },
+
+ "addon2@tests.mozilla.org": {
+ "updates": [
+ {
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "0",
+ "advisory_max_version": "1"
+ }
+ }
+ }
+ ]
+ },
+
+ "addon3@tests.mozilla.org": {
+ "updates": [
+ {
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "3",
+ "advisory_max_version": "3"
+ }
+ }
+ }
+ ]
+ },
+
+ "addon4@tests.mozilla.org": {
+ "updates": [
+ {
+ "version": "5.0",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "0",
+ "advisory_max_version": "0"
+ }
+ }
+ }
+ ]
+ },
+
+ "addon7@tests.mozilla.org": {
+ "updates": [
+ {
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "0",
+ "advisory_max_version": "1"
+ }
+ }
+ }
+ ]
+ },
+
+ "addon8@tests.mozilla.org": {
+ "updates": [
+ {
+ "version": "2.0",
+ "update_link": "http://localhost:%PORT%/addons/test_update8.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "advisory_max_version": "1"
+ }
+ }
+ }
+ ]
+ },
+
+ "addon9@tests.mozilla.org": {
+ "updates": [
+ {
+ "version": "2.0",
+ "update_link": "http://localhost:%PORT%/addons/test_update9_2.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "advisory_max_version": "1"
+ }
+ }
+ },
+ {
+ "_comment_": "Incompatible when strict compatibility is enabled",
+ "version": "3.0",
+ "update_link": "http://localhost:%PORT%/addons/test_update9_3.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "0.9",
+ "advisory_max_version": "0.9"
+ }
+ }
+ },
+ {
+ "_comment_": "Incompatible due to compatibility override",
+ "version": "4.0",
+ "update_link": "http://localhost:%PORT%/addons/test_update9_4.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "0.9",
+ "advisory_max_version": "0.9"
+ }
+ }
+ },
+ {
+ "_comment_": "Addon for future version of app",
+ "version": "4.0",
+ "update_link": "http://localhost:%PORT%/addons/test_update9_5.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "5",
+ "advisory_max_version": "6"
+ }
+ }
+ }
+ ]
+ },
+
+ "addon10@tests.mozilla.org": {
+ "updates": [
+ {
+ "version": "1.0",
+ "update_link": "http://localhost:%PORT%/addons/test_update10.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "0.1",
+ "advisory_max_version": "0.4"
+ }
+ }
+ }
+ ]
+ },
+
+ "addon11@tests.mozilla.org": {
+ "updates": [
+ {
+ "version": "2.0",
+ "update_link": "http://localhost:%PORT%/addons/test_update11.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "0.1",
+ "strict_max_version": "0.2"
+ }
+ }
+ }
+ ]
+ },
+
+ "addon12@tests.mozilla.org": {
+ "updates": [
+ {
+ "version": "2.0",
+ "update_link": "http://localhost:%PORT%/addons/test_update12.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "advisory_max_version": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_update.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_update.rdf
new file mode 100644
index 000000000..4d4640f60
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_update.rdf
@@ -0,0 +1,270 @@
+<?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:addon1@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <li>
+ <Description>
+ <em:version>1.0</em:version>
+ <!-- Shouldn't fire onCompatibilityUpdateAvailable since this
+ information is already in the install.rdf -->
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>1</em:minVersion>
+ <em:maxVersion>1</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+
+ <!-- Should be ignored as it is not for the present version of the
+ application -->
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>2</em:minVersion>
+ <em:maxVersion>2</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+
+ <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:%PORT%/addons/test_update.xpi</em:updateLink>
+ <em:updateInfoURL>http://example.com/updateInfo.xhtml</em:updateInfoURL>
+ </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>1.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>1</em:maxVersion>
+ </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>1.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>3</em:minVersion>
+ <em:maxVersion>3</em:maxVersion>
+ </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>0</em:minVersion>
+ <em:maxVersion>0</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <Description about="urn:mozilla:extension:addon7@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <li>
+ <Description>
+ <em:version>1.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>0</em:minVersion>
+ <em:maxVersion>1</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <Description about="urn:mozilla:extension:addon8@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:%PORT%/addons/test_update8.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <Description about="urn:mozilla:extension:addon9@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:%PORT%/addons/test_update9_2.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ <!-- Incompatible when strict compatibility is enabled -->
+ <li>
+ <Description>
+ <em:version>3.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>0.9</em:minVersion>
+ <em:maxVersion>0.9</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/test_update9_3.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ <!-- Incompatible due to compatibility override -->
+ <li>
+ <Description>
+ <em:version>4.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>0.9</em:minVersion>
+ <em:maxVersion>0.9</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/test_update9_4.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ <!-- Addon for future version of app -->
+ <li>
+ <Description>
+ <em:version>5.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>5</em:minVersion>
+ <em:maxVersion>6</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/test_update9_5.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <Description about="urn:mozilla:extension:addon10@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <li>
+ <Description>
+ <em:version>1.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>0.1</em:minVersion>
+ <em:maxVersion>0.4</em:maxVersion>
+ <em:updateLink>http://localhost:%PORT%/addons/test_update10.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <Description about="urn:mozilla:extension:addon11@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>0.1</em:minVersion>
+ <em:maxVersion>0.2</em:maxVersion>
+ <em:strictCompatibility>true</em:strictCompatibility>
+ <em:updateLink>http://localhost:%PORT%/addons/test_update11.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <Description about="urn:mozilla:item:addon12@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:%PORT%/addons/test_update12.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_update.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_update.xml
new file mode 100644
index 000000000..62928815b
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_update.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<searchresults total_results="11">
+ <addon>
+ <name>Test Addon 9</name>
+ <type id="1">Extension</type>
+ <guid>addon9@tests.mozilla.org</guid>
+ </addon>
+ <addon_compatibility hosted="true">
+ <guid>addon9@tests.mozilla.org</guid>
+ <name>Test Addon 9</name>
+ <version_ranges>
+ <version_range type="incompatible">
+ <min_version>4</min_version>
+ <max_version>4</max_version>
+ <compatible_applications>
+ <application>
+ <name>XPCShell</name>
+ <min_version>1</min_version>
+ <max_version>1</max_version>
+ <appID>xpcshell@tests.mozilla.org</appID>
+ </application>
+ </compatible_applications>
+ </version_range>
+ </version_ranges>
+ </addon_compatibility>
+</searchresults>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_update_multi.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_update_multi.rdf
new file mode 100644
index 000000000..f28a3f26d
--- /dev/null
+++ b/toolkit/mozapps/webextensions/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/webextensions/test/xpcshell/data/test_updatecheck.json b/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecheck.json
new file mode 100644
index 000000000..811e50158
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecheck.json
@@ -0,0 +1,327 @@
+{
+ "addons": {
+ "updatecheck1@tests.mozilla.org": {
+ "updates": [
+ {
+ "version": "1.0",
+ "update_link": "https://localhost:4444/addons/test1.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_max_version": "1"
+ }
+ }
+ },
+ {
+ "_comment_": "This update is incompatible and so should not be considered a valid update",
+ "version": "2.0",
+ "update_link": "https://localhost:4444/addons/test2.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "2",
+ "strict_max_version": "2"
+ }
+ }
+ },
+ {
+ "version": "3.0",
+ "update_link": "https://localhost:4444/addons/test3.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_max_version": "1"
+ }
+ }
+ },
+ {
+ "version": "2.0",
+ "update_link": "https://localhost:4444/addons/test2.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_max_version": "2"
+ }
+ }
+ },
+ {
+ "_comment_": "This update is incompatible and so should not be considered a valid update",
+ "version": "4.0",
+ "update_link": "https://localhost:4444/addons/test4.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "2",
+ "strict_max_version": "2"
+ }
+ }
+ }
+ ]
+ },
+
+ "test_bug378216_5@tests.mozilla.org": {
+ "_comment_": "An update which expects a signature. It will fail since signatures are ",
+ "_comment_": "supported in this format.",
+ "_comment_": "The updateLink will also be ignored since it is not secure and there ",
+ "_comment_": "is no updateHash.",
+
+ "updates": [
+ {
+ "version": "2.0",
+ "update_link": "http://localhost:4444/broken.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_max_version": "1"
+ }
+ }
+ }
+ ]
+ },
+
+ "test_bug378216_5@tests.mozilla.org": {
+ "updates": [
+ {
+ "version": "2.0",
+ "update_link": "http://localhost:4444/broken.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_max_version": "1"
+ }
+ }
+ }
+ ]
+ },
+
+ "test_bug378216_7@tests.mozilla.org": {
+ "_comment_": "An update which expects a signature. It will fail since signatures are ",
+ "_comment_": "supported in this format.",
+ "_comment_": "The updateLink will also be ignored since it is not secure ",
+ "_comment_": "and there is no updateHash.",
+
+ "updates": [
+ {
+ "version": "2.0",
+ "update_link": "http://localhost:4444/broken.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_max_version": "2"
+ }
+ }
+ }
+ ]
+ },
+
+ "test_bug378216_8@tests.mozilla.org": {
+ "_comment_": "The updateLink will be ignored since it is not secure and ",
+ "_comment_": "there is no updateHash.",
+
+ "updates": [
+ {
+ "version": "2.0",
+ "update_link": "http://localhost:4444/broken.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_max_version": "1"
+ }
+ }
+ }
+ ]
+ },
+
+ "test_bug378216_9@tests.mozilla.org": {
+ "_comment_": "The updateLink will used since there is an updateHash to verify it.",
+
+ "updates": [
+ {
+ "version": "2.0",
+ "update_link": "http://localhost:4444/broken.xpi",
+ "update_hash": "sha256:78fc1d2887eda35b4ad2e3a0b60120ca271ce6e6",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_max_version": "1"
+ }
+ }
+ }
+ ]
+ },
+
+ "test_bug378216_10@tests.mozilla.org": {
+ "_comment_": "The updateLink will used since it is a secure URL.",
+
+ "updates": [
+ {
+ "version": "2.0",
+ "update_link": "https://localhost:4444/broken.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_max_version": "1"
+ }
+ }
+ }
+ ]
+ },
+
+ "test_bug378216_11@tests.mozilla.org": {
+ "_comment_": "The updateLink will used since it is a secure URL.",
+
+ "updates": [
+ {
+ "version": "2.0",
+ "update_link": "https://localhost:4444/broken.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_max_version": "1"
+ }
+ }
+ }
+ ]
+ },
+
+ "test_bug378216_12@tests.mozilla.org": {
+ "_comment_": "The updateLink will not be used since the updateHash ",
+ "_comment_": "verifying it is not strong enough.",
+
+ "updates": [
+ {
+ "version": "2.0",
+ "update_link": "http://localhost:4444/broken.xpi",
+ "update_hash": "sha1:78fc1d2887eda35b4ad2e3a0b60120ca271ce6e6",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_max_version": "1"
+ }
+ }
+ }
+ ]
+ },
+
+ "test_bug378216_13@tests.mozilla.org": {
+ "_comment_": "An update with a weak hash. The updateLink will used since it is ",
+ "_comment_": "a secure URL.",
+
+ "updates": [
+ {
+ "version": "2.0",
+ "update_link": "https://localhost:4444/broken.xpi",
+ "update_hash": "sha1:78fc1d2887eda35b4ad2e3a0b60120ca271ce6e6",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "1",
+ "strict_max_version": "1"
+ }
+ }
+ }
+ ]
+ },
+
+ "_comment_": "There should be no information present for test_bug378216_14",
+
+ "test_bug378216_15@tests.mozilla.org": {
+ "_comment_": "Invalid update JSON",
+
+ "updates": "foo"
+ },
+
+ "ignore-compat@tests.mozilla.org": {
+ "_comment_": "Various updates available - one is not compatible, but compatibility checking is disabled",
+
+ "updates": [
+ {
+ "version": "1.0",
+ "update_link": "https://localhost:4444/addons/test1.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "0.1",
+ "advisory_max_version": "0.2"
+ }
+ }
+ },
+ {
+ "version": "2.0",
+ "update_link": "https://localhost:4444/addons/test2.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "0.5",
+ "advisory_max_version": "0.6"
+ }
+ }
+ },
+ {
+ "_comment_": "Update for future app versions - should never be compatible",
+ "version": "3.0",
+ "update_link": "https://localhost:4444/addons/test3.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "2",
+ "advisory_max_version": "3"
+ }
+ }
+ }
+ ]
+ },
+
+ "compat-override@tests.mozilla.org": {
+ "_comment_": "Various updates available - one is not compatible, but compatibility checking is disabled",
+
+ "updates": [
+ {
+ "_comment_": "Has compatibility override, but it doesn't match this app version",
+ "version": "1.0",
+ "update_link": "https://localhost:4444/addons/test1.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "0.1",
+ "advisory_max_version": "0.2"
+ }
+ }
+ },
+ {
+ "_comment_": "Has compatibility override, so is incompaible",
+ "version": "2.0",
+ "update_link": "https://localhost:4444/addons/test2.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "0.5",
+ "advisory_max_version": "0.6"
+ }
+ }
+ },
+ {
+ "_comment_": "Update for future app versions - should never be compatible",
+ "version": "3.0",
+ "update_link": "https://localhost:4444/addons/test3.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "2",
+ "advisory_max_version": "3"
+ }
+ }
+ }
+ ]
+ },
+
+ "compat-strict-optin@tests.mozilla.org": {
+ "_comment_": "Opt-in to strict compatibility checking",
+
+ "updates": [
+ {
+ "version": "1.0",
+ "update_link": "https://localhost:4444/addons/test1.xpi",
+ "_comment_": "strictCompatibility: true",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "0.1",
+ "strict_max_version": "0.2"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecheck.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecheck.rdf
new file mode 100644
index 000000000..c5d97ada0
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecheck.rdf
@@ -0,0 +1,419 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+
+ <Description about="urn:mozilla:extension:updatecheck1@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <li>
+ <Description>
+ <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>
+ <em:updateLink>https://localhost:4444/addons/test1.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ <!-- This update is incompatible and so should not be considered a valid
+ update -->
+ <li>
+ <Description>
+ <em:version>2.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>2</em:minVersion>
+ <em:maxVersion>2</em:maxVersion>
+ <em:updateLink>https://localhost:4444/addons/test2.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ <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>https://localhost:4444/addons/test3.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ <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>2</em:maxVersion>
+ <em:updateLink>https://localhost:4444/addons/test2.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ <!-- This update is incompatible and so should not be considered a valid
+ update -->
+ <li>
+ <Description>
+ <em:version>4.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>2</em:minVersion>
+ <em:maxVersion>2</em:maxVersion>
+ <em:updateLink>https://localhost:4444/addons/test4.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <!-- An update with no signature which will fail if retrieved with an update
+ key. The updateLink will also be ignored since it is not secure and there
+ is no updateHash. -->
+ <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>
+
+ <!-- An update with a broken signature which will fail if retrieved with an
+ update key. The updateLink will also be ignored since it is not secure
+ and there is no updateHash. -->
+ <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>
+
+ <!-- An update with a valid signature. The updateLink will be ignored since it
+ is not secure and there is no updateHash. -->
+ <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>
+
+ <!-- An update with a valid signature. The updateLink will used since there is
+ an updateHash to verify it. -->
+ <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>
+
+ <!-- An update with a valid signature. The updateLink will used since it is
+ a secure URL. -->
+ <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>
+
+ <!-- An update with a valid signature. The updateLink will used since it is
+ a secure URL. -->
+ <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>
+
+ <!-- An update with a valid signature. The updateLink will not be used since the
+ updateHash verifying it is not strong enough. -->
+ <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>
+
+ <!-- An update with a valid signature. The updateLink will used since it is
+ a secure URL. -->
+ <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>
+
+ <!-- There should be no information present for test_bug378216_14 -->
+
+ <!-- Invalid update RDF -->
+ <RDF:Description about="urn:mozilla:extension:test_bug378216_15@tests.mozilla.org">
+ <em:updates>Foo</em:updates>
+ </RDF:Description>
+
+ <!-- Various updates available - one is not compatible, but compatibility checking is disabled -->
+ <Description about="urn:mozilla:extension:ignore-compat@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <li>
+ <Description>
+ <em:version>1.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>0.1</em:minVersion>
+ <em:maxVersion>0.2</em:maxVersion>
+ <em:updateLink>https://localhost:4444/addons/test1.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ <li>
+ <Description>
+ <em:version>2.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>0.5</em:minVersion>
+ <em:maxVersion>0.6</em:maxVersion>
+ <em:updateLink>https://localhost:4444/addons/test2.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ <!-- Update for future app versions - should never be compatible -->
+ <li>
+ <Description>
+ <em:version>3.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>2</em:minVersion>
+ <em:maxVersion>3</em:maxVersion>
+ <em:updateLink>https://localhost:4444/addons/test3.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <!-- Various updates available - one is not compatible, but compatibility checking is disabled -->
+ <Description about="urn:mozilla:extension:compat-override@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <!-- Has compatibility override, but it doesn't match this app version -->
+ <li>
+ <Description>
+ <em:version>1.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>0.1</em:minVersion>
+ <em:maxVersion>0.2</em:maxVersion>
+ <em:updateLink>https://localhost:4444/addons/test1.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ <!-- Has compatibility override, so is incompaible -->
+ <li>
+ <Description>
+ <em:version>2.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>0.5</em:minVersion>
+ <em:maxVersion>0.6</em:maxVersion>
+ <em:updateLink>https://localhost:4444/addons/test2.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ <!-- Update for future app versions - should never be compatible -->
+ <li>
+ <Description>
+ <em:version>3.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>2</em:minVersion>
+ <em:maxVersion>3</em:maxVersion>
+ <em:updateLink>https://localhost:4444/addons/test3.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+ <!-- Opt-in to strict compatibility checking -->
+ <Description about="urn:mozilla:extension:compat-strict-optin@tests.mozilla.org">
+ <em:updates>
+ <Seq>
+ <li>
+ <Description>
+ <em:version>1.0</em:version>
+ <em:targetApplication>
+ <Description>
+ <em:id>xpcshell@tests.mozilla.org</em:id>
+ <em:minVersion>0.1</em:minVersion>
+ <em:maxVersion>0.2</em:maxVersion>
+ <em:strictCompatibility>true</em:strictCompatibility>
+ <em:updateLink>https://localhost:4444/addons/test1.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_ignore.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_ignore.rdf
new file mode 100644
index 000000000..ec6e88ec4
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_ignore.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:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+
+ <Description about="urn:mozilla:extension:compatmode-ignore@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>2</em:maxVersion>
+ <em:updateLink>https://localhost:%PORT%/addons/test1.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_normal.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_normal.rdf
new file mode 100644
index 000000000..2ef88860e
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_normal.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:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+
+ <Description about="urn:mozilla:extension:compatmode-normal@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>2</em:maxVersion>
+ <em:updateLink>https://localhost:%PORT%/addons/test1.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_strict.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_strict.rdf
new file mode 100644
index 000000000..2f72c181d
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_strict.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:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+
+ <Description about="urn:mozilla:extension:compatmode-strict@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>2</em:maxVersion>
+ <em:updateLink>https://localhost:%PORT%/addons/test1.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_updateid.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_updateid.rdf
new file mode 100644
index 000000000..c13928520
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/test_updateid.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:addon1@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_updateid2.xpi</em:updateLink>
+ </Description>
+ </em:targetApplication>
+ </Description>
+ </li>
+ </Seq>
+ </em:updates>
+ </Description>
+
+</RDF>
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/unsigned.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/unsigned.xpi
new file mode 100644
index 000000000..51b00475a
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/unsigned.xpi
Binary files differ
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/webext-implicit-id.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/webext-implicit-id.xpi
new file mode 100644
index 000000000..6b4abaa69
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/data/webext-implicit-id.xpi
Binary files differ