diff options
Diffstat (limited to 'toolkit/mozapps/webextensions')
925 files changed, 0 insertions, 87396 deletions
diff --git a/toolkit/mozapps/webextensions/.eslintrc.js b/toolkit/mozapps/webextensions/.eslintrc.js deleted file mode 100644 index 2b90bd053..000000000 --- a/toolkit/mozapps/webextensions/.eslintrc.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; - -module.exports = { // eslint-disable-line no-undef - "rules": { - // No using undeclared variables - "no-undef": "error", - } -}; diff --git a/toolkit/mozapps/webextensions/docs/SystemAddons.rst b/toolkit/mozapps/webextensions/docs/SystemAddons.rst deleted file mode 100644 index 5f724e9ef..000000000 --- a/toolkit/mozapps/webextensions/docs/SystemAddons.rst +++ /dev/null @@ -1,224 +0,0 @@ -Firefox System Add-on Update Protocol -===================================== -This document describes the protocol that Firefox uses when retrieving updates -for System Add-ons from the automatic update service (AUS, currently `Balrog`_), -and the expected behavior of Firefox based on the updater service's response. - -.. _Balrog: https://wiki.mozilla.org/Balrog - -System Add-ons --------------- -System add-ons: - -* Are add-ons that ship with Firefox, are hidden from the UI, and cannot be - disabled -* Can be updated by Firefox depending on the AUS response to Firefox's update - request -* Are stored in two locations: - - * The **default** set ships with Firefox and is stored in the application - directory. - * The **update** set is stored in the user’s profile directory. If an add-on - is both in the update and default set, the update version gets precedence. - -Update Request --------------- -To determine what updates to install, Firefox makes an HTTP **GET** request to -AUS once a day via a URL of the form:: - - https://aus5.mozilla.org/update/3/SystemAddons/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml - -The path segments surrounded by ``%`` symbols are variable fields that Firefox -fills in with information about itself and the environment it's running in: - -``VERSION`` - Firefox version number -``BUILD_ID`` - Build ID -``BUILD_TARGET`` - Build target -``LOCALE`` - Build locale -``CHANNEL`` - Update channel -``OS_VERSION`` - OS Version -``DISTRIBUTION`` - Firefox Distribution -``DISTRIBUTION_VERSION`` - Firefox Distribution version - -Update Response ---------------- -AUS should respond with an XML document that looks something like this: - -.. code-block:: xml - - <?xml version="1.0"?> - <updates> - <addons> - <addon id="flyweb@mozilla.org" URL="https://ftp.mozilla.org/pub/system-addons/flyweb/flyweb@mozilla.org-1.0.xpi" hashFunction="sha512" hashValue="abcdef123" size="1234" version="1.0"/> - <addon id="pocket@mozilla.org" URL="https://ftp.mozilla.org/pub/system-addons/pocket/pocket@mozilla.org-1.0.xpi" hashFunction="sha512" hashValue="abcdef123" size="1234" version="1.0"/> - </addons> - </updates> - -* The root element is ``<updates>``, used for all updater responses. -* The only child of ``<updates>`` is ``<addons>``, which represents a list of - system add-ons to update. -* Within ``<addons>`` are several ``<addon>`` tags, each one corresponding to a - system add-on to update. - -``<addon>`` tags **must** have the following attributes: - -``id`` - The extension ID -``URL`` - URL to a signed XPI of the specified add-on version to download -``hashFunction`` - Identifier of the hash function used to generate the hashValue attribute. -``hashValue`` - Hash of the XPI file linked from the URL attribute, calculated using the function specified in the hashValue attribute. -``size`` - Size (in bytes) of the XPI file linked from the URL attribute. -``version`` - Version number of the add-on - -Update Behavior ---------------- -After receiving the update response, Firefox modifies the **update** add-ons -according to the following algorithm: - -1. If the ``<addons>`` tag is empty (``<addons></addons>``) in the response, - **remove all system add-on updates**. -2. If no add-ons were specified in the response (i.e. the ``<addons>`` tag - is not present), do nothing and finish. -3. If the **update** add-on set is equal to the set of add-ons specified in the - update response, do nothing and finish. -4. If the set of **default** add-ons is equal to the set of add-ons specified in - the update response, remove all the **update** add-ons and finish. -5. Download each add-on specified in the update response and store them in the - "downloaded add-on set". A failed download **must** abort the entire system - add-on update. -6. Validate the downloaded add-ons. The following **must** be true for all - downloaded add-ons, or the update process is aborted: - - a. The ID and version of the downloaded add-on must match the specified ID or - version in the update response. - b. The hash provided in the update response must match the downloaded add-on - file. - c. The downloaded add-on file size must match the size given in the update - response. - d. The add-on must be compatible with Firefox (i.e. it must not be for a - different application, such as Thunderbird). - e. The add-on must be packed (i.e. be an XPI file). - f. The add-on must be restartless. - g. The add-on must be signed by the system add-on root certificate. - -6. Once all downloaded add-ons are validated, install them into the profile - directory as part of the **update** set. - -Notes on the update process: - -* Add-ons are considered "equal" if they have the same ID and version number. - -Examples --------- -The follow section describes common situations that we have or expect to run -into and how the protocol described above handles them. - -For simplicity, unless otherwise specified, all examples assume that there are -two system add-ons in existence: **FlyWeb** and **Pocket**. - -Basic -~~~~~ -A user has Firefox 45, which shipped with FlyWeb 1.0 and Pocket 1.0. We want to -update users to FlyWeb 2.0. AUS sends out the following update response: - -.. code-block:: xml - - <updates> - <addons> - <addon id="flyweb@mozilla.org" URL="https://ftp.mozilla.org/pub/system-addons/flyweb/flyweb@mozilla.org-2.0.xpi" hashFunction="sha512" hashValue="abcdef123" size="1234" version="2.0"/> - <addon id="pocket@mozilla.org" URL="https://ftp.mozilla.org/pub/system-addons/pocket/pocket@mozilla.org-1.0.xpi" hashFunction="sha512" hashValue="abcdef123" size="1234" version="1.0"/> - </addons> - </updates> - -Firefox will download FlyWeb 2.0 and Pocket 1.0 and store them in the profile directory. - -Missing Add-on -~~~~~~~~~~~~~~ -A user has Firefox 45, which shipped with FlyWeb 1.0 and Pocket 1.0. We want to -update users to FlyWeb 2.0, but accidentally forget to specify Pocket in the -update response. AUS sends out the following: - -.. code-block:: xml - - <updates> - <addons> - <addon id="flyweb@mozilla.org" URL="https://ftp.mozilla.org/pub/system-addons/flyweb/flyweb@mozilla.org-2.0.xpi" hashFunction="sha512" hashValue="abcdef123" size="1234" version="2.0"/> - </addons> - </updates> - -Firefox will download FlyWeb 2.0 and store it in the profile directory. Pocket -1.0 from the **default** location will be used. - -Remove all system add-on updates -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -A response from AUS with an empty add-on set will *remove all system add-on -updates*: - -.. code-block:: xml - - <updates> - <addons></addons> - </updates> - -Rollout -~~~~~~~ -A user has Firefox 45, which shipped with FlyWeb 1.0 and Pocket 1.0. We want to -rollout FlyWeb 2.0 at a 10% sample rate. 10% of the time, AUS sends out: - -.. code-block:: xml - - <updates> - <addons> - <addon id="flyweb@mozilla.org" URL="https://ftp.mozilla.org/pub/system-addons/flyweb/flyweb@mozilla.org-2.0.xpi" hashFunction="sha512" hashValue="abcdef123" size="1234" version="2.0"/> - <addon id="pocket@mozilla.org" URL="https://ftp.mozilla.org/pub/system-addons/pocket/pocket@mozilla.org-1.0.xpi" hashFunction="sha512" hashValue="abcdef123" size="1234" version="1.0"/> - </addons> - </updates> - -With this response, Firefox will download Pocket 1.0 and FlyWeb 2.0 and install -them into the profile directory. - -The other 90% of the time, AUS sends out an empty response: - -.. code-block:: xml - - <updates></updates> - -With the empty response, Firefox will not make any changes. This means users who -haven’t seen the 10% update response will stay on FlyWeb 1.0, and users who have -seen it will stay on FlyWeb 2.0. - -Once we’re happy with the rollout and want to switch to 100%, AUS will send the -10% update response to 100% of users, upgrading everyone to FlyWeb 2.0. - -Rollback -~~~~~~~~ -This example continues from the “Rollout” example. If, during the 10% rollout, -we find a major issue with FlyWeb 2.0, we want to roll all users back to FlyWeb 1.0. -AUS sends out the following: - -.. code-block:: xml - - <updates> - <addons> - <addon id="flyweb@mozilla.org" URL="https://ftp.mozilla.org/pub/system-addons/flyweb/flyweb@mozilla.org-1.0.xpi" hashFunction="sha512" hashValue="abcdef123" size="1234" version="1.0"/> - <addon id="pocket@mozilla.org" URL="https://ftp.mozilla.org/pub/system-addons/pocket/pocket@mozilla.org-1.0.xpi" hashFunction="sha512" hashValue="abcdef123" size="1234" version="1.0"/> - </addons> - </updates> - -For users who have updated, Firefox will download FlyWeb 1.0 and Pocket 1.0 and -install them into the profile directory. For users that haven’t yet updated, -Firefox will see that the **default** add-on set matches the set in the update -ping and clear the **update** add-on set. diff --git a/toolkit/mozapps/webextensions/docs/index.rst b/toolkit/mozapps/webextensions/docs/index.rst deleted file mode 100644 index ab6ed3c70..000000000 --- a/toolkit/mozapps/webextensions/docs/index.rst +++ /dev/null @@ -1,14 +0,0 @@ -============== -Add-on Manager -============== - -This is the nascent documentation of the Add-on Manager code. - -The public Add-on Manager interfaces are documented on MDN: - -https://developer.mozilla.org/en-US/Add-ons/Add-on_Manager - -.. toctree:: - :maxdepth: 1 - - SystemAddons diff --git a/toolkit/mozapps/webextensions/moz.build b/toolkit/mozapps/webextensions/moz.build index 3e1cf856d..e703125e6 100644 --- a/toolkit/mozapps/webextensions/moz.build +++ b/toolkit/mozapps/webextensions/moz.build @@ -4,10 +4,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -SPHINX_TREES['addon-manager'] = 'docs' - DIRS += ['internal'] -TEST_DIRS += ['test'] XPIDL_SOURCES += [ '../extensions/amIAddonManager.idl', @@ -56,6 +53,3 @@ LOCAL_INCLUDES += [ ] FINAL_LIBRARY = 'xul' - -with Files('**'): - BUG_COMPONENT = ('Toolkit', 'Add-ons Manager') diff --git a/toolkit/mozapps/webextensions/test/AddonManagerTesting.jsm b/toolkit/mozapps/webextensions/test/AddonManagerTesting.jsm deleted file mode 100644 index eb9a92195..000000000 --- a/toolkit/mozapps/webextensions/test/AddonManagerTesting.jsm +++ /dev/null @@ -1,115 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -// This file is a test-only JSM containing utility methods for -// interacting with the add-ons manager. - -"use strict"; - -this.EXPORTED_SYMBOLS = [ - "AddonManagerTesting", -]; - -const {utils: Cu} = Components; - -Cu.import("resource://gre/modules/Promise.jsm"); -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -XPCOMUtils.defineLazyModuleGetter(this, "AddonManager", - "resource://gre/modules/AddonManager.jsm"); - -this.AddonManagerTesting = { - /** - * Get the add-on that is specified by its ID. - * - * @return {Promise<Object>} A promise that resolves returning the found addon or null - * if it is not found. - */ - getAddonById: function (id) { - return new Promise(resolve => AddonManager.getAddonByID(id, addon => resolve(addon))); - }, - - /** - * Uninstall an add-on that is specified by its ID. - * - * The returned promise resolves on successful uninstall and rejects - * if the add-on is not unknown. - * - * @return Promise<restartRequired> - */ - uninstallAddonByID: function (id) { - let deferred = Promise.defer(); - - AddonManager.getAddonByID(id, (addon) => { - if (!addon) { - deferred.reject(new Error("Add-on is not known: " + id)); - return; - } - - let listener = { - onUninstalling: function (addon, needsRestart) { - if (addon.id != id) { - return; - } - - if (needsRestart) { - AddonManager.removeAddonListener(listener); - deferred.resolve(true); - } - }, - - onUninstalled: function (addon) { - if (addon.id != id) { - return; - } - - AddonManager.removeAddonListener(listener); - deferred.resolve(false); - }, - - onOperationCancelled: function (addon) { - if (addon.id != id) { - return; - } - - AddonManager.removeAddonListener(listener); - deferred.reject(new Error("Uninstall cancelled.")); - }, - }; - - AddonManager.addAddonListener(listener); - addon.uninstall(); - }); - - return deferred.promise; - }, - - /** - * Install an XPI add-on from a URL. - * - * @return Promise<addon> - */ - installXPIFromURL: function (url, hash, name, iconURL, version) { - let deferred = Promise.defer(); - - AddonManager.getInstallForURL(url, (install) => { - let fail = () => { deferred.reject(new Error("Add-on install failed.")) }; - - let listener = { - onDownloadCancelled: fail, - onDownloadFailed: fail, - onInstallCancelled: fail, - onInstallFailed: fail, - onInstallEnded: function (install, addon) { - deferred.resolve(addon); - }, - }; - - install.addListener(listener); - install.install(); - }, "application/x-xpinstall", hash, name, iconURL, version); - - return deferred.promise; - }, -}; diff --git a/toolkit/mozapps/webextensions/test/Makefile.in b/toolkit/mozapps/webextensions/test/Makefile.in deleted file mode 100644 index 6c667ecab..000000000 --- a/toolkit/mozapps/webextensions/test/Makefile.in +++ /dev/null @@ -1,20 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -ADDONSRC = $(srcdir)/addons -TESTROOT = $(CURDIR)/$(DEPTH)/_tests/xpcshell/$(relativesrcdir) -TESTXPI = $(TESTROOT)/xpcshell/addons - -include $(topsrcdir)/config/rules.mk - -libs:: - rm -rf $(TESTXPI) - $(NSINSTALL) -D $(TESTXPI) - if [ -d $(ADDONSRC) ]; then \ - $(EXIT_ON_ERROR) \ - for dir in $(ADDONSRC)/*; do \ - base=`basename $$dir` ; \ - (cd $$dir && zip -qr $(TESTXPI)/$$base.xpi *) \ - done \ - fi diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_hard1_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_hard1_1/install.rdf deleted file mode 100644 index 7b1b02a17..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_hard1_1/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>hardblock@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:name>Hardblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_hard1_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_hard1_2/install.rdf deleted file mode 100644 index ae364637e..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_hard1_2/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>hardblock@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:name>Hardblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_hard1_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_hard1_3/install.rdf deleted file mode 100644 index 568c41a43..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_hard1_3/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>hardblock@tests.mozilla.org</em:id> - <em:version>3.0</em:version> - <em:name>Hardblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_regexp1_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_regexp1_1/install.rdf deleted file mode 100644 index 1281ab53f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_regexp1_1/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>regexpblock@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:name>RegExp-blocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_regexp1_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_regexp1_2/install.rdf deleted file mode 100644 index 8b6dd09f5..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_regexp1_2/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>regexpblock@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:name>RegExp-blocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_regexp1_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_regexp1_3/install.rdf deleted file mode 100644 index fade395f9..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_regexp1_3/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>regexpblock@tests.mozilla.org</em:id> - <em:version>3.0</em:version> - <em:name>RegExp-blocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft1_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft1_1/install.rdf deleted file mode 100644 index 4a18f64e0..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft1_1/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:name>Softblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft1_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft1_2/install.rdf deleted file mode 100644 index 8a2519222..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft1_2/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock1@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:name>Softblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft1_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft1_3/install.rdf deleted file mode 100644 index 2c55e5ff7..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft1_3/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock1@tests.mozilla.org</em:id> - <em:version>3.0</em:version> - <em:name>Softblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft2_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft2_1/install.rdf deleted file mode 100644 index eebac4b21..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft2_1/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock2@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:name>Softblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft2_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft2_2/install.rdf deleted file mode 100644 index f37741d04..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft2_2/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock2@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:name>Softblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft2_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft2_3/install.rdf deleted file mode 100644 index e15f99264..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft2_3/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock2@tests.mozilla.org</em:id> - <em:version>3.0</em:version> - <em:name>Softblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft3_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft3_1/install.rdf deleted file mode 100644 index f4b70a24b..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft3_1/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock3@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:name>Softblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft3_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft3_2/install.rdf deleted file mode 100644 index 987204fa6..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft3_2/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock3@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:name>Softblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft3_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft3_3/install.rdf deleted file mode 100644 index 19ab4b9fe..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft3_3/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock3@tests.mozilla.org</em:id> - <em:version>3.0</em:version> - <em:name>Softblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft4_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft4_1/install.rdf deleted file mode 100644 index a3cd06f5f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft4_1/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock4@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:name>Softblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft4_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft4_2/install.rdf deleted file mode 100644 index eeff9fb79..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft4_2/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock4@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:name>Softblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft4_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft4_3/install.rdf deleted file mode 100644 index 1d2650603..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft4_3/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock4@tests.mozilla.org</em:id> - <em:version>3.0</em:version> - <em:name>Softblocked add-on</em:name> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft5_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft5_1/install.rdf deleted file mode 100644 index 85d7108d6..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft5_1/install.rdf +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock5@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:name>Softblocked add-on</em:name> - <em:internalName>test/1.0</em:internalName> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft5_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft5_2/install.rdf deleted file mode 100644 index 394fd909e..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft5_2/install.rdf +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock5@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:name>Softblocked add-on</em:name> - <em:internalName>test/1.0</em:internalName> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/blocklist_soft5_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/blocklist_soft5_3/install.rdf deleted file mode 100644 index 2a1fec25a..000000000 --- a/toolkit/mozapps/webextensions/test/addons/blocklist_soft5_3/install.rdf +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>softblock5@tests.mozilla.org</em:id> - <em:version>3.0</em:version> - <em:name>Softblocked add-on</em:name> - <em:internalName>test/1.0</em:internalName> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/bootstrap_globals/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/bootstrap_globals/bootstrap.js deleted file mode 100644 index a5d5beb34..000000000 --- a/toolkit/mozapps/webextensions/test/addons/bootstrap_globals/bootstrap.js +++ /dev/null @@ -1,29 +0,0 @@ -Components.utils.import("resource://gre/modules/Services.jsm"); - -var seenGlobals = new Set(); -var scope = this; -function checkGlobal(name, type) { - if (scope[name] && typeof(scope[name]) == type) - seenGlobals.add(name); -} - -var wrapped = {}; -Services.obs.notifyObservers({ wrappedJSObject: wrapped }, "bootstrap-request-globals", null); -for (let [name, type] of wrapped.expectedGlobals) { - checkGlobal(name, type); -} - -function install(data, reason) { -} - -function startup(data, reason) { - Services.obs.notifyObservers({ - wrappedJSObject: seenGlobals - }, "bootstrap-seen-globals", null); -} - -function shutdown(data, reason) { -} - -function uninstall(data, reason) { -} diff --git a/toolkit/mozapps/webextensions/test/addons/bootstrap_globals/install.rdf b/toolkit/mozapps/webextensions/test/addons/bootstrap_globals/install.rdf deleted file mode 100644 index f11a626fd..000000000 --- a/toolkit/mozapps/webextensions/test/addons/bootstrap_globals/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bootstrap_globals@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <!-- Front End MetaData --> - <em:name>Test Bootstrap Globals</em:name> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/min1max1/install.rdf b/toolkit/mozapps/webextensions/test/addons/min1max1/install.rdf deleted file mode 100644 index 3a0ace227..000000000 --- a/toolkit/mozapps/webextensions/test/addons/min1max1/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>min1max1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Test minVersion 1 maxVersion 1</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/min1max2/install.rdf b/toolkit/mozapps/webextensions/test/addons/min1max2/install.rdf deleted file mode 100644 index 0184f1963..000000000 --- a/toolkit/mozapps/webextensions/test/addons/min1max2/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>min1max2@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>2</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Test minVersion 1 maxVersion 2</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/min1max3/install.rdf b/toolkit/mozapps/webextensions/test/addons/min1max3/install.rdf deleted file mode 100644 index dbb1b7318..000000000 --- a/toolkit/mozapps/webextensions/test/addons/min1max3/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>min1max3@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>3</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Test minVersion 1 maxVersion 3</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/min1max3b/install.rdf b/toolkit/mozapps/webextensions/test/addons/min1max3b/install.rdf deleted file mode 100644 index f50c65c6a..000000000 --- a/toolkit/mozapps/webextensions/test/addons/min1max3b/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>min1max3b@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>3</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Another Test minVersion 1 maxVersion 3</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/override1x2-1x3/install.rdf b/toolkit/mozapps/webextensions/test/addons/override1x2-1x3/install.rdf deleted file mode 100644 index 92cf3ec96..000000000 --- a/toolkit/mozapps/webextensions/test/addons/override1x2-1x3/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>override1x2-1x3@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:updateURL>http://localhost:4444/data/test_bug542391.rdf</em:updateURL> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>2</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Test override compat from 1..2 to 1..3</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_1/install.rdf deleted file mode 100644 index 82cfd0472..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_1/install.rdf +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>test_AddonRepository_1@tests.mozilla.org</em:id> - <em:version>1.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> - - <!-- Front End MetaData --> - <em:name>XPI Add-on 1</em:name> - <em:description>XPI Add-on 1 - Description</em:description> - <em:creator>XPI Add-on 1 - Creator</em:creator> - <em:developer>XPI Add-on 1 - First Developer</em:developer> - <em:developer>XPI Add-on 1 - Second Developer</em:developer> - <em:translator>XPI Add-on 1 - First Translator</em:translator> - <em:translator>XPI Add-on 1 - Second Translator</em:translator> - <em:contributor>XPI Add-on 1 - First Contributor</em:contributor> - <em:contributor>XPI Add-on 1 - Second Contributor</em:contributor> - <em:homepageURL>http://localhost/xpi/1/homepage.html</em:homepageURL> - <em:optionsURL>http://localhost/xpi/1/options.html</em:optionsURL> - <em:aboutURL>http://localhost/xpi/1/about.html</em:aboutURL> - <em:iconURL>http://localhost/xpi/1/icon.png</em:iconURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_2/install.rdf deleted file mode 100644 index 80776e6c3..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_2/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>test_AddonRepository_2@tests.mozilla.org</em:id> - <em:type>4</em:type> - <em:internalName>test2/1.0</em:internalName> - <em:version>1.2</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>XPI Add-on 2</em:name> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_3/icon.png b/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_3/icon.png deleted file mode 100644 index 41409edfe..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_3/icon.png +++ /dev/null @@ -1 +0,0 @@ -Fake icon image diff --git a/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_3/install.rdf deleted file mode 100644 index bade9c069..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_3/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>test_AddonRepository_3@tests.mozilla.org</em:id> - <em:type>4</em:type> - <em:internalName>test3/1.0</em:internalName> - <em:version>1.3</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>XPI Add-on 3</em:name> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_3/preview.png b/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_3/preview.png deleted file mode 100644 index 321ce47cf..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_AddonRepository_3/preview.png +++ /dev/null @@ -1 +0,0 @@ -Fake preview image diff --git a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_1/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_1/bootstrap.js deleted file mode 100644 index 1666f2972..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_1/bootstrap.js +++ /dev/null @@ -1 +0,0 @@ -Components.utils.import("resource://xpcshell-data/BootstrapMonitor.jsm").monitor(this); diff --git a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_1/install.rdf deleted file mode 100644 index f02a3869c..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_1/install.rdf +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>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/addons/test_bootstrap1_1/version.jsm b/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_1/version.jsm deleted file mode 100644 index 7fe60e632..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_1/version.jsm +++ /dev/null @@ -1,3 +0,0 @@ -this.EXPORTED_SYMBOLS = ["VERSION"]; - -this.VERSION = 1; diff --git a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_2/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_2/bootstrap.js deleted file mode 100644 index 1666f2972..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_2/bootstrap.js +++ /dev/null @@ -1 +0,0 @@ -Components.utils.import("resource://xpcshell-data/BootstrapMonitor.jsm").monitor(this); diff --git a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_2/install.rdf deleted file mode 100644 index 480f03fd1..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_2/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bootstrap1@tests.mozilla.org</em:id> - <em:version>2.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: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/addons/test_bootstrap1_2/version.jsm b/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_2/version.jsm deleted file mode 100644 index 532741e12..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_2/version.jsm +++ /dev/null @@ -1,3 +0,0 @@ -this.EXPORTED_SYMBOLS = ["VERSION"]; - -this.VERSION = 2; diff --git a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_3/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_3/bootstrap.js deleted file mode 100644 index 1666f2972..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_3/bootstrap.js +++ /dev/null @@ -1 +0,0 @@ -Components.utils.import("resource://xpcshell-data/BootstrapMonitor.jsm").monitor(this); diff --git a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_3/install.rdf deleted file mode 100644 index e9385cbb3..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_3/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bootstrap1@tests.mozilla.org</em:id> - <em:version>3.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:targetApplication> - <Description> - <em:id>undefined</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_3/version.jsm b/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_3/version.jsm deleted file mode 100644 index 1b813faaf..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_3/version.jsm +++ /dev/null @@ -1,3 +0,0 @@ -this.EXPORTED_SYMBOLS = ["VERSION"]; - -this.VERSION = 3; diff --git a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_4/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_4/install.rdf deleted file mode 100644 index 2b88e0ad0..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap1_4/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bootstrap1@tests.mozilla.org</em:id> - <em:version>4.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test Bootstrap 1</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bootstrap2_1/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_bootstrap2_1/bootstrap.js deleted file mode 100644 index 1666f2972..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap2_1/bootstrap.js +++ /dev/null @@ -1 +0,0 @@ -Components.utils.import("resource://xpcshell-data/BootstrapMonitor.jsm").monitor(this); diff --git a/toolkit/mozapps/webextensions/test/addons/test_bootstrap2_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bootstrap2_1/install.rdf deleted file mode 100644 index e0e8ca978..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap2_1/install.rdf +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bootstrap2@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <!-- Front End MetaData --> - <em:name>Test Bootstrap 2</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/addons/test_bootstrap_const/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_bootstrap_const/bootstrap.js deleted file mode 100644 index 0e45caec4..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap_const/bootstrap.js +++ /dev/null @@ -1,5 +0,0 @@ -Components.utils.import("resource://gre/modules/Services.jsm"); - -const install = function() { - Services.obs.notifyObservers(null, "addon-install", ""); -} diff --git a/toolkit/mozapps/webextensions/test/addons/test_bootstrap_const/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bootstrap_const/install.rdf deleted file mode 100644 index 898282991..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bootstrap_const/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bootstrap@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <!-- Front End MetaData --> - <em:name>Test Bootstrap</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_2/install.rdf deleted file mode 100644 index 791a6263f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_2/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-2@tests.mozilla.org</em:id> - <em:version>0.1</em:version> - - <!-- XPCShell --> - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Toolkit --> - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>1.9</em:minVersion> - <em:maxVersion>1.9</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716_2.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_a_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_a_1/install.rdf deleted file mode 100644 index 36d15b8aa..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_a_1/install.rdf +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-a@tests.mozilla.org</em:id> - <em:version>0.1</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>5</em:minVersion> - <em:maxVersion>5</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test A</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_a_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_a_2/install.rdf deleted file mode 100644 index 3521a503c..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_a_2/install.rdf +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-a@tests.mozilla.org</em:id> - <em:version>0.2</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>5</em:minVersion> - <em:maxVersion>5</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test A</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_b_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_b_1/install.rdf deleted file mode 100644 index d92a4ec41..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_b_1/install.rdf +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-b@tests.mozilla.org</em:id> - <em:version>0.1</em:version> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>1.9</em:minVersion> - <em:maxVersion>1.9</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test B</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_b_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_b_2/install.rdf deleted file mode 100644 index c3ad76b84..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_b_2/install.rdf +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-b@tests.mozilla.org</em:id> - <em:version>0.2</em:version> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>1.9</em:minVersion> - <em:maxVersion>1.9</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test B</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_c_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_c_1/install.rdf deleted file mode 100644 index a937b6e76..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_c_1/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-c@tests.mozilla.org</em:id> - <em:version>0.1</em:version> - - <!-- XPCShell --> - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>5</em:minVersion> - <em:maxVersion>5</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Toolkit --> - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>1.9</em:minVersion> - <em:maxVersion>1.9</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test C</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_c_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_c_2/install.rdf deleted file mode 100644 index 8afca3ff9..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_c_2/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-c@tests.mozilla.org</em:id> - <em:version>0.2</em:version> - - <!-- XPCShell --> - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>5</em:minVersion> - <em:maxVersion>5</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Toolkit --> - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>1.9</em:minVersion> - <em:maxVersion>1.9</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test C</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_d_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_d_1/install.rdf deleted file mode 100644 index 4c0dcc2ef..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_d_1/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-d@tests.mozilla.org</em:id> - <em:version>0.1</em:version> - - <!-- XPCShell --> - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>5</em:minVersion> - <em:maxVersion>5</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Toolkit, invalid --> - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>30</em:minVersion> - <em:maxVersion>30</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test D</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_d_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_d_2/install.rdf deleted file mode 100644 index 2b113809a..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_d_2/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-d@tests.mozilla.org</em:id> - <em:version>0.2</em:version> - - <!-- XPCShell --> - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>5</em:minVersion> - <em:maxVersion>5</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Toolkit, invalid --> - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>30</em:minVersion> - <em:maxVersion>30</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test D</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_e_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_e_1/install.rdf deleted file mode 100644 index 03eb7180e..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_e_1/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-e@tests.mozilla.org</em:id> - <em:version>0.1</em:version> - - <!-- Toolkit --> - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>1.9</em:minVersion> - <em:maxVersion>1.9</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- XPCShell, invalid --> - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>30</em:minVersion> - <em:maxVersion>30</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test E</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_e_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_e_2/install.rdf deleted file mode 100644 index 3ed7cd932..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_e_2/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-e@tests.mozilla.org</em:id> - <em:version>0.2</em:version> - - <!-- Toolkit --> - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>1.9</em:minVersion> - <em:maxVersion>1.9</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- XPCShell, invalid --> - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>30</em:minVersion> - <em:maxVersion>30</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test E</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_f_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_f_1/install.rdf deleted file mode 100644 index cacf824c1..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_f_1/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-f@tests.mozilla.org</em:id> - <em:version>0.1</em:version> - - <!-- Toolkit, invalid --> - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>30</em:minVersion> - <em:maxVersion>30</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- XPCShell, invalid --> - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>30</em:minVersion> - <em:maxVersion>30</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test F</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_f_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_f_2/install.rdf deleted file mode 100644 index 09954ec36..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_f_2/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-f@tests.mozilla.org</em:id> - <em:version>0.2</em:version> - - <!-- Toolkit, invalid --> - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>30</em:minVersion> - <em:maxVersion>30</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- XPCShell, invalid --> - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>30</em:minVersion> - <em:maxVersion>30</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test F</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_g_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_g_1/install.rdf deleted file mode 100644 index 5e4a6f6a2..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_g_1/install.rdf +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-g@tests.mozilla.org</em:id> - <em:version>0.1</em:version> - - <!-- Toolkit, invalid --> - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>30</em:minVersion> - <em:maxVersion>30</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test G</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug299716_g_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug299716_g_2/install.rdf deleted file mode 100644 index 913233cec..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug299716_g_2/install.rdf +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>bug299716-g@tests.mozilla.org</em:id> - <em:version>0.2</em:version> - - <!-- Toolkit, invalid --> - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>30</em:minVersion> - <em:maxVersion>30</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 299716 test G</em:name> - <em:updateURL>http://localhost:4444/data/test_bug299716.rdf</em:updateURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug324121_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug324121_1/install.rdf deleted file mode 100644 index fd0dd50b7..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug324121_1/install.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> - -<!-- Compatible to install --> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug324121_1@tests.mozilla.org</em:id> - <em:version>1</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>2</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 324121 Test 1</em:name> - <em:updateURL>http://localhost:4444/data/test_bug324121_1.rdf</em:updateURL> - - </Description> -</RDF> - diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug324121_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug324121_2/install.rdf deleted file mode 100644 index 607b68357..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug324121_2/install.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> - -<!-- Compatible to install --> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug324121_2@tests.mozilla.org</em:id> - <em:version>1</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>2</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 324121 Test 2</em:name> - <em:updateURL>http://localhost:4444/data/test_bug324121.rdf</em:updateURL> - - </Description> -</RDF> - diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug324121_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug324121_3/install.rdf deleted file mode 100644 index 3a4c7eafc..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug324121_3/install.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> - -<!-- Compatible to install --> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug324121_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>2</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 324121 Test 5</em:name> - <em:updateURL>http://localhost:4444/data/test_bug324121.rdf</em:updateURL> - - </Description> -</RDF> - diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug324121_4/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug324121_4/install.rdf deleted file mode 100644 index 8557df116..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug324121_4/install.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> - -<!-- Compatible to install --> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug324121_4@tests.mozilla.org</em:id> - <em:version>1</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>2</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 324121 Test 4</em:name> - <em:updateURL>http://localhost:4444/data/test_bug324121_4.rdf</em:updateURL> - - </Description> -</RDF> - diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug324121_5/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug324121_5/install.rdf deleted file mode 100644 index 343a9d44c..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug324121_5/install.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> - -<!-- Compatible to install --> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug324121_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>Bug 324121 Test 5</em:name> - <em:updateURL>http://localhost:4444/data/test_bug324121_5.rdf</em:updateURL> - - </Description> -</RDF> - diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug324121_6/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug324121_6/install.rdf deleted file mode 100644 index 5a724cc99..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug324121_6/install.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> - -<!-- Compatible to install --> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug324121_6@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>Bug 324121 Test 6</em:name> - <em:updateURL>http://localhost:4444/data/test_bug324121.rdf</em:updateURL> - - </Description> -</RDF> - diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug324121_7/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug324121_7/install.rdf deleted file mode 100644 index 70fe81168..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug324121_7/install.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> - -<!-- Compatible to install --> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug324121_7@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>Bug 324121 Test 7</em:name> - <em:updateURL>http://localhost:4444/data/test_bug324121.rdf</em:updateURL> - - </Description> -</RDF> - diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug324121_8/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug324121_8/install.rdf deleted file mode 100644 index 2aface3b4..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug324121_8/install.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> - -<!-- Compatible to install --> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug324121_8@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>Bug 324121 Test 8</em:name> - <em:updateURL>http://localhost:4444/data/test_bug324121_8.rdf</em:updateURL> - - </Description> -</RDF> - diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug324121_9/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug324121_9/install.rdf deleted file mode 100644 index 7804e833c..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug324121_9/install.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> - -<!-- Compatible to install --> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug324121_9@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>3</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 324121 Test 9</em:name> - <em:updateURL>http://localhost:4444/data/test_bug324121_9.rdf</em:updateURL> - - </Description> -</RDF> - diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug335238_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug335238_1/install.rdf deleted file mode 100644 index c60b5711b..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug335238_1/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug335238_1@tests.mozilla.org</em:id> - <em:version>1.3.4</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>5</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 335238</em:name> - <em:updateURL>http://localhost:4444/0?id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appId=%APP_ID%&appVersion=%APP_VERSION%&appOs=%APP_OS%&appAbi=%APP_ABI%&locale=%APP_LOCALE%&reqVersion=%REQ_VERSION%</em:updateURL> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug335238_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug335238_2/install.rdf deleted file mode 100644 index 23faf5a34..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug335238_2/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug335238_2@tests.mozilla.org</em:id> - <em:version>28at</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>7</em:maxVersion> - </Description> - </em:targetApplication> - - <em:requires> - <Description> - <em:id>unknown@tests.mozilla.org</em:id> - <em:minVersion>2</em:minVersion> - <em:maxVersion>72</em:maxVersion> - </Description> - </em:requires> - - <em:name>Bug 335238</em:name> - <em:updateURL>http://localhost:4444/1?id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appId=%APP_ID%&appVersion=%APP_VERSION%&appOs=%APP_OS%&appAbi=%APP_ABI%&locale=%APP_LOCALE%&reqVersion=%REQ_VERSION%</em:updateURL> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug335238_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug335238_3/install.rdf deleted file mode 100644 index d44448208..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug335238_3/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug335238_3@tests.mozilla.org</em:id> - <em:version>58</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:requires> - <Description> - <em:id>unknown@tests.mozilla.org</em:id> - <em:minVersion>2</em:minVersion> - <em:maxVersion>72</em:maxVersion> - </Description> - </em:requires> - - <em:name>Bug 335238</em:name> - <em:updateURL>http://localhost:4444/2?id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appId=%APP_ID%&appVersion=%APP_VERSION%&appOs=%APP_OS%&appAbi=%APP_ABI%&locale=%APP_LOCALE%&reqVersion=%REQ_VERSION%</em:updateURL> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug335238_4/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug335238_4/install.rdf deleted file mode 100644 index 6ec052d36..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug335238_4/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug335238_4@tests.mozilla.org</em:id> - <em:version>4</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>2+</em:maxVersion> - </Description> - </em:targetApplication> - - <em:requires> - <Description> - <em:id>unknown@tests.mozilla.org</em:id> - <em:minVersion>2</em:minVersion> - <em:maxVersion>72</em:maxVersion> - </Description> - </em:requires> - - <em:name>Bug 335238</em:name> - <em:updateURL>http://localhost:4444/3?id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appId=%APP_ID%&appVersion=%APP_VERSION%&appOs=%APP_OS%&appAbi=%APP_ABI%&locale=%APP_LOCALE%&reqVersion=%REQ_VERSION%</em:updateURL> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug371495/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug371495/install.rdf deleted file mode 100644 index c60caf594..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug371495/install.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug371495@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Test theme</em:name> - <em:type>4</em:type> - <em:internalName>test/1.0</em:internalName> - <em:optionsURL>chrome://foo/content/bar.xul</em:optionsURL> - <em:aboutURL>chrome://foo/content/bar.xul</em:aboutURL> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug394300_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug394300_1/install.rdf deleted file mode 100644 index 2e5ace760..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug394300_1/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug394300_1@tests.mozilla.org</em:id> - <em:version>5</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 394300 Test 1</em:name> - <em:updateURL>http://localhost:4444/test_bug394300.rdf</em:updateURL> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug394300_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug394300_2/install.rdf deleted file mode 100644 index ae54424d1..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug394300_2/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug394300_2@tests.mozilla.org</em:id> - <em:version>5</em:version> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>1.9</em:minVersion> - <em:maxVersion>1.9</em:maxVersion> - </Description> - </em:targetApplication> - - <em:name>Bug 394300 Test 2</em:name> - <em:updateURL>http://localhost:4444/test_bug394300.rdf</em:updateURL> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug397778/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug397778/install.rdf deleted file mode 100644 index cfcfd406f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug397778/install.rdf +++ /dev/null @@ -1,78 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug397778@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - <em:localized> - <Description em:locale="fr"> - <em:name>fr Name</em:name> - <em:description>fr Description</em:description> - </Description> - </em:localized> - - <em:localized> - <Description em:locale="de-DE"> - <em:name>de-DE Name</em:name> - </Description> - </em:localized> - - <em:localized> - <Description em:locale="ES-es"> - <em:name>es-ES Name</em:name> - <em:description>es-ES Description</em:description> - </Description> - </em:localized> - - <em:localized> - <Description em:locale="zh-TW"> - <em:name>zh-TW Name</em:name> - <em:description>zh-TW Description</em:description> - </Description> - </em:localized> - - <em:localized> - <Description em:locale="zh-CN"> - <em:name>zh-CN Name</em:name> - <em:description>zh-CN Description</em:description> - </Description> - </em:localized> - - <em:localized> - <Description em:locale="en-GB"> - <em:name>en-GB Name</em:name> - <em:description>en-GB Description</em:description> - </Description> - </em:localized> - - <em:localized> - <Description em:locale="en"> - <em:name>en Name</em:name> - <em:description>en Description</em:description> - </Description> - </em:localized> - - <em:localized> - <Description em:locale="en-CA"> - <em:name>en-CA Name</em:name> - <em:description>en-CA Description</em:description> - </Description> - </em:localized> - - <!-- Front End MetaData --> - <em:name>Fallback Name</em:name> - <em:description>Fallback Description</em:description> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug425657/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug425657/install.rdf deleted file mode 100644 index e4e1b339b..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug425657/install.rdf +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#">
- <Description about="urn:mozilla:install-manifest">
- <em:id>bug425657@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>Deutsches Wörterbuch</em:name>
- </Description>
-</RDF>
diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug470377_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug470377_1/install.rdf deleted file mode 100644 index 5397e8a87..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug470377_1/install.rdf +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>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/addons/test_bug470377_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug470377_2/install.rdf deleted file mode 100644 index b1dde7f7a..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug470377_2/install.rdf +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>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/addons/test_bug470377_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug470377_3/install.rdf deleted file mode 100644 index ae483434a..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug470377_3/install.rdf +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>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/addons/test_bug470377_4/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug470377_4/install.rdf deleted file mode 100644 index 97abacc5e..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug470377_4/install.rdf +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>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/addons/test_bug470377_5/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug470377_5/install.rdf deleted file mode 100644 index bff1104a7..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug470377_5/install.rdf +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>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/addons/test_bug521905/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug521905/install.rdf deleted file mode 100644 index 444bdc556..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug521905/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug521905@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Bug 521905</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug567173/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug567173/install.rdf deleted file mode 100644 index f97bd1302..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug567173/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug567173</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Test Bug 567173</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug567184/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_bug567184/bootstrap.js deleted file mode 100644 index 09c083532..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug567184/bootstrap.js +++ /dev/null @@ -1,7 +0,0 @@ -function install(data, reason) { } - -function startup(data, reason) { } - -function shutdown(data, reason) { } - -function uninstall(data, reason) {} diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug567184/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug567184/install.rdf deleted file mode 100644 index 1e13ceb87..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug567184/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug567184@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <!-- Front End MetaData --> - <em:name>Bug 567184 Test</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>undefined</em:minVersion> - <em:maxVersion>undefined</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug587088_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug587088_1/install.rdf deleted file mode 100644 index 83220ce06..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug587088_1/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Bug 587088 Test</em:name> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug587088_1/testfile b/toolkit/mozapps/webextensions/test/addons/test_bug587088_1/testfile deleted file mode 100644 index d2277257f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug587088_1/testfile +++ /dev/null @@ -1 +0,0 @@ -Contents of add-on version 1 diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug587088_1/testfile1 b/toolkit/mozapps/webextensions/test/addons/test_bug587088_1/testfile1 deleted file mode 100644 index e69de29bb..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug587088_1/testfile1 +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug587088_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug587088_2/install.rdf deleted file mode 100644 index ba23ab802..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug587088_2/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon1@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - - <!-- Front End MetaData --> - <em:name>Bug 587088 Test</em:name> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug587088_2/testfile b/toolkit/mozapps/webextensions/test/addons/test_bug587088_2/testfile deleted file mode 100644 index 07afddfa7..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug587088_2/testfile +++ /dev/null @@ -1 +0,0 @@ -Contents of add-on version 2 diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug587088_2/testfile2 b/toolkit/mozapps/webextensions/test/addons/test_bug587088_2/testfile2 deleted file mode 100644 index e69de29bb..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug587088_2/testfile2 +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug594058/directory/file1 b/toolkit/mozapps/webextensions/test/addons/test_bug594058/directory/file1 deleted file mode 100644 index e69de29bb..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug594058/directory/file1 +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug594058/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug594058/install.rdf deleted file mode 100644 index 682831949..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug594058/install.rdf +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug594058@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>2</em:maxVersion> - </Description> - </em:targetApplication> - <em:name>bug 594058</em:name> - <em:description>stat-based invalidation</em:description> - <em:unpack>true</em:unpack> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug595573/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug595573/install.rdf deleted file mode 100644 index 36c03fd00..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug595573/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<!-- An extension that is compatible with the XPCShell test suite --> -<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>{2f69dacd-03df-4150-a9f1-e8a7b2748829}</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 1</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug655254/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug655254/install.rdf deleted file mode 100644 index a3fa0d707..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug655254/install.rdf +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:name>Test 1</em:name> - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug655254_2/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_bug655254_2/bootstrap.js deleted file mode 100644 index b79648e89..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug655254_2/bootstrap.js +++ /dev/null @@ -1,9 +0,0 @@ -Components.utils.import("resource://gre/modules/Services.jsm"); - -function startup(data, reason) { - Services.prefs.setIntPref("bootstraptest.active_version", 1); -} - -function shutdown(data, reason) { - Services.prefs.setIntPref("bootstraptest.active_version", 0); -} diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug655254_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug655254_2/install.rdf deleted file mode 100644 index 71827885f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug655254_2/install.rdf +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon2@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:name>Test 2</em:name> - <em:bootstrap>true</em:bootstrap> - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug659772/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug659772/install.rdf deleted file mode 100644 index 3b34c63d3..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug659772/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<!-- An extension that is compatible with the XPCShell test suite --> -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon3@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 1</em:name> - <em:description>Test Description</em:description> - - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug675371/chrome.manifest b/toolkit/mozapps/webextensions/test/addons/test_bug675371/chrome.manifest deleted file mode 100644 index 17d5c99ec..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug675371/chrome.manifest +++ /dev/null @@ -1 +0,0 @@ -content bug675371 .
diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug675371/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug675371/install.rdf deleted file mode 100644 index ca2881e5a..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug675371/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug675371@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <!-- Front End MetaData --> - <em:name>Bug 675371 Test</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug675371/test.js b/toolkit/mozapps/webextensions/test/addons/test_bug675371/test.js deleted file mode 100644 index b942a8064..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug675371/test.js +++ /dev/null @@ -1 +0,0 @@ -var active = true; diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug740612_1/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_bug740612_1/bootstrap.js deleted file mode 100644 index 6703e7f7d..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug740612_1/bootstrap.js +++ /dev/null @@ -1 +0,0 @@ -const APP_STARTUP = 1; diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug740612_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug740612_1/install.rdf deleted file mode 100644 index b2316273f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug740612_1/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug740612_1@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: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/addons/test_bug740612_2/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_bug740612_2/bootstrap.js deleted file mode 100644 index 2ad481453..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug740612_2/bootstrap.js +++ /dev/null @@ -1,23 +0,0 @@ -Components.utils.import("resource://gre/modules/Services.jsm"); - -const VERSION = "1.0"; - -function install(data, reason) { - Services.prefs.setIntPref("bootstraptest.installed_version", VERSION); - Services.prefs.setIntPref("bootstraptest.install_reason", reason); -} - -function startup(data, reason) { - Services.prefs.setIntPref("bootstraptest.active_version", VERSION); - 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/addons/test_bug740612_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug740612_2/install.rdf deleted file mode 100644 index ff4d613ef..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug740612_2/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug740612_2@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <!-- Front End MetaData --> - <em:name>Test Bootstrap 2</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_bug757663/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_bug757663/install.rdf deleted file mode 100644 index be8d85b1b..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_bug757663/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug757663@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: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/addons/test_cacheflush1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_cacheflush1/install.rdf deleted file mode 100644 index 5e64b65c1..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_cacheflush1/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon1@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - - <!-- Front End MetaData --> - <em:name>File Pointer Test</em:name> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_cacheflush2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_cacheflush2/install.rdf deleted file mode 100644 index 7728002ea..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_cacheflush2/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon2@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - - <!-- Front End MetaData --> - <em:name>File Pointer 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>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_1/chrome.manifest b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_1/chrome.manifest deleted file mode 100644 index 4d63b6b06..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_1/chrome.manifest +++ /dev/null @@ -1,6 +0,0 @@ -content test-addon-1 chrome/content -# comment! - locale test-addon-1 en-US locale/en-US - # commentaire! - locale test-addon-1 fr-FR locale/fr-FR -overlay chrome://browser/content/browser.xul chrome://test-addon-1/content/overlay.xul diff --git a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_1/install.rdf deleted file mode 100644 index 486be8670..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_1/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 1</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>2</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_2/chrome.manifest b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_2/chrome.manifest deleted file mode 100644 index 3b0195077..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_2/chrome.manifest +++ /dev/null @@ -1,7 +0,0 @@ -content test-addon-1 chrome/content - - locale test-addon-1 en-US locale/en-US - locale test-addon-1 fr-FR locale/fr-FR -overlay chrome://browser/content/browser.xul chrome://test-addon-1/content/overlay.xul -binary-component components/something.so -manifest thisdoesntexist.manifest diff --git a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_2/install.rdf deleted file mode 100644 index 9a9ee4823..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_2/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon2@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 2</em:name> - <em:description>Test Description</em:description> - <em:unpack>true</em:unpack> - - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_3/chrome.manifest b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_3/chrome.manifest deleted file mode 100644 index 73190ed8f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_3/chrome.manifest +++ /dev/null @@ -1,9 +0,0 @@ -content test-addon-1 chrome/content - - locale test-addon-1 en-US locale/en-US - locale test-addon-1 fr-FR locale/fr-FR -overlay chrome://browser/content/browser.xul chrome://test-addon-1/content/overlay.xul - - binary-component components/something.so - - manifest jar:inner.jar!/nested.manifest diff --git a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_3/inner.jar b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_3/inner.jar Binary files differdeleted file mode 100644 index b4a40052f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_3/inner.jar +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_3/install.rdf deleted file mode 100644 index 3a4a709e0..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_3/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon3@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 3</em:name> - <em:description>Test Description</em:description> - <em:unpack>true</em:unpack> - - <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/addons/test_chromemanifest_4/chrome.manifest b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_4/chrome.manifest deleted file mode 100644 index 60d4f01f0..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_4/chrome.manifest +++ /dev/null @@ -1,6 +0,0 @@ -content test-addon-1 chrome/content - - locale test-addon-1 en-US locale/en-US - locale test-addon-1 fr-FR locale/fr-FR -overlay chrome://browser/content/browser.xul chrome://test-addon-1/content/overlay.xul - manifest components/components.manifest diff --git a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_4/components/components.manifest b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_4/components/components.manifest deleted file mode 100644 index 1e0aea440..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_4/components/components.manifest +++ /dev/null @@ -1,2 +0,0 @@ -binary-component mycomponent.dll -manifest other/something.manifest diff --git a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_4/components/other/something.manifest b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_4/components/other/something.manifest deleted file mode 100644 index 73d58dd66..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_4/components/other/something.manifest +++ /dev/null @@ -1 +0,0 @@ -binary-component thermalnuclearwar.dll
diff --git a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_4/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_4/install.rdf deleted file mode 100644 index 463e3f27e..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_4/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon4@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 4</em:name> - <em:description>Test Description</em:description> - <em:unpack>true</em:unpack> - - <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/addons/test_chromemanifest_5/chrome.manifest b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_5/chrome.manifest deleted file mode 100644 index b0aa32adc..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_5/chrome.manifest +++ /dev/null @@ -1,7 +0,0 @@ -content test-addon-1 chrome/content - - locale test-addon-1 en-US locale/en-US - locale test-addon-1 fr-FR locale/fr-FR -overlay chrome://browser/content/browser.xul chrome://test-addon-1/content/overlay.xul - - binary-component components/something.so diff --git a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_5/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_5/install.rdf deleted file mode 100644 index 7836bced8..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_5/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon5@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 5</em:name> - <em:description>Test Description</em:description> - <em:unpack>false</em:unpack> - - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_6/chrome.manifest b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_6/chrome.manifest deleted file mode 100644 index 4ebb75c30..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_6/chrome.manifest +++ /dev/null @@ -1 +0,0 @@ -resource test-addon-1 . diff --git a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_6/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_6/install.rdf deleted file mode 100644 index 5d94de0ea..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_chromemanifest_6/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon6@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 6</em:name> - <em:description>Test Description</em:description> - <em:bootstrap>true</em:bootstrap> - - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_data_directory/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_data_directory/install.rdf deleted file mode 100644 index aebfe3b68..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_data_directory/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>datadirectory1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test Data Directory 1</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_db_sanity_1_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_db_sanity_1_1/install.rdf deleted file mode 100644 index e1f2b5173..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_db_sanity_1_1/install.rdf +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>test_db_sanity_1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <em:name>Test 1</em:name> - <em:description>Test Description</em:description> - <em:creator>Keyboard Cat</em:creator> - <em:homepageURL>http://mozilla.org/</em:homepageURL> - - <em:contributor>Keyboard Cat 2</em:contributor> - <em:translator>Keyboard Cat 3</em:translator> - - <em:localized> - <Description> - <em:locale>en-1</em:locale> - <em:name>Test 1 (en-1)</em:name> - <em:description>Test Description (en-1)</em:description> - <em:creator>Keyboard Cat (en-1)</em:creator> - <em:homepageURL>http://mozilla.org/en-1/</em:homepageURL> - </Description> - </em:localized> - - <em:localized> - <Description> - <em:locale>en-2</em:locale> - <em:name>Test 1 (en-2)</em:name> - <em:description>Test Description (en-2)</em:description> - <em:creator>Keyboard Cat (en-2)</em:creator> - <em:homepageURL>http://mozilla.org/en-2/</em:homepageURL> - </Description> - </em:localized> - - <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:targetApplication> - <Description> - <em:id>keyboard-cats-awesome-browser@keyboard.cat</em:id> - <em:minVersion>3.1415</em:minVersion> - <em:maxVersion>3.1415</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetPlatform>XPCShell_noarch-spidermonkey</em:targetPlatform> - <em:targetPlatform>WINNT_x86</em:targetPlatform> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_db_sanity_1_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_db_sanity_1_2/install.rdf deleted file mode 100644 index da9b067ab..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_db_sanity_1_2/install.rdf +++ /dev/null @@ -1,59 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>test_db_sanity_1@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <em:name>Test 1</em:name> - <em:description>Test Description!!!</em:description> - <em:creator>Keyboard Cat</em:creator> - <em:homepageURL>http://mozilla.org/</em:homepageURL> - - <em:contributor>Keyboard Cat 2</em:contributor> - <em:translator>Keyboard Cat 3</em:translator> - <em:translator>Keyboard Cat 4</em:translator> - - <em:localized> - <Description> - <em:locale>en-1</em:locale> - <em:name>Test 1 (en-1)</em:name> - <em:description>Test Description (en-1)</em:description> - <em:creator>Keyboard Cat (en-1)</em:creator> - <em:homepageURL>http://mozilla.org/en-1/</em:homepageURL> - </Description> - </em:localized> - - <em:localized> - <Description> - <em:locale>en-3</em:locale> - <em:name>Test 1 (en-3)</em:name> - <em:description>Test Description (en-3)</em:description> - <em:creator>Keyboard Cat (en-3)</em:creator> - <em:homepageURL>http://mozilla.org/en-3/</em:homepageURL> - </Description> - </em:localized> - - <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:targetApplication> - <Description> - <em:id>keyboard-cats-awesome-browser-3000@keyboard.cat</em:id> - <em:minVersion>3.1415</em:minVersion> - <em:maxVersion>3.1415</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetPlatform>XPCShell_noarch-spidermonkey</em:targetPlatform> - <em:targetPlatform>WINNT_i386</em:targetPlatform> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_delay_update_complete_v2/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_delay_update_complete_v2/bootstrap.js deleted file mode 100644 index c5a80c7b9..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_delay_update_complete_v2/bootstrap.js +++ /dev/null @@ -1,10 +0,0 @@ -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"; - -function install(data, reason) {} - -function startup(data, reason) {} - -function shutdown(data, reason) {} diff --git a/toolkit/mozapps/webextensions/test/addons/test_delay_update_complete_v2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_delay_update_complete_v2/install.rdf deleted file mode 100644 index 3ebbe16b0..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_delay_update_complete_v2/install.rdf +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>test_delay_update_complete@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <!-- Front End MetaData --> - <em:name>Test Delay Update Complete</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> diff --git a/toolkit/mozapps/webextensions/test/addons/test_delay_update_complete_webextension_v2/manifest.json b/toolkit/mozapps/webextensions/test/addons/test_delay_update_complete_webextension_v2/manifest.json deleted file mode 100644 index 1a98f4660..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_delay_update_complete_webextension_v2/manifest.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "manifest_version": 2, - "name": "Delay Upgrade", - "version": "2.0", - "applications": { - "gecko": { - "id": "test_delay_update_complete_webext@tests.mozilla.org" - } - } -} diff --git a/toolkit/mozapps/webextensions/test/addons/test_delay_update_defer_v2/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_delay_update_defer_v2/bootstrap.js deleted file mode 100644 index dea028488..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_delay_update_defer_v2/bootstrap.js +++ /dev/null @@ -1,10 +0,0 @@ -Components.utils.import("resource://gre/modules/Services.jsm"); -Components.utils.import("resource://gre/modules/AddonManager.jsm"); - -const ADDON_ID = "test_delay_update_defer@tests.mozilla.org"; - -function install(data, reason) {} - -function startup(data, reason) {} - -function shutdown(data, reason) {} diff --git a/toolkit/mozapps/webextensions/test/addons/test_delay_update_defer_v2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_delay_update_defer_v2/install.rdf deleted file mode 100644 index 75c7666bb..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_delay_update_defer_v2/install.rdf +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>test_delay_update_defer@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <!-- Front End MetaData --> - <em:name>Test Delay Update Defer</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> diff --git a/toolkit/mozapps/webextensions/test/addons/test_delay_update_defer_webextension_v2/manifest.json b/toolkit/mozapps/webextensions/test/addons/test_delay_update_defer_webextension_v2/manifest.json deleted file mode 100644 index 9561979dc..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_delay_update_defer_webextension_v2/manifest.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "manifest_version": 2, - "name": "Delay Upgrade", - "version": "2.0", - "applications": { - "gecko": { - "id": "test_delay_update_defer_webext@tests.mozilla.org" - } - } -} diff --git a/toolkit/mozapps/webextensions/test/addons/test_delay_update_ignore_v2/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_delay_update_ignore_v2/bootstrap.js deleted file mode 100644 index fb8fc9540..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_delay_update_ignore_v2/bootstrap.js +++ /dev/null @@ -1,8 +0,0 @@ -Components.utils.import("resource://gre/modules/Services.jsm"); -Components.utils.import("resource://gre/modules/AddonManager.jsm"); - -function install(data, reason) {} - -function startup(data, reason) {} - -function shutdown(data, reason) {} diff --git a/toolkit/mozapps/webextensions/test/addons/test_delay_update_ignore_v2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_delay_update_ignore_v2/install.rdf deleted file mode 100644 index aec4b202e..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_delay_update_ignore_v2/install.rdf +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>test_delay_update_ignore@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <!-- Front End MetaData --> - <em:name>Test Delay Update Ignore</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:updateURL>http://localhost:4444/data/test_delay_updates_ignore.rdf</em:updateURL> - - <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> diff --git a/toolkit/mozapps/webextensions/test/addons/test_delay_update_ignore_webextension_v2/manifest.json b/toolkit/mozapps/webextensions/test/addons/test_delay_update_ignore_webextension_v2/manifest.json deleted file mode 100644 index d9200ec11..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_delay_update_ignore_webextension_v2/manifest.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "manifest_version": 2, - "name": "Delay Upgrade", - "version": "2.0", - "applications": { - "gecko": { - "id": "test_delay_update_ignore_webext@tests.mozilla.org" - } - } -} diff --git a/toolkit/mozapps/webextensions/test/addons/test_dictionary/chrome.manifest b/toolkit/mozapps/webextensions/test/addons/test_dictionary/chrome.manifest deleted file mode 100644 index c945c928c..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_dictionary/chrome.manifest +++ /dev/null @@ -1 +0,0 @@ -content dict ./ diff --git a/toolkit/mozapps/webextensions/test/addons/test_dictionary/dictionaries/ab-CD.dic b/toolkit/mozapps/webextensions/test/addons/test_dictionary/dictionaries/ab-CD.dic deleted file mode 100644 index 3feac546d..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_dictionary/dictionaries/ab-CD.dic +++ /dev/null @@ -1,2 +0,0 @@ -1 -test1 diff --git a/toolkit/mozapps/webextensions/test/addons/test_dictionary/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_dictionary/install.rdf deleted file mode 100644 index 9e66ab237..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_dictionary/install.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>ab-CD@dictionaries.addons.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:type>64</em:type> - <em:unpack>true</em:unpack> - - <!-- Front End MetaData --> - <em:name>Test Dictionary</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_dictionary_2/dictionaries/ab-CD.dic b/toolkit/mozapps/webextensions/test/addons/test_dictionary_2/dictionaries/ab-CD.dic deleted file mode 100644 index b35b9c1a6..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_dictionary_2/dictionaries/ab-CD.dic +++ /dev/null @@ -1,2 +0,0 @@ -1 -test2 diff --git a/toolkit/mozapps/webextensions/test/addons/test_dictionary_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_dictionary_2/install.rdf deleted file mode 100644 index a74a114fd..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_dictionary_2/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>ab-CD@dictionaries.addons.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:unpack>true</em:unpack> - - <!-- Front End MetaData --> - <em:name>Test Dictionary</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_dictionary_3/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_dictionary_3/install.rdf deleted file mode 100644 index c056e87ff..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_dictionary_3/install.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>ab-CD@dictionaries.addons.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:type>64</em:type> - <em:unpack>true</em:unpack> - - <!-- Front End MetaData --> - <em:name>Test Dictionary</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_dictionary_4/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_dictionary_4/install.rdf deleted file mode 100644 index 7470284ba..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_dictionary_4/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>ef@dictionaries.addons.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:unpack>true</em:unpack> - - <!-- Front End MetaData --> - <em:name>Test Dictionary ef</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_dictionary_5/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_dictionary_5/install.rdf deleted file mode 100644 index 11eba90d7..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_dictionary_5/install.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>gh@dictionaries.addons.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:type>64</em:type> - <em:unpack>true</em:unpack> - - <!-- Front End MetaData --> - <em:name>Test Dictionary gh</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_distribution1_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_distribution1_2/install.rdf deleted file mode 100644 index 8bd5966c9..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_distribution1_2/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon1@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/addons/test_experiment1/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_experiment1/bootstrap.js deleted file mode 100644 index 1666f2972..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_experiment1/bootstrap.js +++ /dev/null @@ -1 +0,0 @@ -Components.utils.import("resource://xpcshell-data/BootstrapMonitor.jsm").monitor(this); diff --git a/toolkit/mozapps/webextensions/test/addons/test_experiment1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_experiment1/install.rdf deleted file mode 100644 index 414a36b30..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_experiment1/install.rdf +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>experiment1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:type>128</em:type> - - <!-- Front End MetaData --> - <em:name>Test Experiment 1</em:name> - <em:description>Test Description</em:description> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_filepointer/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_filepointer/install.rdf deleted file mode 100644 index 5e64b65c1..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_filepointer/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon1@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - - <!-- Front End MetaData --> - <em:name>File Pointer Test</em:name> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_getresource/icon.png b/toolkit/mozapps/webextensions/test/addons/test_getresource/icon.png deleted file mode 100644 index 40765b0e2..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_getresource/icon.png +++ /dev/null @@ -1 +0,0 @@ -Dummy icon file
\ No newline at end of file diff --git a/toolkit/mozapps/webextensions/test/addons/test_getresource/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_getresource/install.rdf deleted file mode 100644 index 8d2740dbb..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_getresource/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 1</em:name> - <em:description>Test Description</em:description> - <em:bootstrap>true</em:bootstrap> - <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/addons/test_getresource/subdir/subfile.txt b/toolkit/mozapps/webextensions/test/addons/test_getresource/subdir/subfile.txt deleted file mode 100644 index a28d18162..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_getresource/subdir/subfile.txt +++ /dev/null @@ -1 +0,0 @@ -Dummy file in subdirectory
\ No newline at end of file diff --git a/toolkit/mozapps/webextensions/test/addons/test_hotfix_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_hotfix_1/install.rdf deleted file mode 100644 index 7fcc1a09e..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_hotfix_1/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>hotfix@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 1</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_hotfix_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_hotfix_2/install.rdf deleted file mode 100644 index fd843dbe9..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_hotfix_2/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>hotfix@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 1</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_install1/icon.png b/toolkit/mozapps/webextensions/test/addons/test_install1/icon.png deleted file mode 100644 index 41409edfe..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install1/icon.png +++ /dev/null @@ -1 +0,0 @@ -Fake icon image diff --git a/toolkit/mozapps/webextensions/test/addons/test_install1/icon64.png b/toolkit/mozapps/webextensions/test/addons/test_install1/icon64.png deleted file mode 100644 index 41409edfe..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install1/icon64.png +++ /dev/null @@ -1 +0,0 @@ -Fake icon image diff --git a/toolkit/mozapps/webextensions/test/addons/test_install1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_install1/install.rdf deleted file mode 100644 index efe3f18ae..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install1/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<!-- An extension that is compatible with the XPCShell test suite --> -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 1</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_install2_1/icon.png b/toolkit/mozapps/webextensions/test/addons/test_install2_1/icon.png deleted file mode 100644 index 41409edfe..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install2_1/icon.png +++ /dev/null @@ -1 +0,0 @@ -Fake icon image diff --git a/toolkit/mozapps/webextensions/test/addons/test_install2_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_install2_1/install.rdf deleted file mode 100644 index 116eb7069..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install2_1/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<!-- An extension that is compatible with the XPCShell test suite --> -<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>Real Test 2</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_install2_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_install2_2/install.rdf deleted file mode 100644 index 7197ea1fb..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install2_2/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<!-- An extension that is compatible with the XPCShell test suite --> -<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>3.0</em:version> - - <!-- Front End MetaData --> - <em:name>Real Test 3</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_install3/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_install3/install.rdf deleted file mode 100644 index 8e72017ad..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install3/install.rdf +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0"?> - -<!-- An extension that is incompatible with the XPCShell test suite until - a compatibility update check is performed --> -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon3@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Real Test 4</em:name> - <em:description>Test Description</em:description> - - <em:updateURL>http://localhost:4444/data/test_install.rdf</em:updateURL> - - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_install4/addon4.xpi b/toolkit/mozapps/webextensions/test/addons/test_install4/addon4.xpi Binary files differdeleted file mode 100644 index e57a4f5b6..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install4/addon4.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/addons/test_install4/addon5.jar b/toolkit/mozapps/webextensions/test/addons/test_install4/addon5.jar Binary files differdeleted file mode 100644 index 93fbfbe6e..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install4/addon5.jar +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/addons/test_install4/addon6.xpi b/toolkit/mozapps/webextensions/test/addons/test_install4/addon6.xpi Binary files differdeleted file mode 100644 index 3613dab04..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install4/addon6.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/addons/test_install4/addon7.jar b/toolkit/mozapps/webextensions/test/addons/test_install4/addon7.jar Binary files differdeleted file mode 100644 index 1af178887..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install4/addon7.jar +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/addons/test_install4/badaddon.jar b/toolkit/mozapps/webextensions/test/addons/test_install4/badaddon.jar deleted file mode 100644 index 33695b99f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install4/badaddon.jar +++ /dev/null @@ -1 +0,0 @@ -This is corrupt diff --git a/toolkit/mozapps/webextensions/test/addons/test_install4/badaddon.xpi b/toolkit/mozapps/webextensions/test/addons/test_install4/badaddon.xpi deleted file mode 100644 index 33695b99f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install4/badaddon.xpi +++ /dev/null @@ -1 +0,0 @@ -This is corrupt diff --git a/toolkit/mozapps/webextensions/test/addons/test_install4/icon.png b/toolkit/mozapps/webextensions/test/addons/test_install4/icon.png deleted file mode 100644 index 57f2c2eb6..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install4/icon.png +++ /dev/null @@ -1 +0,0 @@ -This is ignored diff --git a/toolkit/mozapps/webextensions/test/addons/test_install4/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_install4/install.rdf deleted file mode 100644 index 5e99ae29a..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install4/install.rdf +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0"?> - -<!-- A multi-package XPI --> -<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:type>32</em:type> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_install5/chrome.manifest b/toolkit/mozapps/webextensions/test/addons/test_install5/chrome.manifest deleted file mode 100644 index 703adf2a7..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install5/chrome.manifest +++ /dev/null @@ -1 +0,0 @@ -binary-component components/mycomponent.so
diff --git a/toolkit/mozapps/webextensions/test/addons/test_install5/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_install5/install.rdf deleted file mode 100644 index 1f96e4b49..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install5/install.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0"?> - -<!-- An extension that is incompatible with the XPCShell test suite and - has binary components, so won't be compatible-by-default. --> -<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>addon5@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Real Test 5</em:name> - <em:description>Test Description</em:description> - <em:unpack>true</em:unpack> - - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_install6/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_install6/install.rdf deleted file mode 100644 index b1f97c1fd..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install6/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<!-- An extension that has a compatibility override making it incompatible. --> -<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>addon6@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Addon Test 6</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_install7/addon1.xpi b/toolkit/mozapps/webextensions/test/addons/test_install7/addon1.xpi deleted file mode 100644 index 9c283d1d4..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install7/addon1.xpi +++ /dev/null @@ -1 +0,0 @@ -This isn't a valid zip file.
\ No newline at end of file diff --git a/toolkit/mozapps/webextensions/test/addons/test_install7/addon2.xpi b/toolkit/mozapps/webextensions/test/addons/test_install7/addon2.xpi deleted file mode 100644 index 9c283d1d4..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install7/addon2.xpi +++ /dev/null @@ -1 +0,0 @@ -This isn't a valid zip file.
\ No newline at end of file diff --git a/toolkit/mozapps/webextensions/test/addons/test_install7/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_install7/install.rdf deleted file mode 100644 index 5e99ae29a..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install7/install.rdf +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0"?> - -<!-- A multi-package XPI --> -<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:type>32</em:type> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_install8/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_install8/install.rdf deleted file mode 100644 index 5e99ae29a..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_install8/install.rdf +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0"?> - -<!-- A multi-package XPI --> -<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:type>32</em:type> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_jetpack/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_jetpack/bootstrap.js deleted file mode 100644 index 2449baeb8..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_jetpack/bootstrap.js +++ /dev/null @@ -1,17 +0,0 @@ -Components.utils.import("resource://gre/modules/Services.jsm"); - -function install(data, reason) { - Services.prefs.setIntPref("jetpacktest.installed_version", 1); -} - -function startup(data, reason) { - Services.prefs.setIntPref("jetpacktest.active_version", 1); -} - -function shutdown(data, reason) { - Services.prefs.setIntPref("jetpacktest.active_version", 0); -} - -function uninstall(data, reason) { - Services.prefs.setIntPref("jetpacktest.installed_version", 0); -} diff --git a/toolkit/mozapps/webextensions/test/addons/test_jetpack/harness-options.json b/toolkit/mozapps/webextensions/test/addons/test_jetpack/harness-options.json deleted file mode 100644 index 9e26dfeeb..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_jetpack/harness-options.json +++ /dev/null @@ -1 +0,0 @@ -{}
\ No newline at end of file diff --git a/toolkit/mozapps/webextensions/test/addons/test_jetpack/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_jetpack/install.rdf deleted file mode 100644 index e88794a60..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_jetpack/install.rdf +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>jetpack@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <!-- Front End MetaData --> - <em:name>Test jetpack</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/addons/test_langpack/chrome.manifest b/toolkit/mozapps/webextensions/test/addons/test_langpack/chrome.manifest deleted file mode 100644 index 16fe819a2..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_langpack/chrome.manifest +++ /dev/null @@ -1 +0,0 @@ -locale test-langpack x-testing locale/x-testing diff --git a/toolkit/mozapps/webextensions/test/addons/test_langpack/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_langpack/install.rdf deleted file mode 100644 index 056f6dff5..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_langpack/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>langpack-x-testing@tests.mozilla.org</em:id> - <em:type>8</em:type> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Language Pack x-testing</em:name> - - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_locale/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_locale/install.rdf deleted file mode 100644 index d8d027b93..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_locale/install.rdf +++ /dev/null @@ -1,61 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - <em:localized> - <Description em:locale="fr-FR"> - <em:locale/> <!-- Should be ignored and not fail --> - <em:name>fr-FR Name</em:name> - <em:description>fr-FR Description</em:description> - <em:contributor>Fr Contributor 1</em:contributor> - <em:contributor>Fr Contributor 2</em:contributor> - <em:contributor>Fr Contributor 3</em:contributor> - </Description> - </em:localized> - - <em:localized> - <Description em:locale="de-DE"> - <em:name>de-DE Name</em:name> - </Description> - </em:localized> - - <em:localized> - <Description em:locale="es-ES"> - <em:name>es-ES Name</em:name> - <em:description>es-ES Description</em:description> - </Description> - </em:localized> - - <!-- Subsequent definitions for the same locale should be ignored --> - <em:localized> - <Description em:locale="fr-FR"> - <em:name>Repeated locale</em:name> - </Description> - </em:localized> - - <!-- Properties with no listed locale should be ignored --> - <em:localized> - <Description> - <em:name>Missing locale</em:name> - </Description> - </em:localized> - - <!-- Front End MetaData --> - <em:name>Fallback Name</em:name> - <em:description>Fallback Description</em:description> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_locked2_5/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_locked2_5/install.rdf deleted file mode 100644 index 09655c2a6..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_locked2_5/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon5@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 5</em:name> - <em:description>Test Description</em:description> - - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_locked2_6/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_locked2_6/install.rdf deleted file mode 100644 index 75f110d2a..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_locked2_6/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon6@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 6</em:name> - <em:description>Test Description</em:description> - - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_migrate4_6/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_migrate4_6/install.rdf deleted file mode 100644 index 5924982f7..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_migrate4_6/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon6@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 6</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>2</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_migrate4_7/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_migrate4_7/install.rdf deleted file mode 100644 index 072751cf2..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_migrate4_7/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon7@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 7</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>2</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_migrate6/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_migrate6/install.rdf deleted file mode 100644 index ff8280ae3..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_migrate6/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon6@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 6</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_migrate7/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_migrate7/install.rdf deleted file mode 100644 index fd1df0e08..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_migrate7/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon7@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 7</em:name> - <em:description>Test Description</em:description> - <em:unpack>true</em:unpack> - - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_migrate8/chrome.manifest b/toolkit/mozapps/webextensions/test/addons/test_migrate8/chrome.manifest deleted file mode 100644 index 8570bae82..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_migrate8/chrome.manifest +++ /dev/null @@ -1,6 +0,0 @@ -content test-addon-1 chrome/content - - locale test-addon-1 en-US locale/en-US - locale test-addon-1 fr-FR locale/fr-FR -overlay chrome://browser/content/browser.xul chrome://test-addon-1/content/overlay.xul -binary-component components/something.so diff --git a/toolkit/mozapps/webextensions/test/addons/test_migrate8/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_migrate8/install.rdf deleted file mode 100644 index 61ed24763..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_migrate8/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon8@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 8</em:name> - <em:description>Test Description</em:description> - <em:unpack>true</em:unpack> - - <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> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_migrate9/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_migrate9/install.rdf deleted file mode 100644 index 116dd0176..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_migrate9/install.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
- <Description about="urn:mozilla:install-manifest">
- <em:id>addon9@tests.mozilla.org</em:id>
- <em:version>1.0</em:version>
- <em:internalName>theme1/1.0</em:internalName>
-
- <!-- Front End MetaData -->
- <em:name>Test Theme 1</em:name>
- <em:description>Test Description</em:description>
-
- <em:targetApplication>
- <Description>
- <em:id>xpcshell@tests.mozilla.org</em:id>
- <em:minVersion>1</em:minVersion>
- <em:maxVersion>2</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <em:skinnable>true</em:skinnable>
-
- </Description>
-</RDF>
diff --git a/toolkit/mozapps/webextensions/test/addons/test_symbol/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_symbol/bootstrap.js deleted file mode 100644 index 4eb8b4875..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_symbol/bootstrap.js +++ /dev/null @@ -1,62 +0,0 @@ -Components.utils.import("resource://gre/modules/Services.jsm"); -Components.utils.import("resource://gre/modules/AddonManager.jsm"); - -const PASS_PREF = "symboltest.instanceid.pass"; -const FAIL_BOGUS_PREF = "symboltest.instanceid.fail_bogus"; -const FAIL_ID_PREF = "symboltest.instanceid.fail_bogus"; -const ADDON_ID = "test_symbol@tests.mozilla.org"; - -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(PASS_PREF, false); - Services.prefs.setBoolPref(FAIL_BOGUS_PREF, false); - Services.prefs.setBoolPref(FAIL_ID_PREF, false); - - // test with the correct symbol - if (data.hasOwnProperty("instanceID") && data.instanceID) { - AddonManager.getAddonByInstanceID(data.instanceID) - .then(addon => { - if (addon.id == ADDON_ID) { - Services.prefs.setBoolPref(PASS_PREF, true); - } - }).catch(err => { - throw Error("no addon found for symbol"); - }); - - } - - // test with a totally bogus symbol - AddonManager.getAddonByInstanceID(Symbol("bad symbol")) - .then(addon => { - // there is no symbol by this name, so null should be returned - if (addon == null) { - Services.prefs.setBoolPref(FAIL_BOGUS_PREF, true); - } else { - throw Error("bad symbol should not match:", addon); - } - }).catch(err => { - throw Error("promise should not have rejected: " + err); - }); - - // try to make a matching symbol - this should fail because it's not a - // reference to the same symbol stored inside the addons manager. - AddonManager.getAddonByInstanceID(Symbol(ADDON_ID)) - .then(addon => { - // there is no symbol by this name, so null should be returned - if (addon == null) { - Services.prefs.setBoolPref(FAIL_ID_PREF, true); - } else { - throw Error("bad symbol should not match:", addon); - } - }).catch(err => { - throw Error("promise should not have rejected: " + err); - }); - -} - -function shutdown(data, reason) {} - -function uninstall(data, reason) {} diff --git a/toolkit/mozapps/webextensions/test/addons/test_symbol/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_symbol/install.rdf deleted file mode 100644 index adccda552..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_symbol/install.rdf +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>test_symbol@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <!-- Front End MetaData --> - <em:name>Test Symbol</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/addons/test_theme/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_theme/install.rdf deleted file mode 100644 index e1a37d0a4..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_theme/install.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>theme1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:internalName>theme1/1.0</em:internalName> - - <!-- Front End MetaData --> - <em:name>Test Theme 1</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>2</em:maxVersion> - </Description> - </em:targetApplication> - - <em:skinnable>true</em:skinnable> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_theme/preview.png b/toolkit/mozapps/webextensions/test/addons/test_theme/preview.png deleted file mode 100644 index 321ce47cf..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_theme/preview.png +++ /dev/null @@ -1 +0,0 @@ -Fake preview image diff --git a/toolkit/mozapps/webextensions/test/addons/test_undoincompatible/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_undoincompatible/bootstrap.js deleted file mode 100644 index 1666f2972..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_undoincompatible/bootstrap.js +++ /dev/null @@ -1 +0,0 @@ -Components.utils.import("resource://xpcshell-data/BootstrapMonitor.jsm").monitor(this); diff --git a/toolkit/mozapps/webextensions/test/addons/test_undoincompatible/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_undoincompatible/install.rdf deleted file mode 100644 index b038ebc51..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_undoincompatible/install.rdf +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>incompatible@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <!-- Front End MetaData --> - <em:name>Incompatible Addon</em:name> - <em:description>I am incompatible</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>2</em:minVersion> - <em:maxVersion>2</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_undouninstall1/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_undouninstall1/bootstrap.js deleted file mode 100644 index 1666f2972..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_undouninstall1/bootstrap.js +++ /dev/null @@ -1 +0,0 @@ -Components.utils.import("resource://xpcshell-data/BootstrapMonitor.jsm").monitor(this); diff --git a/toolkit/mozapps/webextensions/test/addons/test_undouninstall1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_undouninstall1/install.rdf deleted file mode 100644 index 4178fe929..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_undouninstall1/install.rdf +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>undouninstall1@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/addons/test_update/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_update/install.rdf deleted file mode 100644 index 801a35a8f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_update/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon1@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 1</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_update12/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_update12/install.rdf deleted file mode 100644 index 3589cb55c..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_update12/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon12@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 12</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_update8/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_update8/install.rdf deleted file mode 100644 index 43e31af42..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_update8/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>addon8@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - - <!-- Front End MetaData --> - <em:name>Test 8</em:name> - <em:description>Test Description</em:description> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_update_multi1/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_update_multi1/bootstrap.js deleted file mode 100644 index 24c778c09..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_update_multi1/bootstrap.js +++ /dev/null @@ -1,5 +0,0 @@ - -function install(data, reason) {} -function startup(data, reason) {} -function shutdown(data, reason) {} -function uninstall(data, reason) {} diff --git a/toolkit/mozapps/webextensions/test/addons/test_update_multi1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_update_multi1/install.rdf deleted file mode 100644 index 9f955562c..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_update_multi1/install.rdf +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0"?> -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> -<Description about="urn:mozilla:install-manifest"> - <em:id>updatemulti@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:updateURL>http://localhost:4444/data/test_update_multi.rdf</em:updateURL> - <em:bootstrap>true</em:bootstrap> - <em:name>Test Addon 1</em:name> -<em:targetApplication><Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> -</Description></em:targetApplication> -</Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_update_multi2/addon.xpi b/toolkit/mozapps/webextensions/test/addons/test_update_multi2/addon.xpi Binary files differdeleted file mode 100644 index febff06fa..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_update_multi2/addon.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/addons/test_update_multi2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_update_multi2/install.rdf deleted file mode 100644 index 44bdb05ba..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_update_multi2/install.rdf +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0"?> -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> -<Description about="urn:mozilla:install-manifest"> - <em:id>updatemulti@tests.mozilla.org</em:id> - <em:type>32</em:type> - <em:version>2.0</em:version> -</Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_updateid1/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_updateid1/bootstrap.js deleted file mode 100644 index 24c778c09..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_updateid1/bootstrap.js +++ /dev/null @@ -1,5 +0,0 @@ - -function install(data, reason) {} -function startup(data, reason) {} -function shutdown(data, reason) {} -function uninstall(data, reason) {} diff --git a/toolkit/mozapps/webextensions/test/addons/test_updateid1/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_updateid1/install.rdf deleted file mode 100644 index 803b64e5f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_updateid1/install.rdf +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0"?> -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> -<Description about="urn:mozilla:install-manifest"> - <em:id>addon1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL> - <em:bootstrap>true</em:bootstrap> - <em:name>Test Addon 1</em:name> -<em:targetApplication><Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> -</Description></em:targetApplication> -</Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/test_updateid2/bootstrap.js b/toolkit/mozapps/webextensions/test/addons/test_updateid2/bootstrap.js deleted file mode 100644 index 24c778c09..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_updateid2/bootstrap.js +++ /dev/null @@ -1,5 +0,0 @@ - -function install(data, reason) {} -function startup(data, reason) {} -function shutdown(data, reason) {} -function uninstall(data, reason) {} diff --git a/toolkit/mozapps/webextensions/test/addons/test_updateid2/install.rdf b/toolkit/mozapps/webextensions/test/addons/test_updateid2/install.rdf deleted file mode 100644 index 041af57f0..000000000 --- a/toolkit/mozapps/webextensions/test/addons/test_updateid2/install.rdf +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0"?> -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> -<Description about="urn:mozilla:install-manifest"> - <em:id>addon1.changed@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL> - <em:bootstrap>true</em:bootstrap> - <em:name>Test Addon 1</em:name> -<em:targetApplication><Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>1</em:maxVersion> -</Description></em:targetApplication> -</Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/upgradeable1x2-3_1/install.rdf b/toolkit/mozapps/webextensions/test/addons/upgradeable1x2-3_1/install.rdf deleted file mode 100644 index 76e662977..000000000 --- a/toolkit/mozapps/webextensions/test/addons/upgradeable1x2-3_1/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>upgradeable1x2-3@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>xpcshell@tests.mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>2</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Test min 1 max 2 upgrade to 3</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/upgradeable1x2-3_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/upgradeable1x2-3_2/install.rdf deleted file mode 100644 index e57672c42..000000000 --- a/toolkit/mozapps/webextensions/test/addons/upgradeable1x2-3_2/install.rdf +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>upgradeable1x2-3@tests.mozilla.org</em:id> - <em:version>2.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> - - <!-- Front End MetaData --> - <em:name>Test min 1 max 2 upgrade to 3</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/webextension_1/chrome.manifest b/toolkit/mozapps/webextensions/test/addons/webextension_1/chrome.manifest deleted file mode 100644 index 16108ce18..000000000 --- a/toolkit/mozapps/webextensions/test/addons/webextension_1/chrome.manifest +++ /dev/null @@ -1 +0,0 @@ -content webex ./ diff --git a/toolkit/mozapps/webextensions/test/addons/webextension_1/manifest.json b/toolkit/mozapps/webextensions/test/addons/webextension_1/manifest.json deleted file mode 100644 index 2ca5f40f7..000000000 --- a/toolkit/mozapps/webextensions/test/addons/webextension_1/manifest.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "Web Extension Name", - "version": "1.0", - "manifest_version": 2, - "applications": { - "gecko": { - "id": "webextension1@tests.mozilla.org" - } - }, - "icons": { - "48": "icon48.png", - "64": "icon64.png" - } -} diff --git a/toolkit/mozapps/webextensions/test/addons/webextension_2/install.rdf b/toolkit/mozapps/webextensions/test/addons/webextension_2/install.rdf deleted file mode 100644 index 653481ed0..000000000 --- a/toolkit/mozapps/webextensions/test/addons/webextension_2/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>first-webextension2@tests.mozilla.org</em:id> - <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> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>XPI Add-on 1</em:name> - <em:description>XPI Add-on 1 - Description</em:description> - <em:creator>XPI Add-on 1 - Creator</em:creator> - <em:developer>XPI Add-on 1 - First Developer</em:developer> - <em:translator>XPI Add-on 1 - First Translator</em:translator> - <em:contributor>XPI Add-on 1 - First Contributor</em:contributor> - <em:homepageURL>http://localhost/xpi/1/homepage.html</em:homepageURL> - <em:optionsURL>http://localhost/xpi/1/options.html</em:optionsURL> - <em:aboutURL>http://localhost/xpi/1/about.html</em:aboutURL> - <em:iconURL>http://localhost/xpi/1/icon.png</em:iconURL> - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/addons/webextension_2/manifest.json b/toolkit/mozapps/webextensions/test/addons/webextension_2/manifest.json deleted file mode 100644 index 5b470d430..000000000 --- a/toolkit/mozapps/webextensions/test/addons/webextension_2/manifest.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "Web Extension Name", - "version": "1.0", - "manifest_version": 2, - "applications": { - "gecko": { - "id": "last-webextension2@tests.mozilla.org" - } - } -} diff --git a/toolkit/mozapps/webextensions/test/addons/webextension_3/_locales/en/messages.json b/toolkit/mozapps/webextensions/test/addons/webextension_3/_locales/en/messages.json deleted file mode 100644 index 36868d414..000000000 --- a/toolkit/mozapps/webextensions/test/addons/webextension_3/_locales/en/messages.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": { - "message": "foo ☹", - "description": "foo" - }, - "desc": { - "message": "bar ☹", - "description": "bar" - } -} diff --git a/toolkit/mozapps/webextensions/test/addons/webextension_3/_locales/fr/messages.json b/toolkit/mozapps/webextensions/test/addons/webextension_3/_locales/fr/messages.json deleted file mode 100644 index c3d02ffde..000000000 --- a/toolkit/mozapps/webextensions/test/addons/webextension_3/_locales/fr/messages.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": { - "message": "le foo ☺", - "description": "foo" - }, - "desc": { - "message": "le bar ☺", - "description": "bar" - } -} diff --git a/toolkit/mozapps/webextensions/test/addons/webextension_3/manifest.json b/toolkit/mozapps/webextensions/test/addons/webextension_3/manifest.json deleted file mode 100644 index b6ae6f10f..000000000 --- a/toolkit/mozapps/webextensions/test/addons/webextension_3/manifest.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "Web Extensiøn __MSG_name__", - "description": "Descriptïon __MSG_desc__ of add-on", - "version": "1.0", - "manifest_version": 2, - "default_locale": "en", - "applications": { - "gecko": { - "id": "webextension3@tests.mozilla.org" - } - } -} diff --git a/toolkit/mozapps/webextensions/test/browser/.eslintrc.js b/toolkit/mozapps/webextensions/test/browser/.eslintrc.js deleted file mode 100644 index 2852eb81d..000000000 --- a/toolkit/mozapps/webextensions/test/browser/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -module.exports = { // eslint-disable-line no-undef - "extends": [ - "../../../../../testing/mochitest/browser.eslintrc.js" - ] -}; diff --git a/toolkit/mozapps/webextensions/test/browser/addon_about.xul b/toolkit/mozapps/webextensions/test/browser/addon_about.xul deleted file mode 100644 index c2b8b935e..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addon_about.xul +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - id="addon-test-about-window"> - <label value="Oh hai!"/> -</window> diff --git a/toolkit/mozapps/webextensions/test/browser/addon_prefs.xul b/toolkit/mozapps/webextensions/test/browser/addon_prefs.xul deleted file mode 100644 index 85cfe6b2d..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addon_prefs.xul +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - id="addon-test-pref-window"> - <label value="Oh hai!"/> -</window> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_1.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_1.xpi Binary files differdeleted file mode 100644 index d13e5d66e..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_1.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_1/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_1/install.rdf deleted file mode 100644 index 5199c2f3f..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_1/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug557956-1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Addon1</em:name> - <em:bootstrap>true</em:bootstrap> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_10.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_10.xpi Binary files differdeleted file mode 100644 index e1d6ac586..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_10.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_10/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_10/install.rdf deleted file mode 100644 index c061814b6..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_10/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug557956-10@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>0.3</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Addon10</em:name> - <em:bootstrap>true</em:bootstrap> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_2.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_2.xpi Binary files differdeleted file mode 100644 index 1380e7b5b..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_2.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_2/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_2/install.rdf deleted file mode 100644 index 1be5422b2..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_2/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug557956-2@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>0.3</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Addon2</em:name> - <em:bootstrap>true</em:bootstrap> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_3.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_3.xpi Binary files differdeleted file mode 100644 index 46326b04c..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_3.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_3/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_3/install.rdf deleted file mode 100644 index 54887a30e..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_3/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug557956-3@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>0.3</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Addon3</em:name> - <em:bootstrap>true</em:bootstrap> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_4.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_4.xpi Binary files differdeleted file mode 100644 index 95de79b79..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_4.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_4/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_4/install.rdf deleted file mode 100644 index 79946b0f0..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_4/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug557956-4@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>1.0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Addon4</em:name> - <em:bootstrap>true</em:bootstrap> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_5.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_5.xpi Binary files differdeleted file mode 100644 index 005d7ef21..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_5.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_5/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_5/install.rdf deleted file mode 100644 index 067af1ba1..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_5/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug557956-5@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>0.3</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Addon5</em:name> - <em:bootstrap>true</em:bootstrap> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_6.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_6.xpi Binary files differdeleted file mode 100644 index 89f751a03..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_6.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_6/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_6/install.rdf deleted file mode 100644 index 37d7e6a7c..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_6/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug557956-6@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>0.3</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Addon6</em:name> - <em:bootstrap>true</em:bootstrap> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_7.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_7.xpi Binary files differdeleted file mode 100644 index 77de37c2a..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_7.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_7/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_7/install.rdf deleted file mode 100644 index 461facbb2..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_7/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug557956-7@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>0.3</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Addon7</em:name> - <em:bootstrap>true</em:bootstrap> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_8_1.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_8_1.xpi Binary files differdeleted file mode 100644 index 666ae0910..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_8_1.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_8_1/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_8_1/install.rdf deleted file mode 100644 index 2111b9c64..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_8_1/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug557956-8@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>0.3</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Addon8</em:name> - <em:bootstrap>true</em:bootstrap> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_9_1.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_9_1.xpi Binary files differdeleted file mode 100644 index ad9367dc1..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_9_1.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_9_1/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_9_1/install.rdf deleted file mode 100644 index 032e9adaf..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug557956_9_1/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug557956-9@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>0.3</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Addon9</em:name> - <em:bootstrap>true</em:bootstrap> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug567127_1.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug567127_1.xpi Binary files differdeleted file mode 100644 index 20ae35539..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug567127_1.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug567127_1/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug567127_1/install.rdf deleted file mode 100644 index d9f0ca745..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug567127_1/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug567127_1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>browser_bug567127 #1</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug567127_2.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug567127_2.xpi Binary files differdeleted file mode 100644 index 3c99022cf..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug567127_2.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug567127_2/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug567127_2/install.rdf deleted file mode 100644 index 8809ffb58..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug567127_2/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug567127_2@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>browser_bug567127 #2</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug596336_1.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug596336_1.xpi Binary files differdeleted file mode 100644 index c438cbd0b..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug596336_1.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug596336_1/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug596336_1/install.rdf deleted file mode 100644 index c768d7881..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug596336_1/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug596336-1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Bootstrap upgrade test</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug596336_2.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug596336_2.xpi Binary files differdeleted file mode 100644 index a87191efe..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug596336_2.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug596336_2/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_bug596336_2/install.rdf deleted file mode 100644 index bed489c3e..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_bug596336_2/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>bug596336-1@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Bootstrap upgrade test</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_dragdrop1.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_dragdrop1.xpi Binary files differdeleted file mode 100644 index d8b4d083c..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_dragdrop1.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_dragdrop1/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_dragdrop1/install.rdf deleted file mode 100644 index 9bcd43e87..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_dragdrop1/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>dragdrop1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Drag Drop test 1</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_dragdrop2.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_dragdrop2.xpi Binary files differdeleted file mode 100644 index e4441cb19..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_dragdrop2.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_dragdrop2/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_dragdrop2/install.rdf deleted file mode 100644 index 4789abfaf..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_dragdrop2/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>dragdrop2@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Drag Drop test 2</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_experiment1.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_experiment1.xpi Binary files differdeleted file mode 100644 index 1c2b793f1..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_experiment1.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_experiment1/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_experiment1/install.rdf deleted file mode 100644 index 92f20a4ef..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_experiment1/install.rdf +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>test-experiment1@experiments.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:type>128</em:type> - - <!-- Front End MetaData --> - <em:name>Test Experiment 1</em:name> - <em:description>Test Description</em:description> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1.xpi Binary files differdeleted file mode 100644 index be453ce9c..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/bootstrap.js b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/bootstrap.js deleted file mode 100644 index 7871af738..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/bootstrap.js +++ /dev/null @@ -1,8 +0,0 @@ -function install (params, aReason) { -} -function uninstall (params, aReason) { -} -function startup (params, aReason) { -} -function shutdown (params, aReason) { -} diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/chrome.manifest b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/chrome.manifest deleted file mode 100644 index 8884e3974..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/chrome.manifest +++ /dev/null @@ -1 +0,0 @@ -locale inlinesettings en-US ./ diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/install.rdf deleted file mode 100644 index 18fcec167..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/install.rdf +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" ?> -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>inlinesettings1@tests.mozilla.org</em:id> - <em:name>Inline Settings (Bootstrap)</em:name> - <em:version>1</em:version> - <em:bootstrap>true</em:bootstrap> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - </Description> - -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/options.xul b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/options.xul deleted file mode 100644 index cd4f72387..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/options.xul +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" ?> - -<!DOCTYPE vbox SYSTEM "chrome://inlinesettings/locale/settings.dtd"> - -<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <setting pref="extensions.inlinesettings1.bool" type="bool" title="Bool" checkboxlabel="&checkbox;"/> - <setting pref="extensions.inlinesettings1.boolint" type="boolint" on="1" off="2" title="BoolInt"/> - <setting pref="extensions.inlinesettings1.integer" type="integer" title="Integer"/> - <setting pref="extensions.inlinesettings1.string" type="string" title="String"/> - <setting type="control" title="Menulist"> - <menulist sizetopopup="always" oncommand="window._testValue = this.value;"> - <menupopup> - <menuitem label="Alpha" value="1" /> - <menuitem label="Bravo" value="2" /> - <menuitem label="Charlie" value="3" /> - </menupopup> - </menulist> - </setting> - <setting pref="extensions.inlinesettings1.color" type="color" title="Color"/> - <setting pref="extensions.inlinesettings1.file" type="file" title="File"/> - <setting pref="extensions.inlinesettings1.directory" type="directory" title="Directory"/> - <setting pref="extensions.inlinesettings1.integer-size" type="integer" title="Integer with size" size="1" /> -</vbox> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/settings.dtd b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/settings.dtd deleted file mode 100644 index 6864a3d5a..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1/settings.dtd +++ /dev/null @@ -1 +0,0 @@ -<!ENTITY checkbox "Check box label"> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom.xpi Binary files differdeleted file mode 100644 index 6e937c5cc..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/binding.xml b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/binding.xml deleted file mode 100644 index 6ac72a03c..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/binding.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0"?> -<bindings xmlns="http://www.mozilla.org/xbl" - xmlns:xbl="http://www.mozilla.org/xbl" - xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <binding id="custom" - extends="chrome://mozapps/content/extensions/setting.xml#setting-base"> - <content> - <xul:vbox> - <xul:hbox class="preferences-alignment"> - <xul:label anonid="label" class="preferences-title" flex="1" xbl:inherits="xbl:text=title"/> - </xul:hbox> - <xul:description class="preferences-description" flex="1" xbl:inherits="xbl:text=desc"/> - </xul:vbox> - <xul:hbox class="preferences-alignment"> - <xul:label anonid="input" value="Woah!"/> - </xul:hbox> - </content> - </binding> -</bindings> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/bootstrap.js b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/bootstrap.js deleted file mode 100644 index 7871af738..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/bootstrap.js +++ /dev/null @@ -1,8 +0,0 @@ -function install (params, aReason) { -} -function uninstall (params, aReason) { -} -function startup (params, aReason) { -} -function shutdown (params, aReason) { -} diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/chrome.manifest b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/chrome.manifest deleted file mode 100644 index f1eaef1d0..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/chrome.manifest +++ /dev/null @@ -1,2 +0,0 @@ -content inlinesettings ./ contentaccessible=yes -locale inlinesettings en-US ./ diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/install.rdf deleted file mode 100644 index a04046a74..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/install.rdf +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" ?> -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>inlinesettings1@tests.mozilla.org</em:id> - <em:name>Inline Settings (Bootstrap)</em:name> - <em:version>2</em:version> - <em:bootstrap>true</em:bootstrap> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - </Description> - -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/options.xul b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/options.xul deleted file mode 100644 index 148fb9856..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/options.xul +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" ?> -<!DOCTYPE vbox SYSTEM "chrome://inlinesettings/locale/string.dtd"> -<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <setting type="custom" title="&custom.title;" style="background-color: blue; display: -moz-grid-line; -moz-binding: url('chrome://inlinesettings/content/binding.xml#custom');"/> -</vbox> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/string.dtd b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/string.dtd deleted file mode 100644 index 0b2dcc8fe..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_custom/string.dtd +++ /dev/null @@ -1 +0,0 @@ -<!ENTITY custom.title "Custom"> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_info.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_info.xpi Binary files differdeleted file mode 100644 index 4c939c05b..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_info.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_info/bootstrap.js b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_info/bootstrap.js deleted file mode 100644 index 7871af738..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_info/bootstrap.js +++ /dev/null @@ -1,8 +0,0 @@ -function install (params, aReason) { -} -function uninstall (params, aReason) { -} -function startup (params, aReason) { -} -function shutdown (params, aReason) { -} diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_info/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_info/install.rdf deleted file mode 100644 index ba90bd57b..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_info/install.rdf +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" ?> -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>inlinesettings1@tests.mozilla.org</em:id> - <em:name>Inline Settings (Bootstrap)</em:name> - <em:version>3</em:version> - <em:bootstrap>true</em:bootstrap> - <em:optionsType>4</em:optionsType> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - </Description> - -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_info/options.xul b/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_info/options.xul deleted file mode 100644 index 095d3bcef..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_inlinesettings1_info/options.xul +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" ?> -<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <setting pref="extensions.inlinesettings1.bool" type="bool" title="Bool" checkboxlabel="Check box label"/> - <setting pref="extensions.inlinesettings1.boolint" type="boolint" on="1" off="2" title="BoolInt"/> - <setting pref="extensions.inlinesettings1.integer" type="integer" title="Integer"/> - <setting pref="extensions.inlinesettings1.string" type="string" title="String"/> - <setting type="control" title="Menulist"> - <menulist sizetopopup="always" oncommand="window._testValue = this.value;"> - <menupopup> - <menuitem label="Alpha" value="1" /> - <menuitem label="Bravo" value="2" /> - <menuitem label="Charlie" value="3" /> - </menupopup> - </menulist> - </setting> - <setting pref="extensions.inlinesettings1.color" type="color" title="Color"/> - <setting pref="extensions.inlinesettings1.file" type="file" title="File"/> - <setting pref="extensions.inlinesettings1.directory" type="directory" title="Directory"/> -</vbox> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_install1_1.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_install1_1.xpi Binary files differdeleted file mode 100644 index d6df8f9d0..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_install1_1.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_install1_1/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_install1_1/install.rdf deleted file mode 100644 index b11b6d7e4..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_install1_1/install.rdf +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>install1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:bootstrap>true</em:bootstrap> - <em:updateURL>http://example.com/browser/toolkit/mozapps/extensions/test/browser/browser_install.rdf</em:updateURL> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Install Tests</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_install1_2.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_install1_2.xpi Binary files differdeleted file mode 100644 index 5468e6cb0..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_install1_2.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_install1_2/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_install1_2/install.rdf deleted file mode 100644 index 81898b24d..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_install1_2/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>install1@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Install Tests</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_installssl.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_installssl.xpi Binary files differdeleted file mode 100644 index 999535a97..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_installssl.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_installssl/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_installssl/install.rdf deleted file mode 100644 index 7ce6cd09a..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_installssl/install.rdf +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>sslinstall@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>SSL Install Tests</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_searching.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_searching.xpi Binary files differdeleted file mode 100644 index efef815aa..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_searching.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_searching/bootstrap.js b/toolkit/mozapps/webextensions/test/browser/addons/browser_searching/bootstrap.js deleted file mode 100644 index 7b86e419a..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_searching/bootstrap.js +++ /dev/null @@ -1,9 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -function install(data, reason) {} -function startup(data, reason) {} -function shutdown(data, reason) {} -function uninstall(data, reason) {} - diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_searching/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_searching/install.rdf deleted file mode 100644 index 02cc935ea..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_searching/install.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>remote1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:type>2</em:type> - <em:bootstrap>true</em:bootstrap> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>PASS - b - installed</em:name> - <em:description>Test sumary - SEARCH SEARCH</em:description> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1.xpi Binary files differdeleted file mode 100644 index 956812aaa..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1/bootstrap.js b/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1/bootstrap.js deleted file mode 100644 index ff5b80ae8..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1/bootstrap.js +++ /dev/null @@ -1,12 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -function install(data, reason) {} -function startup(data, reason) { - Components.utils.import("resource://gre/modules/Services.jsm"); - Services.ppmm.loadProcessScript( - "resource://my-addon/frame-script.js", false); -} -function shutdown(data, reason) {} -function uninstall(data, reason) {} diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1/chrome.manifest b/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1/chrome.manifest deleted file mode 100644 index f1a7ccee1..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1/chrome.manifest +++ /dev/null @@ -1 +0,0 @@ -resource my-addon . diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1/frame-script.js b/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1/frame-script.js deleted file mode 100644 index f4674b840..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1/frame-script.js +++ /dev/null @@ -1,6 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -Components.utils.import("resource://gre/modules/Services.jsm"); -Services.cpmm.sendAsyncMessage("my-addon-1"); diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1/install.rdf deleted file mode 100644 index c52307b4a..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_1/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>update1@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Update Tests</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2.xpi Binary files differdeleted file mode 100644 index 7ef3db940..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2/bootstrap.js b/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2/bootstrap.js deleted file mode 100644 index ff5b80ae8..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2/bootstrap.js +++ /dev/null @@ -1,12 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -function install(data, reason) {} -function startup(data, reason) { - Components.utils.import("resource://gre/modules/Services.jsm"); - Services.ppmm.loadProcessScript( - "resource://my-addon/frame-script.js", false); -} -function shutdown(data, reason) {} -function uninstall(data, reason) {} diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2/chrome.manifest b/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2/chrome.manifest deleted file mode 100644 index f1a7ccee1..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2/chrome.manifest +++ /dev/null @@ -1 +0,0 @@ -resource my-addon . diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2/frame-script.js b/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2/frame-script.js deleted file mode 100644 index e35092a55..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2/frame-script.js +++ /dev/null @@ -1,6 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -Components.utils.import("resource://gre/modules/Services.jsm"); -Services.cpmm.sendAsyncMessage("my-addon-2"); diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2/install.rdf deleted file mode 100644 index 2fae190b4..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_update1_2/install.rdf +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>update1@tests.mozilla.org</em:id> - <em:version>2.0</em:version> - <em:bootstrap>true</em:bootstrap> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Update Tests</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_webapi_install.xpi b/toolkit/mozapps/webextensions/test/browser/addons/browser_webapi_install.xpi Binary files differdeleted file mode 100644 index 4fa7b8bfa..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_webapi_install.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_webapi_install/bootstrap.js b/toolkit/mozapps/webextensions/test/browser/addons/browser_webapi_install/bootstrap.js deleted file mode 100644 index bd11077c2..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_webapi_install/bootstrap.js +++ /dev/null @@ -1,9 +0,0 @@ -Components.utils.import("resource://gre/modules/Services.jsm"); - -function startup(data, reason) { - Services.prefs.setIntPref("webapitest.active_version", 1); -} - -function shutdown(data, reason) { - Services.prefs.setIntPref("webapitest.active_version", 0); -} diff --git a/toolkit/mozapps/webextensions/test/browser/addons/browser_webapi_install/install.rdf b/toolkit/mozapps/webextensions/test/browser/addons/browser_webapi_install/install.rdf deleted file mode 100644 index 2cae124e1..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/browser_webapi_install/install.rdf +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>webapi_install@tests.mozilla.org</em:id> - <em:version>1.1</em:version> - <em:name>AddonManger web API test</em:name> - <em:bootstrap>true</em:bootstrap> - - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0.3</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - - </Description> -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/addons/options_signed.xpi b/toolkit/mozapps/webextensions/test/browser/addons/options_signed.xpi Binary files differdeleted file mode 100644 index a063fd1c4..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/options_signed.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/addons/options_signed/manifest.json b/toolkit/mozapps/webextensions/test/browser/addons/options_signed/manifest.json deleted file mode 100644 index e808cd5ab..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/options_signed/manifest.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "manifest_version": 2, - - "name": "Test options_ui", - "description": "Test add-ons manager handling options_ui with no id in manifest.json", - "version": "1.2", - - "options_ui": { - "page": "options.html" - } -} diff --git a/toolkit/mozapps/webextensions/test/browser/addons/options_signed/options.html b/toolkit/mozapps/webextensions/test/browser/addons/options_signed/options.html deleted file mode 100644 index ea804601b..000000000 --- a/toolkit/mozapps/webextensions/test/browser/addons/options_signed/options.html +++ /dev/null @@ -1,9 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8" /> - </head> - <body> - <div id="options-test-panel" /> - </body> -</html> diff --git a/toolkit/mozapps/webextensions/test/browser/blockNoPlugins.xml b/toolkit/mozapps/webextensions/test/browser/blockNoPlugins.xml deleted file mode 100644 index e4e191b37..000000000 --- a/toolkit/mozapps/webextensions/test/browser/blockNoPlugins.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0"?> -<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1336406310001"> - <emItems> - </emItems> - <pluginItems> - </pluginItems> -</blocklist> diff --git a/toolkit/mozapps/webextensions/test/browser/blockPluginHard.xml b/toolkit/mozapps/webextensions/test/browser/blockPluginHard.xml deleted file mode 100644 index 24eb5bc6f..000000000 --- a/toolkit/mozapps/webextensions/test/browser/blockPluginHard.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0"?> -<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1336406310000"> - <emItems> - </emItems> - <pluginItems> - <pluginItem blockID="p9999"> - <match name="filename" exp="libnptest\.so|nptest\.dll|Test\.plugin" /> - <versionRange severity="2"></versionRange> - </pluginItem> - </pluginItems> -</blocklist> diff --git a/toolkit/mozapps/webextensions/test/browser/browser-common.ini b/toolkit/mozapps/webextensions/test/browser/browser-common.ini deleted file mode 100644 index 83920465b..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser-common.ini +++ /dev/null @@ -1,66 +0,0 @@ -[browser_about.js] -skip-if = os == 'linux' || os == 'win' # bug 632290 -[browser_bug523784.js] -[browser_bug557943.js] -[browser_bug562797.js] -[browser_bug562854.js] -[browser_bug562890.js] -skip-if = os == 'win' && !debug # Disabled on Windows opt/PGO builds due to intermittent failures (bug 1135866) -[browser_bug562899.js] -skip-if = buildapp == 'mulet' -[browser_bug562992.js] -[browser_bug567127.js] -[browser_bug567137.js] -[browser_bug570760.js] -[browser_bug572561.js] -[browser_bug573062.js] -[browser_bug577990.js] -[browser_bug580298.js] -[browser_bug581076.js] -[browser_bug586574.js] -[browser_bug587970.js] -[browser_bug591465.js] -[browser_bug591663.js] -[browser_bug593535.js] -skip-if = true # Bug 1093190 - Disabled due to leak -[browser_bug596336.js] -[browser_bug608316.js] -[browser_bug610764.js] -[browser_bug618502.js] -[browser_bug679604.js] -[browser_bug714593.js] -[browser_bug590347.js] -[browser_details.js] -[browser_discovery.js] -[browser_dragdrop.js] -skip-if = buildapp == 'mulet' -[browser_list.js] -[browser_metadataTimeout.js] -[browser_searching.js] -[browser_sorting.js] -[browser_sorting_plugins.js] -[browser_plugin_enabled_state_locked.js] -[browser_uninstalling.js] -[browser_install.js] -[browser_recentupdates.js] -[browser_manualupdates.js] -[browser_globalwarnings.js] -[browser_eula.js] -skip-if = buildapp == 'mulet' -[browser_updateid.js] -[browser_purchase.js] -[browser_openDialog.js] -tags = openwindow -skip-if = os == 'win' # Disabled on Windows due to intermittent failures (bug 1135866) -[browser_types.js] -[browser_inlinesettings.js] -[browser_inlinesettings_browser.js] -[browser_inlinesettings_custom.js] -[browser_inlinesettings_info.js] -[browser_tabsettings.js] -[browser_pluginprefs.js] -skip-if = buildapp == 'mulet' -[browser_CTP_plugins.js] -skip-if = buildapp == 'mulet' -[browser_webext_options.js] -tags = webextensions diff --git a/toolkit/mozapps/webextensions/test/browser/browser-window.ini b/toolkit/mozapps/webextensions/test/browser/browser-window.ini deleted file mode 100644 index ca9353d21..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser-window.ini +++ /dev/null @@ -1,52 +0,0 @@ -[DEFAULT] -install-to-subdir = test-window -support-files = - addons/* - addon_about.xul - addon_prefs.xul - cancelCompatCheck.sjs - discovery.html - discovery_frame.html - discovery_install.html - head.js - signed_hotfix.rdf - signed_hotfix.xpi - unsigned_hotfix.rdf - unsigned_hotfix.xpi - more_options.xul - options.xul - plugin_test.html - redirect.sjs - releaseNotes.xhtml - blockNoPlugins.xml - blockPluginHard.xml - browser_bug557956.rdf - browser_bug557956_8_2.xpi - browser_bug557956_9_2.xpi - browser_bug557956.xml - browser_bug591465.xml - browser_bug593535.xml - browser_searching.xml - browser_searching_empty.xml - browser_updatessl.rdf - browser_updatessl.rdf^headers^ - browser_install.rdf - browser_install.rdf^headers^ - browser_install.xml - browser_install1_3.xpi - browser_eula.xml - browser_purchase.xml - webapi_addon_listener.html - webapi_checkavailable.html - webapi_checkchromeframe.xul - webapi_checkframed.html - webapi_checknavigatedwindow.html - !/toolkit/mozapps/webextensions/test/xpinstall/corrupt.xpi - !/toolkit/mozapps/webextensions/test/xpinstall/incompatible.xpi - !/toolkit/mozapps/webextensions/test/xpinstall/installtrigger.html - !/toolkit/mozapps/webextensions/test/xpinstall/restartless.xpi - !/toolkit/mozapps/webextensions/test/xpinstall/theme.xpi - !/toolkit/mozapps/webextensions/test/xpinstall/unsigned.xpi - !/toolkit/mozapps/webextensions/test/xpinstall/amosigned.xpi - -[include:browser-common.ini] diff --git a/toolkit/mozapps/webextensions/test/browser/browser.ini b/toolkit/mozapps/webextensions/test/browser/browser.ini deleted file mode 100644 index 8a144baba..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser.ini +++ /dev/null @@ -1,75 +0,0 @@ -[DEFAULT] -tags = addons -support-files = - addons/* - addon_about.xul - addon_prefs.xul - cancelCompatCheck.sjs - discovery.html - discovery_frame.html - discovery_install.html - head.js - signed_hotfix.rdf - signed_hotfix.xpi - unsigned_hotfix.rdf - unsigned_hotfix.xpi - more_options.xul - options.xul - plugin_test.html - redirect.sjs - releaseNotes.xhtml - blockNoPlugins.xml - blockPluginHard.xml - browser_bug557956.rdf - browser_bug557956_8_2.xpi - browser_bug557956_9_2.xpi - browser_bug557956.xml - browser_bug591465.xml - browser_bug593535.xml - browser_searching.xml - browser_searching_empty.xml - browser_updatessl.rdf - browser_updatessl.rdf^headers^ - browser_install.rdf - browser_install.rdf^headers^ - browser_install.xml - browser_install1_3.xpi - browser_eula.xml - browser_purchase.xml - webapi_addon_listener.html - webapi_checkavailable.html - webapi_checkchromeframe.xul - webapi_checkframed.html - webapi_checknavigatedwindow.html - !/toolkit/mozapps/webextensions/test/xpinstall/corrupt.xpi - !/toolkit/mozapps/webextensions/test/xpinstall/incompatible.xpi - !/toolkit/mozapps/webextensions/test/xpinstall/installtrigger.html - !/toolkit/mozapps/webextensions/test/xpinstall/restartless.xpi - !/toolkit/mozapps/webextensions/test/xpinstall/theme.xpi - !/toolkit/mozapps/webextensions/test/xpinstall/unsigned.xpi - !/toolkit/mozapps/webextensions/test/xpinstall/amosigned.xpi - -[browser_addonrepository_performance.js] -[browser_bug557956.js] -[browser_bug616841.js] -[browser_cancelCompatCheck.js] -[browser_checkAddonCompatibility.js] -[browser_gmpProvider.js] -[browser_hotfix.js] -# Verifies the old style of signing hotfixes -skip-if = require_signing -[browser_installssl.js] -[browser_newaddon.js] -[browser_updatessl.js] -[browser_system_addons_are_e10s.js] -[browser_task_next_test.js] -[browser_discovery_install.js] -[browser_update.js] -[browser_webapi.js] -[browser_webapi_access.js] -[browser_webapi_addon_listener.js] -[browser_webapi_enable.js] -[browser_webapi_install.js] -[browser_webapi_uninstall.js] - -[include:browser-common.ini] diff --git a/toolkit/mozapps/webextensions/test/browser/browser_CTP_plugins.js b/toolkit/mozapps/webextensions/test/browser/browser_CTP_plugins.js deleted file mode 100644 index dd2992f81..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_CTP_plugins.js +++ /dev/null @@ -1,172 +0,0 @@ -const gHttpTestRoot = "http://127.0.0.1:8888/" + RELATIVE_DIR + "/"; - -function updateBlocklist(aCallback) { - var blocklistNotifier = Cc["@mozilla.org/extensions/blocklist;1"] - .getService(Ci.nsITimerCallback); - var observer = function() { - Services.obs.removeObserver(observer, "blocklist-updated"); - SimpleTest.executeSoon(aCallback); - }; - Services.obs.addObserver(observer, "blocklist-updated", false); - blocklistNotifier.notify(null); -} - -var _originalBlocklistURL = null; -function setAndUpdateBlocklist(aURL, aCallback) { - if (!_originalBlocklistURL) { - _originalBlocklistURL = Services.prefs.getCharPref("extensions.blocklist.url"); - } - Services.prefs.setCharPref("extensions.blocklist.url", aURL); - updateBlocklist(aCallback); -} - -function resetBlocklist(aCallback) { - Services.prefs.setCharPref("extensions.blocklist.url", _originalBlocklistURL); -} - -add_task(function*() { - SpecialPowers.pushPrefEnv({"set": [ - ["plugins.click_to_play", true], - ["extensions.blocklist.suppressUI", true] - ]}); - registerCleanupFunction(function*() { - let pluginTag = getTestPluginTag(); - pluginTag.enabledState = Ci.nsIPluginTag.STATE_ENABLED; - yield new Promise(resolve => { - setAndUpdateBlocklist(gHttpTestRoot + "blockNoPlugins.xml", resolve); - }); - resetBlocklist(); - }); - - let pluginTag = getTestPluginTag(); - pluginTag.enabledState = Ci.nsIPluginTag.STATE_CLICKTOPLAY; - let managerWindow = yield new Promise(resolve => open_manager("addons://list/plugin", resolve)); - - let plugins = yield new Promise(resolve => AddonManager.getAddonsByTypes(["plugin"], resolve)); - - let testPluginId; - for (let plugin of plugins) { - if (plugin.name == "Test Plug-in") { - testPluginId = plugin.id; - break; - } - } - ok(testPluginId, "part2: Test Plug-in should exist"); - - let testPlugin = yield new Promise(resolve => AddonManager.getAddonByID(testPluginId, resolve)); - - let pluginEl = get_addon_element(managerWindow, testPluginId); - pluginEl.parentNode.ensureElementIsVisible(pluginEl); - let enableButton = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "enable-btn"); - is_element_hidden(enableButton, "part3: enable button should not be visible"); - let disableButton = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "enable-btn"); - is_element_hidden(disableButton, "part3: disable button should not be visible"); - let menu = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "state-menulist"); - is_element_visible(menu, "part3: state menu should be visible"); - let askToActivateItem = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "ask-to-activate-menuitem"); - is(menu.selectedItem, askToActivateItem, "part3: state menu should have 'Ask To Activate' selected"); - - let pluginTab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, gHttpTestRoot + "plugin_test.html"); - let pluginBrowser = pluginTab.linkedBrowser; - - let condition = () => PopupNotifications.getNotification("click-to-play-plugins", pluginBrowser); - yield BrowserTestUtils.waitForCondition(condition, "part4: should have a click-to-play notification"); - - yield BrowserTestUtils.removeTab(pluginTab); - - let alwaysActivateItem = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "always-activate-menuitem"); - menu.selectedItem = alwaysActivateItem; - alwaysActivateItem.doCommand(); - - pluginTab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, gHttpTestRoot + "plugin_test.html"); - - yield ContentTask.spawn(pluginTab.linkedBrowser, null, function*() { - let testPlugin = content.document.getElementById("test"); - ok(testPlugin, "part5: should have a plugin element in the page"); - let objLoadingContent = testPlugin.QueryInterface(Ci.nsIObjectLoadingContent); - let condition = () => objLoadingContent.activated; - yield ContentTaskUtils.waitForCondition(condition, "part5: waited too long for plugin to activate"); - ok(objLoadingContent.activated, "part6: plugin should be activated"); - }); - - yield BrowserTestUtils.removeTab(pluginTab); - - let neverActivateItem = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "never-activate-menuitem"); - menu.selectedItem = neverActivateItem; - neverActivateItem.doCommand(); - - pluginTab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, gHttpTestRoot + "plugin_test.html"); - pluginBrowser = pluginTab.linkedBrowser; - - yield ContentTask.spawn(pluginTab.linkedBrowser, null, function*() { - let testPlugin = content.document.getElementById("test"); - ok(testPlugin, "part7: should have a plugin element in the page"); - let objLoadingContent = testPlugin.QueryInterface(Ci.nsIObjectLoadingContent); - ok(!objLoadingContent.activated, "part7: plugin should not be activated"); - }); - - yield BrowserTestUtils.removeTab(pluginTab); - - let details = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "details-btn"); - is_element_visible(details, "part7: details link should be visible"); - EventUtils.synthesizeMouseAtCenter(details, {}, managerWindow); - yield BrowserTestUtils.waitForEvent(managerWindow.document, "ViewChanged"); - - is_element_hidden(enableButton, "part8: detail enable button should be hidden"); - is_element_hidden(disableButton, "part8: detail disable button should be hidden"); - is_element_visible(menu, "part8: detail state menu should be visible"); - is(menu.selectedItem, neverActivateItem, "part8: state menu should have 'Never Activate' selected"); - - menu.selectedItem = alwaysActivateItem; - alwaysActivateItem.doCommand(); - - pluginTab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, gHttpTestRoot + "plugin_test.html"); - pluginBrowser = pluginTab.linkedBrowser; - - yield ContentTask.spawn(pluginTab.linkedBrowser, null, function*() { - let testPlugin = content.document.getElementById("test"); - ok(testPlugin, "part9: should have a plugin element in the page"); - let objLoadingContent = testPlugin.QueryInterface(Ci.nsIObjectLoadingContent); - let condition = () => objLoadingContent.activated; - yield ContentTaskUtils.waitForCondition(condition, "part9: waited too long for plugin to activate"); - ok(objLoadingContent.activated, "part10: plugin should be activated"); - }); - - yield BrowserTestUtils.removeTab(pluginTab); - - menu.selectedItem = askToActivateItem; - askToActivateItem.doCommand(); - - pluginTab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, gHttpTestRoot + "plugin_test.html"); - pluginBrowser = pluginTab.linkedBrowser; - - condition = () => PopupNotifications.getNotification("click-to-play-plugins", pluginBrowser); - yield BrowserTestUtils.waitForCondition(condition, "part11: should have a click-to-play notification"); - - yield BrowserTestUtils.removeTab(pluginTab); - - // causes appDisabled to be set - managerWindow = yield new Promise(resolve => { - setAndUpdateBlocklist(gHttpTestRoot + "blockPluginHard.xml", - () => { - close_manager(managerWindow, function() { - open_manager("addons://list/plugin", resolve); - }); - } - ); - }); - - pluginEl = get_addon_element(managerWindow, testPluginId); - pluginEl.parentNode.ensureElementIsVisible(pluginEl); - menu = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "state-menulist"); - is(menu.disabled, true, "part12: state menu should be disabled"); - - details = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(details, {}, managerWindow); - yield BrowserTestUtils.waitForEvent(managerWindow.document, "ViewChanged"); - - menu = managerWindow.document.getElementById("detail-state-menulist"); - is(menu.disabled, true, "part13: detail state menu should be disabled"); - - managerWindow.close(); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_about.js b/toolkit/mozapps/webextensions/test/browser/browser_about.js deleted file mode 100644 index f781cf146..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_about.js +++ /dev/null @@ -1,84 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -/** - * Tests the default and custom "about" dialogs of add-ons. - * - * Test for bug 610661 <https://bugzilla.mozilla.org/show_bug.cgi?id=610661>: - * Addon object not passed to custom about dialogs. - */ - -var gManagerWindow; - -const URI_ABOUT_DEFAULT = "chrome://mozapps/content/extensions/about.xul"; -const URI_ABOUT_CUSTOM = CHROMEROOT + "addon_about.xul"; - -function test() { - requestLongerTimeout(2); - - waitForExplicitFinish(); - - var gProvider = new MockProvider(); - gProvider.createAddons([{ - id: "test1@tests.mozilla.org", - name: "Test add-on 1", - description: "foo" - }, - { - id: "test2@tests.mozilla.org", - name: "Test add-on 2", - description: "bar", - aboutURL: URI_ABOUT_CUSTOM - }]); - - open_manager("addons://list/extension", function(aManager) { - gManagerWindow = aManager; - - test_about_window("Test add-on 1", URI_ABOUT_DEFAULT, function() { - test_about_window("Test add-on 2", URI_ABOUT_CUSTOM, function() { - close_manager(gManagerWindow, finish); - }); - }); - }); -} - -function test_about_window(aAddonItemName, aExpectedAboutUri, aCallback) { - var addonList = gManagerWindow.document.getElementById("addon-list"); - for (var addonItem of addonList.childNodes) { - if (addonItem.hasAttribute("name") && - addonItem.getAttribute("name") === aAddonItemName) - break; - } - - info("Waiting for about dialog"); - Services.ww.registerNotification(function TEST_ww_observer(aSubject, aTopic, - aData) { - if (aTopic == "domwindowclosed") { - Services.ww.unregisterNotification(TEST_ww_observer); - - info("About dialog closed, waiting for focus on browser window"); - waitForFocus(() => executeSoon(aCallback)); - } else if (aTopic == "domwindowopened") { - info("About dialog opened, waiting for focus"); - - let win = aSubject.QueryInterface(Ci.nsIDOMEventTarget); - waitForFocus(function() { - info("Saw about dialog"); - - is(win.location, - aExpectedAboutUri, - "The correct add-on about window should have opened"); - - is(win.arguments && win.arguments[0] && win.arguments[0].name, - aAddonItemName, - "window.arguments[0] should refer to the add-on object"); - - executeSoon(() => win.close()); - }, win); - } - }); - - gManagerWindow.gViewController.doCommand("cmd_showItemAbout", - addonItem.mAddon); -} diff --git a/toolkit/mozapps/webextensions/test/browser/browser_addonrepository_performance.js b/toolkit/mozapps/webextensions/test/browser/browser_addonrepository_performance.js deleted file mode 100644 index 879d7331e..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_addonrepository_performance.js +++ /dev/null @@ -1,99 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that the metadata request includes startup time measurements - -var tmp = {}; -Components.utils.import("resource://gre/modules/addons/AddonRepository.jsm", tmp); -var AddonRepository = tmp.AddonRepository; - -var gTelemetry = Cc["@mozilla.org/base/telemetry;1"].getService(Ci.nsITelemetry); -var gManagerWindow; -var gProvider; - -function parseParams(aQuery) { - let params = {}; - - for (let param of aQuery.split("&")) { - let [key, value] = param.split("="); - params[key] = value; - } - - return params; -} - -function test() { - waitForExplicitFinish(); - - var gSeenRequest = false; - - gProvider = new MockProvider(); - gProvider.createAddons([{ - id: "test1@tests.mozilla.org", - name: "Test add-on" - }]); - - function observe(aSubject, aTopic, aData) { - aSubject.QueryInterface(Ci.nsIChannel); - let url = aSubject.URI.QueryInterface(Ci.nsIURL); - if (url.filePath != "/extensions-dummy/metadata") { - return; - } - info(url.query); - - // Check if we encountered telemetry errors and turn the tests for which - // we don't have valid data into known failures. - let snapshot = gTelemetry.getHistogramById("STARTUP_MEASUREMENT_ERRORS") - .snapshot(); - - let tProcessValid = (snapshot.counts[0] == 0); - let tMainValid = tProcessValid && (snapshot.counts[2] == 0); - let tFirstPaintValid = tProcessValid && (snapshot.counts[5] == 0); - let tSessionRestoredValid = tProcessValid && (snapshot.counts[6] == 0); - - let params = parseParams(url.query); - - is(params.appOS, Services.appinfo.OS, "OS should be correct"); - is(params.appVersion, Services.appinfo.version, "Version should be correct"); - - if (tMainValid) { - ok(params.tMain >= 0, "Should be a sensible tMain"); - } else { - todo(false, "An error occurred while recording the startup timestamps, skipping this test"); - } - - if (tFirstPaintValid) { - ok(params.tFirstPaint >= 0, "Should be a sensible tFirstPaint"); - } else { - todo(false, "An error occurred while recording the startup timestamps, skipping this test"); - } - - if (tSessionRestoredValid) { - ok(params.tSessionRestored >= 0, "Should be a sensible tSessionRestored"); - } else { - todo(false, "An error occurred while recording the startup timestamps, skipping this test"); - } - - gSeenRequest = true; - } - - const PREF = "extensions.getAddons.getWithPerformance.url"; - - // Watch HTTP requests - Services.obs.addObserver(observe, "http-on-modify-request", false); - Services.prefs.setCharPref(PREF, - "http://127.0.0.1:8888/extensions-dummy/metadata?appOS=%OS%&appVersion=%VERSION%&tMain=%TIME_MAIN%&tFirstPaint=%TIME_FIRST_PAINT%&tSessionRestored=%TIME_SESSION_RESTORED%"); - - registerCleanupFunction(function() { - Services.obs.removeObserver(observe, "http-on-modify-request"); - }); - - AddonRepository._beginGetAddons(["test1@tests.mozilla.org"], { - searchFailed: function() { - ok(gSeenRequest, "Should have seen metadata request"); - finish(); - } - }, true); -} - diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug523784.js b/toolkit/mozapps/webextensions/test/browser/browser_bug523784.js deleted file mode 100644 index e61fafd6b..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug523784.js +++ /dev/null @@ -1,120 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -const URI_BLOCKLIST_DIALOG = "chrome://mozapps/content/extensions/blocklist.xul"; - -// This tests that the blocklist dialog still affects soft-blocked add-ons -// if the user clicks the "Restart Later" button. It also ensures that the -// "Cancel" button is correctly renamed (to "Restart Later"). -var args = { - restart: false, - list: [{ - name: "Bug 523784 softblocked addon", - version: "1", - icon: "chrome://mozapps/skin/plugins/pluginGeneric.png", - disable: false, - blocked: false, - url: 'http://example.com/bug523784_1', - }], -}; - -function test() { - waitForExplicitFinish(); - - let windowObserver = function(aSubject, aTopic, aData) { - if (aTopic != "domwindowopened") - return; - - Services.ww.unregisterNotification(windowObserver); - - let win = aSubject.QueryInterface(Ci.nsIDOMWindow); - win.addEventListener("load", function() { - win.removeEventListener("load", arguments.callee, false); - - executeSoon(() => bug523784_test1(win)); - }, false); - }; - Services.ww.registerNotification(windowObserver); - - args.wrappedJSObject = args; - Services.ww.openWindow(null, URI_BLOCKLIST_DIALOG, "", - "chrome,centerscreen,dialog,titlebar", args); -} - -function bug523784_test1(win) { - let bundle = Services.strings. - createBundle("chrome://mozapps/locale/update/updates.properties"); - let cancelButton = win.document.documentElement.getButton("cancel"); - let moreInfoLink = win.document.getElementById("moreInfo"); - - is(cancelButton.getAttribute("label"), - bundle.GetStringFromName("restartLaterButton"), - "Text should be changed on Cancel button"); - is(cancelButton.getAttribute("accesskey"), - bundle.GetStringFromName("restartLaterButton.accesskey"), - "Accesskey should also be changed on Cancel button"); - is(moreInfoLink.getAttribute("href"), - 'http://example.com/bug523784_1', - "More Info link should link to a detailed blocklist page."); - let windowObserver = function(aSubject, aTopic, aData) { - if (aTopic != "domwindowclosed") - return; - - Services.ww.unregisterNotification(windowObserver); - - ok(args.list[0].disable, "Should be blocking add-on"); - ok(!args.restart, "Should not restart browser immediately"); - - executeSoon(bug523784_test2); - }; - Services.ww.registerNotification(windowObserver); - - cancelButton.doCommand(); -} - -function bug523784_test2(win) { - let windowObserver = function(aSubject, aTopic, aData) { - if (aTopic != "domwindowopened") - return; - - Services.ww.unregisterNotification(windowObserver); - let win = aSubject.QueryInterface(Ci.nsIDOMWindow); - win.addEventListener("load", function() { - win.removeEventListener("load", arguments.callee, false); - - executeSoon(function() { - let moreInfoLink = win.document.getElementById("moreInfo"); - let cancelButton = win.document.documentElement.getButton("cancel"); - is(moreInfoLink.getAttribute("href"), - Services.urlFormatter.formatURLPref("extensions.blocklist.detailsURL"), - "More Info link should link to the general blocklist page."); - cancelButton.doCommand(); - executeSoon(finish); - }) - }, false); - }; - Services.ww.registerNotification(windowObserver); - - // Add 2 more addons to the blocked list to check that the more info link - // points to the general blocked list page. - args.list.push({ - name: "Bug 523784 softblocked addon 2", - version: "2", - icon: "chrome://mozapps/skin/plugins/pluginGeneric.png", - disable: false, - blocked: false, - url: 'http://example.com/bug523784_2' - }); - args.list.push({ - name: "Bug 523784 softblocked addon 3", - version: "4", - icon: "chrome://mozapps/skin/plugins/pluginGeneric.png", - disable: false, - blocked: false, - url: 'http://example.com/bug523784_3' - }); - - args.wrappedJSObject = args; - Services.ww.openWindow(null, URI_BLOCKLIST_DIALOG, "", - "chrome,centerscreen,dialog,titlebar", args); -} diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug557943.js b/toolkit/mozapps/webextensions/test/browser/browser_bug557943.js deleted file mode 100644 index 94a8b6f49..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug557943.js +++ /dev/null @@ -1,80 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Bug 557943 - Searching for addons can result in wrong results - -var gManagerWindow; -var gProvider; - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "Microsoft .NET Framework Assistant", - description: "", - version: "6.66" - }, { - id: "addon2@tests.mozilla.org", - name: "AwesomeNet Addon", - description: "" - }, { - id: "addon3@tests.mozilla.org", - name: "Dictionnaire MySpell en Francais (réforme 1990)", - description: "" - }]); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - - -function perform_search(aQuery, aCallback) { - waitForFocus(function() { - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = aQuery; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - var list = gManagerWindow.document.getElementById("search-list"); - var rows = list.getElementsByTagName("richlistitem"); - aCallback(rows); - }); - }, gManagerWindow); -} - - -add_test(function() { - perform_search(".net", function(aRows) { - is(aRows.length, 1, "Should only get one result"); - is(aRows[0].mAddon.id, "addon1@tests.mozilla.org", "Should get expected addon as only result"); - run_next_test(); - }); -}); - -add_test(function() { - perform_search("réf", function(aRows) { - is(aRows.length, 1, "Should only get one result"); - is(aRows[0].mAddon.id, "addon3@tests.mozilla.org", "Should get expected addon as only result"); - run_next_test(); - }); -}); - -add_test(function() { - perform_search("javascript:void()", function(aRows) { - is(aRows.length, 0, "Should not get any results"); - run_next_test(); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug557956.js b/toolkit/mozapps/webextensions/test/browser/browser_bug557956.js deleted file mode 100644 index 136e7cb74..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug557956.js +++ /dev/null @@ -1,524 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Test the compatibility dialog that displays during startup when the browser -// version changes. - -const URI_EXTENSION_UPDATE_DIALOG = "chrome://mozapps/content/extensions/update.xul"; - -const PREF_GETADDONS_BYIDS = "extensions.getAddons.get.url"; -const PREF_MIN_APP_COMPAT = "extensions.minCompatibleAppVersion"; -const PREF_MIN_PLATFORM_COMPAT = "extensions.minCompatiblePlatformVersion"; - -Services.prefs.setBoolPref(PREF_STRICT_COMPAT, true); -// avoid the 'leaked window property' check -var scope = {}; -Components.utils.import("resource://gre/modules/TelemetrySession.jsm", scope); -var TelemetrySession = scope.TelemetrySession; - -/** - * Test add-ons: - * - * Addon minVersion maxVersion Notes - * addon1 0 * - * addon2 0 0 - * addon3 0 0 - * addon4 1 * - * addon5 0 0 Made compatible by update check - * addon6 0 0 Made compatible by update check - * addon7 0 0 Has a broken update available - * addon8 0 0 Has an update available - * addon9 0 0 Has an update available - */ - -function test() { - requestLongerTimeout(2); - waitForExplicitFinish(); - - run_next_test(); -} - -function end_test() { - // Test generates a lot of available installs so just cancel them all - AddonManager.getAllInstalls(function(aInstalls) { - for (let install of aInstalls) - install.cancel(); - - Services.prefs.clearUserPref(PREF_MIN_APP_COMPAT); - Services.prefs.clearUserPref(PREF_MIN_PLATFORM_COMPAT); - - finish(); - }); -} - -function install_test_addons(aCallback) { - var installs = []; - - // Use a blank update URL - Services.prefs.setCharPref(PREF_UPDATEURL, TESTROOT + "missing.rdf"); - - let names = ["browser_bug557956_1", - "browser_bug557956_2", - "browser_bug557956_3", - "browser_bug557956_4", - "browser_bug557956_5", - "browser_bug557956_6", - "browser_bug557956_7", - "browser_bug557956_8_1", - "browser_bug557956_9_1", - "browser_bug557956_10"]; - for (let name of names) { - AddonManager.getInstallForURL(TESTROOT + "addons/" + name + ".xpi", function(aInstall) { - installs.push(aInstall); - }, "application/x-xpinstall"); - } - - var listener = { - installCount: 0, - - onInstallEnded: function() { - this.installCount++; - if (this.installCount == installs.length) { - // Switch to the test update URL - Services.prefs.setCharPref(PREF_UPDATEURL, TESTROOT + "browser_bug557956.rdf"); - - executeSoon(aCallback); - } - } - }; - - for (let install of installs) { - install.addListener(listener); - install.install(); - } -} - -function uninstall_test_addons(aCallback) { - AddonManager.getAddonsByIDs(["bug557956-1@tests.mozilla.org", - "bug557956-2@tests.mozilla.org", - "bug557956-3@tests.mozilla.org", - "bug557956-4@tests.mozilla.org", - "bug557956-5@tests.mozilla.org", - "bug557956-6@tests.mozilla.org", - "bug557956-7@tests.mozilla.org", - "bug557956-8@tests.mozilla.org", - "bug557956-9@tests.mozilla.org", - "bug557956-10@tests.mozilla.org"], - function(aAddons) { - for (let addon of aAddons) { - if (addon) - addon.uninstall(); - } - aCallback(); - }); -} - -// Open the compatibility dialog, with the list of addon IDs -// that were disabled by this "update" -function open_compatibility_window(aDisabledAddons, aCallback) { - // This will reset the longer timeout multiplier to 2 which will give each - // test that calls open_compatibility_window a minimum of 60 seconds to - // complete. - requestLongerTimeout(2); - - var variant = Cc["@mozilla.org/variant;1"]. - createInstance(Ci.nsIWritableVariant); - variant.setFromVariant(aDisabledAddons); - - // Cannot be modal as we want to interact with it, shouldn't cause problems - // with testing though. - var features = "chrome,centerscreen,dialog,titlebar"; - var ww = Cc["@mozilla.org/embedcomp/window-watcher;1"]. - getService(Ci.nsIWindowWatcher); - var win = ww.openWindow(null, URI_EXTENSION_UPDATE_DIALOG, "", features, variant); - - win.addEventListener("load", function() { - win.removeEventListener("load", arguments.callee, false); - - info("Compatibility dialog opened"); - - function page_shown(aEvent) { - if (aEvent.target.pageid) - info("Page " + aEvent.target.pageid + " shown"); - } - - win.addEventListener("pageshow", page_shown, false); - win.addEventListener("unload", function() { - win.removeEventListener("unload", arguments.callee, false); - win.removeEventListener("pageshow", page_shown, false); - info("Compatibility dialog closed"); - }, false); - - aCallback(win); - }, false); -} - -function wait_for_window_close(aWindow, aCallback) { - aWindow.addEventListener("unload", function() { - aWindow.removeEventListener("unload", arguments.callee, false); - aCallback(); - }, false); -} - -function wait_for_page(aWindow, aPageId, aCallback) { - var page = aWindow.document.getElementById(aPageId); - page.addEventListener("pageshow", function() { - page.removeEventListener("pageshow", arguments.callee, false); - executeSoon(function() { - aCallback(aWindow); - }); - }, false); -} - -function get_list_names(aList) { - var items = []; - for (let listItem of aList.childNodes) - items.push(listItem.label); - items.sort(); - return items; -} - -function check_telemetry({disabled, metaenabled, metadisabled, upgraded, failed, declined}) { - let ping = TelemetrySession.getPayload(); - // info(JSON.stringify(ping)); - let am = ping.simpleMeasurements.addonManager; - if (disabled !== undefined) - is(am.appUpdate_disabled, disabled, disabled + " add-ons disabled by version change"); - if (metaenabled !== undefined) - is(am.appUpdate_metadata_enabled, metaenabled, metaenabled + " add-ons enabled by metadata"); - if (metadisabled !== undefined) - is(am.appUpdate_metadata_disabled, metadisabled, metadisabled + " add-ons disabled by metadata"); - if (upgraded !== undefined) - is(am.appUpdate_upgraded, upgraded, upgraded + " add-ons upgraded"); - if (failed !== undefined) - is(am.appUpdate_upgradeFailed, failed, failed + " upgrades failed"); - if (declined !== undefined) - is(am.appUpdate_upgradeDeclined, declined, declined + " upgrades declined"); -} - -add_test(function test_setup() { - let oldCanRecord = Services.telemetry.canRecordExtended; - Services.telemetry.canRecordExtended = true; - registerCleanupFunction(function () { - Services.telemetry.canRecordExtended = oldCanRecord; - }); - run_next_test(); -}); - -// Tests that the right add-ons show up in the mismatch dialog and updates can -// be installed -add_test(function basic_mismatch() { - install_test_addons(function() { - // These add-ons become disabled - var disabledAddonIds = [ - "bug557956-3@tests.mozilla.org", - "bug557956-6@tests.mozilla.org", - "bug557956-7@tests.mozilla.org", - "bug557956-8@tests.mozilla.org", - "bug557956-9@tests.mozilla.org" - ]; - - AddonManager.getAddonsByIDs(["bug557956-5@tests.mozilla.org", - "bug557956-6@tests.mozilla.org"], - function([a5, a6]) { - // Check starting (pre-update) conditions - ok(!a5.isCompatible, "bug557956-5 should not be compatible"); - ok(!a6.isCompatible, "bug557956-6 should not be compatible"); - - open_compatibility_window(disabledAddonIds, function(aWindow) { - var doc = aWindow.document; - wait_for_page(aWindow, "mismatch", function(aWindow) { - var items = get_list_names(doc.getElementById("mismatch.incompatible")); - // Check that compatibility updates from individual add-on update checks were applied. - is(items.length, 4, "Should have seen 4 still incompatible items"); - is(items[0], "Addon3 1.0", "Should have seen addon3 still incompatible"); - is(items[1], "Addon7 1.0", "Should have seen addon7 still incompatible"); - is(items[2], "Addon8 1.0", "Should have seen addon8 still incompatible"); - is(items[3], "Addon9 1.0", "Should have seen addon9 still incompatible"); - - // If it wasn't disabled by this run, we don't try to enable it - ok(!a5.isCompatible, "bug557956-5 should not be compatible"); - ok(a6.isCompatible, "bug557956-6 should be compatible"); - - var button = doc.documentElement.getButton("next"); - EventUtils.synthesizeMouse(button, 2, 2, { }, aWindow); - - wait_for_page(aWindow, "found", function(aWindow) { - ok(doc.getElementById("xpinstallDisabledAlert").hidden, - "Install should be allowed"); - - var list = doc.getElementById("found.updates"); - var items = get_list_names(list); - is(items.length, 3, "Should have seen 3 updates available"); - is(items[0], "Addon7 2.0", "Should have seen update for addon7"); - is(items[1], "Addon8 2.0", "Should have seen update for addon8"); - is(items[2], "Addon9 2.0", "Should have seen update for addon9"); - - ok(!doc.documentElement.getButton("next").disabled, - "Next button should be enabled"); - - // Uncheck all - for (let listItem of list.childNodes) - EventUtils.synthesizeMouse(listItem, 2, 2, { }, aWindow); - - ok(doc.documentElement.getButton("next").disabled, - "Next button should not be enabled"); - - // Check the ones we want to install - for (let listItem of list.childNodes) { - if (listItem.label != "Addon7 2.0") - EventUtils.synthesizeMouse(listItem, 2, 2, { }, aWindow); - } - - var button = doc.documentElement.getButton("next"); - EventUtils.synthesizeMouse(button, 2, 2, { }, aWindow); - - wait_for_page(aWindow, "finished", function(aWindow) { - var button = doc.documentElement.getButton("finish"); - ok(!button.hidden, "Finish button should not be hidden"); - ok(!button.disabled, "Finish button should not be disabled"); - EventUtils.synthesizeMouse(button, 2, 2, { }, aWindow); - - wait_for_window_close(aWindow, function() { - AddonManager.getAddonsByIDs(["bug557956-8@tests.mozilla.org", - "bug557956-9@tests.mozilla.org"], - function([a8, a9]) { - is(a8.version, "2.0", "bug557956-8 should have updated"); - is(a9.version, "2.0", "bug557956-9 should have updated"); - - check_telemetry({disabled: 5, metaenabled: 1, metadisabled: 0, - upgraded: 2, failed: 0, declined: 1}); - - uninstall_test_addons(run_next_test); - }); - }); - }); - }); - }); - }); - }); - }); -}); - -// Tests that the install failures show the install failed page and disabling -// xpinstall shows the right UI. -add_test(function failure_page() { - install_test_addons(function() { - // These add-ons become disabled - var disabledAddonIds = [ - "bug557956-3@tests.mozilla.org", - "bug557956-6@tests.mozilla.org", - "bug557956-7@tests.mozilla.org", - "bug557956-8@tests.mozilla.org", - "bug557956-9@tests.mozilla.org" - ]; - - Services.prefs.setBoolPref("xpinstall.enabled", false); - - open_compatibility_window(disabledAddonIds, function(aWindow) { - var doc = aWindow.document; - wait_for_page(aWindow, "mismatch", function(aWindow) { - var items = get_list_names(doc.getElementById("mismatch.incompatible")); - is(items.length, 4, "Should have seen 4 still incompatible items"); - is(items[0], "Addon3 1.0", "Should have seen addon3 still incompatible"); - is(items[1], "Addon7 1.0", "Should have seen addon7 still incompatible"); - is(items[2], "Addon8 1.0", "Should have seen addon8 still incompatible"); - is(items[3], "Addon9 1.0", "Should have seen addon9 still incompatible"); - - // Check that compatibility updates were applied. - AddonManager.getAddonsByIDs(["bug557956-5@tests.mozilla.org", - "bug557956-6@tests.mozilla.org"], - function([a5, a6]) { - ok(!a5.isCompatible, "bug557956-5 should not be compatible"); - ok(a6.isCompatible, "bug557956-6 should be compatible"); - - var button = doc.documentElement.getButton("next"); - EventUtils.synthesizeMouse(button, 2, 2, { }, aWindow); - - wait_for_page(aWindow, "found", function(aWindow) { - ok(!doc.getElementById("xpinstallDisabledAlert").hidden, - "Install should not be allowed"); - - ok(doc.documentElement.getButton("next").disabled, - "Next button should be disabled"); - - var checkbox = doc.getElementById("enableXPInstall"); - EventUtils.synthesizeMouse(checkbox, 2, 2, { }, aWindow); - - ok(!doc.documentElement.getButton("next").disabled, - "Next button should be enabled"); - - var list = doc.getElementById("found.updates"); - var items = get_list_names(list); - is(items.length, 3, "Should have seen 3 updates available"); - is(items[0], "Addon7 2.0", "Should have seen update for addon7"); - is(items[1], "Addon8 2.0", "Should have seen update for addon8"); - is(items[2], "Addon9 2.0", "Should have seen update for addon9"); - - // Unheck the ones we don't want to install - for (let listItem of list.childNodes) { - if (listItem.label != "Addon7 2.0") - EventUtils.synthesizeMouse(listItem, 2, 2, { }, aWindow); - } - - var button = doc.documentElement.getButton("next"); - EventUtils.synthesizeMouse(button, 2, 2, { }, aWindow); - - wait_for_page(aWindow, "installerrors", function(aWindow) { - var button = doc.documentElement.getButton("finish"); - ok(!button.hidden, "Finish button should not be hidden"); - ok(!button.disabled, "Finish button should not be disabled"); - - wait_for_window_close(aWindow, function() { - uninstall_test_addons(run_next_test); - }); - - check_telemetry({disabled: 5, metaenabled: 1, metadisabled: 0, - upgraded: 0, failed: 1, declined: 2}); - - EventUtils.synthesizeMouse(button, 2, 2, { }, aWindow); - }); - }); - }); - }); - }); - }); -}); - -// Tests that no add-ons show up in the mismatch dialog when they are all disabled -add_test(function all_disabled() { - install_test_addons(function() { - AddonManager.getAddonsByIDs(["bug557956-1@tests.mozilla.org", - "bug557956-2@tests.mozilla.org", - "bug557956-3@tests.mozilla.org", - "bug557956-4@tests.mozilla.org", - "bug557956-5@tests.mozilla.org", - "bug557956-6@tests.mozilla.org", - "bug557956-7@tests.mozilla.org", - "bug557956-8@tests.mozilla.org", - "bug557956-9@tests.mozilla.org", - "bug557956-10@tests.mozilla.org"], - function(aAddons) { - for (let addon of aAddons) - addon.userDisabled = true; - - open_compatibility_window([], function(aWindow) { - // Should close immediately on its own - wait_for_window_close(aWindow, function() { - uninstall_test_addons(run_next_test); - }); - }); - }); - }); -}); - -// Tests that the right UI shows for when no updates are available -add_test(function no_updates() { - install_test_addons(function() { - AddonManager.getAddonsByIDs(["bug557956-7@tests.mozilla.org", - "bug557956-8@tests.mozilla.org", - "bug557956-9@tests.mozilla.org", - "bug557956-10@tests.mozilla.org"], - function(aAddons) { - for (let addon of aAddons) - addon.uninstall(); - - // These add-ons were disabled by the upgrade - var inactiveAddonIds = [ - "bug557956-3@tests.mozilla.org", - "bug557956-5@tests.mozilla.org", - "bug557956-6@tests.mozilla.org" - ]; - - open_compatibility_window(inactiveAddonIds, function(aWindow) { - var doc = aWindow.document; - wait_for_page(aWindow, "mismatch", function(aWindow) { - var items = get_list_names(doc.getElementById("mismatch.incompatible")); - is(items.length, 1, "Should have seen 1 still incompatible items"); - is(items[0], "Addon3 1.0", "Should have seen addon3 still incompatible"); - - var button = doc.documentElement.getButton("next"); - EventUtils.synthesizeMouse(button, 2, 2, { }, aWindow); - - wait_for_page(aWindow, "noupdates", function(aWindow) { - var button = doc.documentElement.getButton("finish"); - ok(!button.hidden, "Finish button should not be hidden"); - ok(!button.disabled, "Finish button should not be disabled"); - - wait_for_window_close(aWindow, function() { - uninstall_test_addons(run_next_test); - }); - - EventUtils.synthesizeMouse(button, 2, 2, { }, aWindow); - }); - }); - }); - }); - }); -}); - -// Tests that compatibility overrides are retrieved and affect addon -// compatibility. -add_test(function overrides_retrieved() { - Services.prefs.setBoolPref(PREF_STRICT_COMPAT, false); - Services.prefs.setCharPref(PREF_MIN_APP_COMPAT, "0"); - Services.prefs.setCharPref(PREF_MIN_PLATFORM_COMPAT, "0"); - is(AddonManager.strictCompatibility, false, "Strict compatibility should be disabled"); - - // Use a blank update URL - Services.prefs.setCharPref(PREF_UPDATEURL, TESTROOT + "missing.rdf"); - - install_test_addons(function() { - - AddonManager.getAddonsByIDs(["bug557956-1@tests.mozilla.org", - "bug557956-2@tests.mozilla.org", - "bug557956-3@tests.mozilla.org", - "bug557956-4@tests.mozilla.org", - "bug557956-5@tests.mozilla.org", - "bug557956-6@tests.mozilla.org", - "bug557956-7@tests.mozilla.org", - "bug557956-8@tests.mozilla.org", - "bug557956-9@tests.mozilla.org", - "bug557956-10@tests.mozilla.org"], - function(aAddons) { - - for (let addon of aAddons) { - if (addon.id == "bug557956-10@tests.mozilla.org") - is(addon.isCompatible, true, "Addon10 should be compatible before compat overrides are refreshed"); - else - addon.uninstall(); - } - - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, TESTROOT + "browser_bug557956.xml"); - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - - open_compatibility_window([], function(aWindow) { - var doc = aWindow.document; - wait_for_page(aWindow, "mismatch", function(aWindow) { - var items = get_list_names(doc.getElementById("mismatch.incompatible")); - is(items.length, 1, "Should have seen 1 incompatible item"); - is(items[0], "Addon10 1.0", "Should have seen addon10 as incompatible"); - - var button = doc.documentElement.getButton("next"); - EventUtils.synthesizeMouse(button, 2, 2, { }, aWindow); - - wait_for_page(aWindow, "noupdates", function(aWindow) { - var button = doc.documentElement.getButton("finish"); - ok(!button.hidden, "Finish button should not be hidden"); - ok(!button.disabled, "Finish button should not be disabled"); - - wait_for_window_close(aWindow, function() { - uninstall_test_addons(run_next_test); - }); - - check_telemetry({disabled: 0, metaenabled: 0, metadisabled: 1, - upgraded: 0, failed: 0, declined: 0}); - - EventUtils.synthesizeMouse(button, 2, 2, { }, aWindow); - }); - }); - }); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug557956.rdf b/toolkit/mozapps/webextensions/test/browser/browser_bug557956.rdf deleted file mode 100644 index c72eb9363..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug557956.rdf +++ /dev/null @@ -1,310 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <RDF:Description about="urn:mozilla:extension:bug557956-1@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <em:targetApplication> - <RDF:Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </RDF:Description> - </em:targetApplication> - <em:targetApplication> - <RDF:Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - </RDF:Seq> - </em:updates> - </RDF:Description> - - <RDF:Description about="urn:mozilla:extension:bug557956-2@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <em:targetApplication> - <RDF:Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </RDF:Description> - </em:targetApplication> - <em:targetApplication> - <RDF:Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - </RDF:Seq> - </em:updates> - </RDF:Description> - - <RDF:Description about="urn:mozilla:extension:bug557956-3@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <em:targetApplication> - <RDF:Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </RDF:Description> - </em:targetApplication> - <em:targetApplication> - <RDF:Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - </RDF:Seq> - </em:updates> - </RDF:Description> - - <RDF:Description about="urn:mozilla:extension:bug557956-4@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <em:targetApplication> - <RDF:Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </RDF:Description> - </em:targetApplication> - <em:targetApplication> - <RDF:Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>1</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - </RDF:Seq> - </em:updates> - </RDF:Description> - - <RDF:Description about="urn:mozilla:extension:bug557956-5@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <em:targetApplication> - <RDF:Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </RDF:Description> - </em:targetApplication> - <em:targetApplication> - <RDF:Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - </RDF:Seq> - </em:updates> - </RDF:Description> - - <RDF:Description about="urn:mozilla:extension:bug557956-6@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <em:targetApplication> - <RDF:Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </RDF:Description> - </em:targetApplication> - <em:targetApplication> - <RDF:Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - </RDF:Seq> - </em:updates> - </RDF:Description> - - <RDF:Description about="urn:mozilla:extension:bug557956-7@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <em:targetApplication> - <RDF:Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </RDF:Description> - </em:targetApplication> - <em:targetApplication> - <RDF:Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - <RDF:li> - <RDF:Description> - <em:version>2.0</em:version> - <em:targetApplication> - <RDF:Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - <em:updateLink>http://example.com/browser/toolkit/mozapps/extensions/test/browser/browser_bug557956_7_2.xpi</em:updateLink> - <em:updateHash>sha1:18674cf7ad76664e0ead6280a43cc0c681180505</em:updateHash> - </RDF:Description> - </em:targetApplication> - <em:targetApplication> - <RDF:Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - <em:updateLink>http://example.com/browser/toolkit/mozapps/extensions/test/browser/browser_bug557956_7_2.xpi</em:updateLink> - <em:updateHash>sha1:18674cf7ad76664e0ead6280a43cc0c681180505</em:updateHash> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - </RDF:Seq> - </em:updates> - </RDF:Description> - - <RDF:Description about="urn:mozilla:extension:bug557956-8@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <em:targetApplication> - <RDF:Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </RDF:Description> - </em:targetApplication> - <em:targetApplication> - <RDF:Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - <RDF:li> - <RDF:Description> - <em:version>2.0</em:version> - <em:targetApplication> - <RDF:Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - <em:updateLink>http://example.com/browser/toolkit/mozapps/extensions/test/browser/browser_bug557956_8_2.xpi</em:updateLink> - <em:updateHash>sha1:5691c398e55ddf93aa1076b9820619d21d40acbc</em:updateHash> - </RDF:Description> - </em:targetApplication> - <em:targetApplication> - <RDF:Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - <em:updateLink>http://example.com/browser/toolkit/mozapps/extensions/test/browser/browser_bug557956_8_2.xpi</em:updateLink> - <em:updateHash>sha1:5691c398e55ddf93aa1076b9820619d21d40acbc</em:updateHash> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - </RDF:Seq> - </em:updates> - </RDF:Description> - - <RDF:Description about="urn:mozilla:extension:bug557956-9@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <em:targetApplication> - <RDF:Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </RDF:Description> - </em:targetApplication> - <em:targetApplication> - <RDF:Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0</em:maxVersion> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - <RDF:li> - <RDF:Description> - <em:version>2.0</em:version> - <em:targetApplication> - <RDF:Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - <em:updateLink>http://example.com/browser/toolkit/mozapps/extensions/test/browser/browser_bug557956_9_2.xpi</em:updateLink> - <em:updateHash>sha1:1ae63bfc6f67a4503a1ff1bd02402c98fef19ae3</em:updateHash> - </RDF:Description> - </em:targetApplication> - <em:targetApplication> - <RDF:Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - <em:updateLink>http://example.com/browser/toolkit/mozapps/extensions/test/browser/browser_bug557956_9_2.xpi</em:updateLink> - <em:updateHash>sha1:1ae63bfc6f67a4503a1ff1bd02402c98fef19ae3</em:updateHash> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - </RDF:Seq> - </em:updates> - </RDF:Description> - -</RDF:RDF> - diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug557956.xml b/toolkit/mozapps/webextensions/test/browser/browser_bug557956.xml deleted file mode 100644 index c32ed3062..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug557956.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<searchresults total_results="1"> - <addon_compatibility hosted="false"> - <guid>bug557956-10@tests.mozilla.org</guid> - <name>Addon10</name> - <version_ranges> - <version_range type="incompatible"> - <min_version>1.0</min_version> - <max_version>2.0</max_version> - <compatible_applications> - <application> - <min_version>0.1</min_version> - <max_version>999.0</max_version> - <appID>toolkit@mozilla.org</appID> - </application> - </compatible_applications> - </version_range> - </version_ranges> - </addon_compatibility> -</searchresults> diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug557956_8_2.xpi b/toolkit/mozapps/webextensions/test/browser/browser_bug557956_8_2.xpi Binary files differdeleted file mode 100644 index e99f3c3bd..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug557956_8_2.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug557956_9_2.xpi b/toolkit/mozapps/webextensions/test/browser/browser_bug557956_9_2.xpi Binary files differdeleted file mode 100644 index 23686b608..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug557956_9_2.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug562797.js b/toolkit/mozapps/webextensions/test/browser/browser_bug562797.js deleted file mode 100644 index 55e882a05..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug562797.js +++ /dev/null @@ -1,975 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -/** - * Tests that history navigation works for the add-ons manager. - */ - -const MAIN_URL = "https://example.com/" + RELATIVE_DIR + "discovery.html"; -const SECOND_URL = "https://example.com/" + RELATIVE_DIR + "releaseNotes.xhtml"; - -var gLoadCompleteCallback = null; - -var gProgressListener = { - onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus) { - // Only care about the network stop status events - if (!(aStateFlags & (Ci.nsIWebProgressListener.STATE_IS_NETWORK)) || - !(aStateFlags & (Ci.nsIWebProgressListener.STATE_STOP))) - return; - - if (gLoadCompleteCallback) - executeSoon(gLoadCompleteCallback); - gLoadCompleteCallback = null; - }, - - onLocationChange: function() { }, - onSecurityChange: function() { }, - onProgressChange: function() { }, - onStatusChange: function() { }, - - QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebProgressListener, - Ci.nsISupportsWeakReference]), -}; - -function waitForLoad(aManager, aCallback) { - var browser = aManager.document.getElementById("discover-browser"); - browser.addProgressListener(gProgressListener); - - gLoadCompleteCallback = function() { - browser.removeProgressListener(gProgressListener); - aCallback(); - }; -} - -function clickLink(aManager, aId, aCallback) { - waitForLoad(aManager, aCallback); - - var browser = aManager.document.getElementById("discover-browser"); - - var link = browser.contentDocument.getElementById(aId); - EventUtils.sendMouseEvent({type: "click"}, link); -} - -function test() { - requestLongerTimeout(2); - - waitForExplicitFinish(); - - Services.prefs.setCharPref(PREF_DISCOVERURL, MAIN_URL); - - SpecialPowers.pushPrefEnv({"set": [ - ["dom.ipc.processCount", 1], - ]}, () => { - var gProvider = new MockProvider(); - gProvider.createAddons([{ - id: "test1@tests.mozilla.org", - name: "Test add-on 1", - description: "foo" - }, - { - id: "test2@tests.mozilla.org", - name: "Test add-on 2", - description: "bar" - }, - { - id: "test3@tests.mozilla.org", - name: "Test add-on 3", - type: "theme", - description: "bar" - }]); - }); - - run_next_test(); -} - -function end_test() { - finish(); -} - -function go_back(aManager) { - if (gUseInContentUI) { - gBrowser.goBack(); - } else { - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("back-btn"), - { }, aManager); - } -} - -function go_back_backspace(aManager) { - EventUtils.synthesizeKey("VK_BACK_SPACE", {}); -} - -function go_forward_backspace(aManager) { - EventUtils.synthesizeKey("VK_BACK_SPACE", {shiftKey: true}); -} - -function go_forward(aManager) { - if (gUseInContentUI) { - gBrowser.goForward(); - } else { - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("forward-btn"), - { }, aManager); - } -} - -function check_state(aManager, canGoBack, canGoForward) { - var doc = aManager.document; - - if (gUseInContentUI) { - is(gBrowser.canGoBack, canGoBack, "canGoBack should be correct"); - is(gBrowser.canGoForward, canGoForward, "canGoForward should be correct"); - } - - if (!is_hidden(doc.getElementById("back-btn"))) { - is(!doc.getElementById("back-btn").disabled, canGoBack, "Back button should have the right state"); - is(!doc.getElementById("forward-btn").disabled, canGoForward, "Forward button should have the right state"); - } -} - -function is_in_list(aManager, view, canGoBack, canGoForward) { - var doc = aManager.document; - - is(doc.getElementById("categories").selectedItem.value, view, "Should be on the right category"); - is(get_current_view(aManager).id, "list-view", "Should be on the right view"); - - check_state(aManager, canGoBack, canGoForward); -} - -function is_in_search(aManager, query, canGoBack, canGoForward) { - var doc = aManager.document; - - is(doc.getElementById("categories").selectedItem.value, "addons://search/", "Should be on the right category"); - is(get_current_view(aManager).id, "search-view", "Should be on the right view"); - is(doc.getElementById("header-search").value, query, "Should have used the right query"); - - check_state(aManager, canGoBack, canGoForward); -} - -function is_in_detail(aManager, view, canGoBack, canGoForward) { - var doc = aManager.document; - - is(doc.getElementById("categories").selectedItem.value, view, "Should be on the right category"); - is(get_current_view(aManager).id, "detail-view", "Should be on the right view"); - - check_state(aManager, canGoBack, canGoForward); -} - -function is_in_discovery(aManager, url, canGoBack, canGoForward) { - var browser = aManager.document.getElementById("discover-browser"); - - is(aManager.document.getElementById("discover-view").selectedPanel, browser, - "Browser should be visible"); - - var spec = browser.currentURI.spec; - var pos = spec.indexOf("#"); - if (pos != -1) - spec = spec.substring(0, pos); - - is(spec, url, "Should have loaded the right url"); - - check_state(aManager, canGoBack, canGoForward); -} - -function double_click_addon_element(aManager, aId) { - var addon = get_addon_element(aManager, aId); - addon.parentNode.ensureElementIsVisible(addon); - EventUtils.synthesizeMouseAtCenter(addon, { clickCount: 1 }, aManager); - EventUtils.synthesizeMouseAtCenter(addon, { clickCount: 2 }, aManager); -} - -// Tests simple forward and back navigation and that the right heading and -// category is selected -add_test(function() { - open_manager("addons://list/extension", function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/extension", false, false); - - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("category-plugin"), { }, aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 2"); - is_in_list(aManager, "addons://list/plugin", true, false); - - go_back(aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 3"); - is_in_list(aManager, "addons://list/extension", false, true); - - go_forward(aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 4"); - is_in_list(aManager, "addons://list/plugin", true, false); - - go_back(aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 5"); - is_in_list(aManager, "addons://list/extension", false, true); - - double_click_addon_element(aManager, "test1@tests.mozilla.org"); - - wait_for_view_load(aManager, function(aManager) { - info("Part 6"); - is_in_detail(aManager, "addons://list/extension", true, false); - - go_back(aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 7"); - is_in_list(aManager, "addons://list/extension", false, true); - - close_manager(aManager, run_next_test); - }); - }); - }); - }); - }); - }); - }); -}); - -// Tests that browsing to the add-ons manager from a website and going back works -// Only relevant for in-content UI -add_test(function() { - if (!gUseInContentUI) { - run_next_test(); - return; - } - - function promiseViewLoad(manager) { - return new Promise(resolve => { - wait_for_view_load(manager, resolve); - }); - } - - function promiseManagerLoaded(manager) { - return new Promise(resolve => { - wait_for_manager_load(manager, resolve); - }); - } - - Task.spawn(function*() { - info("Part 1"); - yield BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/", true, true); - - info("Part 2"); - ok(!gBrowser.canGoBack, "Should not be able to go back"); - ok(!gBrowser.canGoForward, "Should not be able to go forward"); - - yield BrowserTestUtils.loadURI(gBrowser.selectedBrowser, "about:addons"); - yield BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser); - - let manager = yield promiseManagerLoaded(gBrowser.contentWindow.wrappedJSObject); - - info("Part 3"); - is_in_list(manager, "addons://list/extension", true, false); - - // XXX: This is less than ideal, as it's currently difficult to deal with - // the browser frame switching between remote/non-remote in e10s mode. - let promiseLoaded; - if (gMultiProcessBrowser) { - promiseLoaded = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser); - } else { - promiseLoaded = BrowserTestUtils.waitForEvent(gBrowser.selectedBrowser, "pageshow"); - } - - go_back(manager); - yield promiseLoaded; - - info("Part 4"); - is(gBrowser.currentURI.spec, "http://example.com/", "Should be showing the webpage"); - ok(!gBrowser.canGoBack, "Should not be able to go back"); - ok(gBrowser.canGoForward, "Should be able to go forward"); - - promiseLoaded = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser); - go_forward(manager); - yield promiseLoaded; - - manager = yield promiseManagerLoaded(gBrowser.contentWindow.wrappedJSObject); - info("Part 5"); - is_in_list(manager, "addons://list/extension", true, false); - - close_manager(manager, run_next_test); - }); -}); - -// Tests simple forward and back navigation and that the right heading and -// category is selected -- Keyboard navigation [Bug 565359] -// Only add the test if the backspace key navigates back and addon-manager -// loaded in a tab -add_test(function() { - - if (!gUseInContentUI || (Services.prefs.getIntPref("browser.backspace_action") != 0)) { - run_next_test(); - return; - } - - open_manager("addons://list/extension", function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/extension", false, false); - - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("category-plugin"), { }, aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 2"); - is_in_list(aManager, "addons://list/plugin", true, false); - - go_back_backspace(aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 3"); - is_in_list(aManager, "addons://list/extension", false, true); - - go_forward_backspace(aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 4"); - is_in_list(aManager, "addons://list/plugin", true, false); - - go_back_backspace(aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 5"); - is_in_list(aManager, "addons://list/extension", false, true); - - double_click_addon_element(aManager, "test1@tests.mozilla.org"); - - wait_for_view_load(aManager, function(aManager) { - info("Part 6"); - is_in_detail(aManager, "addons://list/extension", true, false); - - go_back_backspace(aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 7"); - is_in_list(aManager, "addons://list/extension", false, true); - - close_manager(aManager, run_next_test); - }); - }); - }); - }); - }); - }); - }); -}); - - -// Tests that opening a custom first view only stores a single history entry -add_test(function() { - open_manager("addons://list/plugin", function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/plugin", false, false); - - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("category-extension"), { }, aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 2"); - is_in_list(aManager, "addons://list/extension", true, false); - - go_back(aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 3"); - is_in_list(aManager, "addons://list/plugin", false, true); - - close_manager(aManager, run_next_test); - }); - }); - }); -}); - - -// Tests that opening a view while the manager is already open adds a new -// history entry -add_test(function() { - open_manager("addons://list/extension", function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/extension", false, false); - - aManager.loadView("addons://list/plugin"); - - wait_for_view_load(aManager, function(aManager) { - info("Part 2"); - is_in_list(aManager, "addons://list/plugin", true, false); - - go_back(aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 3"); - is_in_list(aManager, "addons://list/extension", false, true); - - go_forward(aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 4"); - is_in_list(aManager, "addons://list/plugin", true, false); - - close_manager(aManager, run_next_test); - }); - }); - }); - }); -}); - -// Tests than navigating to a website and then going back returns to the -// previous view -// Only relevant for in-content UI -add_test(function() { - if (!gUseInContentUI) { - run_next_test(); - return; - } - - open_manager("addons://list/plugin", function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/plugin", false, false); - - gBrowser.loadURI("http://example.com/"); - gBrowser.addEventListener("pageshow", function(event) { - if (event.target.location != "http://example.com/") - return; - gBrowser.removeEventListener("pageshow", arguments.callee, false); - info("Part 2"); - - executeSoon(function() { - ok(gBrowser.canGoBack, "Should be able to go back"); - ok(!gBrowser.canGoForward, "Should not be able to go forward"); - - go_back(aManager); - - gBrowser.addEventListener("pageshow", function(event) { - if (event.target.location != "about:addons") - return; - gBrowser.removeEventListener("pageshow", arguments.callee, false); - - wait_for_view_load(gBrowser.contentWindow.wrappedJSObject, function(aManager) { - info("Part 3"); - is_in_list(aManager, "addons://list/plugin", false, true); - - executeSoon(() => go_forward(aManager)); - gBrowser.addEventListener("pageshow", function(event) { - if (event.target.location != "http://example.com/") - return; - gBrowser.removeEventListener("pageshow", arguments.callee, false); - info("Part 4"); - - executeSoon(function() { - ok(gBrowser.canGoBack, "Should be able to go back"); - ok(!gBrowser.canGoForward, "Should not be able to go forward"); - - go_back(aManager); - - gBrowser.addEventListener("pageshow", function(event) { - if (event.target.location != "about:addons") - return; - gBrowser.removeEventListener("pageshow", arguments.callee, false); - wait_for_view_load(gBrowser.contentWindow.wrappedJSObject, function(aManager) { - info("Part 5"); - is_in_list(aManager, "addons://list/plugin", false, true); - - close_manager(aManager, run_next_test); - }); - }, false); - }); - }, false); - }); - }, false); - }); - }, false); - }); -}); - -// Tests that going back to search results works -add_test(function() { - // Before we open the add-ons manager, we should make sure that no filter - // has been set. If one is set, we remove it. - // This is for the check below, from bug 611459. - let store = Cc["@mozilla.org/xul/xulstore;1"].getService(Ci.nsIXULStore); - store.removeValue("about:addons", "search-filter-radiogroup", "value"); - - open_manager("addons://list/extension", function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/extension", false, false); - - var search = aManager.document.getElementById("header-search"); - search.focus(); - search.value = "bar"; - EventUtils.synthesizeKey("VK_RETURN", {}, aManager); - - wait_for_view_load(aManager, function(aManager) { - // Remote search is meant to be checked by default (bug 611459), so we - // confirm that and then switch to a local search. - var localFilter = aManager.document.getElementById("search-filter-local"); - var remoteFilter = aManager.document.getElementById("search-filter-remote"); - - is(remoteFilter.selected, true, "Remote filter should be set by default"); - - var list = aManager.document.getElementById("search-list"); - list.ensureElementIsVisible(localFilter); - EventUtils.synthesizeMouseAtCenter(localFilter, { }, aManager); - - is(localFilter.selected, true, "Should have changed to local filter"); - - // Now we continue with the normal test. - - info("Part 2"); - is_in_search(aManager, "bar", true, false); - check_all_in_list(aManager, ["test2@tests.mozilla.org", "test3@tests.mozilla.org"]); - - double_click_addon_element(aManager, "test2@tests.mozilla.org"); - - wait_for_view_load(aManager, function(aManager) { - info("Part 3"); - is_in_detail(aManager, "addons://search/", true, false); - - go_back(aManager); - wait_for_view_load(aManager, function(aManager) { - info("Part 4"); - is_in_search(aManager, "bar", true, true); - check_all_in_list(aManager, ["test2@tests.mozilla.org", "test3@tests.mozilla.org"]); - - go_forward(aManager); - wait_for_view_load(aManager, function(aManager) { - info("Part 5"); - is_in_detail(aManager, "addons://search/", true, false); - - close_manager(aManager, run_next_test); - }); - }); - }); - }); - }); -}); - -// Tests that going back from a webpage to a detail view loaded from a search -// result works -// Only relevant for in-content UI -add_test(function() { - if (!gUseInContentUI) { - run_next_test(); - return; - } - - open_manager("addons://list/extension", function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/extension", false, false); - - var search = aManager.document.getElementById("header-search"); - search.focus(); - search.value = "bar"; - EventUtils.synthesizeKey("VK_RETURN", {}); - - wait_for_view_load(aManager, function(aManager) { - info("Part 2"); - is_in_search(aManager, "bar", true, false); - check_all_in_list(aManager, ["test2@tests.mozilla.org", "test3@tests.mozilla.org"]); - - double_click_addon_element(aManager, "test2@tests.mozilla.org"); - - wait_for_view_load(aManager, function(aManager) { - info("Part 3"); - is_in_detail(aManager, "addons://search/", true, false); - - gBrowser.loadURI("http://example.com/"); - gBrowser.addEventListener("pageshow", function(event) { - if (event.target.location != "http://example.com/") - return; - gBrowser.removeEventListener("pageshow", arguments.callee, false); - - info("Part 4"); - executeSoon(function() { - ok(gBrowser.canGoBack, "Should be able to go back"); - ok(!gBrowser.canGoForward, "Should not be able to go forward"); - - go_back(aManager); - gBrowser.addEventListener("pageshow", function(event) { - if (event.target.location != "about:addons") - return; - gBrowser.removeEventListener("pageshow", arguments.callee, false); - - wait_for_view_load(gBrowser.contentWindow.wrappedJSObject, function(aManager) { - info("Part 5"); - is_in_detail(aManager, "addons://search/", true, true); - - go_back(aManager); - wait_for_view_load(aManager, function(aManager) { - info("Part 6"); - is_in_search(aManager, "bar", true, true); - check_all_in_list(aManager, ["test2@tests.mozilla.org", "test3@tests.mozilla.org"]); - - close_manager(aManager, run_next_test); - }); - }); - }, false); - }); - }, false); - }); - }); - }); -}); - -// Tests that refreshing a list view does not affect the history -// Only relevant for in-content UI -add_test(function() { - if (!gUseInContentUI) { - run_next_test(); - return; - } - - open_manager("addons://list/extension", function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/extension", false, false); - - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("category-plugin"), { }, aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 2"); - is_in_list(aManager, "addons://list/plugin", true, false); - - gBrowser.reload(); - gBrowser.addEventListener("pageshow", function(event) { - if (event.target.location != "about:addons") - return; - gBrowser.removeEventListener("pageshow", arguments.callee, false); - - wait_for_view_load(gBrowser.contentWindow.wrappedJSObject, function(aManager) { - info("Part 3"); - is_in_list(aManager, "addons://list/plugin", true, false); - - go_back(aManager); - wait_for_view_load(aManager, function(aManager) { - info("Part 4"); - is_in_list(aManager, "addons://list/extension", false, true); - - close_manager(aManager, run_next_test); - }); - }); - }, false); - }); - }); -}); - -// Tests that refreshing a detail view does not affect the history -// Only relevant for in-content UI -add_test(function() { - if (!gUseInContentUI) { - run_next_test(); - return; - } - - open_manager(null, function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/extension", false, false); - - double_click_addon_element(aManager, "test1@tests.mozilla.org"); - - wait_for_view_load(aManager, function(aManager) { - info("Part 2"); - is_in_detail(aManager, "addons://list/extension", true, false); - - gBrowser.reload(); - gBrowser.addEventListener("pageshow", function(event) { - if (event.target.location != "about:addons") - return; - gBrowser.removeEventListener("pageshow", arguments.callee, false); - - wait_for_view_load(gBrowser.contentWindow.wrappedJSObject, function(aManager) { - info("Part 3"); - is_in_detail(aManager, "addons://list/extension", true, false); - - go_back(aManager); - wait_for_view_load(aManager, function(aManager) { - info("Part 4"); - is_in_list(aManager, "addons://list/extension", false, true); - - close_manager(aManager, run_next_test); - }); - }); - }, false); - }); - }); -}); - -// Tests that removing an extension from the detail view goes back and doesn't -// allow you to go forward again. -add_test(function() { - open_manager("addons://list/extension", function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/extension", false, false); - - double_click_addon_element(aManager, "test1@tests.mozilla.org"); - - wait_for_view_load(aManager, function(aManager) { - info("Part 2"); - is_in_detail(aManager, "addons://list/extension", true, false); - - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("detail-uninstall-btn"), - { }, aManager); - - wait_for_view_load(aManager, function() { - if (gUseInContentUI) { - // TODO until bug 590661 is fixed the back button will be enabled - // when displaying in content - is_in_list(aManager, "addons://list/extension", true, false); - } else { - is_in_list(aManager, "addons://list/extension", false, false); - } - - close_manager(aManager, run_next_test); - }); - }); - }); -}); - -// Tests that the back and forward buttons only show up for windowed mode -add_test(function() { - open_manager(null, function(aManager) { - var doc = aManager.document; - - if (gUseInContentUI) { - var btn = document.getElementById("back-button"); - if (!btn || is_hidden(btn)) { - is_element_visible(doc.getElementById("back-btn"), "Back button should not be hidden"); - is_element_visible(doc.getElementById("forward-btn"), "Forward button should not be hidden"); - } else { - is_element_hidden(doc.getElementById("back-btn"), "Back button should be hidden"); - is_element_hidden(doc.getElementById("forward-btn"), "Forward button should be hidden"); - } - } else { - is_element_visible(doc.getElementById("back-btn"), "Back button should not be hidden"); - is_element_visible(doc.getElementById("forward-btn"), "Forward button should not be hidden"); - } - - close_manager(aManager, run_next_test); - }); -}); - -// Tests that opening the manager opens the last view -add_test(function() { - open_manager("addons://list/plugin", function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/plugin", false, false); - - close_manager(aManager, function() { - open_manager(null, function(aManager) { - info("Part 2"); - is_in_list(aManager, "addons://list/plugin", false, false); - - close_manager(aManager, run_next_test); - }); - }); - }); -}); - -// Tests that navigating the discovery page works when that was the first view -add_test(function() { - open_manager("addons://discover/", function(aManager) { - info("1"); - is_in_discovery(aManager, MAIN_URL, false, false); - - clickLink(aManager, "link-good", function() { - info("2"); - is_in_discovery(aManager, SECOND_URL, true, false); - - waitForLoad(aManager, function() { - info("3"); - is_in_discovery(aManager, MAIN_URL, false, true); - - waitForLoad(aManager, function() { - is_in_discovery(aManager, SECOND_URL, true, false); - - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("category-plugin"), { }, aManager); - - wait_for_view_load(aManager, function(aManager) { - is_in_list(aManager, "addons://list/plugin", true, false); - - go_back(aManager); - - wait_for_view_load(aManager, function(aManager) { - is_in_discovery(aManager, SECOND_URL, true, true); - - go_back(aManager); - - waitForLoad(aManager, function() { - is_in_discovery(aManager, MAIN_URL, false, true); - - close_manager(aManager, run_next_test); - }); - }); - }); - }); - - go_forward(aManager); - }); - - go_back(aManager); - }); - }); -}); - -// Tests that navigating the discovery page works when that was the second view -add_test(function() { - open_manager("addons://list/plugin", function(aManager) { - is_in_list(aManager, "addons://list/plugin", false, false); - - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("category-discover"), { }, aManager); - - wait_for_view_load(aManager, function(aManager) { - is_in_discovery(aManager, MAIN_URL, true, false); - - clickLink(aManager, "link-good", function() { - is_in_discovery(aManager, SECOND_URL, true, false); - - waitForLoad(aManager, function() { - is_in_discovery(aManager, MAIN_URL, true, true); - - waitForLoad(aManager, function() { - is_in_discovery(aManager, SECOND_URL, true, false); - - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("category-plugin"), { }, aManager); - - wait_for_view_load(aManager, function(aManager) { - is_in_list(aManager, "addons://list/plugin", true, false); - - go_back(aManager); - - wait_for_view_load(aManager, function(aManager) { - is_in_discovery(aManager, SECOND_URL, true, true); - - go_back(aManager); - - waitForLoad(aManager, function() { - is_in_discovery(aManager, MAIN_URL, true, true); - - go_back(aManager); - - wait_for_view_load(aManager, function(aManager) { - is_in_list(aManager, "addons://list/plugin", false, true); - - go_forward(aManager); - - wait_for_view_load(aManager, function(aManager) { - is_in_discovery(aManager, MAIN_URL, true, true); - - waitForLoad(aManager, function() { - is_in_discovery(aManager, SECOND_URL, true, true); - - close_manager(aManager, run_next_test); - }); - - go_forward(aManager); - }); - }); - }); - }); - }); - }); - - go_forward(aManager); - }); - - go_back(aManager); - }); - }); - }); -}); - -// Tests that when displaying in-content and opened in the background the back -// and forward buttons still appear when switching tabs -add_test(function() { - if (!gUseInContentUI) { - run_next_test(); - return; - } - - var tab = gBrowser.addTab("about:addons"); - var browser = gBrowser.getBrowserForTab(tab); - - browser.addEventListener("pageshow", function(event) { - if (event.target.location.href != "about:addons") - return; - browser.removeEventListener("pageshow", arguments.callee, true); - - wait_for_manager_load(browser.contentWindow.wrappedJSObject, function() { - wait_for_view_load(browser.contentWindow.wrappedJSObject, function(aManager) { - gBrowser.selectedTab = tab; - - var doc = aManager.document; - var btn = document.getElementById("back-button"); - if (!btn || is_hidden(btn)) { - is_element_visible(doc.getElementById("back-btn"), "Back button should not be hidden"); - is_element_visible(doc.getElementById("forward-btn"), "Forward button should not be hidden"); - } else { - is_element_hidden(doc.getElementById("back-btn"), "Back button should be hidden"); - is_element_hidden(doc.getElementById("forward-btn"), "Forward button should be hidden"); - } - - close_manager(aManager, run_next_test); - }); - }); - }, true); -}); - -// Tests that refreshing the disicovery pane integrates properly with history -add_test(function() { - open_manager("addons://list/plugin", function(aManager) { - is_in_list(aManager, "addons://list/plugin", false, false); - - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("category-discover"), { }, aManager); - - wait_for_view_load(aManager, function(aManager) { - is_in_discovery(aManager, MAIN_URL, true, false); - - clickLink(aManager, "link-good", function() { - is_in_discovery(aManager, SECOND_URL, true, false); - - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("category-discover"), { }, aManager); - - waitForLoad(aManager, function() { - is_in_discovery(aManager, MAIN_URL, true, false); - - go_back(aManager); - - waitForLoad(aManager, function() { - is_in_discovery(aManager, SECOND_URL, true, true); - - go_back(aManager); - - waitForLoad(aManager, function() { - is_in_discovery(aManager, MAIN_URL, true, true); - - go_back(aManager); - - wait_for_view_load(aManager, function(aManager) { - is_in_list(aManager, "addons://list/plugin", false, true); - - go_forward(aManager); - - wait_for_view_load(aManager, function(aManager) { - is_in_discovery(aManager, MAIN_URL, true, true); - - waitForLoad(aManager, function() { - is_in_discovery(aManager, SECOND_URL, true, true); - - waitForLoad(aManager, function() { - is_in_discovery(aManager, MAIN_URL, true, false); - - close_manager(aManager, run_next_test); - }); - go_forward(aManager); - }); - - go_forward(aManager); - }); - }); - }); - }); - }); - }); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug562854.js b/toolkit/mozapps/webextensions/test/browser/browser_bug562854.js deleted file mode 100644 index 53e890b71..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug562854.js +++ /dev/null @@ -1,129 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -/** - * Tests that double-click does not go to detail view if the target is a link or button. - */ - -function test() { - requestLongerTimeout(2); - - waitForExplicitFinish(); - - var gProvider = new MockProvider(); - gProvider.createAddons([{ - id: "test1@tests.mozilla.org", - name: "Test add-on 1", - description: "foo", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }]); - - run_next_test(); -} - -function end_test() { - finish(); -} - -function is_in_list(aManager, view) { - var doc = aManager.document; - - is(doc.getElementById("categories").selectedItem.value, view, "Should be on the right category"); - is(get_current_view(aManager).id, "list-view", "Should be on the right view"); -} - -function is_in_detail(aManager, view) { - var doc = aManager.document; - - is(doc.getElementById("categories").selectedItem.value, view, "Should be on the right category"); - is(get_current_view(aManager).id, "detail-view", "Should be on the right view"); -} - -// Check that double-click does something. -add_test(function() { - open_manager("addons://list/extension", function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/extension"); - - var addon = get_addon_element(aManager, "test1@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - EventUtils.synthesizeMouseAtCenter(addon, { clickCount: 1 }, aManager); - EventUtils.synthesizeMouseAtCenter(addon, { clickCount: 2 }, aManager); - - wait_for_view_load(aManager, function(aManager) { - info("Part 2"); - is_in_detail(aManager, "addons://list/extension"); - - close_manager(aManager, run_next_test); - }); - }); -}); - -// Check that double-click does nothing when over the disable button. -add_test(function() { - open_manager("addons://list/extension", function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/extension"); - - var addon = get_addon_element(aManager, "test1@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - EventUtils.synthesizeMouseAtCenter( - aManager.document.getAnonymousElementByAttribute(addon, "anonid", "disable-btn"), - { clickCount: 1 }, - aManager - ); - // The disable button is replaced by the enable button when clicked on. - EventUtils.synthesizeMouseAtCenter( - aManager.document.getAnonymousElementByAttribute(addon, "anonid", "enable-btn"), - { clickCount: 2 }, - aManager - ); - - wait_for_view_load(aManager, function(aManager) { - info("Part 2"); - is_in_list(aManager, "addons://list/extension"); - - close_manager(aManager, run_next_test); - }); - }); -}); - -// Check that double-click does nothing when over the undo button. -add_test(function() { - open_manager("addons://list/extension", function(aManager) { - info("Part 1"); - is_in_list(aManager, "addons://list/extension"); - - var addon = get_addon_element(aManager, "test1@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - EventUtils.synthesizeMouseAtCenter( - aManager.document.getAnonymousElementByAttribute(addon, "anonid", "remove-btn"), - { clickCount: 1 }, - aManager - ); - - // The undo button is removed when clicked on. - // We need to wait for the UI to catch up. - setTimeout(function() { - var target = aManager.document.getAnonymousElementByAttribute(addon, "anonid", "undo-btn"); - var rect = target.getBoundingClientRect(); - var addonRect = addon.getBoundingClientRect(); - - EventUtils.synthesizeMouse(target, rect.width / 2, rect.height / 2, { clickCount: 1 }, aManager); - EventUtils.synthesizeMouse(addon, - rect.left - addonRect.left + rect.width / 2, - rect.top - addonRect.top + rect.height / 2, - { clickCount: 2 }, - aManager - ); - - wait_for_view_load(aManager, function(aManager) { - info("Part 2"); - is_in_list(aManager, "addons://list/extension"); - - close_manager(aManager, run_next_test); - }); - }, 0); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug562890.js b/toolkit/mozapps/webextensions/test/browser/browser_bug562890.js deleted file mode 100644 index ccb12c489..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug562890.js +++ /dev/null @@ -1,78 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -/** - * Tests the Preferences button for addons in list view - */ - -function test() { - requestLongerTimeout(2); - - waitForExplicitFinish(); - - var addonPrefsURI = CHROMEROOT + "addon_prefs.xul"; - - var gProvider = new MockProvider(); - gProvider.createAddons([{ - id: "test1@tests.mozilla.org", - name: "Test add-on 1", - description: "foo" - }, - { - id: "test2@tests.mozilla.org", - name: "Test add-on 2", - description: "bar", - optionsURL: addonPrefsURI - }]); - - open_manager("addons://list/extension", function(aManager) { - var addonList = aManager.document.getElementById("addon-list"); - for (var addonItem of addonList.childNodes) { - if (addonItem.hasAttribute("name") && - addonItem.getAttribute("name") == "Test add-on 1") - break; - } - var prefsBtn = aManager.document.getAnonymousElementByAttribute(addonItem, - "anonid", - "preferences-btn"); - is(prefsBtn.hidden, true, "Prefs button should be hidden for addon with no optionsURL set") - - for (addonItem of addonList.childNodes) { - if (addonItem.hasAttribute("name") && - addonItem.getAttribute("name") == "Test add-on 2") - break; - } - prefsBtn = aManager.document.getAnonymousElementByAttribute(addonItem, - "anonid", - "preferences-btn"); - is(prefsBtn.hidden, false, "Prefs button should be shown for addon with a optionsURL set") - - Services.ww.registerNotification(function TEST_ww_observer(aSubject, aTopic, aData) { - if (aTopic == "domwindowclosed") { - Services.ww.unregisterNotification(TEST_ww_observer); - // Give the preference window a chance to finish closing before closing - // the add-ons manager. - executeSoon(function() { - close_manager(aManager, finish); - }); - } else if (aTopic == "domwindowopened") { - let win = aSubject.QueryInterface(Ci.nsIDOMEventTarget); - win = aSubject.QueryInterface(Ci.nsIDOMEventTarget); - win.addEventListener("load", function TEST_ww_onLoad() { - if (win.location != addonPrefsURI) - return; - - win.removeEventListener("load", TEST_ww_onLoad, false); - is(win.location, addonPrefsURI, - "The correct addon pref window should have opened"); - win.close(); - }, false); - } - }); - - addonList.ensureElementIsVisible(addonItem); - EventUtils.synthesizeMouseAtCenter(prefsBtn, { }, aManager); - }); - -} diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug562899.js b/toolkit/mozapps/webextensions/test/browser/browser_bug562899.js deleted file mode 100644 index 9807be98f..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug562899.js +++ /dev/null @@ -1,88 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Simulates quickly switching between different list views to verify that only -// the last selected is displayed - -var tempScope = {}; -Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", tempScope); -var LightweightThemeManager = tempScope.LightweightThemeManager; - -const xpi = "browser/toolkit/mozapps/extensions/test/browser/browser_installssl.xpi"; - -var gManagerWindow; -var gCategoryUtilities; - -function test() { - waitForExplicitFinish(); - - // Add a lightweight theme so at least one theme exists - LightweightThemeManager.currentTheme = { - id: "test", - name: "Test lightweight theme", - headerURL: "http://example.com/header.png" - }; - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - LightweightThemeManager.forgetUsedTheme("test"); - finish(); - }); -} - -// Tests that loading a second view before the first has not finished loading -// does not merge the results -add_test(function() { - var themeCount = null; - var pluginCount = null; - var themeItem = gCategoryUtilities.get("theme"); - var pluginItem = gCategoryUtilities.get("plugin"); - var list = gManagerWindow.document.getElementById("addon-list"); - - gCategoryUtilities.open(themeItem, function() { - themeCount = list.childNodes.length; - ok(themeCount > 0, "Test is useless if there are no themes"); - - gCategoryUtilities.open(pluginItem, function() { - pluginCount = list.childNodes.length; - ok(pluginCount > 0, "Test is useless if there are no plugins"); - - gCategoryUtilities.open(themeItem); - - gCategoryUtilities.open(pluginItem, function() { - is(list.childNodes.length, pluginCount, "Should only see the plugins"); - - var item = list.firstChild; - while (item) { - is(item.getAttribute("type"), "plugin", "All items should be plugins"); - item = item.nextSibling; - } - - // Tests that switching to, from, to the same pane in quick succession - // still only shows the right number of results - - gCategoryUtilities.open(themeItem); - gCategoryUtilities.open(pluginItem); - gCategoryUtilities.open(themeItem, function() { - is(list.childNodes.length, themeCount, "Should only see the theme"); - - var item = list.firstChild; - while (item) { - is(item.getAttribute("type"), "theme", "All items should be theme"); - item = item.nextSibling; - } - - run_next_test(); - }); - }); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug562992.js b/toolkit/mozapps/webextensions/test/browser/browser_bug562992.js deleted file mode 100644 index 1cd4d90cd..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug562992.js +++ /dev/null @@ -1,70 +0,0 @@ -/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/** - * This test ensures that when the extension manager UI is open and a - * restartless extension is installed from the web, its correct name appears - * when the download and installation complete. See bug 562992. - */ - -var gManagerWindow; -var gProvider; -var gInstall; - -const EXTENSION_NAME = "Wunderbar"; - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - open_manager("addons://list/extension", function (aWindow) { - gManagerWindow = aWindow; - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function () { - finish(); - }); -} - -// Create a MockInstall with a MockAddon payload and add it to the provider, -// causing the onNewInstall event to fire, which in turn will cause a new -// "installing" item to appear in the list of extensions. -add_test(function () { - let addon = new MockAddon(undefined, EXTENSION_NAME, "extension", true); - gInstall = new MockInstall(undefined, undefined, addon); - gInstall.addTestListener({ - onNewInstall: run_next_test - }); - gProvider.addInstall(gInstall); -}); - -// Finish the install, which will cause the "installing" item to be converted -// to an "installed" item, which should have the correct add-on name. -add_test(function () { - gInstall.addTestListener({ - onInstallEnded: function () { - let list = gManagerWindow.document.getElementById("addon-list"); - - // To help prevent future breakage, don't assume the item is the only one - // in the list, or that it's first in the list. Find it by name. - for (let i = 0; i < list.itemCount; i++) { - let item = list.getItemAtIndex(i); - if (item.getAttribute("name") === EXTENSION_NAME) { - ok(true, "Item with correct name found"); - run_next_test(); - return; - } - } - ok(false, "Item with correct name was not found"); - run_next_test(); - } - }); - gInstall.install(); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug567127.js b/toolkit/mozapps/webextensions/test/browser/browser_bug567127.js deleted file mode 100644 index 1d9a75416..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug567127.js +++ /dev/null @@ -1,136 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests bug 567127 - Add install button to the add-ons manager - -var MockFilePicker = SpecialPowers.MockFilePicker; -MockFilePicker.init(window); - -var gManagerWindow; -var gSawInstallNotification = false; - -// This listens for the next opened window and checks it is of the right url. -// opencallback is called when the new window is fully loaded -// closecallback is called when the window is closed -function WindowOpenListener(url, opencallback, closecallback) { - this.url = url; - this.opencallback = opencallback; - this.closecallback = closecallback; - - var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] - .getService(Components.interfaces.nsIWindowMediator); - wm.addListener(this); -} - -WindowOpenListener.prototype = { - url: null, - opencallback: null, - closecallback: null, - window: null, - domwindow: null, - - handleEvent: function(event) { - is(this.domwindow.document.location.href, this.url, "Should have opened the correct window"); - - this.domwindow.removeEventListener("load", this, false); - // Allow any other load handlers to execute - var self = this; - executeSoon(function() { self.opencallback(self.domwindow); } ); - }, - - onWindowTitleChange: function(window, title) { - }, - - onOpenWindow: function(window) { - if (this.window) - return; - - this.window = window; - this.domwindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIDOMWindow); - this.domwindow.addEventListener("load", this, false); - }, - - onCloseWindow: function(window) { - if (this.window != window) - return; - - var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] - .getService(Components.interfaces.nsIWindowMediator); - wm.removeListener(this); - this.opencallback = null; - this.window = null; - this.domwindow = null; - - // Let the window close complete - executeSoon(this.closecallback); - this.closecallback = null; - } -}; - - -var gInstallNotificationObserver = { - observe: function(aSubject, aTopic, aData) { - var installInfo = aSubject.QueryInterface(Ci.amIWebInstallInfo); - if (gTestInWindow) - is(installInfo.browser, null, "Notification should have a null browser"); - else - isnot(installInfo.browser, null, "Notification should have non-null browser"); - gSawInstallNotification = true; - Services.obs.removeObserver(this, "addon-install-started"); - } -}; - - -function test_confirmation(aWindow, aExpectedURLs) { - var list = aWindow.document.getElementById("itemList"); - is(list.childNodes.length, aExpectedURLs.length, "Should be the right number of installs"); - - for (let url of aExpectedURLs) { - let found = false; - for (let node of list.children) { - if (node.url == url) { - found = true; - break; - } - } - ok(found, "Should have seen " + url + " in the list"); - } - - aWindow.document.documentElement.cancelDialog(); -} - -add_task(function* test_install_from_file() { - gManagerWindow = yield open_manager("addons://list/extension"); - - var filePaths = [ - get_addon_file_url("browser_bug567127_1.xpi"), - get_addon_file_url("browser_bug567127_2.xpi") - ]; - MockFilePicker.returnFiles = filePaths.map(aPath => aPath.file); - - Services.obs.addObserver(gInstallNotificationObserver, - "addon-install-started", false); - - // Set handler that executes the core test after the window opens, - // and resolves the promise when the window closes - let pInstallURIClosed = new Promise((resolve, reject) => { - new WindowOpenListener(INSTALL_URI, function(aWindow) { - try { - test_confirmation(aWindow, filePaths.map(aPath => aPath.spec)); - } catch (e) { - reject(e); - } - }, resolve); - }); - - gManagerWindow.gViewController.doCommand("cmd_installFromFile"); - - yield pInstallURIClosed; - - is(gSawInstallNotification, true, "Should have seen addon-install-started notification."); - - MockFilePicker.cleanup(); - yield close_manager(gManagerWindow); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug567137.js b/toolkit/mozapps/webextensions/test/browser/browser_bug567137.js deleted file mode 100644 index bb9b9a894..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug567137.js +++ /dev/null @@ -1,40 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Test that the selected category is persisted across loads of the manager - -function test() { - waitForExplicitFinish(); - - open_manager(null, function(aWindow) { - let utils = new CategoryUtilities(aWindow); - - // Open the plugins category - utils.openType("plugin", function() { - - // Re-open the manager - close_manager(aWindow, function() { - open_manager(null, function(aWindow) { - utils = new CategoryUtilities(aWindow); - - is(utils.selectedCategory, "plugin", "Should have shown the plugins category"); - - // Open the extensions category - utils.openType("extension", function() { - - // Re-open the manager - close_manager(aWindow, function() { - open_manager(null, function(aWindow) { - utils = new CategoryUtilities(aWindow); - - is(utils.selectedCategory, "extension", "Should have shown the extensions category"); - close_manager(aWindow, finish); - }); - }); - }); - }); - }); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug570760.js b/toolkit/mozapps/webextensions/test/browser/browser_bug570760.js deleted file mode 100644 index 0606a9a31..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug570760.js +++ /dev/null @@ -1,44 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// As part of bug 1077403, the leaking uncaught rejection should be fixed. -thisTestLeaksUncaughtRejectionsAndShouldBeFixed(""); - -// Bug 570760 - Make ctrl-f and / focus the search box in the add-ons manager - -var gManagerWindow; -var focusCount = 0; - -function test() { - waitForExplicitFinish(); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - - var searchBox = gManagerWindow.document.getElementById("header-search"); - function focusHandler() { - searchBox.blur(); - focusCount++; - } - searchBox.addEventListener("focus", focusHandler); - f_key_test(); - slash_key_test(); - searchBox.removeEventListener("focus", focusHandler); - end_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, finish); -} - -function f_key_test() { - EventUtils.synthesizeKey("f", { accelKey: true }, gManagerWindow); - is(focusCount, 1, "Search box should have been focused due to the f key"); -} - -function slash_key_test() { - EventUtils.synthesizeKey("/", { }, gManagerWindow); - is(focusCount, 2, "Search box should have been focused due to the / key"); -} diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug572561.js b/toolkit/mozapps/webextensions/test/browser/browser_bug572561.js deleted file mode 100644 index 69102060e..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug572561.js +++ /dev/null @@ -1,99 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that the locale category is shown if there are no locale packs -// installed but some are pending install - -var gManagerWindow; -var gCategoryUtilities; -var gProvider; -var gInstallProperties = [{ - name: "Locale Category Test", - type: "locale" -}]; -var gInstall; -var gExpectedCancel = false; -var gTestInstallListener = { - onInstallStarted: function(aInstall) { - check_hidden(false); - }, - - onInstallEnded: function(aInstall) { - check_hidden(false); - run_next_test(); - }, - - onInstallCancelled: function(aInstall) { - ok(gExpectedCancel, "Should expect install cancel"); - check_hidden(false); - run_next_test(); - }, - - onInstallFailed: function(aInstall) { - ok(false, "Did not expect onInstallFailed"); - run_next_test(); - } -}; - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - -function check_hidden(aExpectedHidden) { - var hidden = !gCategoryUtilities.isTypeVisible("locale"); - is(hidden, aExpectedHidden, "Should have correct hidden state"); -} - -// Tests that a non-active install does not make the locale category show -add_test(function() { - check_hidden(true); - gInstall = gProvider.createInstalls(gInstallProperties)[0]; - gInstall.addTestListener(gTestInstallListener); - check_hidden(true); - run_next_test(); -}); - -// Test that restarting the add-on manager with a non-active install -// does not cause the locale category to show -add_test(function() { - restart_manager(gManagerWindow, null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - check_hidden(true); - run_next_test(); - }); -}); - -// Test that installing the install shows the locale category -add_test(function() { - gInstall.install(); -}); - -// Test that restarting the add-on manager does not cause the locale category -// to become hidden -add_test(function() { - restart_manager(gManagerWindow, null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - check_hidden(false); - - gExpectedCancel = true; - gInstall.cancel(); - }); -}); - diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug573062.js b/toolkit/mozapps/webextensions/test/browser/browser_bug573062.js deleted file mode 100644 index 6554451fb..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug573062.js +++ /dev/null @@ -1,116 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -function test() { - waitForExplicitFinish(); - - var gProvider = new MockProvider(); - let perms = AddonManager.PERM_CAN_UNINSTALL | - AddonManager.PERM_CAN_ENABLE | AddonManager.PERM_CAN_DISABLE; - - gProvider.createAddons([{ - id: "restart-enable-disable@tests.mozilla.org", - name: "restart-enable-disable", - description: "foo", - permissions: perms, - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_ENABLE | - AddonManager.OP_NEEDS_RESTART_DISABLE - }, - { - id: "restart-uninstall@tests.mozilla.org", - name: "restart-uninstall", - description: "foo", - permissions: perms, - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_UNINSTALL - }, - { - id: "no-restart-required@tests.mozilla.org", - name: "no-restart-required", - description: "bar", - permissions: perms, - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }]); - - open_manager("addons://list/extension", function(aWindow) { - let addonList = aWindow.document.getElementById("addon-list"); - let ed_r_Item, un_r_Item, no_r_Item; - for (let addonItem of addonList.childNodes) { - let name = addonItem.getAttribute("name"); - switch (name) { - case "restart-enable-disable": - ed_r_Item = addonItem; - break; - case "restart-uninstall": - un_r_Item = addonItem; - break; - case "no-restart-required": - no_r_Item = addonItem; - break; - } - } - - // Check the buttons in the list view. - function checkTooltips(aItem, aEnable, aDisable, aRemove) { - is(aItem._enableBtn.getAttribute("tooltiptext"), aEnable); - is(aItem._disableBtn.getAttribute("tooltiptext"), aDisable); - is(aItem._removeBtn.getAttribute("tooltiptext"), aRemove); - } - - let strs = aWindow.gStrings.ext; - addonList.selectedItem = ed_r_Item; - let ed_args = [ed_r_Item, - strs.GetStringFromName("enableAddonRestartRequiredTooltip"), - strs.GetStringFromName("disableAddonRestartRequiredTooltip"), - strs.GetStringFromName("uninstallAddonTooltip")]; - checkTooltips.apply(null, ed_args); - - addonList.selectedItem = un_r_Item; - let un_args = [un_r_Item, - strs.GetStringFromName("enableAddonTooltip"), - strs.GetStringFromName("disableAddonTooltip"), - strs.GetStringFromName("uninstallAddonRestartRequiredTooltip")]; - checkTooltips.apply(null, un_args); - - addonList.selectedItem = no_r_Item; - let no_args = [no_r_Item, - strs.GetStringFromName("enableAddonTooltip"), - strs.GetStringFromName("disableAddonTooltip"), - strs.GetStringFromName("uninstallAddonTooltip")]; - checkTooltips.apply(null, no_args); - - // Check the buttons in the details view. - function checkTooltips2(aItem, aEnable, aDisable, aRemove) { - let detailEnable = aWindow.document.getElementById("detail-enable-btn"); - let detailDisable = aWindow.document.getElementById("detail-disable-btn"); - let detailUninstall = aWindow.document.getElementById("detail-uninstall-btn"); - ok(detailEnable.getAttribute("tooltiptext") == aEnable); - ok(detailDisable.getAttribute("tooltiptext") == aDisable); - ok(detailUninstall.getAttribute("tooltiptext") == aRemove); - } - - function showInDetailView(aAddonId) { - aWindow.gViewController.loadView("addons://detail/" + - aWindow.encodeURIComponent(aAddonId)); - } - - // enable-disable: - showInDetailView("restart-enable-disable@tests.mozilla.org"); - wait_for_view_load(aWindow, function() { - checkTooltips2.apply(null, ed_args); - // uninstall: - showInDetailView("restart-uninstall@tests.mozilla.org"); - wait_for_view_load(aWindow, function() { - checkTooltips2.apply(null, un_args); - // no restart: - showInDetailView("no-restart-required@tests.mozilla.org"); - wait_for_view_load(aWindow, function() { - checkTooltips2.apply(null, no_args); - aWindow.close(); - finish(); - }); - }); - }); - - }); -} diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug577990.js b/toolkit/mozapps/webextensions/test/browser/browser_bug577990.js deleted file mode 100644 index 913b3b954..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug577990.js +++ /dev/null @@ -1,132 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that the visible delay in showing the "Language" category occurs -// very minimally - -var gManagerWindow; -var gCategoryUtilities; -var gProvider; -var gInstall; -var gInstallProperties = [{ - name: "Locale Category Test", - type: "locale" -}]; - -function test() { - try { - if (Components.classes["@mozilla.org/gfx/info;1"].getService(Components.interfaces.nsIGfxInfo).D2DEnabled) { - requestLongerTimeout(2); - } - } catch (e) {} - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, finish); -} - -function install_locale(aCallback) { - gInstall = gProvider.createInstalls(gInstallProperties)[0]; - gInstall.addTestListener({ - onInstallEnded: function(aInstall) { - gInstall.removeTestListener(this); - executeSoon(aCallback); - } - }); - gInstall.install(); -} - -function check_hidden(aExpectedHidden) { - var hidden = !gCategoryUtilities.isTypeVisible("locale"); - is(hidden, !!aExpectedHidden, "Should have correct hidden state"); -} - -function run_open_test(aTestSetup, aLoadHidden, aInitializedHidden, aSelected) { - function loadCallback(aManagerWindow) { - gManagerWindow = aManagerWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - check_hidden(aLoadHidden); - } - - function run() { - open_manager(null, function() { - check_hidden(aInitializedHidden); - var selected = (gCategoryUtilities.selectedCategory == "locale"); - is(selected, !!aSelected, "Should have correct selected state"); - - run_next_test(); - }, loadCallback); - } - - close_manager(gManagerWindow, function() { - // Allow for asynchronous functions to run before the manager opens - aTestSetup ? aTestSetup(run) : run(); - }); -} - - -// Tests that the locale category is hidden when there are no locales installed -add_test(function() { - run_open_test(null, true, true); -}); - -// Tests that installing a locale while the Add-on Manager is open shows the -// locale category -add_test(function() { - check_hidden(true); - install_locale(function() { - check_hidden(false); - run_next_test(); - }); -}); - -// Tests that the locale category is shown with no delay when restarting -// Add-on Manager -add_test(function() { - run_open_test(null, false, false); -}); - -// Tests that cancelling the locale install and restarting the Add-on Manager -// causes the locale category to be hidden with an acceptable delay -add_test(function() { - gInstall.cancel(); - run_open_test(null, false, true) -}); - -// Tests that the locale category is hidden with no delay when restarting -// Add-on Manager -add_test(function() { - run_open_test(null, true, true); -}); - -// Tests that installing a locale when the Add-on Manager is closed, and then -// opening the Add-on Manager causes the locale category to be shown with an -// acceptable delay -add_test(function() { - run_open_test(install_locale, true, false); -}); - -// Tests that selection of the locale category persists -add_test(function() { - gCategoryUtilities.openType("locale", function() { - run_open_test(null, false, false, true); - }); -}); - -// Tests that cancelling the locale install and restarting the Add-on Manager -// causes the locale category to be hidden and not selected -add_test(function() { - gInstall.cancel(); - run_open_test(null, false, true); -}); - diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug580298.js b/toolkit/mozapps/webextensions/test/browser/browser_bug580298.js deleted file mode 100644 index d3d338203..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug580298.js +++ /dev/null @@ -1,98 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that certain types of addons do not have their version number -// displayed. This currently only includes lightweight themes. - -var gManagerWindow; -var gCategoryUtilities; -var gProvider; - -add_task(function* test() { - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "extension@tests.mozilla.org", - name: "Extension 1", - type: "extension", - version: "123" - }, { - id: "theme@tests.mozilla.org", - name: "Theme 2", - type: "theme", - version: "456" - }, { - id: "lwtheme@personas.mozilla.org", - name: "Persona 3", - type: "theme", - version: "789" - }]); - - gManagerWindow = yield open_manager(); - gCategoryUtilities = new CategoryUtilities(gManagerWindow); -}); - -function get(aId) { - return gManagerWindow.document.getElementById(aId); -} - -function get_node(parent, anonid) { - return parent.ownerDocument.getAnonymousElementByAttribute(parent, "anonid", anonid); -} - -function open_details(aList, aItem, aCallback) { - aList.ensureElementIsVisible(aItem); - EventUtils.synthesizeMouseAtCenter(aItem, { clickCount: 1 }, gManagerWindow); - EventUtils.synthesizeMouseAtCenter(aItem, { clickCount: 2 }, gManagerWindow); - return new Promise(resolve => wait_for_view_load(gManagerWindow, resolve)); -} - -var check_addon_has_version = Task.async(function*(aList, aName, aVersion) { - for (let i = 0; i < aList.itemCount; i++) { - let item = aList.getItemAtIndex(i); - if (get_node(item, "name").value === aName) { - ok(true, "Item with correct name found"); - let { version } = yield get_tooltip_info(item); - is(version, aVersion, "Item has correct version"); - return item; - } - } - ok(false, "Item with correct name was not found"); - return null; -}); - -add_task(function*() { - yield gCategoryUtilities.openType("extension"); - info("Extension"); - let list = gManagerWindow.document.getElementById("addon-list"); - let item = yield check_addon_has_version(list, "Extension 1", "123"); - yield open_details(list, item); - is_element_visible(get("detail-version"), "Details view has version visible"); - is(get("detail-version").value, "123", "Details view has correct version"); -}); - -add_task(function*() { - yield gCategoryUtilities.openType("theme"); - info("Normal theme"); - let list = gManagerWindow.document.getElementById("addon-list"); - let item = yield check_addon_has_version(list, "Theme 2", "456"); - yield open_details(list, item); - is_element_visible(get("detail-version"), "Details view has version visible"); - is(get("detail-version").value, "456", "Details view has correct version"); -}); - -add_task(function*() { - yield gCategoryUtilities.openType("theme"); - info("Lightweight theme"); - let list = gManagerWindow.document.getElementById("addon-list"); - // See that the version isn't displayed - let item = yield check_addon_has_version(list, "Persona 3", undefined); - yield open_details(list, item); - is_element_hidden(get("detail-version"), "Details view has version hidden"); - // If the version element is hidden then we don't care about its value -}); - -add_task(function end_test() { - close_manager(gManagerWindow, finish); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug581076.js b/toolkit/mozapps/webextensions/test/browser/browser_bug581076.js deleted file mode 100644 index b02a6cc3e..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug581076.js +++ /dev/null @@ -1,132 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Bug 581076 - No "See all results" link present when searching for add-ons and not all are displayed (extensions.getAddons.maxResults) - -const PREF_GETADDONS_BROWSESEARCHRESULTS = "extensions.getAddons.search.browseURL"; -const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url"; -const PREF_GETADDONS_MAXRESULTS = "extensions.getAddons.maxResults"; -const SEARCH_URL = TESTROOT + "browser_searching.xml"; -const SEARCH_EXPECTED_TOTAL = 100; -const SEARCH_QUERY = "search"; - -const SEARCHABLE_PAGE = "addons://list/extension"; - -var gManagerWindow; - - -function test() { - Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, SEARCH_URL); - Services.prefs.setIntPref(PREF_SEARCH_MAXRESULTS, 15); - - waitForExplicitFinish(); - - open_manager(SEARCHABLE_PAGE, function(aWindow) { - gManagerWindow = aWindow; - run_next_test(); - }); -} - -function end_test() { - // Test generates a lot of available installs so just cancel them all - AddonManager.getAllInstalls(function(aInstalls) { - for (let install of aInstalls) - install.cancel(); - - close_manager(gManagerWindow, finish); - }); -} - -function search(aRemoteSearch, aCallback) { - waitForFocus(function() { - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = SEARCH_QUERY; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - let filter; - if (aRemoteSearch) - filter = gManagerWindow.document.getElementById("search-filter-remote"); - else - filter = gManagerWindow.document.getElementById("search-filter-local"); - EventUtils.synthesizeMouseAtCenter(filter, { }, gManagerWindow); - - executeSoon(aCallback); - }); - }, gManagerWindow); -} - -function check_allresultslink(aShouldShow) { - var list = gManagerWindow.document.getElementById("search-list"); - var link = gManagerWindow.document.getElementById("search-allresults-link"); - is(link.parentNode, list.lastChild, "Footer should be at the end of the richlistbox"); - if (aShouldShow) { - is_element_visible(link, "All Results link should be visible"); - is(link.value, "See all " + SEARCH_EXPECTED_TOTAL + " results", "All Results link should show the correct message"); - var scope = {}; - Components.utils.import("resource://gre/modules/addons/AddonRepository.jsm", scope); - is(link.href, scope.AddonRepository.getSearchURL(SEARCH_QUERY), "All Results link should have the correct href"); - } else { - is_element_hidden(link, "All Results link should be hidden"); - } -} - -add_test(function() { - info("Searching locally"); - search(false, function() { - check_allresultslink(false); - restart_manager(gManagerWindow, SEARCHABLE_PAGE, function(aManager) { - gManagerWindow = aManager; - run_next_test(); - }); - }); -}); - -add_test(function() { - debugger; - info("Searching remotely - more results than cap"); - Services.prefs.setIntPref(PREF_GETADDONS_MAXRESULTS, 3); - search(true, function() { - check_allresultslink(true); - restart_manager(gManagerWindow, SEARCHABLE_PAGE, function(aManager) { - gManagerWindow = aManager; - run_next_test(); - }); - }); -}); - -add_test(function() { - info("Searching remotely - less results than cap"); - Services.prefs.setIntPref(PREF_GETADDONS_MAXRESULTS, 200); - search(true, function() { - check_allresultslink(false); - restart_manager(gManagerWindow, SEARCHABLE_PAGE, function(aManager) { - gManagerWindow = aManager; - run_next_test(); - }); - }); -}); - -add_test(function() { - info("Searching remotely - more results than cap"); - Services.prefs.setIntPref(PREF_GETADDONS_MAXRESULTS, 3); - search(true, function() { - check_allresultslink(true); - run_next_test(); - }); -}); - -add_test(function() { - info("Switching views"); - gManagerWindow.loadView("addons://list/extension"); - wait_for_view_load(gManagerWindow, function() { - info("Re-loading previous search"); - search(true, function() { - check_allresultslink(true); - run_next_test(); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug586574.js b/toolkit/mozapps/webextensions/test/browser/browser_bug586574.js deleted file mode 100644 index fb5ebf01b..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug586574.js +++ /dev/null @@ -1,286 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Bug 586574 - Provide way to set a default for automatic updates -// Bug 710064 - Make the "Update Add-ons Automatically" checkbox state -// also depend on the extensions.update.enabled pref - -// TEST_PATH=toolkit/mozapps/extensions/test/browser/browser_bug586574.js make -C obj-ff mochitest-browser-chrome - -const PREF_UPDATE_ENABLED = "extensions.update.enabled"; -const PREF_AUTOUPDATE_DEFAULT = "extensions.update.autoUpdateDefault"; - -var gManagerWindow; -var gProvider; - -var gUtilsBtn; -var gUtilsMenu; -var gDropdownMenu; -var gSetDefault; -var gResetToAutomatic; -var gResetToManual; - -// Make sure we don't accidentally start a background update while the prefs -// are enabled. -disableBackgroundUpdateTimer(); -registerCleanupFunction(() => { - enableBackgroundUpdateTimer(); -}); - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "addon 1", - version: "1.0", - applyBackgroundUpdates: AddonManager.AUTOUPDATE_DISABLE - }]); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - - gUtilsBtn = gManagerWindow.document.getElementById("header-utils-btn"); - gUtilsMenu = gManagerWindow.document.getElementById("utils-menu"); - - run_next_test(); - }); -} - - -function end_test() { - close_manager(gManagerWindow, finish); -} - - -function wait_for_popup(aCallback) { - if (gUtilsMenu.state == "open") { - aCallback(); - return; - } - - gUtilsMenu.addEventListener("popupshown", function() { - gUtilsMenu.removeEventListener("popupshown", arguments.callee, false); - info("Utilities menu shown"); - aCallback(); - }, false); -} - -function wait_for_hide(aCallback) { - if (gUtilsMenu.state == "closed") { - aCallback(); - return; - } - - gUtilsMenu.addEventListener("popuphidden", function() { - gUtilsMenu.removeEventListener("popuphidden", arguments.callee, false); - info("Utilities menu hidden"); - aCallback(); - }, false); -} - -add_test(function() { - gSetDefault = gManagerWindow.document.getElementById("utils-autoUpdateDefault"); - gResetToAutomatic = gManagerWindow.document.getElementById("utils-resetAddonUpdatesToAutomatic"); - gResetToManual = gManagerWindow.document.getElementById("utils-resetAddonUpdatesToManual"); - - info("Ensuring default prefs are set to true"); - Services.prefs.setBoolPref(PREF_UPDATE_ENABLED, true); - Services.prefs.setBoolPref(PREF_AUTOUPDATE_DEFAULT, true); - - wait_for_popup(function() { - is(gSetDefault.getAttribute("checked"), "true", - "#1 Set Default menuitem should be checked"); - is_element_visible(gResetToAutomatic, - "#1 Reset to Automatic menuitem should be visible"); - is_element_hidden(gResetToManual, - "#1 Reset to Manual menuitem should be hidden"); - - var listener = { - onPropertyChanged: function(aAddon, aProperties) { - AddonManager.removeAddonListener(listener); - is(aAddon.id, gProvider.addons[0].id, - "Should get onPropertyChanged event for correct addon"); - ok(!("applyBackgroundUpdates" in aProperties), - "Should have gotten applyBackgroundUpdates in properties array"); - is(aAddon.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DEFAULT, - "Addon.applyBackgroundUpdates should have been reset to default"); - - info("Setting Addon.applyBackgroundUpdates back to disabled"); - aAddon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE; - - wait_for_hide(run_next_test); - } - }; - AddonManager.addAddonListener(listener); - - info("Clicking Reset to Automatic menuitem"); - EventUtils.synthesizeMouseAtCenter(gResetToAutomatic, { }, gManagerWindow); - }); - - info("Opening utilities menu"); - EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow); -}); - - -add_test(function() { - info("Disabling extensions.update.enabled"); - Services.prefs.setBoolPref(PREF_UPDATE_ENABLED, false); - - wait_for_popup(function() { - isnot(gSetDefault.getAttribute("checked"), "true", - "#2 Set Default menuitem should not be checked"); - is_element_visible(gResetToAutomatic, - "#2 Reset to Automatic menuitem should be visible"); - is_element_hidden(gResetToManual, - "#2 Reset to Manual menuitem should be hidden"); - - wait_for_hide(run_next_test); - - info("Clicking Set Default menuitem to reenable"); - EventUtils.synthesizeMouseAtCenter(gSetDefault, { }, gManagerWindow); - }); - - info("Opening utilities menu"); - EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow); -}); - - -add_test(function() { - ok(Services.prefs.getBoolPref(PREF_UPDATE_ENABLED), - "extensions.update.enabled should be true after the previous test"); - ok(Services.prefs.getBoolPref(PREF_AUTOUPDATE_DEFAULT), - "extensions.update.autoUpdateDefault should be true after the previous test"); - - info("Disabling both extensions.update.enabled and extensions.update.autoUpdateDefault"); - Services.prefs.setBoolPref(PREF_UPDATE_ENABLED, false); - Services.prefs.setBoolPref(PREF_AUTOUPDATE_DEFAULT, false); - - wait_for_popup(function() { - isnot(gSetDefault.getAttribute("checked"), "true", - "#3 Set Default menuitem should not be checked"); - is_element_hidden(gResetToAutomatic, - "#3 Reset to automatic menuitem should be hidden"); - is_element_visible(gResetToManual, - "#3 Reset to manual menuitem should be visible"); - - wait_for_hide(run_next_test); - - info("Clicking Set Default menuitem to reenable"); - EventUtils.synthesizeMouseAtCenter(gSetDefault, { }, gManagerWindow); - }); - - info("Opening utilities menu"); - EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow); -}); - - -add_test(function() { - ok(Services.prefs.getBoolPref(PREF_UPDATE_ENABLED), - "extensions.update.enabled should be true after the previous test"); - ok(Services.prefs.getBoolPref(PREF_AUTOUPDATE_DEFAULT), - "extensions.update.autoUpdateDefault should be true after the previous test"); - - info("clicking the button to disable extensions.update.autoUpdateDefault"); - wait_for_popup(function() { - is(gSetDefault.getAttribute("checked"), "true", - "#4 Set Default menuitem should be checked"); - is_element_visible(gResetToAutomatic, - "#4 Reset to Automatic menuitem should be visible"); - is_element_hidden(gResetToManual, - "#4 Reset to Manual menuitem should be hidden"); - - wait_for_hide(run_next_test); - - info("Clicking Set Default menuitem to disable"); - EventUtils.synthesizeMouseAtCenter(gSetDefault, { }, gManagerWindow); - }); - - info("Opening utilities menu"); - EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow); -}); - - -add_test(function() { - ok(Services.prefs.getBoolPref(PREF_UPDATE_ENABLED), - "extensions.update.enabled should be true after the previous test"); - is(Services.prefs.getBoolPref(PREF_AUTOUPDATE_DEFAULT), false, - "extensions.update.autoUpdateDefault should be false after the previous test"); - - wait_for_popup(function() { - isnot(gSetDefault.getAttribute("checked"), "true", - "#5 Set Default menuitem should not be checked"); - is_element_hidden(gResetToAutomatic, - "#5 Reset to automatic menuitem should be hidden"); - is_element_visible(gResetToManual, - "#5 Reset to manual menuitem should be visible"); - - var listener = { - onPropertyChanged: function(aAddon, aProperties) { - AddonManager.removeAddonListener(listener); - is(aAddon.id, gProvider.addons[0].id, - "Should get onPropertyChanged event for correct addon"); - ok(!("applyBackgroundUpdates" in aProperties), - "Should have gotten applyBackgroundUpdates in properties array"); - is(aAddon.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DEFAULT, - "Addon.applyBackgroundUpdates should have been reset to default"); - - info("Setting Addon.applyBackgroundUpdates back to disabled"); - aAddon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE; - - wait_for_hide(run_next_test); - } - }; - AddonManager.addAddonListener(listener); - - info("Clicking Reset to Manual menuitem"); - EventUtils.synthesizeMouseAtCenter(gResetToManual, { }, gManagerWindow); - - }); - - info("Opening utilities menu"); - EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow); -}); - - -add_test(function() { - wait_for_popup(function() { - isnot(gSetDefault.getAttribute("checked"), "true", - "#6 Set Default menuitem should not be checked"); - is_element_hidden(gResetToAutomatic, - "#6 Reset to automatic menuitem should be hidden"); - is_element_visible(gResetToManual, - "#6 Reset to manual menuitem should be visible"); - - wait_for_hide(run_next_test); - - info("Clicking Set Default menuitem"); - EventUtils.synthesizeMouseAtCenter(gSetDefault, { }, gManagerWindow); - }); - - info("Opening utilities menu"); - EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow); -}); - - -add_test(function() { - wait_for_popup(function() { - is(gSetDefault.getAttribute("checked"), "true", - "#7 Set Default menuitem should be checked"); - is_element_visible(gResetToAutomatic, - "#7 Reset to Automatic menuitem should be visible"); - is_element_hidden(gResetToManual, - "#7 Reset to Manual menuitem should be hidden"); - - wait_for_hide(run_next_test); - - gUtilsMenu.hidePopup(); - }); - - info("Opening utilities menu"); - EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow); -}); - diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug587970.js b/toolkit/mozapps/webextensions/test/browser/browser_bug587970.js deleted file mode 100644 index ef05ba4ea..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug587970.js +++ /dev/null @@ -1,180 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Bug 587970 - Provide ability "Update all now" within 'Available Updates' screen - -var gManagerWindow; -var gProvider; - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "addon 1", - version: "1.0", - applyBackgroundUpdates: AddonManager.AUTOUPDATE_DISABLE - }, { - id: "addon2@tests.mozilla.org", - name: "addon 2", - version: "2.0", - applyBackgroundUpdates: AddonManager.AUTOUPDATE_DISABLE - }, { - id: "addon3@tests.mozilla.org", - name: "addon 3", - version: "3.0", - applyBackgroundUpdates: AddonManager.AUTOUPDATE_DISABLE - }]); - - - open_manager("addons://updates/available", function(aWindow) { - gManagerWindow = aWindow; - run_next_test(); - }); -} - - -function end_test() { - close_manager(gManagerWindow, finish); -} - - -add_test(function() { - var list = gManagerWindow.document.getElementById("updates-list"); - is(list.childNodes.length, 0, "Available updates list should be empty"); - - var emptyNotice = gManagerWindow.document.getElementById("empty-availableUpdates-msg"); - is_element_visible(emptyNotice, "Empty notice should be visible"); - - var updateSelected = gManagerWindow.document.getElementById("update-selected-btn"); - is_element_hidden(updateSelected, "Update Selected button should be hidden"); - - info("Adding updates"); - gProvider.createInstalls([{ - name: "addon 1", - version: "1.1", - existingAddon: gProvider.addons[0] - }, { - name: "addon 2", - version: "2.1", - existingAddon: gProvider.addons[1] - }, { - name: "addon 3", - version: "3.1", - existingAddon: gProvider.addons[2] - }]); - - function wait_for_refresh() { - if (list.childNodes.length == 3 && - list.childNodes[0].mManualUpdate && - list.childNodes[1].mManualUpdate && - list.childNodes[2].mManualUpdate) { - run_next_test(); - } else { - info("Waiting for pane to refresh"); - setTimeout(wait_for_refresh, 10); - } - } - info("Waiting for pane to refresh"); - setTimeout(wait_for_refresh, 10); -}); - - -add_test(function() { - var list = gManagerWindow.document.getElementById("updates-list"); - is(list.childNodes.length, 3, "Available updates list should have 2 items"); - - var item1 = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org"); - isnot(item1, null, "Item for addon1@tests.mozilla.org should be in list"); - var item2 = get_addon_element(gManagerWindow, "addon2@tests.mozilla.org"); - isnot(item2, null, "Item for addon2@tests.mozilla.org should be in list"); - var item3 = get_addon_element(gManagerWindow, "addon3@tests.mozilla.org"); - isnot(item3, null, "Item for addon3@tests.mozilla.org should be in list"); - - var emptyNotice = gManagerWindow.document.getElementById("empty-availableUpdates-msg"); - is_element_hidden(emptyNotice, "Empty notice should be hidden"); - - var updateSelected = gManagerWindow.document.getElementById("update-selected-btn"); - is_element_visible(updateSelected, "Update Selected button should be visible"); - is(updateSelected.disabled, false, "Update Selected button should be enabled by default"); - - is(item1._includeUpdate.checked, true, "Include Update checkbox should be checked by default for addon1"); - is(item2._includeUpdate.checked, true, "Include Update checkbox should be checked by default for addon2"); - is(item3._includeUpdate.checked, true, "Include Update checkbox should be checked by default for addon3"); - - info("Unchecking Include Update checkbox for addon1"); - EventUtils.synthesizeMouse(item1._includeUpdate, 2, 2, { }, gManagerWindow); - is(item1._includeUpdate.checked, false, "Include Update checkbox should now be be unchecked for addon1"); - is(updateSelected.disabled, false, "Update Selected button should still be enabled"); - - info("Unchecking Include Update checkbox for addon2"); - EventUtils.synthesizeMouse(item2._includeUpdate, 2, 2, { }, gManagerWindow); - is(item2._includeUpdate.checked, false, "Include Update checkbox should now be be unchecked for addon2"); - is(updateSelected.disabled, false, "Update Selected button should still be enabled"); - - info("Unchecking Include Update checkbox for addon3"); - EventUtils.synthesizeMouse(item3._includeUpdate, 2, 2, { }, gManagerWindow); - is(item3._includeUpdate.checked, false, "Include Update checkbox should now be be unchecked for addon3"); - is(updateSelected.disabled, true, "Update Selected button should now be disabled"); - - info("Checking Include Update checkbox for addon2"); - EventUtils.synthesizeMouse(item2._includeUpdate, 2, 2, { }, gManagerWindow); - is(item2._includeUpdate.checked, true, "Include Update checkbox should now be be checked for addon2"); - is(updateSelected.disabled, false, "Update Selected button should now be enabled"); - - info("Checking Include Update checkbox for addon3"); - EventUtils.synthesizeMouse(item3._includeUpdate, 2, 2, { }, gManagerWindow); - is(item3._includeUpdate.checked, true, "Include Update checkbox should now be be checked for addon3"); - is(updateSelected.disabled, false, "Update Selected button should now be enabled"); - - var installCount = 0; - var listener = { - onDownloadStarted: function(aInstall) { - isnot(aInstall.existingAddon.id, "addon1@tests.mozilla.org", "Should not have seen a download start for addon1"); - }, - - onInstallEnded: function(aInstall) { - if (++installCount < 2) - return; - - gProvider.installs[0].removeTestListener(listener); - gProvider.installs[1].removeTestListener(listener); - gProvider.installs[2].removeTestListener(listener); - - // Installs are started synchronously so by the time an executeSoon is - // executed all installs that are going to start will have started - executeSoon(function() { - is(gProvider.installs[0].state, AddonManager.STATE_AVAILABLE, "addon1 should not have been upgraded"); - is(gProvider.installs[1].state, AddonManager.STATE_INSTALLED, "addon2 should have been upgraded"); - is(gProvider.installs[2].state, AddonManager.STATE_INSTALLED, "addon3 should have been upgraded"); - - run_next_test(); - }); - } - } - gProvider.installs[0].addTestListener(listener); - gProvider.installs[1].addTestListener(listener); - gProvider.installs[2].addTestListener(listener); - info("Clicking Update Selected button"); - EventUtils.synthesizeMouseAtCenter(updateSelected, { }, gManagerWindow); -}); - - -add_test(function() { - var updateSelected = gManagerWindow.document.getElementById("update-selected-btn"); - is(updateSelected.disabled, true, "Update Selected button should be disabled"); - - var item1 = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org"); - isnot(item1, null, "Item for addon1@tests.mozilla.org should be in list"); - is(item1._includeUpdate.checked, false, "Include Update checkbox should not have changed"); - - info("Checking Include Update checkbox for addon1"); - EventUtils.synthesizeMouse(item1._includeUpdate, 2, 2, { }, gManagerWindow); - is(item1._includeUpdate.checked, true, "Include Update checkbox should now be be checked for addon1"); - is(updateSelected.disabled, false, "Update Selected button should now not be disabled"); - - run_next_test(); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug590347.js b/toolkit/mozapps/webextensions/test/browser/browser_bug590347.js deleted file mode 100644 index f805f0e19..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug590347.js +++ /dev/null @@ -1,121 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Bug 590347 -// Tests if softblock notifications are exposed in preference to incompatible -// notifications when compatibility checking is disabled - -var gProvider; -var gManagerWindow; -var gCategoryUtilities; - -var gApp = document.getElementById("bundle_brand").getString("brandShortName"); -var gVersion = Services.appinfo.version; - -// Opens the details view of an add-on -function open_details(aId, aType, aCallback) { - requestLongerTimeout(2); - - gCategoryUtilities.openType(aType, function() { - var list = gManagerWindow.document.getElementById("addon-list"); - var item = list.firstChild; - while (item) { - if ("mAddon" in item && item.mAddon.id == aId) { - list.ensureElementIsVisible(item); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow); - wait_for_view_load(gManagerWindow, aCallback); - return; - } - item = item.nextSibling; - } - ok(false, "Should have found the add-on in the list"); - }); -} - -function get_list_view_warning_node() { - let item = gManagerWindow.document.getElementById("addon-list").firstChild; - let found = false; - while (item) { - if (item.mAddon.name == "Test add-on") { - found = true; - break; - } - item = item.nextSibling; - } - ok(found, "Test add-on node should have been found."); - return item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "warning"); -} - -function get_detail_view_warning_node(aManagerWindow) { - if (aManagerWindow) - return aManagerWindow.document.getElementById("detail-warning"); - return undefined; -} - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "Test add-on", - description: "A test add-on", - isCompatible: false, - blocklistState: Ci.nsIBlocklistService.STATE_SOFTBLOCKED, - }]); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - -// Check with compatibility checking enabled -add_test(function() { - gCategoryUtilities.openType("extension", function() { - Services.prefs.setBoolPref(PREF_CHECK_COMPATIBILITY, true); - let warning_node = get_list_view_warning_node(); - is_element_visible(warning_node, "Warning message should be visible"); - is(warning_node.textContent, "Test add-on is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); - run_next_test(); - }); -}); - -add_test(function() { - open_details("addon1@tests.mozilla.org", "extension", function() { - let warning_node = get_detail_view_warning_node(gManagerWindow); - is_element_visible(warning_node, "Warning message should be visible"); - is(warning_node.textContent, "Test add-on is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); - Services.prefs.setBoolPref(PREF_CHECK_COMPATIBILITY, false); - run_next_test(); - }); -}); - -// Check with compatibility checking disabled -add_test(function() { - gCategoryUtilities.openType("extension", function() { - let warning_node = get_list_view_warning_node(); - is_element_visible(warning_node, "Warning message should be visible"); - is(warning_node.textContent, "Test add-on is known to cause security or stability issues.", "Warning message should be correct"); - run_next_test(); - }); -}); - -add_test(function() { - open_details("addon1@tests.mozilla.org", "extension", function() { - let warning_node = get_detail_view_warning_node(gManagerWindow); - is_element_visible(warning_node, "Warning message should be visible"); - is(warning_node.textContent, "Test add-on is known to cause security or stability issues.", "Warning message should be correct"); - run_next_test(); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug591465.js b/toolkit/mozapps/webextensions/test/browser/browser_bug591465.js deleted file mode 100644 index f759ffc1f..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug591465.js +++ /dev/null @@ -1,512 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Bug 591465 - Context menu of add-ons miss context related state change entries - - -var tempScope = {}; -Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", tempScope); -var LightweightThemeManager = tempScope.LightweightThemeManager; - - -const PREF_GETADDONS_MAXRESULTS = "extensions.getAddons.maxResults"; -const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url"; -const SEARCH_URL = TESTROOT + "browser_bug591465.xml"; -const SEARCH_QUERY = "SEARCH"; - -var gManagerWindow; -var gProvider; -var gContextMenu; -var gLWTheme = { - id: "4", - version: "1", - name: "Bling", - description: "SO MUCH BLING!", - author: "Pixel Pusher", - homepageURL: "http://mochi.test:8888/data/index.html", - headerURL: "http://mochi.test:8888/data/header.png", - footerURL: "http://mochi.test:8888/data/footer.png", - previewURL: "http://mochi.test:8888/data/preview.png", - iconURL: "http://mochi.test:8888/data/icon.png" - }; - - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "addon 1", - version: "1.0" - }, { - id: "addon2@tests.mozilla.org", - name: "addon 2", - version: "1.0", - _userDisabled: true - }, { - id: "theme1@tests.mozilla.org", - name: "theme 1", - version: "1.0", - type: "theme" - }, { - id: "theme2@tests.mozilla.org", - name: "theme 2", - version: "1.0", - type: "theme", - _userDisabled: true - }, { - id: "theme3@tests.mozilla.org", - name: "theme 3", - version: "1.0", - type: "theme", - permissions: 0 - }]); - - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gContextMenu = aWindow.document.getElementById("addonitem-popup"); - run_next_test(); - }); -} - - -function end_test() { - close_manager(gManagerWindow, finish); -} - - -function check_contextmenu(aIsTheme, aIsEnabled, aIsRemote, aIsDetails, aIsSingleItemCase) { - if (aIsTheme || aIsEnabled || aIsRemote) - is_element_hidden(gManagerWindow.document.getElementById("menuitem_enableItem"), - "'Enable' should be hidden"); - else - is_element_visible(gManagerWindow.document.getElementById("menuitem_enableItem"), - "'Enable' should be visible"); - - if (aIsTheme || !aIsEnabled || aIsRemote) - is_element_hidden(gManagerWindow.document.getElementById("menuitem_disableItem"), - "'Disable' should be hidden"); - else - is_element_visible(gManagerWindow.document.getElementById("menuitem_disableItem"), - "'Disable' should be visible"); - - if (!aIsTheme || aIsEnabled || aIsRemote || aIsSingleItemCase) - is_element_hidden(gManagerWindow.document.getElementById("menuitem_enableTheme"), - "'Wear Theme' should be hidden"); - else - is_element_visible(gManagerWindow.document.getElementById("menuitem_enableTheme"), - "'Wear Theme' should be visible"); - - if (!aIsTheme || !aIsEnabled || aIsRemote || aIsSingleItemCase) - is_element_hidden(gManagerWindow.document.getElementById("menuitem_disableTheme"), - "'Stop Wearing Theme' should be hidden"); - else - is_element_visible(gManagerWindow.document.getElementById("menuitem_disableTheme"), - "'Stop Wearing Theme' should be visible"); - - if (aIsRemote) - is_element_visible(gManagerWindow.document.getElementById("menuitem_installItem"), - "'Install' should be visible"); - else - is_element_hidden(gManagerWindow.document.getElementById("menuitem_installItem"), - "'Install' should be hidden"); - - if (aIsDetails) - is_element_hidden(gManagerWindow.document.getElementById("menuitem_showDetails"), - "'Show More Information' should be hidden in details view"); - else - is_element_visible(gManagerWindow.document.getElementById("menuitem_showDetails"), - "'Show More Information' should be visible in list view"); - - if (aIsSingleItemCase) - is_element_hidden(gManagerWindow.document.getElementById("addonitem-menuseparator"), - "Menu separator should be hidden with only one menu item"); - else - is_element_visible(gManagerWindow.document.getElementById("addonitem-menuseparator"), - "Menu separator should be visible with multiple menu items"); - -} - - -add_test(function() { - var el = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org"); - isnot(el, null, "Should have found addon element"); - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(false, true, false, false, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on enabled extension item"); - el.parentNode.ensureElementIsVisible(el); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); -}); - -add_test(function() { - var el = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org"); - isnot(el, null, "Should have found addon element"); - el.mAddon.userDisabled = true; - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(false, false, false, false, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on newly disabled extension item"); - el.parentNode.ensureElementIsVisible(el); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); -}); - -add_test(function() { - var el = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org"); - isnot(el, null, "Should have found addon element"); - el.mAddon.userDisabled = false; - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(false, true, false, false, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on newly enabled extension item"); - el.parentNode.ensureElementIsVisible(el); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); -}); - -add_test(function() { - var el = get_addon_element(gManagerWindow, "addon2@tests.mozilla.org"); - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(false, false, false, false, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on disabled extension item"); - el.parentNode.ensureElementIsVisible(el); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); -}); - - -add_test(function() { - gManagerWindow.loadView("addons://list/theme"); - wait_for_view_load(gManagerWindow, function() { - var el = get_addon_element(gManagerWindow, "theme1@tests.mozilla.org"); - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(true, true, false, false, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on enabled theme item"); - el.parentNode.ensureElementIsVisible(el); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); - }); -}); - - -add_test(function() { - var el = get_addon_element(gManagerWindow, "theme2@tests.mozilla.org"); - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(true, false, false, false, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on disabled theme item"); - el.parentNode.ensureElementIsVisible(el); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); -}); - - -add_test(function() { - LightweightThemeManager.currentTheme = gLWTheme; - - var el = get_addon_element(gManagerWindow, "4@personas.mozilla.org"); - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(true, true, false, false, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on enabled LW theme item"); - el.parentNode.ensureElementIsVisible(el); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); -}); - - -add_test(function() { - LightweightThemeManager.currentTheme = null; - - var el = get_addon_element(gManagerWindow, "4@personas.mozilla.org"); - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(true, false, false, false, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on disabled LW theme item"); - el.parentNode.ensureElementIsVisible(el); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); -}); - - -add_test(function() { - LightweightThemeManager.currentTheme = gLWTheme; - - gManagerWindow.loadView("addons://detail/4@personas.mozilla.org"); - wait_for_view_load(gManagerWindow, function() { - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(true, true, false, true, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on enabled LW theme, in detail view"); - var el = gManagerWindow.document.querySelector("#detail-view .detail-view-container"); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); - }); -}); - - -add_test(function() { - LightweightThemeManager.currentTheme = null; - - gManagerWindow.loadView("addons://detail/4@personas.mozilla.org"); - wait_for_view_load(gManagerWindow, function() { - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(true, false, false, true, false); - - gContextMenu.hidePopup(); - - AddonManager.getAddonByID("4@personas.mozilla.org", function(aAddon) { - aAddon.uninstall(); - run_next_test(); - }); - }, false); - - info("Opening context menu on disabled LW theme, in detail view"); - var el = gManagerWindow.document.querySelector("#detail-view .detail-view-container"); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); - }); -}); - - -add_test(function() { - gManagerWindow.loadView("addons://detail/addon1@tests.mozilla.org"); - wait_for_view_load(gManagerWindow, function() { - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(false, true, false, true, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on enabled extension, in detail view"); - var el = gManagerWindow.document.querySelector("#detail-view .detail-view-container"); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); - }); -}); - - -add_test(function() { - gManagerWindow.loadView("addons://detail/addon2@tests.mozilla.org"); - wait_for_view_load(gManagerWindow, function() { - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(false, false, false, true, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on disabled extension, in detail view"); - var el = gManagerWindow.document.querySelector("#detail-view .detail-view-container"); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); - }); -}); - - -add_test(function() { - gManagerWindow.loadView("addons://detail/theme1@tests.mozilla.org"); - wait_for_view_load(gManagerWindow, function() { - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(true, true, false, true, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on enabled theme, in detail view"); - var el = gManagerWindow.document.querySelector("#detail-view .detail-view-container"); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); - }); -}); - - -add_test(function() { - gManagerWindow.loadView("addons://detail/theme2@tests.mozilla.org"); - wait_for_view_load(gManagerWindow, function() { - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(true, false, false, true, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on disabled theme, in detail view"); - var el = gManagerWindow.document.querySelector("#detail-view .detail-view-container"); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); - }); -}); - -add_test(function() { - gManagerWindow.loadView("addons://detail/theme3@tests.mozilla.org"); - wait_for_view_load(gManagerWindow, function() { - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(true, true, false, true, true); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu with single menu item on enabled theme, in detail view"); - var el = gManagerWindow.document.querySelector("#detail-view .detail-view-container"); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); - }); -}); - -add_test(function() { - info("Searching for remote addons"); - - Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, SEARCH_URL); - Services.prefs.setIntPref(PREF_SEARCH_MAXRESULTS, 15); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = SEARCH_QUERY; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - var filter = gManagerWindow.document.getElementById("search-filter-remote"); - EventUtils.synthesizeMouseAtCenter(filter, { }, gManagerWindow); - executeSoon(function() { - - var el = get_addon_element(gManagerWindow, "remote1@tests.mozilla.org"); - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(false, false, true, false, false); - - gContextMenu.hidePopup(); - run_next_test(); - }, false); - - info("Opening context menu on remote extension item"); - el.parentNode.ensureElementIsVisible(el); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); - - }); - }); -}); - - -add_test(function() { - gManagerWindow.loadView("addons://detail/remote1@tests.mozilla.org"); - wait_for_view_load(gManagerWindow, function() { - - gContextMenu.addEventListener("popupshown", function() { - gContextMenu.removeEventListener("popupshown", arguments.callee, false); - - check_contextmenu(false, false, true, true, false); - - gContextMenu.hidePopup(); - - // Delete the created install - AddonManager.getAllInstalls(function(aInstalls) { - is(aInstalls.length, 1, "Should be one available install"); - aInstalls[0].cancel(); - - run_next_test(); - }); - }, false); - - info("Opening context menu on remote extension, in detail view"); - var el = gManagerWindow.document.querySelector("#detail-view .detail-view-container"); - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug591465.xml b/toolkit/mozapps/webextensions/test/browser/browser_bug591465.xml deleted file mode 100644 index 9c2e102e7..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug591465.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<searchresults total_results="100"> - <addon> - <name>MAGICAL SEARCH RESULT</name> - <type id='1'>Extension</type> - <guid>remote1@tests.mozilla.org</guid> - <version>3.0</version> - <authors> - <author> - <name>Test Creator</name> - <link>http://example.com/creator.html</link> - </author> - </authors> - <status id='4'>Public</status> - <summary>Test summary - SEARCH SEARCH</summary> - <description>Test 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_searching.xpi</install> - </addon> -</searchresults> - diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug591663.js b/toolkit/mozapps/webextensions/test/browser/browser_bug591663.js deleted file mode 100644 index 4a4f735af..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug591663.js +++ /dev/null @@ -1,161 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Test that the empty notice in the list view disappears as it should - -// Don't use a standard list view (e.g. "extension") to ensure that the list is -// initially empty. Don't need to worry about the list of categories displayed -// since only the list view itself is tested. -var VIEW_ID = "addons://list/mock-addon"; - -var LIST_ID = "addon-list"; -var EMPTY_ID = "addon-list-empty"; - -var gManagerWindow; -var gProvider; -var gItem; - -var gInstallProperties = { - name: "Bug 591663 Mock Install", - type: "mock-addon" -}; -var gAddonProperties = { - id: "test1@tests.mozilla.org", - name: "Bug 591663 Mock Add-on", - type: "mock-addon" -}; -var gExtensionProperties = { - name: "Bug 591663 Extension Install", - type: "extension" -}; - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(true, [{ - id: "mock-addon", - name: "Mock Add-ons", - uiPriority: 4500, - flags: AddonManager.TYPE_UI_VIEW_LIST - }]); - - open_manager(VIEW_ID, function(aWindow) { - gManagerWindow = aWindow; - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, finish); -} - -/** - * Check that the list view is as expected - * - * @param aItem - * The expected item in the list, or null if list should be empty - */ -function check_list(aItem) { - // Check state of the empty notice - let emptyNotice = gManagerWindow.document.getElementById(EMPTY_ID); - ok(emptyNotice != null, "Should have found the empty notice"); - is(!emptyNotice.hidden, (aItem == null), "Empty notice should be showing if list empty"); - - // Check the children of the list - let list = gManagerWindow.document.getElementById(LIST_ID); - is(list.childNodes.length, aItem ? 1 : 0, "Should get expected number of items in list"); - if (aItem != null) { - let itemName = list.firstChild.getAttribute("name"); - is(itemName, aItem.name, "List item should have correct name"); - } -} - - -// Test that the empty notice is showing and no items are showing in list -add_test(function() { - check_list(null); - run_next_test(); -}); - -// Test that a new, non-active, install does not affect the list view -add_test(function() { - gItem = gProvider.createInstalls([gInstallProperties])[0]; - check_list(null); - run_next_test(); -}); - -// Test that onInstallStarted properly hides empty notice and adds install to list -add_test(function() { - gItem.addTestListener({ - onDownloadStarted: function() { - // Install type unknown until download complete - check_list(null); - }, - onInstallStarted: function() { - check_list(gItem); - }, - onInstallEnded: function() { - check_list(gItem); - run_next_test(); - } - }); - - gItem.install(); -}); - -// Test that restarting the manager does not change list -add_test(function() { - restart_manager(gManagerWindow, VIEW_ID, function(aManagerWindow) { - gManagerWindow = aManagerWindow; - check_list(gItem); - run_next_test(); - }); -}); - -// Test that onInstallCancelled removes install and shows empty notice -add_test(function() { - gItem.cancel(); - gItem = null; - check_list(null); - run_next_test(); -}); - -// Test that add-ons of a different type do not show up in the list view -add_test(function() { - let extension = gProvider.createInstalls([gExtensionProperties])[0]; - check_list(null); - - extension.addTestListener({ - onDownloadStarted: function() { - check_list(null); - }, - onInstallStarted: function() { - check_list(null); - }, - onInstallEnded: function() { - check_list(null); - extension.cancel(); - run_next_test(); - } - }); - - extension.install(); -}); - -// Test that onExternalInstall properly hides empty notice and adds install to list -add_test(function() { - gItem = gProvider.createAddons([gAddonProperties])[0]; - check_list(gItem); - run_next_test(); -}); - -// Test that restarting the manager does not change list -add_test(function() { - restart_manager(gManagerWindow, VIEW_ID, function(aManagerWindow) { - gManagerWindow = aManagerWindow; - check_list(gItem); - run_next_test(); - }); -}); - diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug593535.js b/toolkit/mozapps/webextensions/test/browser/browser_bug593535.js deleted file mode 100644 index fd23d0036..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug593535.js +++ /dev/null @@ -1,119 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Bug 593535 - Failure to download extension causes about:addons to list the -// addon with no way to restart the download - -const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url"; -const SEARCH_URL = TESTROOT + "browser_bug593535.xml"; -const QUERY = "NOTFOUND"; - -var gProvider; -var gManagerWindow; - -function test() { - waitForExplicitFinish(); - - // Turn on searching for this test - Services.prefs.setIntPref(PREF_SEARCH_MAXRESULTS, 15); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - AddonManager.getAllInstalls(function(aInstallsList) { - for (var install of aInstallsList) { - var sourceURI = install.sourceURI.spec; - if (sourceURI.match(/^http:\/\/example\.com\/(.+)\.xpi$/) != null) - install.cancel(); - } - - finish(); - }); - }); -} - -function search(aQuery, aCallback) { - // Point search to the correct xml test file - Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, SEARCH_URL); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = aQuery; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - var remoteFilter = gManagerWindow.document.getElementById("search-filter-remote"); - EventUtils.synthesizeMouseAtCenter(remoteFilter, { }, gManagerWindow); - - aCallback(); - }); -} - -function get_addon_item(aName) { - var id = aName + "@tests.mozilla.org"; - var list = gManagerWindow.document.getElementById("search-list"); - var rows = list.getElementsByTagName("richlistitem"); - for (let row of rows) { - if (row.mAddon && row.mAddon.id == id) - return row; - } - - return null; -} - -function get_install_button(aItem) { - isnot(aItem, null, "Item should not be null when checking state of install button"); - var installStatus = getAnonymousElementByAttribute(aItem, "anonid", "install-status"); - return getAnonymousElementByAttribute(installStatus, "anonid", "install-remote-btn"); -} - - -function getAnonymousElementByAttribute(aElement, aName, aValue) { - return gManagerWindow.document.getAnonymousElementByAttribute(aElement, - aName, - aValue); -} - - - -// Tests that a failed install for a remote add-on will ask to retry the install -add_test(function() { - var remoteItem; - - var listener = { - onDownloadFailed: function(aInstall) { - aInstall.removeListener(this); - ok(true, "Install failed as expected"); - - executeSoon(function() { - is(remoteItem.getAttribute("notification"), "warning", "Item should have notification attribute set to 'warning'"); - is_element_visible(remoteItem._warning, "Warning text should be visible"); - is(remoteItem._warning.textContent, "There was an error downloading NOTFOUND.", "Warning should show correct message"); - is_element_visible(remoteItem._warningLink, "Retry button should be visible"); - run_next_test(); - }); - }, - - onInstallEnded: function() { - ok(false, "Install should have failed"); - } - } - - search(QUERY, function() { - var list = gManagerWindow.document.getElementById("search-list"); - remoteItem = get_addon_item("notfound1"); - list.ensureElementIsVisible(remoteItem); - - remoteItem.mAddon.install.addListener(listener); - - var installBtn = get_install_button(remoteItem); - EventUtils.synthesizeMouseAtCenter(installBtn, { }, gManagerWindow); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug593535.xml b/toolkit/mozapps/webextensions/test/browser/browser_bug593535.xml deleted file mode 100644 index 411d9f383..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug593535.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<searchresults total_results="100"> - <addon> - <name>NOTFOUND</name> - <type id='1'>Extension</type> - <guid>notfound1@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>Install file not found - NOTFOUND</summary> - <description>Test 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="1">http://example.com/file_not_found.xpi</install> - </addon> -</searchresults> diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug596336.js b/toolkit/mozapps/webextensions/test/browser/browser_bug596336.js deleted file mode 100644 index ec32e376f..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug596336.js +++ /dev/null @@ -1,156 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that upgrading bootstrapped add-ons behaves correctly while the -// manager is open - -var gManagerWindow; -var gCategoryUtilities; - -add_task(function* test() { - waitForExplicitFinish(); - - gManagerWindow = yield open_manager("addons://list/extension"); - gCategoryUtilities = new CategoryUtilities(gManagerWindow); -}); - -function get_list_item_count() { - return get_test_items_in_list(gManagerWindow).length; -} - -function get_node(parent, anonid) { - return parent.ownerDocument.getAnonymousElementByAttribute(parent, "anonid", anonid); -} - -function get_class_node(parent, cls) { - return parent.ownerDocument.getAnonymousElementByAttribute(parent, "class", cls); -} - -function install_addon(aXpi) { - return new Promise(resolve => { - AddonManager.getInstallForURL(TESTROOT + "addons/" + aXpi + ".xpi", - function(aInstall) { - aInstall.addListener({ - onInstallEnded: function(aInstall) { - resolve(); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); - }); -} - -var check_addon = Task.async(function*(aAddon, aVersion) { - is(get_list_item_count(), 1, "Should be one item in the list"); - is(aAddon.version, aVersion, "Add-on should have the right version"); - - let item = get_addon_element(gManagerWindow, "bug596336-1@tests.mozilla.org"); - ok(!!item, "Should see the add-on in the list"); - - // Force XBL to apply - item.clientTop; - - let { version } = yield get_tooltip_info(item); - is(version, aVersion, "Version should be correct"); - - if (aAddon.userDisabled) - is_element_visible(get_class_node(item, "disabled-postfix"), "Disabled postfix should be hidden"); - else - is_element_hidden(get_class_node(item, "disabled-postfix"), "Disabled postfix should be hidden"); -}); - -// Install version 1 then upgrade to version 2 with the manager open -add_task(function*() { - yield install_addon("browser_bug596336_1"); - let [aAddon] = yield promiseAddonsByIDs(["bug596336-1@tests.mozilla.org"]); - yield check_addon(aAddon, "1.0"); - ok(!aAddon.userDisabled, "Add-on should not be disabled"); - - yield install_addon("browser_bug596336_2"); - [aAddon] = yield promiseAddonsByIDs(["bug596336-1@tests.mozilla.org"]); - yield check_addon(aAddon, "2.0"); - ok(!aAddon.userDisabled, "Add-on should not be disabled"); - - aAddon.uninstall(); - - is(get_list_item_count(), 0, "Should be no items in the list"); -}); - -// Install version 1 mark it as disabled then upgrade to version 2 with the -// manager open -add_task(function*() { - yield install_addon("browser_bug596336_1"); - let [aAddon] = yield promiseAddonsByIDs(["bug596336-1@tests.mozilla.org"]); - aAddon.userDisabled = true; - yield check_addon(aAddon, "1.0"); - ok(aAddon.userDisabled, "Add-on should be disabled"); - - yield install_addon("browser_bug596336_2"); - [aAddon] = yield promiseAddonsByIDs(["bug596336-1@tests.mozilla.org"]); - yield check_addon(aAddon, "2.0"); - ok(aAddon.userDisabled, "Add-on should be disabled"); - - aAddon.uninstall(); - - is(get_list_item_count(), 0, "Should be no items in the list"); -}); - -// Install version 1 click the remove button and then upgrade to version 2 with -// the manager open -add_task(function*() { - yield install_addon("browser_bug596336_1"); - let [aAddon] = yield promiseAddonsByIDs(["bug596336-1@tests.mozilla.org"]); - yield check_addon(aAddon, "1.0"); - ok(!aAddon.userDisabled, "Add-on should not be disabled"); - - let item = get_addon_element(gManagerWindow, "bug596336-1@tests.mozilla.org"); - EventUtils.synthesizeMouseAtCenter(get_node(item, "remove-btn"), { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - is_element_visible(get_class_node(item, "pending"), "Pending message should be visible"); - - yield install_addon("browser_bug596336_2"); - [aAddon] = yield promiseAddonsByIDs(["bug596336-1@tests.mozilla.org"]); - yield check_addon(aAddon, "2.0"); - ok(!aAddon.userDisabled, "Add-on should not be disabled"); - - aAddon.uninstall(); - - is(get_list_item_count(), 0, "Should be no items in the list"); -}); - -// Install version 1, disable it, click the remove button and then upgrade to -// version 2 with the manager open -add_task(function*() { - yield install_addon("browser_bug596336_1"); - let [aAddon] = yield promiseAddonsByIDs(["bug596336-1@tests.mozilla.org"]); - aAddon.userDisabled = true; - yield check_addon(aAddon, "1.0"); - ok(aAddon.userDisabled, "Add-on should be disabled"); - - let item = get_addon_element(gManagerWindow, "bug596336-1@tests.mozilla.org"); - EventUtils.synthesizeMouseAtCenter(get_node(item, "remove-btn"), { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - is_element_visible(get_class_node(item, "pending"), "Pending message should be visible"); - - yield install_addon("browser_bug596336_2"); - [aAddon] = yield promiseAddonsByIDs(["bug596336-1@tests.mozilla.org"]); - yield check_addon(aAddon, "2.0"); - ok(aAddon.userDisabled, "Add-on should be disabled"); - - aAddon.uninstall(); - - is(get_list_item_count(), 0, "Should be no items in the list"); -}); - -add_task(function end_test() { - close_manager(gManagerWindow, finish); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug608316.js b/toolkit/mozapps/webextensions/test/browser/browser_bug608316.js deleted file mode 100644 index 72bb61f49..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug608316.js +++ /dev/null @@ -1,65 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Bug 608316 - Test that cancelling an uninstall during the onUninstalling -// event doesn't confuse the UI - -var gProvider; - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "addon 1", - version: "1.0" - }]); - - run_next_test(); -} - - -function end_test() { - finish(); -} - - -add_test(function() { - var sawUninstall = false; - var listener = { - onUninstalling: function(aAddon, aRestartRequired) { - if (aAddon.id != "addon1@tests.mozilla.org") - return; - sawUninstall = true; - aAddon.cancelUninstall(); - } - } - - // Important to add this before opening the UI so it gets its events first - AddonManager.addAddonListener(listener); - registerCleanupFunction(function() { - AddonManager.removeAddonListener(listener); - }); - - open_manager("addons://list/extension", function(aManager) { - var addon = get_addon_element(aManager, "addon1@tests.mozilla.org"); - isnot(addon, null, "Should see the add-on in the list"); - - var removeBtn = aManager.document.getAnonymousElementByAttribute(addon, "anonid", "remove-btn"); - EventUtils.synthesizeMouseAtCenter(removeBtn, { }, aManager); - - ok(sawUninstall, "Should have seen the uninstall event"); - sawUninstall = false; - - is(addon.getAttribute("pending"), "", "Add-on should not be uninstalling"); - - close_manager(aManager, function() { - ok(!sawUninstall, "Should not have seen another uninstall event"); - - run_next_test(); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug610764.js b/toolkit/mozapps/webextensions/test/browser/browser_bug610764.js deleted file mode 100644 index 58de88130..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug610764.js +++ /dev/null @@ -1,34 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that the discovery view is the default - -var gCategoryUtilities; - -function test() { - waitForExplicitFinish(); - - open_manager(null, function(aWindow) { - waitForFocus(function() { - // The last view is cached except when it is the search view so switch to - // that and reopen to ensure we see the default view - var searchBox = aWindow.document.getElementById("header-search"); - searchBox.value = "bar"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, aWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, aWindow); - - wait_for_view_load(aWindow, function() { - close_manager(aWindow, function() { - open_manager(null, function(aWindow) { - gCategoryUtilities = new CategoryUtilities(aWindow); - is(gCategoryUtilities.selectedCategory, "discover", "Should show the discovery pane by default"); - - close_manager(aWindow, finish); - }); - }); - }); - }, aWindow); - }); -} diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug616841.js b/toolkit/mozapps/webextensions/test/browser/browser_bug616841.js deleted file mode 100644 index 3cf6f5346..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug616841.js +++ /dev/null @@ -1,21 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -function test_string_compare() { - ok("C".localeCompare("D") < 0, "C < D"); - ok("D".localeCompare("C") > 0, "D > C"); - ok("\u010C".localeCompare("D") < 0, "\u010C < D"); - ok("D".localeCompare("\u010C") > 0, "D > \u010C"); -} - -function test() { - waitForExplicitFinish(); - - test_string_compare(); - - AddonManager.getAddonByID("foo", function(aAddon) { - test_string_compare(); - finish(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug618502.js b/toolkit/mozapps/webextensions/test/browser/browser_bug618502.js deleted file mode 100644 index 5bcc6baf1..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug618502.js +++ /dev/null @@ -1,44 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Bug 608316 - Test that opening the manager to an add-on that doesn't exist -// just loads the default view - -var gCategoryUtilities; - -function test() { - waitForExplicitFinish(); - - run_next_test(); -} - -function end_test() { - finish(); -} - -add_test(function() { - open_manager("addons://detail/foo", function(aManager) { - gCategoryUtilities = new CategoryUtilities(aManager); - is(gCategoryUtilities.selectedCategory, "discover", "Should fall back to the discovery pane"); - - close_manager(aManager, run_next_test); - }); -}); - -// Also test that opening directly to an add-on that does exist doesn't break -// and selects the right category -add_test(function() { - new MockProvider().createAddons([{ - id: "addon1@tests.mozilla.org", - name: "addon 1", - version: "1.0" - }]); - - open_manager("addons://detail/addon1@tests.mozilla.org", function(aManager) { - gCategoryUtilities = new CategoryUtilities(aManager); - is(gCategoryUtilities.selectedCategory, "extension", "Should have selected the right category"); - - close_manager(aManager, run_next_test); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug679604.js b/toolkit/mozapps/webextensions/test/browser/browser_bug679604.js deleted file mode 100644 index e1ec605c2..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug679604.js +++ /dev/null @@ -1,29 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Bug 679604 - Test that a XUL persisted category from an older version of -// Firefox doesn't break the add-ons manager when that category doesn't exist - -var gManagerWindow; - -function test() { - waitForExplicitFinish(); - - open_manager(null, function(aWindow) { - var categories = aWindow.document.getElementById("categories"); - categories.setAttribute("last-selected", "foo"); - aWindow.document.persist("categories", "last-selected"); - - close_manager(aWindow, function() { - Services.prefs.clearUserPref(PREF_UI_LASTCATEGORY); - - open_manager(null, function(aWindow) { - is(new CategoryUtilities(aWindow).selectedCategory, "discover", - "Should have loaded the right view"); - - close_manager(aWindow, finish); - }); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug714593.js b/toolkit/mozapps/webextensions/test/browser/browser_bug714593.js deleted file mode 100644 index b9a7faa5e..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_bug714593.js +++ /dev/null @@ -1,140 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that installed addons in the search view load inline prefs properly - -const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url"; -const NO_MATCH_URL = TESTROOT + "browser_searching_empty.xml"; - -var gManagerWindow; -var gCategoryUtilities; -var gProvider; - -function test() { - // Turn on searching for this test - Services.prefs.setIntPref(PREF_SEARCH_MAXRESULTS, 15); - - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "inlinesettings2@tests.mozilla.org", - name: "Inline Settings (Regular)", - version: "1", - optionsURL: CHROMEROOT + "options.xul", - optionsType: AddonManager.OPTIONS_TYPE_INLINE - }]); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, finish); -} - -/* - * Checks whether or not the Add-ons Manager is currently searching - * - * @param aExpectedSearching - * The expected isSearching state - */ -function check_is_searching(aExpectedSearching) { - var loading = gManagerWindow.document.getElementById("search-loading"); - is(!is_hidden(loading), aExpectedSearching, - "Search throbber should be showing iff currently searching"); -} - -/* - * Completes a search - * - * @param aQuery - * The query to search for - * @param aFinishImmediately - * Boolean representing whether or not the search is expected to - * finish immediately - * @param aCallback - * The callback to call when the search is done - * @param aCategoryType - * The expected selected category after the search is done. - * Optional and defaults to "search" - */ -function search(aQuery, aFinishImmediately, aCallback, aCategoryType) { - // Point search to the correct xml test file - Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, NO_MATCH_URL); - - aCategoryType = aCategoryType ? aCategoryType : "search"; - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = aQuery; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - var finishImmediately = true; - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, aCategoryType, "Expected category view should be selected"); - is(gCategoryUtilities.isTypeVisible("search"), aCategoryType == "search", - "Search category should only be visible if it is the current view"); - is(finishImmediately, aFinishImmediately, "Search should finish immediately only if expected"); - - aCallback(); - }); - - finishImmediately = false - if (!aFinishImmediately) - check_is_searching(true); -} - -/* - * Get item for a specific add-on by name - * - * @param aName - * The name of the add-on to search for - * @return Row of add-on if found, null otherwise - */ -function get_addon_item(aName) { - var id = aName + "@tests.mozilla.org"; - var list = gManagerWindow.document.getElementById("search-list"); - var rows = list.getElementsByTagName("richlistitem"); - for (let row of rows) { - if (row.mAddon && row.mAddon.id == id) - return row; - } - - return null; -} - -add_test(function() { - search("settings", false, function() { - var localFilter = gManagerWindow.document.getElementById("search-filter-local"); - EventUtils.synthesizeMouseAtCenter(localFilter, { }, gManagerWindow); - - var item = get_addon_item("inlinesettings2"); - // Force the XBL binding to apply. - item.clientTop; - var button = gManagerWindow.document.getAnonymousElementByAttribute(item, "anonid", "preferences-btn"); - is_element_visible(button, "Preferences button should be visible"); - - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(gManagerWindow.gViewController.currentViewObj, gManagerWindow.gDetailView, "View should have changed to detail"); - - var searchCategory = gManagerWindow.document.getElementById("category-search"); - EventUtils.synthesizeMouseAtCenter(searchCategory, { }, gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(gManagerWindow.gViewController.currentViewObj, gManagerWindow.gSearchView, "View should have changed back to search"); - - // Reset filter to remote to avoid breaking later tests. - var remoteFilter = gManagerWindow.document.getElementById("search-filter-remote"); - EventUtils.synthesizeMouseAtCenter(remoteFilter, { }, gManagerWindow); - run_next_test(); - }); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_cancelCompatCheck.js b/toolkit/mozapps/webextensions/test/browser/browser_cancelCompatCheck.js deleted file mode 100644 index e7c672212..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_cancelCompatCheck.js +++ /dev/null @@ -1,462 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Test that we can cancel the add-on compatibility check while it is -// in progress (bug 772484). -// Test framework copied from browser_bug557956.js - -const URI_EXTENSION_UPDATE_DIALOG = "chrome://mozapps/content/extensions/update.xul"; - -const PREF_GETADDONS_BYIDS = "extensions.getAddons.get.url"; -const PREF_MIN_PLATFORM_COMPAT = "extensions.minCompatiblePlatformVersion"; -const PREF_METADATA_LASTUPDATE = "extensions.getAddons.cache.lastUpdate"; - -var repo = {}; -Components.utils.import("resource://gre/modules/addons/AddonRepository.jsm", repo); -Components.utils.import("resource://gre/modules/Promise.jsm", this); - -/** - * Test add-ons: - * - * Addon minVersion maxVersion Notes - * addon1 0 * - * addon2 0 0 - * addon3 0 0 - * addon4 1 * - * addon5 0 0 Made compatible by update check - * addon6 0 0 Made compatible by update check - * addon7 0 0 Has a broken update available - * addon8 0 0 Has an update available - * addon9 0 0 Has an update available - * addon10 0 0 Made incompatible by override check - */ - -// describe the addons -var ao1 = { file: "browser_bug557956_1", id: "bug557956-1@tests.mozilla.org"}; -var ao2 = { file: "browser_bug557956_2", id: "bug557956-2@tests.mozilla.org"}; -var ao3 = { file: "browser_bug557956_3", id: "bug557956-3@tests.mozilla.org"}; -var ao4 = { file: "browser_bug557956_4", id: "bug557956-4@tests.mozilla.org"}; -var ao5 = { file: "browser_bug557956_5", id: "bug557956-5@tests.mozilla.org"}; -var ao6 = { file: "browser_bug557956_6", id: "bug557956-6@tests.mozilla.org"}; -var ao7 = { file: "browser_bug557956_7", id: "bug557956-7@tests.mozilla.org"}; -var ao8 = { file: "browser_bug557956_8_1", id: "bug557956-8@tests.mozilla.org"}; -var ao9 = { file: "browser_bug557956_9_1", id: "bug557956-9@tests.mozilla.org"}; -var ao10 = { file: "browser_bug557956_10", id: "bug557956-10@tests.mozilla.org"}; - -// Return a promise that resolves after the specified delay in MS -function delayMS(aDelay) { - let deferred = Promise.defer(); - setTimeout(deferred.resolve, aDelay); - return deferred.promise; -} - -// Return a promise that resolves when the specified observer topic is notified -function promise_observer(aTopic) { - let deferred = Promise.defer(); - Services.obs.addObserver(function observe(aSubject, aObsTopic, aData) { - Services.obs.removeObserver(arguments.callee, aObsTopic); - deferred.resolve([aSubject, aData]); - }, aTopic, false); - return deferred.promise; -} - -// Install a set of addons using a bogus update URL so that we can force -// the compatibility update to happen later -// @param aUpdateURL The real update URL to use after the add-ons are installed -function promise_install_test_addons(aAddonList, aUpdateURL) { - info("Starting add-on installs"); - var installs = []; - let deferred = Promise.defer(); - - // Use a blank update URL - Services.prefs.setCharPref(PREF_UPDATEURL, TESTROOT + "missing.rdf"); - - for (let addon of aAddonList) { - AddonManager.getInstallForURL(TESTROOT + "addons/" + addon.file + ".xpi", function(aInstall) { - installs.push(aInstall); - }, "application/x-xpinstall"); - } - - var listener = { - installCount: 0, - - onInstallEnded: function() { - this.installCount++; - if (this.installCount == installs.length) { - info("Done add-on installs"); - // Switch to the test update URL - Services.prefs.setCharPref(PREF_UPDATEURL, aUpdateURL); - deferred.resolve(); - } - } - }; - - for (let install of installs) { - install.addListener(listener); - install.install(); - } - - return deferred.promise; -} - -function promise_addons_by_ids(aAddonIDs) { - info("promise_addons_by_ids " + aAddonIDs.toSource()); - let deferred = Promise.defer(); - AddonManager.getAddonsByIDs(aAddonIDs, deferred.resolve); - return deferred.promise; -} - -function* promise_uninstall_test_addons() { - info("Starting add-on uninstalls"); - let addons = yield promise_addons_by_ids([ao1.id, ao2.id, ao3.id, ao4.id, ao5.id, - ao6.id, ao7.id, ao8.id, ao9.id, ao10.id]); - let deferred = Promise.defer(); - let uninstallCount = addons.length; - let listener = { - onUninstalled: function(aAddon) { - if (aAddon) { - info("Finished uninstalling " + aAddon.id); - } - if (--uninstallCount == 0) { - info("Done add-on uninstalls"); - AddonManager.removeAddonListener(listener); - deferred.resolve(); - } - }}; - AddonManager.addAddonListener(listener); - for (let addon of addons) { - if (addon) - addon.uninstall(); - else - listener.onUninstalled(null); - } - yield deferred.promise; -} - -// Returns promise{window}, resolves with a handle to the compatibility -// check window -function promise_open_compatibility_window(aInactiveAddonIds) { - let deferred = Promise.defer(); - // This will reset the longer timeout multiplier to 2 which will give each - // test that calls open_compatibility_window a minimum of 60 seconds to - // complete. - requestLongerTimeout(2); - - var variant = Cc["@mozilla.org/variant;1"]. - createInstance(Ci.nsIWritableVariant); - variant.setFromVariant(aInactiveAddonIds); - - // Cannot be modal as we want to interract with it, shouldn't cause problems - // with testing though. - var features = "chrome,centerscreen,dialog,titlebar"; - var ww = Cc["@mozilla.org/embedcomp/window-watcher;1"]. - getService(Ci.nsIWindowWatcher); - var win = ww.openWindow(null, URI_EXTENSION_UPDATE_DIALOG, "", features, variant); - - win.addEventListener("load", function() { - function page_shown(aEvent) { - if (aEvent.target.pageid) - info("Page " + aEvent.target.pageid + " shown"); - } - - win.removeEventListener("load", arguments.callee, false); - - info("Compatibility dialog opened"); - - win.addEventListener("pageshow", page_shown, false); - win.addEventListener("unload", function() { - win.removeEventListener("unload", arguments.callee, false); - win.removeEventListener("pageshow", page_shown, false); - dump("Compatibility dialog closed\n"); - }, false); - - deferred.resolve(win); - }, false); - return deferred.promise; -} - -function promise_window_close(aWindow) { - let deferred = Promise.defer(); - aWindow.addEventListener("unload", function() { - aWindow.removeEventListener("unload", arguments.callee, false); - deferred.resolve(aWindow); - }, false); - return deferred.promise; -} - -function promise_page(aWindow, aPageId) { - let deferred = Promise.defer(); - var page = aWindow.document.getElementById(aPageId); - if (aWindow.document.getElementById("updateWizard").currentPage === page) { - deferred.resolve(aWindow); - } else { - page.addEventListener("pageshow", function() { - page.removeEventListener("pageshow", arguments.callee, false); - executeSoon(function() { - deferred.resolve(aWindow); - }); - }, false); - } - return deferred.promise; -} - -function get_list_names(aList) { - var items = []; - for (let listItem of aList.childNodes) - items.push(listItem.label); - items.sort(); - return items; -} - -// These add-ons became inactive during the upgrade -var inactiveAddonIds = [ - ao5.id, - ao6.id, - ao7.id, - ao8.id, - ao9.id -]; - -// Make sure the addons in the list are not installed -function* check_addons_uninstalled(aAddonList) { - let foundList = yield promise_addons_by_ids(aAddonList.map(a => a.id)); - for (let i = 0; i < aAddonList.length; i++) { - ok(!foundList[i], "Addon " + aAddonList[i].id + " is not installed"); - } - info("Add-on uninstall check complete"); - yield true; -} - -// Test what happens when the user cancels during AddonRepository.repopulateCache() -// Add-ons that have updates available should not update if they were disabled before -// For this test, addon8 became disabled during update and addon9 was previously disabled, -// so addon8 should update and addon9 should not -add_task(function* cancel_during_repopulate() { - let a5, a8, a9, a10; - - Services.prefs.setBoolPref(PREF_STRICT_COMPAT, true); - Services.prefs.setCharPref(PREF_MIN_PLATFORM_COMPAT, "0"); - Services.prefs.setCharPref(PREF_UPDATEURL, TESTROOT + "missing.rdf"); - - let installsDone = promise_observer("TEST:all-updates-done"); - - // Don't pull compatibility data during add-on install - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, false); - // Set up our test addons so that the server-side JS has a 500ms delay to make - // sure we cancel the dialog before we get the data we want to refill our - // AddonRepository cache - let addonList = [ao5, ao8, ao9, ao10]; - yield promise_install_test_addons(addonList, - TESTROOT + "cancelCompatCheck.sjs?500"); - - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, TESTROOT + "browser_bug557956.xml"); - - [a5, a8, a9] = yield promise_addons_by_ids([ao5.id, ao8.id, ao9.id]); - ok(!a5.isCompatible, "addon5 should not be compatible"); - ok(!a8.isCompatible, "addon8 should not be compatible"); - ok(!a9.isCompatible, "addon9 should not be compatible"); - - let compatWindow = yield promise_open_compatibility_window([ao5.id, ao8.id]); - var doc = compatWindow.document; - yield promise_page(compatWindow, "versioninfo"); - - // Brief delay to let the update window finish requesting all add-ons and start - // reloading the addon repository - yield delayMS(50); - - info("Cancel the compatibility check dialog"); - var button = doc.documentElement.getButton("cancel"); - EventUtils.synthesizeMouse(button, 2, 2, { }, compatWindow); - - info("Waiting for installs to complete"); - yield installsDone; - ok(!repo.AddonRepository.isSearching, "Background installs are done"); - - // There should be no active updates - let getInstalls = Promise.defer(); - AddonManager.getAllInstalls(getInstalls.resolve); - let installs = yield getInstalls.promise; - is (installs.length, 0, "There should be no active installs after background installs are done"); - - // addon8 should have updated in the background, - // addon9 was listed as previously disabled so it should not have updated - [a5, a8, a9, a10] = yield promise_addons_by_ids([ao5.id, ao8.id, ao9.id, ao10.id]); - ok(a5.isCompatible, "addon5 should be compatible"); - ok(a8.isCompatible, "addon8 should have been upgraded"); - ok(!a9.isCompatible, "addon9 should not have been upgraded"); - ok(!a10.isCompatible, "addon10 should not be compatible"); - - info("Updates done"); - yield promise_uninstall_test_addons(); - info("done uninstalling add-ons"); -}); - -// User cancels after repopulateCache, while we're waiting for the addon.findUpdates() -// calls in gVersionInfoPage_onPageShow() to complete -// For this test, both addon8 and addon9 were disabled by this update, but addon8 -// is set to not auto-update, so only addon9 should update in the background -add_task(function* cancel_during_findUpdates() { - let a5, a8, a9; - - Services.prefs.setBoolPref(PREF_STRICT_COMPAT, true); - Services.prefs.setCharPref(PREF_MIN_PLATFORM_COMPAT, "0"); - - // Clear the AddonRepository-last-updated preference to ensure that it reloads - Services.prefs.clearUserPref(PREF_METADATA_LASTUPDATE); - let observeUpdateDone = promise_observer("TEST:addon-repository-data-updated"); - let installsDone = promise_observer("TEST:all-updates-done"); - - // Don't pull compatibility data during add-on install - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, false); - // No delay on the .sjs this time because we want the cache to repopulate - let addonList = [ao3, ao5, ao6, ao7, ao8, ao9]; - yield promise_install_test_addons(addonList, - TESTROOT + "cancelCompatCheck.sjs"); - - [a8] = yield promise_addons_by_ids([ao8.id]); - a8.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE; - - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - let compatWindow = yield promise_open_compatibility_window(inactiveAddonIds); - var doc = compatWindow.document; - yield promise_page(compatWindow, "versioninfo"); - - info("Waiting for repository-data-updated"); - yield observeUpdateDone; - - // Quick wait to make sure the findUpdates calls get queued - yield delayMS(5); - - info("Cancel the compatibility check dialog"); - var button = doc.documentElement.getButton("cancel"); - EventUtils.synthesizeMouse(button, 2, 2, { }, compatWindow); - - info("Waiting for installs to complete 2"); - yield installsDone; - ok(!repo.AddonRepository.isSearching, "Background installs are done 2"); - - // addon8 should have updated in the background, - // addon9 was listed as previously disabled so it should not have updated - [a5, a8, a9] = yield promise_addons_by_ids([ao5.id, ao8.id, ao9.id]); - ok(a5.isCompatible, "addon5 should be compatible"); - ok(!a8.isCompatible, "addon8 should not have been upgraded"); - ok(a9.isCompatible, "addon9 should have been upgraded"); - - let getInstalls = Promise.defer(); - AddonManager.getAllInstalls(getInstalls.resolve); - let installs = yield getInstalls.promise; - is (installs.length, 0, "There should be no active installs after the dialog is cancelled 2"); - - info("findUpdates done"); - yield promise_uninstall_test_addons(); -}); - -// Cancelling during the 'mismatch' screen allows add-ons that can auto-update -// to continue updating in the background and cancels any other updates -// Same conditions as the previous test - addon8 and addon9 have updates available, -// addon8 is set to not auto-update so only addon9 should become compatible -add_task(function* cancel_mismatch() { - let a3, a5, a7, a8, a9; - - Services.prefs.setBoolPref(PREF_STRICT_COMPAT, true); - Services.prefs.setCharPref(PREF_MIN_PLATFORM_COMPAT, "0"); - - // Clear the AddonRepository-last-updated preference to ensure that it reloads - Services.prefs.clearUserPref(PREF_METADATA_LASTUPDATE); - let installsDone = promise_observer("TEST:all-updates-done"); - - // Don't pull compatibility data during add-on install - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, false); - // No delay on the .sjs this time because we want the cache to repopulate - let addonList = [ao3, ao5, ao6, ao7, ao8, ao9]; - yield promise_install_test_addons(addonList, - TESTROOT + "cancelCompatCheck.sjs"); - - [a8] = yield promise_addons_by_ids([ao8.id]); - a8.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE; - - // Check that the addons start out not compatible. - [a3, a7, a8, a9] = yield promise_addons_by_ids([ao3.id, ao7.id, ao8.id, ao9.id]); - ok(!a3.isCompatible, "addon3 should not be compatible"); - ok(!a7.isCompatible, "addon7 should not be compatible"); - ok(!a8.isCompatible, "addon8 should not be compatible"); - ok(!a9.isCompatible, "addon9 should not be compatible"); - - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - let compatWindow = yield promise_open_compatibility_window(inactiveAddonIds); - var doc = compatWindow.document; - info("Wait for mismatch page"); - yield promise_page(compatWindow, "mismatch"); - info("Click the Don't Check button"); - var button = doc.documentElement.getButton("cancel"); - EventUtils.synthesizeMouse(button, 2, 2, { }, compatWindow); - - yield promise_window_close(compatWindow); - info("Waiting for installs to complete in cancel_mismatch"); - yield installsDone; - - // addon8 should not have updated in the background, - // addon9 was listed as previously disabled so it should not have updated - [a5, a8, a9] = yield promise_addons_by_ids([ao5.id, ao8.id, ao9.id]); - ok(a5.isCompatible, "addon5 should be compatible"); - ok(!a8.isCompatible, "addon8 should not have been upgraded"); - ok(a9.isCompatible, "addon9 should have been upgraded"); - - // Make sure there are no pending addon installs - let pInstalls = Promise.defer(); - AddonManager.getAllInstalls(pInstalls.resolve); - let installs = yield pInstalls.promise; - ok(installs.length == 0, "No remaining add-on installs (" + installs.toSource() + ")"); - - yield promise_uninstall_test_addons(); - yield check_addons_uninstalled(addonList); -}); - -// Cancelling during the 'mismatch' screen with only add-ons that have -// no updates available -add_task(function* cancel_mismatch_no_updates() { - let a3, a5, a6 - - Services.prefs.setBoolPref(PREF_STRICT_COMPAT, true); - Services.prefs.setCharPref(PREF_MIN_PLATFORM_COMPAT, "0"); - - // Don't pull compatibility data during add-on install - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, false); - // No delay on the .sjs this time because we want the cache to repopulate - let addonList = [ao3, ao5, ao6]; - yield promise_install_test_addons(addonList, - TESTROOT + "cancelCompatCheck.sjs"); - - // Check that the addons start out not compatible. - [a3, a5, a6] = yield promise_addons_by_ids([ao3.id, ao5.id, ao6.id]); - ok(!a3.isCompatible, "addon3 should not be compatible"); - ok(!a5.isCompatible, "addon5 should not be compatible"); - ok(!a6.isCompatible, "addon6 should not be compatible"); - - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - let compatWindow = yield promise_open_compatibility_window([ao3.id, ao5.id, ao6.id]); - var doc = compatWindow.document; - info("Wait for mismatch page"); - yield promise_page(compatWindow, "mismatch"); - info("Click the Don't Check button"); - var button = doc.documentElement.getButton("cancel"); - EventUtils.synthesizeMouse(button, 2, 2, { }, compatWindow); - - yield promise_window_close(compatWindow); - - [a3, a5, a6] = yield promise_addons_by_ids([ao3.id, ao5.id, ao6.id]); - ok(!a3.isCompatible, "addon3 should not be compatible"); - ok(a5.isCompatible, "addon5 should have become compatible"); - ok(a6.isCompatible, "addon6 should have become compatible"); - - // Make sure there are no pending addon installs - let pInstalls = Promise.defer(); - AddonManager.getAllInstalls(pInstalls.resolve); - let installs = yield pInstalls.promise; - ok(installs.length == 0, "No remaining add-on installs (" + installs.toSource() + ")"); - - yield promise_uninstall_test_addons(); - yield check_addons_uninstalled(addonList); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_checkAddonCompatibility.js b/toolkit/mozapps/webextensions/test/browser/browser_checkAddonCompatibility.js deleted file mode 100644 index 6c42e0126..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_checkAddonCompatibility.js +++ /dev/null @@ -1,34 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Test that all bundled add-ons are compatible. - -function test() { - waitForExplicitFinish(); - - Services.prefs.setBoolPref(PREF_STRICT_COMPAT, true); - ok(AddonManager.strictCompatibility, "Strict compatibility should be enabled"); - - AddonManager.getAllAddons(function gAACallback(aAddons) { - // Sort add-ons (by type and name) to improve output. - aAddons.sort(function compareTypeName(a, b) { - return a.type.localeCompare(b.type) || a.name.localeCompare(b.name); - }); - - let allCompatible = true; - for (let a of aAddons) { - // Ignore plugins. - if (a.type == "plugin") - continue; - - ok(a.isCompatible, a.type + " " + a.name + " " + a.version + " should be compatible"); - allCompatible = allCompatible && a.isCompatible; - } - // Add a reminder. - if (!allCompatible) - ok(false, "As this test failed, test browser_bug557956.js should have failed, too."); - - finish(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/browser/browser_details.js b/toolkit/mozapps/webextensions/test/browser/browser_details.js deleted file mode 100644 index ce4c51b5a..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_details.js +++ /dev/null @@ -1,1053 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests various aspects of the details view - -const { REQUIRE_SIGNING } = Components.utils.import("resource://gre/modules/addons/AddonConstants.jsm", {}); - -const PREF_AUTOUPDATE_DEFAULT = "extensions.update.autoUpdateDefault"; -const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url"; -const SEARCH_URL = TESTROOT + "browser_details.xml"; -const PREF_EM_HOTFIX_ID = "extensions.hotfix.id"; - -var gManagerWindow; -var gCategoryUtilities; -var gProvider; - -var gApp = document.getElementById("bundle_brand").getString("brandShortName"); -var gVersion = Services.appinfo.version; -var gDate = new Date(2010, 7, 1); -var infoURL = Services.urlFormatter.formatURLPref("app.support.baseURL") + "unsigned-addons"; - -function open_details(aId, aType, aCallback) { - requestLongerTimeout(2); - - gCategoryUtilities.openType(aType, function() { - var list = gManagerWindow.document.getElementById("addon-list"); - var item = list.firstChild; - while (item) { - if ("mAddon" in item && item.mAddon.id == aId) { - list.ensureElementIsVisible(item); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow); - wait_for_view_load(gManagerWindow, aCallback); - return; - } - item = item.nextSibling; - } - ok(false, "Should have found the add-on in the list"); - }); -} - -function get(aId) { - return gManagerWindow.document.getElementById(aId); -} - -function test() { - requestLongerTimeout(2); - // Turn on searching for this test - Services.prefs.setIntPref(PREF_SEARCH_MAXRESULTS, 15); - Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, SEARCH_URL); - Services.prefs.setCharPref(PREF_EM_HOTFIX_ID, "hotfix@tests.mozilla.org"); - - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "Test add-on 1", - version: "2.1", - description: "Short description", - fullDescription: "Longer description", - type: "extension", - iconURL: "chrome://foo/skin/icon.png", - icon64URL: "chrome://foo/skin/icon64.png", - contributionURL: "http://foo.com", - contributionAmount: "$0.99", - sourceURI: Services.io.newURI("http://example.com/foo", null, null), - averageRating: 4, - reviewCount: 5, - reviewURL: "http://example.com/reviews", - homepageURL: "http://example.com/addon1", - applyBackgroundUpdates: AddonManager.AUTOUPDATE_ENABLE - }, { - id: "addon2@tests.mozilla.org", - name: "Test add-on 2", - version: "2.2", - description: "Short description", - creator: { name: "Mozilla", url: null }, - type: "extension", - iconURL: "chrome://foo/skin/icon.png", - contributionURL: "http://foo.com", - contributionAmount: null, - updateDate: gDate, - permissions: 0, - screenshots: [{ - url: "chrome://branding/content/about.png", - width: 200, - height: 150 - }], - }, { - id: "addon3@tests.mozilla.org", - name: "Test add-on 3", - description: "Short description", - creator: { name: "Mozilla", url: "http://www.mozilla.org" }, - type: "extension", - sourceURI: Services.io.newURI("http://example.com/foo", null, null), - updateDate: gDate, - reviewCount: 1, - reviewURL: "http://example.com/reviews", - applyBackgroundUpdates: AddonManager.AUTOUPDATE_DISABLE, - isActive: false, - isCompatible: false, - appDisabled: true, - permissions: AddonManager.PERM_CAN_ENABLE | - AddonManager.PERM_CAN_DISABLE | - AddonManager.PERM_CAN_UPGRADE, - screenshots: [{ - url: "http://example.com/screenshot", - width: 400, - height: 300, - thumbnailURL: "chrome://branding/content/icon64.png", - thumbnailWidth: 160, - thumbnailHeight: 120 - }], - }, { - id: "addon4@tests.mozilla.org", - blocklistURL: "http://example.com/addon4@tests.mozilla.org", - name: "Test add-on 4", - _userDisabled: true, - isActive: false, - blocklistState: Ci.nsIBlocklistService.STATE_SOFTBLOCKED - }, { - id: "addon5@tests.mozilla.org", - blocklistURL: "http://example.com/addon5@tests.mozilla.org", - name: "Test add-on 5", - isActive: false, - blocklistState: Ci.nsIBlocklistService.STATE_BLOCKED, - appDisabled: true - }, { - id: "addon6@tests.mozilla.org", - blocklistURL: "http://example.com/addon6@tests.mozilla.org", - name: "Test add-on 6", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon7@tests.mozilla.org", - blocklistURL: "http://example.com/addon7@tests.mozilla.org", - name: "Test add-on 7", - _userDisabled: true, - isActive: false - }, { - id: "addon8@tests.mozilla.org", - blocklistURL: "http://example.com/addon8@tests.mozilla.org", - name: "Test add-on 8", - blocklistState: Ci.nsIBlocklistService.STATE_OUTDATED - }, { - id: "addon9@tests.mozilla.org", - name: "Test add-on 9", - signedState: AddonManager.SIGNEDSTATE_MISSING, - }, { - id: "addon10@tests.mozilla.org", - name: "Test add-on 10", - signedState: AddonManager.SIGNEDSTATE_MISSING, - isActive: false, - appDisabled: true, - isCompatible: false, - }, { - id: "addon11@tests.mozilla.org", - name: "Test add-on 11", - signedState: AddonManager.SIGNEDSTATE_PRELIMINARY, - foreignInstall: true, - isActive: false, - appDisabled: true, - isCompatible: false, - }, { - id: "addon12@tests.mozilla.org", - name: "Test add-on 12", - signedState: AddonManager.SIGNEDSTATE_SIGNED, - foreignInstall: true, - }, { - id: "hotfix@tests.mozilla.org", - name: "Test hotfix 1", - }]); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - run_next_test(); - }); -} - -function end_test() { - Services.prefs.clearUserPref(PREF_EM_HOTFIX_ID); - close_manager(gManagerWindow, function() { - finish(); - }); -} - -// Opens and tests the details view for add-on 1 -add_test(function() { - open_details("addon1@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 1", "Name should be correct"); - is_element_visible(get("detail-version"), "Version should not be hidden"); - is(get("detail-version").value, "2.1", "Version should be correct"); - is(get("detail-icon").src, "chrome://foo/skin/icon64.png", "Icon should be correct"); - is_element_hidden(get("detail-creator"), "Creator should be hidden"); - is_element_hidden(get("detail-screenshot-box"), "Screenshot should be hidden"); - is(get("detail-screenshot").width, "", "Screenshot dimensions should not be set"); - is(get("detail-screenshot").height, "", "Screenshot dimensions should not be set"); - is(get("detail-desc").textContent, "Short description", "Description should be correct"); - is(get("detail-fulldesc").textContent, "Longer description", "Full description should be correct"); - - is_element_visible(get("detail-contributions"), "Contributions section should be visible"); - is_element_visible(get("detail-contrib-suggested"), "Contributions amount should be visible"); - ok(get("detail-contrib-suggested").value, "$0.99"); - - is_element_visible(get("detail-updates-row"), "Updates should not be hidden"); - is_element_hidden(get("detail-dateUpdated"), "Update date should be hidden"); - - is_element_visible(get("detail-rating-row"), "Rating row should not be hidden"); - is_element_visible(get("detail-rating"), "Rating should not be hidden"); - is(get("detail-rating").averageRating, 4, "Rating should be correct"); - is_element_visible(get("detail-reviews"), "Reviews should not be hidden"); - is(get("detail-reviews").href, "http://example.com/reviews", "Review URL should be correct"); - is(get("detail-reviews").value, "5 reviews", "Review text should be correct"); - - is_element_visible(get("detail-homepage-row"), "Homepage should be visible"); - ok(get("detail-homepage").href, "http://example.com/addon1"); - is_element_hidden(get("detail-repository-row"), "Repository profile should not be visible"); - - is_element_hidden(get("detail-size"), "Size should be hidden"); - - is_element_hidden(get("detail-downloads"), "Downloads should be hidden"); - - is_element_visible(get("detail-autoUpdate"), "Updates should not be hidden"); - ok(get("detail-autoUpdate").childNodes[1].selected, "Updates ahould be automatic"); - is_element_hidden(get("detail-findUpdates-btn"), "Check for updates should be hidden"); - EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").lastChild, {}, gManagerWindow); - ok(get("detail-autoUpdate").lastChild.selected, "Updates should be manual"); - is_element_visible(get("detail-findUpdates-btn"), "Check for updates should be visible"); - EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").firstChild, {}, gManagerWindow); - ok(get("detail-autoUpdate").firstChild.selected, "Updates should be automatic"); - is_element_hidden(get("detail-findUpdates-btn"), "Check for updates should be hidden"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - // Disable it - EventUtils.synthesizeMouseAtCenter(get("detail-disable-btn"), {}, gManagerWindow); - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_visible(get("detail-enable-btn"), "Enable button should be visible"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_visible(get("detail-pending"), "Pending message should be visible"); - is(get("detail-pending").textContent, "Test add-on 1 will be disabled after you restart " + gApp + ".", "Pending message should be correct"); - - // Reopen it - open_details("addon1@tests.mozilla.org", "extension", function() { - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_visible(get("detail-enable-btn"), "Enable button should be visible"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_visible(get("detail-pending"), "Pending message should be visible"); - is(get("detail-pending").textContent, "Test add-on 1 will be disabled after you restart " + gApp + ".", "Pending message should be correct"); - - // Undo disabling - EventUtils.synthesizeMouseAtCenter(get("detail-undo-btn"), {}, gManagerWindow); - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - run_next_test(); - }); - }); -}); - -// Opens and tests the details view for add-on 2 -add_test(function() { - open_details("addon2@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 2", "Name should be correct"); - is_element_visible(get("detail-version"), "Version should not be hidden"); - is(get("detail-version").value, "2.2", "Version should be correct"); - is(get("detail-icon").src, "chrome://foo/skin/icon.png", "Icon should be correct"); - - is_element_visible(get("detail-creator"), "Creator should not be hidden"); - is_element_visible(get("detail-creator")._creatorName, "Creator name should not be hidden"); - is(get("detail-creator")._creatorName.value, "Mozilla", "Creator should be correct"); - is_element_hidden(get("detail-creator")._creatorLink, "Creator link should be hidden"); - - is_element_visible(get("detail-screenshot-box"), "Screenshot should be visible"); - is(get("detail-screenshot").src, "chrome://branding/content/about.png", "Should be showing the full sized screenshot"); - is(get("detail-screenshot").width, 200, "Screenshot dimensions should be set"); - is(get("detail-screenshot").height, 150, "Screenshot dimensions should be set"); - is(get("detail-screenshot").hasAttribute("loading"), true, "Screenshot should have loading attribute"); - is(get("detail-desc").textContent, "Short description", "Description should be correct"); - is_element_hidden(get("detail-fulldesc"), "Full description should be hidden"); - - is_element_visible(get("detail-contributions"), "Contributions section should be visible"); - is_element_hidden(get("detail-contrib-suggested"), "Contributions amount should be hidden"); - - is_element_visible(get("detail-dateUpdated"), "Update date should not be hidden"); - is(get("detail-dateUpdated").value, formatDate(gDate), "Update date should be correct"); - - is_element_hidden(get("detail-rating-row"), "Rating should be hidden"); - - is_element_hidden(get("detail-homepage-row"), "Homepage should not be visible"); - is_element_hidden(get("detail-repository-row"), "Repository profile should not be visible"); - - is_element_hidden(get("detail-size"), "Size should be hidden"); - - is_element_hidden(get("detail-downloads"), "Downloads should be hidden"); - - is_element_hidden(get("detail-updates-row"), "Updates should be hidden"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_hidden(get("detail-uninstall-btn"), "Remove button should be hidden"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - get("detail-screenshot").addEventListener("load", function() { - this.removeEventListener("load", arguments.callee, false); - is(this.hasAttribute("loading"), false, "Screenshot should not have loading attribute"); - run_next_test(); - }, false); - }); -}); - -// Opens and tests the details view for add-on 3 -add_test(function() { - open_details("addon3@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 3", "Name should be correct"); - is_element_hidden(get("detail-version"), "Version should be hidden"); - is(get("detail-icon").src, "", "Icon should be correct"); - - is_element_visible(get("detail-creator"), "Creator should not be hidden"); - is_element_hidden(get("detail-creator")._creatorName, "Creator name should be hidden"); - is_element_visible(get("detail-creator")._creatorLink, "Creator link should not be hidden"); - is(get("detail-creator")._creatorLink.value, "Mozilla", "Creator link should be correct"); - is(get("detail-creator")._creatorLink.href, "http://www.mozilla.org", "Creator link href should be correct"); - - is_element_visible(get("detail-screenshot-box"), "Screenshot should be visible"); - is(get("detail-screenshot").src, "chrome://branding/content/icon64.png", "Should be showing the thumbnail"); - is(get("detail-screenshot").width, 160, "Screenshot dimensions should be set"); - is(get("detail-screenshot").height, 120, "Screenshot dimensions should be set"); - is(get("detail-screenshot").hasAttribute("loading"), true, "Screenshot should have loading attribute"); - - is_element_hidden(get("detail-contributions"), "Contributions section should be hidden"); - - is_element_visible(get("detail-updates-row"), "Updates should not be hidden"); - is_element_visible(get("detail-dateUpdated"), "Update date should not be hidden"); - is(get("detail-dateUpdated").value, formatDate(gDate), "Update date should be correct"); - - is_element_visible(get("detail-rating-row"), "Rating row should not be hidden"); - is_element_hidden(get("detail-rating"), "Rating should be hidden"); - is_element_visible(get("detail-reviews"), "Reviews should not be hidden"); - is(get("detail-reviews").href, "http://example.com/reviews", "Review URL should be correct"); - is(get("detail-reviews").value, "1 review", "Review text should be correct"); - - is_element_hidden(get("detail-size"), "Size should be hidden"); - - is_element_hidden(get("detail-downloads"), "Downloads should be hidden"); - - is_element_visible(get("detail-autoUpdate"), "Updates should not be hidden"); - ok(get("detail-autoUpdate").lastChild.selected, "Updates should be manual"); - is_element_visible(get("detail-findUpdates-btn"), "Check for updates should be visible"); - EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").childNodes[1], {}, gManagerWindow); - ok(get("detail-autoUpdate").childNodes[1].selected, "Updates should be automatic"); - is_element_hidden(get("detail-findUpdates-btn"), "Check for updates should be hidden"); - EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").lastChild, {}, gManagerWindow); - ok(get("detail-autoUpdate").lastChild.selected, "Updates should be manual"); - is_element_visible(get("detail-findUpdates-btn"), "Check for updates should be visible"); - - info("Setting " + PREF_AUTOUPDATE_DEFAULT + " to true"); - Services.prefs.setBoolPref(PREF_AUTOUPDATE_DEFAULT, true); - EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").firstChild, {}, gManagerWindow); - ok(get("detail-autoUpdate").firstChild.selected, "Updates should be default"); - is_element_hidden(get("detail-findUpdates-btn"), "Check for updates should be hidden"); - - info("Setting " + PREF_AUTOUPDATE_DEFAULT + " to false"); - Services.prefs.setBoolPref(PREF_AUTOUPDATE_DEFAULT, false); - ok(get("detail-autoUpdate").firstChild.selected, "Updates should be default"); - is_element_visible(get("detail-findUpdates-btn"), "Check for updates should be visible"); - EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").childNodes[1], {}, gManagerWindow); - ok(get("detail-autoUpdate").childNodes[1].selected, "Updates should be automatic"); - is_element_hidden(get("detail-findUpdates-btn"), "Check for updates should be hidden"); - EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").firstChild, {}, gManagerWindow); - ok(get("detail-autoUpdate").firstChild.selected, "Updates should be default"); - is_element_visible(get("detail-findUpdates-btn"), "Check for updates should be visible"); - Services.prefs.clearUserPref(PREF_AUTOUPDATE_DEFAULT); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_hidden(get("detail-uninstall-btn"), "Remove button should be hidden"); - - is_element_visible(get("detail-warning"), "Warning message should be visible"); - is(get("detail-warning").textContent, "Test add-on 3 is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - get("detail-screenshot").addEventListener("load", function() { - this.removeEventListener("load", arguments.callee, false); - is(this.hasAttribute("loading"), false, "Screenshot should not have loading attribute"); - run_next_test(); - }, false); - }); -}); - -// Opens and tests the details view for add-on 4 -add_test(function() { - open_details("addon4@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 4", "Name should be correct"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_visible(get("detail-enable-btn"), "Enable button should be visible"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_visible(get("detail-warning"), "Warning message should be visible"); - is(get("detail-warning").textContent, "Test add-on 4 is known to cause security or stability issues.", "Warning message should be correct"); - is_element_visible(get("detail-warning-link"), "Warning link should be visible"); - is(get("detail-warning-link").value, "More Information", "Warning link text should be correct"); - is(get("detail-warning-link").href, "http://example.com/addon4@tests.mozilla.org", "Warning link should be correct"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - // Enable it - EventUtils.synthesizeMouseAtCenter(get("detail-enable-btn"), {}, gManagerWindow); - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_visible(get("detail-pending"), "Pending message should be visible"); - is(get("detail-pending").textContent, "Test add-on 4 will be enabled after you restart " + gApp + ".", "Pending message should be correct"); - - // Reopen it - open_details("addon4@tests.mozilla.org", "extension", function() { - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_visible(get("detail-pending"), "Pending message should be visible"); - is(get("detail-pending").textContent, "Test add-on 4 will be enabled after you restart " + gApp + ".", "Pending message should be correct"); - - // Undo enabling - EventUtils.synthesizeMouseAtCenter(get("detail-undo-btn"), {}, gManagerWindow); - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_visible(get("detail-enable-btn"), "Enable button should be visible"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_visible(get("detail-warning"), "Warning message should be visible"); - is(get("detail-warning").textContent, "Test add-on 4 is known to cause security or stability issues.", "Warning message should be correct"); - is_element_visible(get("detail-warning-link"), "Warning link should be visible"); - is(get("detail-warning-link").value, "More Information", "Warning link text should be correct"); - is(get("detail-warning-link").href, "http://example.com/addon4@tests.mozilla.org", "Warning link should be correct"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - run_next_test(); - }); - }); -}); - -// Opens and tests the details view for add-on 5 -add_test(function() { - open_details("addon5@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 5", "Name should be correct"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_visible(get("detail-error"), "Error message should be visible"); - is(get("detail-error").textContent, "Test add-on 5 has been disabled due to security or stability issues.", "Error message should be correct"); - is_element_visible(get("detail-error-link"), "Error link should be visible"); - is(get("detail-error-link").value, "More Information", "Error link text should be correct"); - is(get("detail-error-link").href, "http://example.com/addon5@tests.mozilla.org", "Error link should be correct"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - run_next_test(); - }); -}); - -// Opens and tests the details view for add-on 6 -add_test(function() { - open_details("addon6@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 6", "Name should be correct"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - // Disable it - EventUtils.synthesizeMouseAtCenter(get("detail-disable-btn"), {}, gManagerWindow); - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_visible(get("detail-enable-btn"), "Enable button should be visible"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - // Reopen it - open_details("addon6@tests.mozilla.org", "extension", function() { - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_visible(get("detail-enable-btn"), "Enable button should be visible"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be visible"); - - // Enable it - EventUtils.synthesizeMouseAtCenter(get("detail-enable-btn"), {}, gManagerWindow); - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - run_next_test(); - }); - }); -}); - -// Opens and tests the details view for add-on 7 -add_test(function() { - open_details("addon7@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 7", "Name should be correct"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_visible(get("detail-enable-btn"), "Enable button should be visible"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - // Enable it - EventUtils.synthesizeMouseAtCenter(get("detail-enable-btn"), {}, gManagerWindow); - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_visible(get("detail-pending"), "Pending message should be visible"); - is(get("detail-pending").textContent, "Test add-on 7 will be enabled after you restart " + gApp + ".", "Pending message should be correct"); - - // Reopen it - open_details("addon7@tests.mozilla.org", "extension", function() { - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_visible(get("detail-pending"), "Pending message should be visible"); - is(get("detail-pending").textContent, "Test add-on 7 will be enabled after you restart " + gApp + ".", "Pending message should be correct"); - - // Undo enabling - EventUtils.synthesizeMouseAtCenter(get("detail-undo-btn"), {}, gManagerWindow); - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_visible(get("detail-enable-btn"), "Enable button should be visible"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - run_next_test(); - }); - }); -}); - -// Opens and tests the details view for add-on 8 -add_test(function() { - open_details("addon8@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 8", "Name should be correct"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_visible(get("detail-warning"), "Warning message should be visible"); - is(get("detail-warning").textContent, "An important update is available for Test add-on 8.", "Warning message should be correct"); - is_element_visible(get("detail-warning-link"), "Warning link should be visible"); - is(get("detail-warning-link").value, "Update Now", "Warning link text should be correct"); - is(get("detail-warning-link").href, "http://example.com/addon8@tests.mozilla.org", "Warning link should be correct"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - // Disable it - EventUtils.synthesizeMouseAtCenter(get("detail-disable-btn"), {}, gManagerWindow); - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_visible(get("detail-enable-btn"), "Enable button should be visible"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_visible(get("detail-pending"), "Pending message should be visible"); - is(get("detail-pending").textContent, "Test add-on 8 will be disabled after you restart " + gApp + ".", "Pending message should be correct"); - - // Reopen it - open_details("addon8@tests.mozilla.org", "extension", function() { - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_visible(get("detail-enable-btn"), "Enable button should be visible"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_visible(get("detail-pending"), "Pending message should be visible"); - is(get("detail-pending").textContent, "Test add-on 8 will be disabled after you restart " + gApp + ".", "Pending message should be correct"); - - // Undo disabling - EventUtils.synthesizeMouseAtCenter(get("detail-undo-btn"), {}, gManagerWindow); - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_visible(get("detail-warning"), "Warning message should be visible"); - is(get("detail-warning").textContent, "An important update is available for Test add-on 8.", "Warning message should be correct"); - is_element_visible(get("detail-warning-link"), "Warning link should be visible"); - is(get("detail-warning-link").value, "Update Now", "Warning link text should be correct"); - is(get("detail-warning-link").href, "http://example.com/addon8@tests.mozilla.org", "Warning link should be correct"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - run_next_test(); - }); - }); -}); - -// These tests are only appropriate when signing can be turned off -if (!REQUIRE_SIGNING) { - // Opens and tests the details view for add-on 9 - add_test(function() { - open_details("addon9@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 9", "Name should be correct"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_visible(get("detail-warning"), "Error message should be visible"); - is(get("detail-warning").textContent, "Test add-on 9 could not be verified for use in " + gApp + ". Proceed with caution.", "Warning message should be correct"); - is_element_visible(get("detail-warning-link"), "Warning link should be visible"); - is(get("detail-warning-link").value, "More Information", "Warning link text should be correct"); - is(get("detail-warning-link").href, infoURL, "Warning link should be correct"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - run_next_test(); - }); - }); -} - -// Opens and tests the details view for add-on 9 with signing required -add_test(function() { - close_manager(gManagerWindow, function() { - Services.prefs.setBoolPref("xpinstall.signatures.required", true); - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - open_details("addon9@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 9", "Name should be correct"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_visible(get("detail-error"), "Error message should be visible"); - is(get("detail-error").textContent, "Test add-on 9 could not be verified for use in " + gApp + " and has been disabled.", "Error message should be correct"); - is_element_visible(get("detail-error-link"), "Error link should be visible"); - is(get("detail-error-link").value, "More Information", "Error link text should be correct"); - is(get("detail-error-link").href, infoURL, "Error link should be correct"); - - close_manager(gManagerWindow, function() { - Services.prefs.setBoolPref("xpinstall.signatures.required", false); - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - run_next_test(); - }); - }); - }); - }); - }); -}); - -// These tests are only appropriate when signing can be turned off -if (!REQUIRE_SIGNING) { - // Opens and tests the details view for add-on 10 - add_test(function() { - open_details("addon10@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 10", "Name should be correct"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_visible(get("detail-warning"), "Warning message should be visible"); - is(get("detail-warning").textContent, "Test add-on 10 is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - run_next_test(); - }); - }); -} - -// Opens and tests the details view for add-on 10 with signing required -add_test(function() { - close_manager(gManagerWindow, function() { - Services.prefs.setBoolPref("xpinstall.signatures.required", true); - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - open_details("addon10@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 10", "Name should be correct"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_visible(get("detail-error"), "Error message should be visible"); - is(get("detail-error").textContent, "Test add-on 10 could not be verified for use in " + gApp + " and has been disabled.", "Error message should be correct"); - is_element_visible(get("detail-error-link"), "Error link should be visible"); - is(get("detail-error-link").value, "More Information", "Error link text should be correct"); - is(get("detail-error-link").href, infoURL, "Error link should be correct"); - - close_manager(gManagerWindow, function() { - Services.prefs.setBoolPref("xpinstall.signatures.required", false); - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - run_next_test(); - }); - }); - }); - }); - }); -}); - -// Opens and tests the details view for add-on 11 -add_test(function() { - open_details("addon11@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 11", "Name should be correct"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_visible(get("detail-warning"), "Warning message should be visible"); - is(get("detail-warning").textContent, "Test add-on 11 is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - run_next_test(); - }); -}); - -// Opens and tests the details view for add-on 11 with signing required -add_test(function() { - close_manager(gManagerWindow, function() { - Services.prefs.setBoolPref("xpinstall.signatures.required", true); - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - open_details("addon11@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 11", "Name should be correct"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_visible(get("detail-warning"), "Warning message should be visible"); - is(get("detail-warning").textContent, "Test add-on 11 is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - - close_manager(gManagerWindow, function() { - Services.prefs.setBoolPref("xpinstall.signatures.required", false); - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - run_next_test(); - }); - }); - }); - }); - }); -}); - -// Opens and tests the details view for add-on 12 -add_test(function() { - open_details("addon12@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 12", "Name should be correct"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - run_next_test(); - }); -}); - -// Opens and tests the details view for add-on 12 with signing required -add_test(function() { - close_manager(gManagerWindow, function() { - Services.prefs.setBoolPref("xpinstall.signatures.required", true); - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - open_details("addon12@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test add-on 12", "Name should be correct"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-error-link"), "Error link should be hidden"); - - close_manager(gManagerWindow, function() { - Services.prefs.setBoolPref("xpinstall.signatures.required", false); - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - run_next_test(); - }); - }); - }); - }); - }); -}); - -// Opens and tests the details view for hotfix 1 -add_test(function() { - open_details("hotfix@tests.mozilla.org", "extension", function() { - is(get("detail-name").textContent, "Test hotfix 1", "Name should be correct"); - - is_element_hidden(get("detail-updates-row"), "Updates should be hidden"); - - is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - run_next_test(); - }); -}); - -// Tests that upgrades with onExternalInstall apply immediately -add_test(function() { - open_details("addon1@tests.mozilla.org", "extension", function() { - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "Test add-on replacement", - version: "2.5", - description: "Short description replacement", - fullDescription: "Longer description replacement", - type: "extension", - iconURL: "chrome://foo/skin/icon.png", - icon64URL: "chrome://foo/skin/icon264.png", - sourceURI: Services.io.newURI("http://example.com/foo", null, null), - averageRating: 2, - optionsURL: "chrome://foo/content/options.xul", - applyBackgroundUpdates: AddonManager.AUTOUPDATE_ENABLE, - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }]); - - is(get("detail-name").textContent, "Test add-on replacement", "Name should be correct"); - is_element_visible(get("detail-version"), "Version should not be hidden"); - is(get("detail-version").value, "2.5", "Version should be correct"); - is(get("detail-icon").src, "chrome://foo/skin/icon264.png", "Icon should be correct"); - is_element_hidden(get("detail-creator"), "Creator should be hidden"); - is_element_hidden(get("detail-screenshot-box"), "Screenshot should be hidden"); - is(get("detail-desc").textContent, "Short description replacement", "Description should be correct"); - is(get("detail-fulldesc").textContent, "Longer description replacement", "Full description should be correct"); - - is_element_hidden(get("detail-contributions"), "Contributions section should be hidden"); - - is_element_hidden(get("detail-dateUpdated"), "Update date should be hidden"); - - is_element_visible(get("detail-rating-row"), "Rating row should not be hidden"); - is_element_visible(get("detail-rating"), "Rating should not be hidden"); - is(get("detail-rating").averageRating, 2, "Rating should be correct"); - is_element_hidden(get("detail-reviews"), "Reviews should be hidden"); - - is_element_hidden(get("detail-homepage-row"), "Homepage should be hidden"); - - is_element_hidden(get("detail-size"), "Size should be hidden"); - - is_element_hidden(get("detail-downloads"), "Downloads should be hidden"); - - is_element_visible(get("detail-prefs-btn"), "Preferences button should be visible"); - is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden"); - is_element_visible(get("detail-disable-btn"), "Disable button should be visible"); - is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible"); - - is_element_hidden(get("detail-warning"), "Warning message should be hidden"); - is_element_hidden(get("detail-warning-link"), "Warning link should be hidden"); - is_element_hidden(get("detail-error"), "Error message should be hidden"); - is_element_hidden(get("detail-pending"), "Pending message should be hidden"); - - run_next_test(); - }); -}); - -// Check that onPropertyChanges for appDisabled updates the UI -add_test(function() { - info("Checking that onPropertyChanges for appDisabled updates the UI"); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - aAddon.userDisabled = true; - aAddon.isCompatible = true; - aAddon.appDisabled = false; - - open_details("addon1@tests.mozilla.org", "extension", function() { - is(get("detail-view").getAttribute("active"), "false", "Addon should not be marked as active"); - is_element_hidden(get("detail-warning"), "Warning message should not be visible"); - - info("Making addon incompatible and appDisabled"); - aAddon.isCompatible = false; - aAddon.appDisabled = true; - - is(get("detail-view").getAttribute("active"), "false", "Addon should not be marked as active"); - is_element_visible(get("detail-warning"), "Warning message should be visible"); - is(get("detail-warning").textContent, "Test add-on replacement is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); - - run_next_test(); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_discovery.js b/toolkit/mozapps/webextensions/test/browser/browser_discovery.js deleted file mode 100644 index ec336df2d..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_discovery.js +++ /dev/null @@ -1,651 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that the discovery view loads properly - -const MAIN_URL = "https://example.com/" + RELATIVE_DIR + "discovery.html"; - -var gManagerWindow; -var gCategoryUtilities; -var gProvider; - -var gLoadCompleteCallback = null; - -var gProgressListener = { - onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus) { - // Only care about the network stop status events - if (!(aStateFlags & (Ci.nsIWebProgressListener.STATE_IS_NETWORK)) || - !(aStateFlags & (Ci.nsIWebProgressListener.STATE_STOP))) - return; - - if (gLoadCompleteCallback) - executeSoon(gLoadCompleteCallback); - gLoadCompleteCallback = null; - }, - - onLocationChange: function() { }, - onSecurityChange: function() { }, - onProgressChange: function() { }, - onStatusChange: function() { }, - - QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebProgressListener, - Ci.nsISupportsWeakReference]), -}; - -function test() { - // Switch to a known url - Services.prefs.setCharPref(PREF_DISCOVERURL, MAIN_URL); - // Temporarily enable caching - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "Test add-on 1", - type: "extension", - version: "2.2", - isCompatible: false, - blocklistState: Ci.nsIBlocklistService.STATE_SOFTBLOCKED, - userDisabled: false - }, { - id: "addon2@tests.mozilla.org", - name: "Test add-on 2", - type: "plugin", - version: "3.1.5", - isCompatible: true, - blocklistState: Ci.nsIBlocklistService.STATE_NOT_BLOCKED, - userDisabled: false - }, { - id: "addon3@tests.mozilla.org", - name: "Test add-on 3", - type: "theme", - version: "1.2b1", - isCompatible: false, - blocklistState: Ci.nsIBlocklistService.STATE_BLOCKED, - userDisabled: true - }]); - - run_next_test(); -} - -function end_test() { - finish(); -} - -function getURL(aBrowser) { - if (gManagerWindow.document.getElementById("discover-view").selectedPanel != - aBrowser) - return null; - - var url = aBrowser.currentURI.spec; - var pos = url.indexOf("#"); - if (pos != -1) - return url.substring(0, pos); - return url; -} - -function getHash(aBrowser) { - if (gManagerWindow.document.getElementById("discover-view").selectedPanel != - aBrowser) - return null; - - var url = aBrowser.currentURI.spec; - var pos = url.indexOf("#"); - if (pos != -1) - return decodeURIComponent(url.substring(pos + 1)); - return null; -} - -function testHash(aBrowser, aTestAddonVisible, aCallback) { - var hash = getHash(aBrowser); - isnot(hash, null, "There should be a hash"); - try { - var data = JSON.parse(hash); - } - catch (e) { - ok(false, "Hash should have been valid JSON: " + e); - aCallback(); - return; - } - is(typeof data, "object", "Hash should be a JS object"); - - // Ensure that at least the test add-ons are present - if (aTestAddonVisible[0]) - ok("addon1@tests.mozilla.org" in data, "Test add-on 1 should be listed"); - else - ok(!("addon1@tests.mozilla.org" in data), "Test add-on 1 should not be listed"); - if (aTestAddonVisible[1]) - ok("addon2@tests.mozilla.org" in data, "Test add-on 2 should be listed"); - else - ok(!("addon2@tests.mozilla.org" in data), "Test add-on 2 should not be listed"); - if (aTestAddonVisible[2]) - ok("addon3@tests.mozilla.org" in data, "Test add-on 3 should be listed"); - else - ok(!("addon3@tests.mozilla.org" in data), "Test add-on 3 should not be listed"); - - // Test against all the add-ons the manager knows about since plugins and - // app extensions may exist - AddonManager.getAllAddons(function(aAddons) { - for (let addon of aAddons) { - if (!(addon.id in data)) { - // Test add-ons will have shown an error if necessary above - if (addon.id.substring(6) != "@tests.mozilla.org") - ok(false, "Add-on " + addon.id + " was not included in the data"); - continue; - } - - info("Testing data for add-on " + addon.id); - var addonData = data[addon.id]; - is(addonData.name, addon.name, "Name should be correct"); - is(addonData.version, addon.version, "Version should be correct"); - is(addonData.type, addon.type, "Type should be correct"); - is(addonData.userDisabled, addon.userDisabled, "userDisabled should be correct"); - is(addonData.isBlocklisted, addon.blocklistState == Ci.nsIBlocklistService.STATE_BLOCKED, "blocklisted should be correct"); - is(addonData.isCompatible, addon.isCompatible, "isCompatible should be correct"); - } - aCallback(); - }); -} - -function isLoading() { - var loading = gManagerWindow.document.getElementById("discover-view").selectedPanel == - gManagerWindow.document.getElementById("discover-loading"); - if (loading) { - is_element_visible(gManagerWindow.document.querySelector("#discover-loading .loading"), - "Loading message should be visible when its panel is the selected panel"); - } - return loading; -} - -function isError() { - return gManagerWindow.document.getElementById("discover-view").selectedPanel == - gManagerWindow.document.getElementById("discover-error"); -} - -function clickLink(aId, aCallback) { - var browser = gManagerWindow.document.getElementById("discover-browser"); - browser.addProgressListener(gProgressListener); - - gLoadCompleteCallback = function() { - browser.removeProgressListener(gProgressListener); - aCallback(); - }; - - var link = browser.contentDocument.getElementById(aId); - EventUtils.sendMouseEvent({type: "click"}, link); - - executeSoon(function() { - ok(isLoading(), "Clicking a link should show the loading pane"); - }); -} - -// Tests that switching to the discovery view displays the right url -add_test(function() { - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - gCategoryUtilities.openType("discover", function() { - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - testHash(browser, [true, true, true], function() { - close_manager(gManagerWindow, run_next_test); - }); - }); - - ok(isLoading(), "Should be loading at first"); - }); -}); - -// Tests that loading the add-ons manager with the discovery view as the last -// selected view displays the right url -add_test(function() { - // Hide one of the test add-ons - Services.prefs.setBoolPref("extensions.addon2@tests.mozilla.org.getAddons.cache.enabled", false); - Services.prefs.setBoolPref("extensions.addon3@tests.mozilla.org.getAddons.cache.enabled", true); - - open_manager(null, function(aWindow) { - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - is(gCategoryUtilities.selectedCategory, "discover", "Should have loaded the right view"); - - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - testHash(browser, [true, false, true], function() { - close_manager(gManagerWindow, run_next_test); - }); - }, function(aWindow) { - gManagerWindow = aWindow; - ok(isLoading(), "Should be loading at first"); - }); -}); - -// Tests that loading the add-ons manager with the discovery view as the initial -// view displays the right url -add_test(function() { - Services.prefs.clearUserPref("extensions.addon2@tests.mozilla.org.getAddons.cache.enabled"); - Services.prefs.setBoolPref("extensions.addon3@tests.mozilla.org.getAddons.cache.enabled", false); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - gCategoryUtilities.openType("extension", function() { - close_manager(gManagerWindow, function() { - open_manager("addons://discover/", function(aWindow) { - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - is(gCategoryUtilities.selectedCategory, "discover", "Should have loaded the right view"); - - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - testHash(browser, [true, true, false], function() { - Services.prefs.clearUserPref("extensions.addon3@tests.mozilla.org.getAddons.cache.enabled"); - close_manager(gManagerWindow, run_next_test); - }); - }, function(aWindow) { - gManagerWindow = aWindow; - ok(isLoading(), "Should be loading at first"); - }); - }); - }); - }); -}); - -// Tests that switching to the discovery view displays the right url -add_test(function() { - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, false); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - gCategoryUtilities.openType("discover", function() { - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - is(getHash(browser), null, "Hash should not have been passed"); - close_manager(gManagerWindow, run_next_test); - }); - }); -}); - -// Tests that loading the add-ons manager with the discovery view as the last -// selected view displays the right url -add_test(function() { - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - is(gCategoryUtilities.selectedCategory, "discover", "Should have loaded the right view"); - - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - is(getHash(browser), null, "Hash should not have been passed"); - close_manager(gManagerWindow, run_next_test); - }); -}); - -// Tests that loading the add-ons manager with the discovery view as the initial -// view displays the right url -add_test(function() { - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - gCategoryUtilities.openType("extension", function() { - close_manager(gManagerWindow, function() { - open_manager("addons://discover/", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - is(gCategoryUtilities.selectedCategory, "discover", "Should have loaded the right view"); - - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - is(getHash(browser), null, "Hash should not have been passed"); - close_manager(gManagerWindow, run_next_test); - }); - }); - }); - }); -}); - -// Tests that navigating to an insecure page fails -add_test(function() { - open_manager("addons://discover/", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - clickLink("link-http", function() { - ok(isError(), "Should have shown the error page"); - - gCategoryUtilities.openType("extension", function() { - gCategoryUtilities.openType("discover", function() { - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - close_manager(gManagerWindow, run_next_test); - }); - ok(isLoading(), "Should start loading again"); - }); - }); - }); -}); - -// Tests that navigating to a different domain fails -add_test(function() { - open_manager("addons://discover/", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - clickLink("link-domain", function() { - ok(isError(), "Should have shown the error page"); - - gCategoryUtilities.openType("extension", function() { - gCategoryUtilities.openType("discover", function() { - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - close_manager(gManagerWindow, run_next_test); - }); - ok(isLoading(), "Should start loading again"); - }); - }); - }); -}); - -// Tests that navigating to a missing page fails -add_test(function() { - open_manager("addons://discover/", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - clickLink("link-bad", function() { - ok(isError(), "Should have shown the error page"); - - gCategoryUtilities.openType("extension", function() { - gCategoryUtilities.openType("discover", function() { - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - close_manager(gManagerWindow, run_next_test); - }); - ok(isLoading(), "Should start loading again"); - }); - }); - }); -}); - -// Tests that navigating to a page on the same domain works -add_test(function() { - open_manager("addons://discover/", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - clickLink("link-good", function() { - is(getURL(browser), "https://example.com/" + RELATIVE_DIR + "releaseNotes.xhtml", "Should have loaded the right url"); - - gCategoryUtilities.openType("extension", function() { - gCategoryUtilities.openType("discover", function() { - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - close_manager(gManagerWindow, run_next_test); - }); - }); - }); - }); -}); - -// Tests repeated navigation to the same page followed by a navigation to a -// different domain -add_test(function() { - open_manager("addons://discover/", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - var count = 10; - function clickAgain(aCallback) { - if (count-- == 0) - aCallback(); - else - clickLink("link-normal", clickAgain.bind(null, aCallback)); - } - - clickAgain(function() { - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - clickLink("link-domain", function() { - ok(isError(), "Should have shown the error page"); - - gCategoryUtilities.openType("extension", function() { - gCategoryUtilities.openType("discover", function() { - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - close_manager(gManagerWindow, run_next_test); - }); - ok(isLoading(), "Should start loading again"); - }); - }); - }); - }); -}); - -// Loading an insecure main page should work if that is what the prefs say, should -// also be able to navigate to a https page and back again -add_test(function() { - Services.prefs.setCharPref(PREF_DISCOVERURL, TESTROOT + "discovery.html"); - - open_manager("addons://discover/", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), TESTROOT + "discovery.html", "Should have loaded the right url"); - - clickLink("link-normal", function() { - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - clickLink("link-http", function() { - is(getURL(browser), TESTROOT + "discovery.html", "Should have loaded the right url"); - - close_manager(gManagerWindow, run_next_test); - }); - }); - }); -}); - -// Stopping the initial load should display the error page and then correctly -// reload when switching away and back again -add_test(function() { - Services.prefs.setCharPref(PREF_DISCOVERURL, MAIN_URL); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - var browser = gManagerWindow.document.getElementById("discover-browser"); - - EventUtils.synthesizeMouse(gCategoryUtilities.get("discover"), 2, 2, { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - ok(isError(), "Should have shown the error page"); - - gCategoryUtilities.openType("extension", function() { - EventUtils.synthesizeMouse(gCategoryUtilities.get("discover"), 2, 2, { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - ok(isError(), "Should have shown the error page"); - - gCategoryUtilities.openType("extension", function() { - gCategoryUtilities.openType("discover", function() { - is(getURL(browser), MAIN_URL, "Should have loaded the right url"); - - close_manager(gManagerWindow, run_next_test); - }); - }); - }); - - ok(isLoading(), "Should be loading"); - // This will stop the real page load - browser.stop(); - }); - }); - - ok(isLoading(), "Should be loading"); - // This will actually stop the about:blank load - browser.stop(); - }); -}); - -// Test for Bug 703929 - Loading the discover view from a chrome XUL file fails when -// the add-on manager is reopened. -add_test(function() { - const url = "chrome://mochitests/content/" + RELATIVE_DIR + "addon_about.xul"; - Services.prefs.setCharPref(PREF_DISCOVERURL, url); - - open_manager("addons://discover/", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), url, "Loading a chrome XUL file should work"); - - restart_manager(gManagerWindow, "addons://discover/", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), url, "Should be able to load the chrome XUL file a second time"); - - close_manager(gManagerWindow, run_next_test); - }); - }); -}); - -// Bug 711693 - Send the compatibility mode when loading the Discovery pane -add_test(function() { - info("Test '%COMPATIBILITY_MODE%' in the URL is correctly replaced by 'normal'"); - Services.prefs.setCharPref(PREF_DISCOVERURL, MAIN_URL + "?mode=%COMPATIBILITY_MODE%"); - Services.prefs.setBoolPref(PREF_STRICT_COMPAT, false); - - open_manager("addons://discover/", function(aWindow) { - gManagerWindow = aWindow; - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL + "?mode=normal", "Should have loaded the right url"); - close_manager(gManagerWindow, run_next_test); - }); -}); - -add_test(function() { - info("Test '%COMPATIBILITY_MODE%' in the URL is correctly replaced by 'strict'"); - Services.prefs.setBoolPref(PREF_STRICT_COMPAT, true); - - open_manager("addons://discover/", function(aWindow) { - gManagerWindow = aWindow; - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL + "?mode=strict", "Should have loaded the right url"); - close_manager(gManagerWindow, run_next_test); - }); -}); - -add_test(function() { - info("Test '%COMPATIBILITY_MODE%' in the URL is correctly replaced by 'ignore'"); - Services.prefs.setBoolPref(PREF_CHECK_COMPATIBILITY, false); - - open_manager("addons://discover/", function(aWindow) { - gManagerWindow = aWindow; - var browser = gManagerWindow.document.getElementById("discover-browser"); - is(getURL(browser), MAIN_URL + "?mode=ignore", "Should have loaded the right url"); - close_manager(gManagerWindow, run_next_test); - }); -}); - -// Test for Bug 601442 - extensions.getAddons.showPane need to be update -// for the new addon manager. -function bug_601442_test_elements(visible) { - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - if (visible) - ok(gCategoryUtilities.isTypeVisible("discover"), "Discover category should be visible"); - else - ok(!gCategoryUtilities.isTypeVisible("discover"), "Discover category should not be visible"); - - gManagerWindow.loadView("addons://list/dictionary"); - wait_for_view_load(gManagerWindow, function(aManager) { - var button = aManager.document.getElementById("discover-button-install"); - if (visible) - ok(!is_hidden(button), "Discover button should be visible!"); - else - ok(is_hidden(button), "Discover button should not be visible!"); - - close_manager(gManagerWindow, run_next_test); - }); - }); -} - -add_test(function() { - Services.prefs.setBoolPref(PREF_DISCOVER_ENABLED, false); - Services.prefs.setBoolPref(PREF_XPI_ENABLED, true); - bug_601442_test_elements(false); -}); -add_test(function() { - Services.prefs.setBoolPref(PREF_DISCOVER_ENABLED, true); - Services.prefs.setBoolPref(PREF_XPI_ENABLED, false); - bug_601442_test_elements(false); -}); -add_test(function() { - Services.prefs.setBoolPref(PREF_DISCOVER_ENABLED, false); - Services.prefs.setBoolPref(PREF_XPI_ENABLED, false); - bug_601442_test_elements(false); -}); -add_test(function() { - Services.prefs.setBoolPref(PREF_DISCOVER_ENABLED, true); - Services.prefs.setBoolPref(PREF_XPI_ENABLED, true); - bug_601442_test_elements(true); -}); - -// Test for Bug 1132971 - if extensions.getAddons.showPane is false, -// the extensions pane should show by default -add_test(function() { - Services.prefs.clearUserPref(PREF_UI_LASTCATEGORY); - Services.prefs.setBoolPref(PREF_DISCOVER_ENABLED, false); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - is(gCategoryUtilities.selectedCategory, "extension", "Should be showing the extension view"); - close_manager(gManagerWindow, run_next_test); - Services.prefs.clearUserPref(PREF_DISCOVER_ENABLED); - }); -}); - -// Test for Bug 1219495 - should show placeholder content when offline -add_test(function() { - // set a URL to cause an error - Services.prefs.setCharPref(PREF_DISCOVERURL, "https://nocert.example.com/"); - - open_manager("addons://discover/", function(aWindow) { - gManagerWindow = aWindow; - - ok(isError(), "Should have shown the placeholder content"); - - close_manager(gManagerWindow, run_next_test); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_discovery_install.js b/toolkit/mozapps/webextensions/test/browser/browser_discovery_install.js deleted file mode 100644 index 63516bd53..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_discovery_install.js +++ /dev/null @@ -1,133 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that the discovery view can install add-ons correctly - -const MAIN_URL = "https://example.com/" + RELATIVE_DIR + "discovery_install.html"; -const GOOD_FRAMED_URL = "https://example.com/" + RELATIVE_DIR + "discovery_frame.html"; -const BAD_FRAMED_URL = "https://example.org/" + RELATIVE_DIR + "discovery_frame.html"; - -const PREF_INSTALL_REQUIREBUILTINCERTS = "extensions.install.requireBuiltInCerts"; - -// Temporarily enable caching -Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); -// Allow SSL from non-built-in certs -Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false); -// Allow installs from the test site -Services.perms.add(NetUtil.newURI("https://example.com/"), "install", - Ci.nsIPermissionManager.ALLOW_ACTION); -Services.perms.add(NetUtil.newURI("https://example.org/"), "install", - Ci.nsIPermissionManager.ALLOW_ACTION); - -registerCleanupFunction(() => { - Services.perms.remove(NetUtil.newURI("https://example.com/"), "install"); - Services.perms.remove(NetUtil.newURI("https://example.org/"), "install"); - Services.prefs.clearUserPref(PREF_INSTALL_REQUIREBUILTINCERTS); -}); - -function clickLink(frameLoader, id) { - let link = frameLoader.contentDocument.getElementById(id); - EventUtils.sendMouseEvent({type: "click"}, link); -} - -function waitForInstall() { - return new Promise(resolve => { - wait_for_window_open((window) => { - is(window.location, "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul", - "Should have seen the install window"); - window.document.documentElement.cancelDialog(); - resolve(); - }); - }); -} - -function waitForFail() { - return new Promise(resolve => { - let listener = (subject, topic, data) => { - Services.obs.removeObserver(listener, topic); - resolve(); - } - Services.obs.addObserver(listener, "addon-install-origin-blocked", false); - }); -} - -// Tests that navigating to an XPI attempts to install correctly -add_task(function* test_install_direct() { - Services.prefs.setCharPref(PREF_DISCOVERURL, MAIN_URL); - - let managerWindow = yield open_manager("addons://discover/"); - let browser = managerWindow.document.getElementById("discover-browser"); - - clickLink(browser, "install-direct"); - yield waitForInstall(); - - yield close_manager(managerWindow); -}); - -// Tests that installing via JS works correctly -add_task(function* test_install_js() { - Services.prefs.setCharPref(PREF_DISCOVERURL, MAIN_URL); - - let managerWindow = yield open_manager("addons://discover/"); - let browser = managerWindow.document.getElementById("discover-browser"); - - clickLink(browser, "install-js"); - yield waitForInstall(); - - yield close_manager(managerWindow); -}); - -// Installing from an inner-frame of the same origin should work -add_task(function* test_install_inner_direct() { - Services.prefs.setCharPref(PREF_DISCOVERURL, GOOD_FRAMED_URL); - - let managerWindow = yield open_manager("addons://discover/"); - let browser = managerWindow.document.getElementById("discover-browser"); - let frame = browser.contentDocument.getElementById("frame"); - - clickLink(frame, "install-direct"); - yield waitForInstall(); - - yield close_manager(managerWindow); -}); - -add_task(function* test_install_inner_js() { - Services.prefs.setCharPref(PREF_DISCOVERURL, GOOD_FRAMED_URL); - - let managerWindow = yield open_manager("addons://discover/"); - let browser = managerWindow.document.getElementById("discover-browser"); - let frame = browser.contentDocument.getElementById("frame"); - - clickLink(frame, "install-js"); - yield waitForInstall(); - - yield close_manager(managerWindow); -}); - -// Installing from an inner-frame of a different origin should fail -add_task(function* test_install_xorigin_direct() { - Services.prefs.setCharPref(PREF_DISCOVERURL, BAD_FRAMED_URL); - - let managerWindow = yield open_manager("addons://discover/"); - let browser = managerWindow.document.getElementById("discover-browser"); - let frame = browser.contentDocument.getElementById("frame"); - - clickLink(frame, "install-direct"); - yield waitForFail(); - - yield close_manager(managerWindow); -}); - -add_task(function* test_install_xorigin_js() { - Services.prefs.setCharPref(PREF_DISCOVERURL, BAD_FRAMED_URL); - - let managerWindow = yield open_manager("addons://discover/"); - let browser = managerWindow.document.getElementById("discover-browser"); - let frame = browser.contentDocument.getElementById("frame"); - - clickLink(frame, "install-js"); - yield waitForFail(); - - yield close_manager(managerWindow); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_dragdrop.js b/toolkit/mozapps/webextensions/test/browser/browser_dragdrop.js deleted file mode 100644 index 960e7e933..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_dragdrop.js +++ /dev/null @@ -1,234 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This tests simulated drag and drop of files into the add-ons manager. -// We test with the add-ons manager in its own tab if in Firefox otherwise -// in its own window. -// Tests are only simulations of the drag and drop events, we cannot really do -// this automatically. - -// Instead of loading EventUtils.js into the test scope in browser-test.js for all tests, -// we only need EventUtils.js for a few files which is why we are using loadSubScript. -var gManagerWindow; -var EventUtils = {}; -this._scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"]. - getService(Ci.mozIJSSubScriptLoader); -this._scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/EventUtils.js", EventUtils); - -// This listens for the next opened window and checks it is of the right url. -// opencallback is called when the new window is fully loaded -// closecallback is called when the window is closed -function WindowOpenListener(url, opencallback, closecallback) { - this.url = url; - this.opencallback = opencallback; - this.closecallback = closecallback; - - var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] - .getService(Components.interfaces.nsIWindowMediator); - wm.addListener(this); -} - -WindowOpenListener.prototype = { - url: null, - opencallback: null, - closecallback: null, - window: null, - domwindow: null, - - handleEvent: function(event) { - is(this.domwindow.document.location.href, this.url, "Should have opened the correct window"); - - this.domwindow.removeEventListener("load", this, false); - // Allow any other load handlers to execute - var self = this; - executeSoon(function() { self.opencallback(self.domwindow); } ); - }, - - onWindowTitleChange: function(window, title) { - }, - - onOpenWindow: function(window) { - if (this.window) - return; - - this.window = window; - this.domwindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIDOMWindow); - this.domwindow.addEventListener("load", this, false); - }, - - onCloseWindow: function(window) { - if (this.window != window) - return; - - var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] - .getService(Components.interfaces.nsIWindowMediator); - wm.removeListener(this); - this.opencallback = null; - this.window = null; - this.domwindow = null; - - // Let the window close complete - executeSoon(this.closecallback); - this.closecallback = null; - } -}; - -var gSawInstallNotification = false; -var gInstallNotificationObserver = { - observe: function(aSubject, aTopic, aData) { - var installInfo = aSubject.QueryInterface(Ci.amIWebInstallInfo); - if (gTestInWindow) - is(installInfo.browser, null, "Notification should have a null browser"); - else - isnot(installInfo.browser, null, "Notification should have non-null browser"); - gSawInstallNotification = true; - Services.obs.removeObserver(this, "addon-install-started"); - } -}; - - -function test() { - waitForExplicitFinish(); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - -function test_confirmation(aWindow, aExpectedURLs) { - var list = aWindow.document.getElementById("itemList"); - is(list.childNodes.length, aExpectedURLs.length, "Should be the right number of installs"); - - for (let url of aExpectedURLs) { - let found = false; - for (let node of list.children) { - if (node.url == url) { - found = true; - break; - } - } - ok(found, "Should have seen " + url + " in the list"); - } - - aWindow.document.documentElement.cancelDialog(); -} - -// Simulates dropping a URL onto the manager -add_test(function() { - var url = TESTROOT + "addons/browser_dragdrop1.xpi"; - - Services.obs.addObserver(gInstallNotificationObserver, - "addon-install-started", false); - - new WindowOpenListener(INSTALL_URI, function(aWindow) { - test_confirmation(aWindow, [url]); - }, function() { - is(gSawInstallNotification, true, "Should have seen addon-install-started notification."); - run_next_test(); - }); - - var viewContainer = gManagerWindow.document.getElementById("view-port"); - var effect = EventUtils.synthesizeDrop(viewContainer, viewContainer, - [[{type: "text/x-moz-url", data: url}]], - "copy", gManagerWindow); - is(effect, "copy", "Drag should be accepted"); -}); - -// Simulates dropping a file onto the manager -add_test(function() { - var fileurl = get_addon_file_url("browser_dragdrop1.xpi"); - - Services.obs.addObserver(gInstallNotificationObserver, - "addon-install-started", false); - - new WindowOpenListener(INSTALL_URI, function(aWindow) { - test_confirmation(aWindow, [fileurl.spec]); - }, function() { - is(gSawInstallNotification, true, "Should have seen addon-install-started notification."); - run_next_test(); - }); - - var viewContainer = gManagerWindow.document.getElementById("view-port"); - var effect = EventUtils.synthesizeDrop(viewContainer, viewContainer, - [[{type: "application/x-moz-file", data: fileurl.file}]], - "copy", gManagerWindow); - is(effect, "copy", "Drag should be accepted"); -}); - -// Simulates dropping two urls onto the manager -add_test(function() { - var url1 = TESTROOT + "addons/browser_dragdrop1.xpi"; - var url2 = TESTROOT2 + "addons/browser_dragdrop2.xpi"; - - Services.obs.addObserver(gInstallNotificationObserver, - "addon-install-started", false); - - new WindowOpenListener(INSTALL_URI, function(aWindow) { - test_confirmation(aWindow, [url1, url2]); - }, function() { - is(gSawInstallNotification, true, "Should have seen addon-install-started notification."); - run_next_test(); - }); - - var viewContainer = gManagerWindow.document.getElementById("view-port"); - var effect = EventUtils.synthesizeDrop(viewContainer, viewContainer, - [[{type: "text/x-moz-url", data: url1}], - [{type: "text/x-moz-url", data: url2}]], - "copy", gManagerWindow); - is(effect, "copy", "Drag should be accepted"); -}); - -// Simulates dropping two files onto the manager -add_test(function() { - var fileurl1 = get_addon_file_url("browser_dragdrop1.xpi"); - var fileurl2 = get_addon_file_url("browser_dragdrop2.xpi"); - - Services.obs.addObserver(gInstallNotificationObserver, - "addon-install-started", false); - - new WindowOpenListener(INSTALL_URI, function(aWindow) { - test_confirmation(aWindow, [fileurl1.spec, fileurl2.spec]); - }, function() { - is(gSawInstallNotification, true, "Should have seen addon-install-started notification."); - run_next_test(); - }); - - var viewContainer = gManagerWindow.document.getElementById("view-port"); - var effect = EventUtils.synthesizeDrop(viewContainer, viewContainer, - [[{type: "application/x-moz-file", data: fileurl1.file}], - [{type: "application/x-moz-file", data: fileurl2.file}]], - "copy", gManagerWindow); - is(effect, "copy", "Drag should be accepted"); -}); - -// Simulates dropping a file and a url onto the manager (weird, but should still work) -add_test(function() { - var url = TESTROOT + "addons/browser_dragdrop1.xpi"; - var fileurl = get_addon_file_url("browser_dragdrop2.xpi"); - - Services.obs.addObserver(gInstallNotificationObserver, - "addon-install-started", false); - - new WindowOpenListener(INSTALL_URI, function(aWindow) { - test_confirmation(aWindow, [url, fileurl.spec]); - }, function() { - is(gSawInstallNotification, true, "Should have seen addon-install-started notification."); - run_next_test(); - }); - - var viewContainer = gManagerWindow.document.getElementById("view-port"); - var effect = EventUtils.synthesizeDrop(viewContainer, viewContainer, - [[{type: "text/x-moz-url", data: url}], - [{type: "application/x-moz-file", data: fileurl.file}]], - "copy", gManagerWindow); - is(effect, "copy", "Drag should be accepted"); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_eula.js b/toolkit/mozapps/webextensions/test/browser/browser_eula.js deleted file mode 100644 index befe9f1f2..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_eula.js +++ /dev/null @@ -1,85 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that the eula is shown correctly for search results - -var gManagerWindow; -var gCategoryUtilities; - -var gApp = document.getElementById("bundle_brand").getString("brandShortName"); -var gSearchCount = 0; - -function test() { - requestLongerTimeout(2); - waitForExplicitFinish(); - - // Turn on searching for this test - Services.prefs.setIntPref(PREF_SEARCH_MAXRESULTS, 15); - Services.prefs.setCharPref("extensions.getAddons.search.url", TESTROOT + "browser_eula.xml"); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, finish); -} - -function get_node(parent, anonid) { - return parent.ownerDocument.getAnonymousElementByAttribute(parent, "anonid", anonid); -} - -function installSearchResult(aCallback) { - var searchBox = gManagerWindow.document.getElementById("header-search"); - // Search for something different each time - searchBox.value = "foo" + gSearchCount; - gSearchCount++; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - let remote = gManagerWindow.document.getElementById("search-filter-remote") - EventUtils.synthesizeMouseAtCenter(remote, { }, gManagerWindow); - - let item = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org"); - ok(!!item, "Should see the search result in the list"); - - let status = get_node(item, "install-status"); - EventUtils.synthesizeMouseAtCenter(get_node(status, "install-remote-btn"), {}, gManagerWindow); - - item.mInstall.addListener({ - onInstallEnded: function() { - executeSoon(aCallback); - } - }); - }); -} - -// Install an add-on through the search page, accept the EULA and then undo it -add_test(function() { - // Accept the EULA when it appears - let sawEULA = false; - wait_for_window_open(function(aWindow) { - sawEULA = true; - is(aWindow.location.href, "chrome://mozapps/content/extensions/eula.xul", "Window opened should be correct"); - is(aWindow.document.getElementById("eula").value, "This is the EULA for this add-on", "EULA should be correct"); - - aWindow.document.documentElement.acceptDialog(); - }); - - installSearchResult(function() { - ok(sawEULA, "Should have seen the EULA"); - - AddonManager.getAllInstalls(function(aInstalls) { - is(aInstalls.length, 1, "Should be one pending install"); - aInstalls[0].cancel(); - - run_next_test(); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_eula.xml b/toolkit/mozapps/webextensions/test/browser/browser_eula.xml deleted file mode 100644 index 965ab8a0b..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_eula.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<searchresults total_results="1"> - <addon> - <name>Install Tests</name> - <type id='1'>Extension</type> - <guid>addon1@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>Test add-on</summary> - <description>Test add-on</description> - <eula>This is the EULA for this add-on</eula> - <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> -</searchresults> diff --git a/toolkit/mozapps/webextensions/test/browser/browser_globalwarnings.js b/toolkit/mozapps/webextensions/test/browser/browser_globalwarnings.js deleted file mode 100644 index 663905a90..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_globalwarnings.js +++ /dev/null @@ -1,63 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Bug 566194 - safe mode / security & compatibility check status are not exposed in new addon manager UI - -function test() { - waitForExplicitFinish(); - run_next_test(); -} - -function end_test() { - finish(); -} - -add_test(function() { - info("Testing compatibility checking warning"); - - info("Setting checkCompatibility to false"); - AddonManager.checkCompatibility = false; - - open_manager("addons://list/extension", function(aWindow) { - var hbox = aWindow.document.querySelector("#list-view hbox.global-warning-checkcompatibility"); - is_element_visible(hbox, "Check Compatibility warning hbox should be visible"); - var button = aWindow.document.querySelector("#list-view button.global-warning-checkcompatibility"); - is_element_visible(button, "Check Compatibility warning button should be visible"); - - info("Clicking 'Enable' button"); - EventUtils.synthesizeMouse(button, 2, 2, { }, aWindow); - is(AddonManager.checkCompatibility, true, "Check Compatibility pref should be cleared"); - is_element_hidden(hbox, "Check Compatibility warning hbox should be hidden"); - is_element_hidden(button, "Check Compatibility warning button should be hidden"); - - close_manager(aWindow, function() { - run_next_test(); - }); - }); -}); - -add_test(function() { - info("Testing update security checking warning"); - - var pref = "extensions.checkUpdateSecurity"; - info("Setting " + pref + " pref to false") - Services.prefs.setBoolPref(pref, false); - - open_manager(null, function(aWindow) { - var hbox = aWindow.document.querySelector("#list-view hbox.global-warning-updatesecurity"); - is_element_visible(hbox, "Check Update Security warning hbox should be visible"); - var button = aWindow.document.querySelector("#list-view button.global-warning-updatesecurity"); - is_element_visible(button, "Check Update Security warning button should be visible"); - - info("Clicking 'Enable' button"); - EventUtils.synthesizeMouse(button, 2, 2, { }, aWindow); - is(Services.prefs.prefHasUserValue(pref), false, "Check Update Security pref should be cleared"); - is_element_hidden(hbox, "Check Update Security warning hbox should be hidden"); - is_element_hidden(button, "Check Update Security warning button should be hidden"); - - close_manager(aWindow, function() { - run_next_test(); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_gmpProvider.js b/toolkit/mozapps/webextensions/test/browser/browser_gmpProvider.js deleted file mode 100644 index 52079a263..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_gmpProvider.js +++ /dev/null @@ -1,418 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -"use strict"; - -Cu.import("resource://gre/modules/Promise.jsm"); -Cu.import("resource://gre/modules/AppConstants.jsm"); -var {AddonTestUtils} = Cu.import("resource://testing-common/AddonManagerTesting.jsm", {}); -var GMPScope = Cu.import("resource://gre/modules/addons/GMPProvider.jsm"); - -const TEST_DATE = new Date(2013, 0, 1, 12); - -var gManagerWindow; -var gCategoryUtilities; -var gIsEnUsLocale; - -var gMockAddons = []; - -for (let plugin of GMPScope.GMP_PLUGINS) { - let mockAddon = Object.freeze({ - id: plugin.id, - isValid: true, - isInstalled: false, - isEME: (plugin.id == "gmp-widevinecdm" || - plugin.id.indexOf("gmp-eme-") == 0) ? true : false, - }); - gMockAddons.push(mockAddon); -} - -var gInstalledAddonId = ""; -var gInstallDeferred = null; -var gPrefs = Services.prefs; -var getKey = GMPScope.GMPPrefs.getPrefKey; - -function MockGMPInstallManager() { -} - -MockGMPInstallManager.prototype = { - checkForAddons: () => Promise.resolve({ - usedFallback: true, - gmpAddons: gMockAddons - }), - - installAddon: addon => { - gInstalledAddonId = addon.id; - gInstallDeferred.resolve(); - return Promise.resolve(); - }, -}; - -var gOptionsObserver = { - lastDisplayed: null, - observe: function(aSubject, aTopic, aData) { - if (aTopic == AddonManager.OPTIONS_NOTIFICATION_DISPLAYED) { - this.lastDisplayed = aData; - } - } -}; - -function getInstallItem() { - let doc = gManagerWindow.document; - let list = doc.getElementById("addon-list"); - - let node = list.firstChild; - while (node) { - if (node.getAttribute("status") == "installing") { - return node; - } - node = node.nextSibling; - } - - return null; -} - -function openDetailsView(aId) { - let view = get_current_view(gManagerWindow); - Assert.equal(view.id, "list-view", "Should be in the list view to use this function"); - - let item = get_addon_element(gManagerWindow, aId); - Assert.ok(item, "Should have got add-on element."); - is_element_visible(item, "Add-on element should be visible."); - - item.scrollIntoView(); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow); - - let deferred = Promise.defer(); - wait_for_view_load(gManagerWindow, deferred.resolve); - return deferred.promise; -} - -add_task(function* initializeState() { - gPrefs.setBoolPref(GMPScope.GMPPrefs.KEY_LOGGING_DUMP, true); - gPrefs.setIntPref(GMPScope.GMPPrefs.KEY_LOGGING_LEVEL, 0); - - gManagerWindow = yield open_manager(); - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - registerCleanupFunction(Task.async(function*() { - Services.obs.removeObserver(gOptionsObserver, AddonManager.OPTIONS_NOTIFICATION_DISPLAYED); - - for (let addon of gMockAddons) { - gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, addon.id)); - gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_LAST_UPDATE, addon.id)); - gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_AUTOUPDATE, addon.id)); - gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id)); - gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VISIBLE, addon.id)); - gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_FORCE_SUPPORTED, addon.id)); - } - gPrefs.clearUserPref(GMPScope.GMPPrefs.KEY_LOGGING_DUMP); - gPrefs.clearUserPref(GMPScope.GMPPrefs.KEY_LOGGING_LEVEL); - gPrefs.clearUserPref(GMPScope.GMPPrefs.KEY_UPDATE_LAST_CHECK); - gPrefs.clearUserPref(GMPScope.GMPPrefs.KEY_EME_ENABLED); - yield GMPScope.GMPProvider.shutdown(); - GMPScope.GMPProvider.startup(); - })); - - let chrome = Cc["@mozilla.org/chrome/chrome-registry;1"].getService(Ci.nsIXULChromeRegistry); - gIsEnUsLocale = chrome.getSelectedLocale("global") == "en-US"; - - Services.obs.addObserver(gOptionsObserver, AddonManager.OPTIONS_NOTIFICATION_DISPLAYED, false); - - // Start out with plugins not being installed, disabled and automatic updates - // disabled. - gPrefs.setBoolPref(GMPScope.GMPPrefs.KEY_EME_ENABLED, true); - for (let addon of gMockAddons) { - gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, addon.id), false); - gPrefs.setIntPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_LAST_UPDATE, addon.id), 0); - gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_AUTOUPDATE, addon.id), false); - gPrefs.setCharPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id), ""); - gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VISIBLE, addon.id), true); - gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_FORCE_SUPPORTED, addon.id), true); - } - yield GMPScope.GMPProvider.shutdown(); - GMPScope.GMPProvider.startup(); -}); - -add_task(function* testNotInstalledDisabled() { - Assert.ok(gCategoryUtilities.isTypeVisible("plugin"), "Plugin tab visible."); - yield gCategoryUtilities.openType("plugin"); - - for (let addon of gMockAddons) { - let item = get_addon_element(gManagerWindow, addon.id); - Assert.ok(item, "Got add-on element:" + addon.id); - item.parentNode.ensureElementIsVisible(item); - is(item.getAttribute("active"), "false"); - - let el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "warning"); - is_element_hidden(el, "Warning notification is hidden."); - el = item.ownerDocument.getAnonymousElementByAttribute(item, "class", "disabled-postfix"); - is_element_visible(el, "disabled-postfix is visible."); - el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "disable-btn"); - is_element_hidden(el, "Disable button not visible."); - el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "enable-btn"); - is_element_hidden(el, "Enable button not visible."); - - let menu = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "state-menulist"); - is_element_visible(menu, "State menu should be visible."); - - let neverActivate = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "never-activate-menuitem"); - is(menu.selectedItem, neverActivate, "Plugin state should be never-activate."); - } -}); - -add_task(function* testNotInstalledDisabledDetails() { - for (let addon of gMockAddons) { - yield openDetailsView(addon.id); - let doc = gManagerWindow.document; - - let el = doc.getElementsByClassName("disabled-postfix")[0]; - is_element_visible(el, "disabled-postfix is visible."); - el = doc.getElementById("detail-findUpdates-btn"); - is_element_visible(el, "Find updates link is visible."); - el = doc.getElementById("detail-warning"); - is_element_hidden(el, "Warning notification is hidden."); - el = doc.getElementsByTagName("setting")[0]; - - yield gCategoryUtilities.openType("plugin"); - } -}); - -add_task(function* testNotInstalled() { - for (let addon of gMockAddons) { - gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, addon.id), true); - let item = get_addon_element(gManagerWindow, addon.id); - Assert.ok(item, "Got add-on element:" + addon.id); - item.parentNode.ensureElementIsVisible(item); - is(item.getAttribute("active"), "true"); - - let el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "warning"); - is_element_visible(el, "Warning notification is visible."); - el = item.ownerDocument.getAnonymousElementByAttribute(item, "class", "disabled-postfix"); - is_element_hidden(el, "disabled-postfix is hidden."); - el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "disable-btn"); - is_element_hidden(el, "Disable button not visible."); - el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "enable-btn"); - is_element_hidden(el, "Enable button not visible."); - - let menu = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "state-menulist"); - is_element_visible(menu, "State menu should be visible."); - - let alwaysActivate = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "always-activate-menuitem"); - is(menu.selectedItem, alwaysActivate, "Plugin state should be always-activate."); - } -}); - -add_task(function* testNotInstalledDetails() { - for (let addon of gMockAddons) { - yield openDetailsView(addon.id); - let doc = gManagerWindow.document; - - let el = doc.getElementsByClassName("disabled-postfix")[0]; - is_element_hidden(el, "disabled-postfix is hidden."); - el = doc.getElementById("detail-findUpdates-btn"); - is_element_visible(el, "Find updates link is visible."); - el = doc.getElementById("detail-warning"); - is_element_visible(el, "Warning notification is visible."); - el = doc.getElementsByTagName("setting")[0]; - - yield gCategoryUtilities.openType("plugin"); - } -}); - -add_task(function* testInstalled() { - for (let addon of gMockAddons) { - gPrefs.setIntPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_LAST_UPDATE, addon.id), - TEST_DATE.getTime()); - gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_AUTOUPDATE, addon.id), false); - gPrefs.setCharPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id), "1.2.3.4"); - - let item = get_addon_element(gManagerWindow, addon.id); - Assert.ok(item, "Got add-on element."); - item.parentNode.ensureElementIsVisible(item); - is(item.getAttribute("active"), "true"); - - let el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "warning"); - is_element_hidden(el, "Warning notification is hidden."); - el = item.ownerDocument.getAnonymousElementByAttribute(item, "class", "disabled-postfix"); - is_element_hidden(el, "disabled-postfix is hidden."); - el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "disable-btn"); - is_element_hidden(el, "Disable button not visible."); - el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "enable-btn"); - is_element_hidden(el, "Enable button not visible."); - - let menu = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "state-menulist"); - is_element_visible(menu, "State menu should be visible."); - - let alwaysActivate = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "always-activate-menuitem"); - is(menu.selectedItem, alwaysActivate, "Plugin state should be always-activate."); - } -}); - -add_task(function* testInstalledDetails() { - for (let addon of gMockAddons) { - yield openDetailsView(addon.id); - let doc = gManagerWindow.document; - - let el = doc.getElementsByClassName("disabled-postfix")[0]; - is_element_hidden(el, "disabled-postfix is hidden."); - el = doc.getElementById("detail-findUpdates-btn"); - is_element_visible(el, "Find updates link is visible."); - el = doc.getElementById("detail-warning"); - is_element_hidden(el, "Warning notification is hidden."); - el = doc.getElementsByTagName("setting")[0]; - - let contextMenu = doc.getElementById("addonitem-popup"); - let deferred = Promise.defer(); - let listener = () => { - contextMenu.removeEventListener("popupshown", listener, false); - deferred.resolve(); - }; - contextMenu.addEventListener("popupshown", listener, false); - el = doc.getElementsByClassName("detail-view-container")[0]; - EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow); - EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow); - yield deferred.promise; - let menuSep = doc.getElementById("addonitem-menuseparator"); - is_element_hidden(menuSep, "Menu separator is hidden."); - contextMenu.hidePopup(); - - yield gCategoryUtilities.openType("plugin"); - } -}); - -add_task(function* testInstalledGlobalEmeDisabled() { - gPrefs.setBoolPref(GMPScope.GMPPrefs.KEY_EME_ENABLED, false); - for (let addon of gMockAddons) { - let item = get_addon_element(gManagerWindow, addon.id); - if (addon.isEME) { - Assert.ok(!item, "Couldn't get add-on element."); - } else { - Assert.ok(item, "Got add-on element."); - } - } - gPrefs.setBoolPref(GMPScope.GMPPrefs.KEY_EME_ENABLED, true); -}); - -add_task(function* testPreferencesButton() { - - let prefValues = [ - { enabled: false, version: "" }, - { enabled: false, version: "1.2.3.4" }, - { enabled: true, version: "" }, - { enabled: true, version: "1.2.3.4" }, - ]; - - for (let preferences of prefValues) { - dump("Testing preferences button with pref settings: " + - JSON.stringify(preferences) + "\n"); - for (let addon of gMockAddons) { - yield close_manager(gManagerWindow); - gManagerWindow = yield open_manager(); - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - gPrefs.setCharPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id), - preferences.version); - gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, addon.id), - preferences.enabled); - - yield gCategoryUtilities.openType("plugin"); - let doc = gManagerWindow.document; - let item = get_addon_element(gManagerWindow, addon.id); - - let button = doc.getAnonymousElementByAttribute(item, "anonid", "preferences-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - let deferred = Promise.defer(); - wait_for_view_load(gManagerWindow, deferred.resolve); - yield deferred.promise; - - is(gOptionsObserver.lastDisplayed, addon.id); - } - } -}); - -add_task(function* testUpdateButton() { - gPrefs.clearUserPref(GMPScope.GMPPrefs.KEY_UPDATE_LAST_CHECK); - - let originalInstallManager = GMPScope.GMPInstallManager; - Object.defineProperty(GMPScope, "GMPInstallManager", { - value: MockGMPInstallManager, - writable: true, - enumerable: true, - configurable: true - }); - - for (let addon of gMockAddons) { - yield gCategoryUtilities.openType("plugin"); - let doc = gManagerWindow.document; - let item = get_addon_element(gManagerWindow, addon.id); - - gInstalledAddonId = ""; - gInstallDeferred = Promise.defer(); - - let button = doc.getAnonymousElementByAttribute(item, "anonid", "preferences-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - let deferred = Promise.defer(); - wait_for_view_load(gManagerWindow, deferred.resolve); - yield deferred.promise; - - button = doc.getElementById("detail-findUpdates-btn"); - Assert.ok(button != null, "Got detail-findUpdates-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - yield gInstallDeferred.promise; - - Assert.equal(gInstalledAddonId, addon.id); - } - Object.defineProperty(GMPScope, "GMPInstallManager", { - value: originalInstallManager, - writable: true, - enumerable: true, - configurable: true - }); -}); - -add_task(function* testEmeSupport() { - for (let addon of gMockAddons) { - gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_FORCE_SUPPORTED, addon.id)); - } - yield GMPScope.GMPProvider.shutdown(); - GMPScope.GMPProvider.startup(); - - for (let addon of gMockAddons) { - yield gCategoryUtilities.openType("plugin"); - let doc = gManagerWindow.document; - let item = get_addon_element(gManagerWindow, addon.id); - if (addon.id == GMPScope.EME_ADOBE_ID) { - if (AppConstants.isPlatformAndVersionAtLeast("win", "6")) { - Assert.ok(item, "Adobe EME supported, found add-on element."); - } else { - Assert.ok(!item, - "Adobe EME not supported, couldn't find add-on element."); - } - } else if (addon.id == GMPScope.WIDEVINE_ID) { - if (AppConstants.isPlatformAndVersionAtLeast("win", "6") || - AppConstants.platform == "macosx" || - AppConstants.platform == "linux") { - Assert.ok(item, "Widevine supported, found add-on element."); - } else { - Assert.ok(!item, - "Widevine not supported, couldn't find add-on element."); - } - } else { - Assert.ok(item, "Found add-on element."); - } - } - - for (let addon of gMockAddons) { - gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VISIBLE, addon.id), true); - gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_FORCE_SUPPORTED, addon.id), true); - } - yield GMPScope.GMPProvider.shutdown(); - GMPScope.GMPProvider.startup(); - -}); - -add_task(function* test_cleanup() { - yield close_manager(gManagerWindow); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_hotfix.js b/toolkit/mozapps/webextensions/test/browser/browser_hotfix.js deleted file mode 100644 index b7bb3f580..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_hotfix.js +++ /dev/null @@ -1,171 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const PREF_EM_HOTFIX_ID = "extensions.hotfix.id"; -const PREF_EM_HOTFIX_LASTVERSION = "extensions.hotfix.lastVersion"; -const PREF_EM_HOTFIX_URL = "extensions.hotfix.url"; -const PREF_EM_HOTFIX_CERTS = "extensions.hotfix.certs."; -const PREF_EM_CERT_CHECKATTRIBUTES = "extensions.hotfix.cert.checkAttributes"; - -const PREF_INSTALL_REQUIREBUILTINCERTS = "extensions.install.requireBuiltInCerts"; -const PREF_UPDATE_REQUIREBUILTINCERTS = "extensions.update.requireBuiltInCerts"; - -const PREF_APP_UPDATE_ENABLED = "app.update.enabled"; -const PREF_APP_UPDATE_URL = "app.update.url"; - -const HOTFIX_ID = "hotfix@tests.mozilla.org"; - -/* - * Register an addon install listener and return a promise that: - * resolves with the AddonInstall object if the install succeeds - * rejects with the AddonInstall if the install fails - */ -function promiseInstallListener() { - return new Promise((resolve, reject) => { - let listener = { - onInstallEnded: ai => { - AddonManager.removeInstallListener(listener); - resolve(ai); - }, - onDownloadCancelled: ai => { - AddonManager.removeInstallListener(listener); - reject(ai); - } - }; - AddonManager.addInstallListener(listener); - }); -} - -function promiseSuccessfulInstall() { - return promiseInstallListener().then( - aInstall => { - ok(true, "Should have seen the install complete"); - is(aInstall.addon.id, HOTFIX_ID, "Should have installed the right add-on"); - aInstall.addon.uninstall(); - Services.prefs.clearUserPref(PREF_EM_HOTFIX_LASTVERSION); - }, - aInstall => { - ok(false, "Should not have seen the download cancelled"); - is(aInstall.addon.id, HOTFIX_ID, "Should have seen the right add-on"); - }); -} - -function promiseFailedInstall() { - return promiseInstallListener().then( - aInstall => { - ok(false, "Should not have seen the install complete"); - is(aInstall.addon.id, HOTFIX_ID, "Should have installed the right add-on"); - aInstall.addon.uninstall(); - Services.prefs.clearUserPref(PREF_EM_HOTFIX_LASTVERSION); - }, - aInstall => { - ok(true, "Should have seen the download cancelled"); - is(aInstall.addon.id, HOTFIX_ID, "Should have seen the right add-on"); - }); -} - -add_task(function setup() { - var oldAusUrl = Services.prefs.getDefaultBranch(null).getCharPref(PREF_APP_UPDATE_URL); - Services.prefs.getDefaultBranch(null).setCharPref(PREF_APP_UPDATE_URL, TESTROOT + "ausdummy.xml"); - Services.prefs.setBoolPref(PREF_APP_UPDATE_ENABLED, true); - Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false); - Services.prefs.setBoolPref(PREF_UPDATE_REQUIREBUILTINCERTS, false); - Services.prefs.setCharPref(PREF_EM_HOTFIX_ID, HOTFIX_ID); - var oldURL = Services.prefs.getCharPref(PREF_EM_HOTFIX_URL); - Services.prefs.setCharPref(PREF_EM_HOTFIX_URL, TESTROOT + "signed_hotfix.rdf"); - - registerCleanupFunction(function() { - Services.prefs.setBoolPref(PREF_APP_UPDATE_ENABLED, false); - Services.prefs.getDefaultBranch(null).setCharPref(PREF_APP_UPDATE_URL, oldAusUrl); - Services.prefs.clearUserPref(PREF_EM_HOTFIX_ID); - Services.prefs.setCharPref(PREF_EM_HOTFIX_URL, oldURL); - Services.prefs.clearUserPref(PREF_INSTALL_REQUIREBUILTINCERTS); - Services.prefs.clearUserPref(PREF_UPDATE_REQUIREBUILTINCERTS); - - Services.prefs.clearUserPref(PREF_EM_CERT_CHECKATTRIBUTES); - var prefs = Services.prefs.getChildList(PREF_EM_HOTFIX_CERTS); - prefs.forEach(Services.prefs.clearUserPref); - }); -}); - -add_task(function* check_no_cert_checks() { - Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, false); - yield Promise.all([ - promiseSuccessfulInstall(), - AddonManagerPrivate.backgroundUpdateCheck() - ]); -}); - -add_task(function* check_wrong_cert_fingerprint() { - Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true); - Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "foo"); - - yield Promise.all([ - promiseFailedInstall(), - AddonManagerPrivate.backgroundUpdateCheck() - ]); - Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint"); -}); - -add_task(function* check_right_cert_fingerprint() { - Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true); - Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "3E:B9:4E:07:12:FE:3C:01:41:46:13:46:FC:84:52:1A:8C:BE:1D:A2"); - - yield Promise.all([ - promiseSuccessfulInstall(), - AddonManagerPrivate.backgroundUpdateCheck() - ]); - - Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint"); -}); - -add_task(function* check_multi_cert_fingerprint_1() { - Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true); - Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "3E:B9:4E:07:12:FE:3C:01:41:46:13:46:FC:84:52:1A:8C:BE:1D:A2"); - Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "2.sha1Fingerprint", "foo"); - - yield Promise.all([ - promiseSuccessfulInstall(), - AddonManagerPrivate.backgroundUpdateCheck() - ]); - - Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint"); - Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "2.sha1Fingerprint"); -}); - -add_task(function* check_multi_cert_fingerprint_2() { - Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true); - Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "foo"); - Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "2.sha1Fingerprint", "3E:B9:4E:07:12:FE:3C:01:41:46:13:46:FC:84:52:1A:8C:BE:1D:A2"); - - yield Promise.all([ - promiseSuccessfulInstall(), - AddonManagerPrivate.backgroundUpdateCheck() - ]); - - Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint"); - Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "2.sha1Fingerprint"); -}); - -add_task(function* check_no_cert_no_checks() { - Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, false); - Services.prefs.setCharPref(PREF_EM_HOTFIX_URL, TESTROOT + "unsigned_hotfix.rdf"); - - yield Promise.all([ - promiseSuccessfulInstall(), - AddonManagerPrivate.backgroundUpdateCheck() - ]); -}); - -add_task(function* check_no_cert_cert_fingerprint_check() { - Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true); - Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "3E:B9:4E:07:12:FE:3C:01:41:46:13:46:FC:84:52:1A:8C:BE:1D:A2"); - - yield Promise.all([ - promiseFailedInstall(), - AddonManagerPrivate.backgroundUpdateCheck() - ]); - - Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint"); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_inlinesettings.js b/toolkit/mozapps/webextensions/test/browser/browser_inlinesettings.js deleted file mode 100644 index e2814ddf4..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_inlinesettings.js +++ /dev/null @@ -1,680 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests various aspects of the details view -Components.utils.import("resource://gre/modules/Preferences.jsm"); - -var gManagerWindow; -var gCategoryUtilities; -var gProvider; - -const SETTINGS_ROWS = 9; - -var MockFilePicker = SpecialPowers.MockFilePicker; -MockFilePicker.init(window); - -var observer = { - lastDisplayed: null, - callback: null, - checkDisplayed: function(aExpected) { - is(this.lastDisplayed, aExpected, "'addon-options-displayed' notification should have fired"); - this.lastDisplayed = null; - }, - checkNotDisplayed: function() { - is(this.lastDisplayed, null, "'addon-options-displayed' notification should not have fired"); - }, - lastHidden: null, - checkHidden: function(aExpected) { - is(this.lastHidden, aExpected, "'addon-options-hidden' notification should have fired"); - this.lastHidden = null; - }, - checkNotHidden: function() { - is(this.lastHidden, null, "'addon-options-hidden' notification should not have fired"); - }, - observe: function(aSubject, aTopic, aData) { - if (aTopic == AddonManager.OPTIONS_NOTIFICATION_DISPLAYED) { - this.lastDisplayed = aData; - // Test if the binding has applied before the observers are notified. We test the second setting here, - // because the code operates on the first setting and we want to check it applies to all. - var setting = aSubject.querySelector("rows > setting[first-row] ~ setting"); - var input = gManagerWindow.document.getAnonymousElementByAttribute(setting, "class", "preferences-title"); - isnot(input, null, "XBL binding should be applied"); - - // Add some extra height to the scrolling pane to ensure that it needs to scroll when appropriate. - gManagerWindow.document.getElementById("detail-controls").style.marginBottom = "1000px"; - - if (this.callback) { - var tempCallback = this.callback; - this.callback = null; - tempCallback(); - } - } else if (aTopic == AddonManager.OPTIONS_NOTIFICATION_HIDDEN) { - this.lastHidden = aData; - } - } -}; - -function installAddon(aCallback) { - AddonManager.getInstallForURL(TESTROOT + "addons/browser_inlinesettings1.xpi", - function(aInstall) { - aInstall.addListener({ - onInstallEnded: function() { - executeSoon(aCallback); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -function checkScrolling(aShouldHaveScrolled) { - var detailView = gManagerWindow.document.getElementById("detail-view"); - var boxObject = detailView.boxObject; - ok(detailView.scrollHeight > boxObject.height, "Page should require scrolling"); - if (aShouldHaveScrolled) - isnot(detailView.scrollTop, 0, "Page should have scrolled"); - else - is(detailView.scrollTop, 0, "Page should not have scrolled"); -} - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "inlinesettings2@tests.mozilla.org", - name: "Inline Settings (Regular)", - version: "1", - optionsURL: CHROMEROOT + "options.xul", - optionsType: AddonManager.OPTIONS_TYPE_INLINE, - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_DISABLE, - }, { - id: "inlinesettings3@tests.mozilla.org", - name: "Inline Settings (More Options)", - description: "Tests for option types introduced after Mozilla 7.0", - version: "1", - optionsURL: CHROMEROOT + "more_options.xul", - optionsType: AddonManager.OPTIONS_TYPE_INLINE - }, { - id: "noninlinesettings@tests.mozilla.org", - name: "Non-Inline Settings", - version: "1", - optionsURL: CHROMEROOT + "addon_prefs.xul" - }]); - - installAddon(function () { - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - Services.obs.addObserver(observer, - AddonManager.OPTIONS_NOTIFICATION_DISPLAYED, - false); - Services.obs.addObserver(observer, - AddonManager.OPTIONS_NOTIFICATION_HIDDEN, - false); - - run_next_test(); - }); - }); -} - -function end_test() { - Services.obs.removeObserver(observer, - AddonManager.OPTIONS_NOTIFICATION_DISPLAYED); - - Services.prefs.clearUserPref("extensions.inlinesettings1.bool"); - Services.prefs.clearUserPref("extensions.inlinesettings1.boolint"); - Services.prefs.clearUserPref("extensions.inlinesettings1.integer"); - Services.prefs.clearUserPref("extensions.inlinesettings1.string"); - Services.prefs.clearUserPref("extensions.inlinesettings1.color"); - Services.prefs.clearUserPref("extensions.inlinesettings1.file"); - Services.prefs.clearUserPref("extensions.inlinesettings1.directory"); - Services.prefs.clearUserPref("extensions.inlinesettings3.radioBool"); - Services.prefs.clearUserPref("extensions.inlinesettings3.radioInt"); - Services.prefs.clearUserPref("extensions.inlinesettings3.radioString"); - Services.prefs.clearUserPref("extensions.inlinesettings3.menulist"); - - MockFilePicker.cleanup(); - - close_manager(gManagerWindow, function() { - observer.checkHidden("inlinesettings3@tests.mozilla.org"); - Services.obs.removeObserver(observer, - AddonManager.OPTIONS_NOTIFICATION_HIDDEN); - - AddonManager.getAddonByID("inlinesettings1@tests.mozilla.org", function(aAddon) { - aAddon.uninstall(); - finish(); - }); - }); -} - -// Addon with options.xul -add_test(function() { - var addon = get_addon_element(gManagerWindow, "inlinesettings1@tests.mozilla.org"); - is(addon.mAddon.optionsType, AddonManager.OPTIONS_TYPE_INLINE, "Options should be inline type"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - is_element_visible(button, "Preferences button should be visible"); - - run_next_test(); -}); - -// Addon with inline preferences as optionsURL -add_test(function() { - var addon = get_addon_element(gManagerWindow, "inlinesettings2@tests.mozilla.org"); - is(addon.mAddon.optionsType, AddonManager.OPTIONS_TYPE_INLINE, "Options should be inline type"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - is_element_visible(button, "Preferences button should be visible"); - - run_next_test(); -}); - -// Addon with non-inline preferences as optionsURL -add_test(function() { - var addon = get_addon_element(gManagerWindow, "noninlinesettings@tests.mozilla.org"); - is(addon.mAddon.optionsType, AddonManager.OPTIONS_TYPE_DIALOG, "Options should be dialog type"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - is_element_visible(button, "Preferences button should be visible"); - - run_next_test(); -}); - -// Addon with options.xul, also a test for the setting.xml bindings -add_test(function() { - var addon = get_addon_element(gManagerWindow, "inlinesettings1@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkDisplayed("inlinesettings1@tests.mozilla.org"); - is(gManagerWindow.gViewController.currentViewId, - "addons://detail/inlinesettings1%40tests.mozilla.org/preferences", - "Current view should scroll to preferences"); - checkScrolling(true); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - is(settings.length, SETTINGS_ROWS, "Grid should have settings children"); - - ok(settings[0].hasAttribute("first-row"), "First visible row should have first-row attribute"); - Services.prefs.setBoolPref("extensions.inlinesettings1.bool", false); - var input = gManagerWindow.document.getAnonymousElementByAttribute(settings[0], "anonid", "input"); - isnot(input.checked, true, "Checkbox should have initial value"); - is(input.label, "Check box label", "Checkbox should be labelled"); - EventUtils.synthesizeMouseAtCenter(input, { clickCount: 1 }, gManagerWindow); - is(input.checked, true, "Checkbox should have updated value"); - is(Services.prefs.getBoolPref("extensions.inlinesettings1.bool"), true, "Bool pref should have been updated"); - EventUtils.synthesizeMouseAtCenter(input, { clickCount: 1 }, gManagerWindow); - isnot(input.checked, true, "Checkbox should have updated value"); - is(Services.prefs.getBoolPref("extensions.inlinesettings1.bool"), false, "Bool pref should have been updated"); - - ok(!settings[1].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setIntPref("extensions.inlinesettings1.boolint", 0); - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[1], "anonid", "input"); - isnot(input.checked, true, "Checkbox should have initial value"); - EventUtils.synthesizeMouseAtCenter(input, { clickCount: 1 }, gManagerWindow); - is(input.checked, true, "Checkbox should have updated value"); - is(Services.prefs.getIntPref("extensions.inlinesettings1.boolint"), 1, "BoolInt pref should have been updated"); - EventUtils.synthesizeMouseAtCenter(input, { clickCount: 1 }, gManagerWindow); - isnot(input.checked, true, "Checkbox should have updated value"); - is(Services.prefs.getIntPref("extensions.inlinesettings1.boolint"), 2, "BoolInt pref should have been updated"); - - ok(!settings[2].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setIntPref("extensions.inlinesettings1.integer", 0); - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[2], "anonid", "input"); - is(input.value, "0", "Number box should have initial value"); - input.select(); - EventUtils.synthesizeKey("1", {}, gManagerWindow); - EventUtils.synthesizeKey("3", {}, gManagerWindow); - is(input.value, "13", "Number box should have updated value"); - is(Services.prefs.getIntPref("extensions.inlinesettings1.integer"), 13, "Integer pref should have been updated"); - EventUtils.synthesizeKey("VK_DOWN", {}, gManagerWindow); - is(input.value, "12", "Number box should have updated value"); - is(Services.prefs.getIntPref("extensions.inlinesettings1.integer"), 12, "Integer pref should have been updated"); - - ok(!settings[3].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setCharPref("extensions.inlinesettings1.string", "foo"); - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[3], "anonid", "input"); - is(input.value, "foo", "Text box should have initial value"); - input.select(); - EventUtils.synthesizeKey("b", {}, gManagerWindow); - EventUtils.synthesizeKey("a", {}, gManagerWindow); - EventUtils.synthesizeKey("r", {}, gManagerWindow); - is(input.value, "bar", "Text box should have updated value"); - input.value += "\u03DE"; // Cheat to add this non-ASCII character without typing it. - EventUtils.synthesizeKey("/", {}, gManagerWindow); - is(input.value, "bar\u03DE/", "Text box should have updated value"); - is(gManagerWindow.document.getBindingParent(gManagerWindow.document.activeElement), input, "Search box should not have focus"); - is(Preferences.get("extensions.inlinesettings1.string", "wrong"), "bar\u03DE/", "String pref should have been updated"); - - ok(!settings[4].hasAttribute("first-row"), "Not the first row"); - input = settings[4].firstElementChild; - is(input.value, "1", "Menulist should have initial value"); - input.focus(); - EventUtils.synthesizeKey("b", {}, gManagerWindow); - is(input.value, "2", "Menulist should have updated value"); - is(gManagerWindow._testValue, "2", "Menulist oncommand handler should've updated the test value"); - delete gManagerWindow._testValue; - - ok(!settings[5].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setCharPref("extensions.inlinesettings1.color", "#FF0000"); - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[5], "anonid", "input"); - is(input.color, "#FF0000", "Color picker should have initial value"); - input.focus(); - EventUtils.synthesizeKey("VK_RIGHT", {}, gManagerWindow); - EventUtils.synthesizeKey("VK_RIGHT", {}, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", {}, gManagerWindow); - input.hidePopup(); - is(input.color, "#FF9900", "Color picker should have updated value"); - is(Services.prefs.getCharPref("extensions.inlinesettings1.color"), "#FF9900", "Color pref should have been updated"); - - try { - ok(!settings[6].hasAttribute("first-row"), "Not the first row"); - var button = gManagerWindow.document.getAnonymousElementByAttribute(settings[6], "anonid", "button"); - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[6], "anonid", "input"); - is(input.value, "", "Label value should be empty"); - is(input.tooltipText, "", "Label tooltip should be empty"); - - var testFile = Services.dirsvc.get("ProfD", Ci.nsIFile); - testFile.append("\u2622"); - var curProcD = Services.dirsvc.get("CurProcD", Ci.nsIFile); - - MockFilePicker.returnFiles = [testFile]; - MockFilePicker.returnValue = Ci.nsIFilePicker.returnOK; - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - is(MockFilePicker.mode, Ci.nsIFilePicker.modeOpen, "File picker mode should be open file"); - is(input.value, testFile.path, "Label value should match file chosen"); - is(input.tooltipText, testFile.path, "Label tooltip should match file chosen"); - is(Preferences.get("extensions.inlinesettings1.file", "wrong"), testFile.path, "File pref should match file chosen"); - - MockFilePicker.returnFiles = [curProcD]; - MockFilePicker.returnValue = Ci.nsIFilePicker.returnCancel; - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - is(MockFilePicker.mode, Ci.nsIFilePicker.modeOpen, "File picker mode should be open file"); - is(input.value, testFile.path, "Label value should not have changed"); - is(input.tooltipText, testFile.path, "Label tooltip should not have changed"); - is(Preferences.get("extensions.inlinesettings1.file", "wrong"), testFile.path, "File pref should not have changed"); - - ok(!settings[7].hasAttribute("first-row"), "Not the first row"); - button = gManagerWindow.document.getAnonymousElementByAttribute(settings[7], "anonid", "button"); - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[7], "anonid", "input"); - is(input.value, "", "Label value should be empty"); - is(input.tooltipText, "", "Label tooltip should be empty"); - - MockFilePicker.returnFiles = [testFile]; - MockFilePicker.returnValue = Ci.nsIFilePicker.returnOK; - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - is(MockFilePicker.mode, Ci.nsIFilePicker.modeGetFolder, "File picker mode should be directory"); - is(input.value, testFile.path, "Label value should match file chosen"); - is(input.tooltipText, testFile.path, "Label tooltip should match file chosen"); - is(Preferences.get("extensions.inlinesettings1.directory", "wrong"), testFile.path, "Directory pref should match file chosen"); - - MockFilePicker.returnFiles = [curProcD]; - MockFilePicker.returnValue = Ci.nsIFilePicker.returnCancel; - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - is(MockFilePicker.mode, Ci.nsIFilePicker.modeGetFolder, "File picker mode should be directory"); - is(input.value, testFile.path, "Label value should not have changed"); - is(input.tooltipText, testFile.path, "Label tooltip should not have changed"); - is(Preferences.get("extensions.inlinesettings1.directory", "wrong"), testFile.path, "Directory pref should not have changed"); - - var unsizedInput = gManagerWindow.document.getAnonymousElementByAttribute(settings[2], "anonid", "input"); - var sizedInput = gManagerWindow.document.getAnonymousElementByAttribute(settings[8], "anonid", "input"); - is(unsizedInput.clientWidth > sizedInput.clientWidth, true, "Input with size attribute should be smaller than input without"); - } finally { - button = gManagerWindow.document.getElementById("detail-prefs-btn"); - is_element_hidden(button, "Preferences button should not be visible"); - - gCategoryUtilities.openType("extension", run_next_test); - } - }); -}); - -// Tests for the setting.xml bindings introduced after Mozilla 7 -add_test(function() { - observer.checkHidden("inlinesettings1@tests.mozilla.org"); - - var addon = get_addon_element(gManagerWindow, "inlinesettings3@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkDisplayed("inlinesettings3@tests.mozilla.org"); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - is(settings.length, 4, "Grid should have settings children"); - - ok(settings[0].hasAttribute("first-row"), "First visible row should have first-row attribute"); - Services.prefs.setBoolPref("extensions.inlinesettings3.radioBool", false); - var radios = settings[0].getElementsByTagName("radio"); - isnot(radios[0].selected, true, "Correct radio button should be selected"); - is(radios[1].selected, true, "Correct radio button should be selected"); - EventUtils.synthesizeMouseAtCenter(radios[0], { clickCount: 1 }, gManagerWindow); - is(Services.prefs.getBoolPref("extensions.inlinesettings3.radioBool"), true, "Radio pref should have been updated"); - EventUtils.synthesizeMouseAtCenter(radios[1], { clickCount: 1 }, gManagerWindow); - is(Services.prefs.getBoolPref("extensions.inlinesettings3.radioBool"), false, "Radio pref should have been updated"); - - ok(!settings[1].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setIntPref("extensions.inlinesettings3.radioInt", 5); - radios = settings[1].getElementsByTagName("radio"); - isnot(radios[0].selected, true, "Correct radio button should be selected"); - is(radios[1].selected, true, "Correct radio button should be selected"); - isnot(radios[2].selected, true, "Correct radio button should be selected"); - EventUtils.synthesizeMouseAtCenter(radios[0], { clickCount: 1 }, gManagerWindow); - is(Services.prefs.getIntPref("extensions.inlinesettings3.radioInt"), 4, "Radio pref should have been updated"); - EventUtils.synthesizeMouseAtCenter(radios[2], { clickCount: 1 }, gManagerWindow); - is(Services.prefs.getIntPref("extensions.inlinesettings3.radioInt"), 6, "Radio pref should have been updated"); - - ok(!settings[2].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setCharPref("extensions.inlinesettings3.radioString", "juliet"); - radios = settings[2].getElementsByTagName("radio"); - isnot(radios[0].selected, true, "Correct radio button should be selected"); - is(radios[1].selected, true, "Correct radio button should be selected"); - isnot(radios[2].selected, true, "Correct radio button should be selected"); - EventUtils.synthesizeMouseAtCenter(radios[0], { clickCount: 1 }, gManagerWindow); - is(Preferences.get("extensions.inlinesettings3.radioString", "wrong"), "india", "Radio pref should have been updated"); - EventUtils.synthesizeMouseAtCenter(radios[2], { clickCount: 1 }, gManagerWindow); - is(Preferences.get("extensions.inlinesettings3.radioString", "wrong"), "kilo \u338F", "Radio pref should have been updated"); - - ok(!settings[3].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setIntPref("extensions.inlinesettings3.menulist", 8); - var input = settings[3].firstElementChild; - is(input.value, "8", "Menulist should have initial value"); - input.focus(); - EventUtils.synthesizeKey("n", {}, gManagerWindow); - is(input.value, "9", "Menulist should have updated value"); - is(Services.prefs.getIntPref("extensions.inlinesettings3.menulist"), 9, "Menulist pref should have been updated"); - - button = gManagerWindow.document.getElementById("detail-prefs-btn"); - is_element_hidden(button, "Preferences button should not be visible"); - - gCategoryUtilities.openType("extension", run_next_test); - }); -}); - -// Addon with inline preferences as optionsURL -add_test(function() { - observer.checkHidden("inlinesettings3@tests.mozilla.org"); - - var addon = get_addon_element(gManagerWindow, "inlinesettings2@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkDisplayed("inlinesettings2@tests.mozilla.org"); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - is(settings.length, 5, "Grid should have settings children"); - - var node = settings[0]; - node = settings[0]; - is_element_hidden(node, "Unsupported settings should not be visible"); - ok(!node.hasAttribute("first-row"), "Hidden row is not the first row"); - - node = settings[1]; - is(node.nodeName, "setting", "Should be a setting node"); - ok(node.hasAttribute("first-row"), "First visible row should have first-row attribute"); - var description = gManagerWindow.document.getAnonymousElementByAttribute(node, "class", "preferences-description"); - is(description.textContent, "Description Attribute", "Description node should contain description"); - - node = settings[2]; - is(node.nodeName, "setting", "Should be a setting node"); - ok(!node.hasAttribute("first-row"), "Not the first row"); - description = gManagerWindow.document.getAnonymousElementByAttribute(node, "class", "preferences-description"); - is(description.textContent, "Description Text Node", "Description node should contain description"); - - node = settings[3]; - is(node.nodeName, "setting", "Should be a setting node"); - ok(!node.hasAttribute("first-row"), "Not the first row"); - description = gManagerWindow.document.getAnonymousElementByAttribute(node, "class", "preferences-description"); - is(description.textContent, "This is a test, all this text should be visible", "Description node should contain description"); - var button = node.firstElementChild; - isnot(button, null, "There should be a button"); - - node = settings[4]; - is_element_hidden(node, "Unsupported settings should not be visible"); - ok(!node.hasAttribute("first-row"), "Hidden row is not the first row"); - - button = gManagerWindow.document.getElementById("detail-prefs-btn"); - is_element_hidden(button, "Preferences button should not be visible"); - - gCategoryUtilities.openType("extension", run_next_test); - }); -}); - -// Addon with non-inline preferences as optionsURL -add_test(function() { - observer.checkHidden("inlinesettings2@tests.mozilla.org"); - - var addon = get_addon_element(gManagerWindow, "noninlinesettings@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkNotDisplayed(); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - is(settings.length, 0, "Grid should not have settings children"); - - var button = gManagerWindow.document.getElementById("detail-prefs-btn"); - is_element_visible(button, "Preferences button should be visible"); - - gCategoryUtilities.openType("extension", run_next_test); - }); -}); - -// Addon with options.xul, disabling and enabling should hide and show settings UI -add_test(function() { - observer.checkNotHidden(); - - var addon = get_addon_element(gManagerWindow, "inlinesettings1@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkDisplayed("inlinesettings1@tests.mozilla.org"); - is(gManagerWindow.gViewController.currentViewId, - "addons://detail/inlinesettings1%40tests.mozilla.org", - "Current view should not scroll to preferences"); - checkScrolling(false); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - is(settings.length, SETTINGS_ROWS, "Grid should have settings children"); - - // disable - var button = gManagerWindow.document.getElementById("detail-disable-btn"); - button.scrollIntoView(); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - observer.checkHidden("inlinesettings1@tests.mozilla.org"); - - settings = grid.querySelectorAll("rows > setting"); - is(settings.length, 0, "Grid should not have settings children"); - - gCategoryUtilities.openType("extension", function() { - var addon = get_addon_element(gManagerWindow, "inlinesettings1@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - is_element_hidden(button, "Preferences button should not be visible"); - - button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - is(settings.length, 0, "Grid should not have settings children"); - - // enable - var button = gManagerWindow.document.getElementById("detail-enable-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - observer.callback = function() { - observer.checkDisplayed("inlinesettings1@tests.mozilla.org"); - - settings = grid.querySelectorAll("rows > setting"); - is(settings.length, SETTINGS_ROWS, "Grid should have settings children"); - - gCategoryUtilities.openType("extension", run_next_test); - }; - }); - }); - }); -}); - - -// Addon with options.xul that requires a restart to disable, -// disabling and enabling should not hide and show settings UI. -add_test(function() { - observer.checkHidden("inlinesettings1@tests.mozilla.org"); - - var addon = get_addon_element(gManagerWindow, "inlinesettings2@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkDisplayed("inlinesettings2@tests.mozilla.org"); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - ok(settings.length > 0, "Grid should have settings children"); - - // disable - var button = gManagerWindow.document.getElementById("detail-disable-btn"); - button.scrollIntoView(); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - observer.checkNotHidden(); - - settings = grid.querySelectorAll("rows > setting"); - ok(settings.length > 0, "Grid should still have settings children"); - - // cancel pending disable - button = gManagerWindow.document.getElementById("detail-enable-btn"); - button.scrollIntoView(); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - observer.checkNotDisplayed(); - - gCategoryUtilities.openType("extension", run_next_test); - }); -}); - -// Tests bindings with existing prefs. -add_test(function() { - observer.checkHidden("inlinesettings2@tests.mozilla.org"); - - // Ensure these prefs are set. They should be set above, but somebody might - // change the tests above. - var profD = Services.dirsvc.get("ProfD", Ci.nsIFile); - Services.prefs.setBoolPref("extensions.inlinesettings1.bool", false); - Services.prefs.setIntPref("extensions.inlinesettings1.boolint", 1); - Services.prefs.setIntPref("extensions.inlinesettings1.integer", 12); - Preferences.set("extensions.inlinesettings1.string", "bar\u03DE/"); - Services.prefs.setCharPref("extensions.inlinesettings1.color", "#FF9900"); - Services.prefs.setCharPref("extensions.inlinesettings1.file", profD.path); - Services.prefs.setCharPref("extensions.inlinesettings1.directory", profD.path); - - var addon = get_addon_element(gManagerWindow, "inlinesettings1@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkDisplayed("inlinesettings1@tests.mozilla.org"); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - - var input = gManagerWindow.document.getAnonymousElementByAttribute(settings[0], "anonid", "input"); - is(input.checked, false, "Checkbox should have initial value"); - - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[1], "anonid", "input"); - is(input.checked, true, "Checkbox should have initial value"); - - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[2], "anonid", "input"); - is(input.value, "12", "Number box should have initial value"); - - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[3], "anonid", "input"); - is(input.value, "bar\u03DE/", "Text box should have initial value"); - - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[5], "anonid", "input"); - is(input.color, "#FF9900", "Color picker should have initial value"); - - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[6], "anonid", "input"); - is(input.value, profD.path, "Label should have initial value"); - is(input.tooltipText, profD.path, "Label tooltip should have initial value"); - - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[7], "anonid", "input"); - is(input.value, profD.path, "Label value should have initial value"); - is(input.tooltipText, profD.path, "Label tooltip should have initial value"); - - gCategoryUtilities.openType("extension", run_next_test); - }); -}); - -// Tests bindings with existing prefs. -add_test(function() { - observer.checkHidden("inlinesettings1@tests.mozilla.org"); - - // Ensure these prefs are set. They should be set above, but somebody might - // change the tests above. - Services.prefs.setBoolPref("extensions.inlinesettings3.radioBool", false); - Services.prefs.setIntPref("extensions.inlinesettings3.radioInt", 6); - Preferences.set("extensions.inlinesettings3.radioString", "kilo \u338F"); - Services.prefs.setIntPref("extensions.inlinesettings3.menulist", 9); - - var addon = get_addon_element(gManagerWindow, "inlinesettings3@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkDisplayed("inlinesettings3@tests.mozilla.org"); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - - var radios = settings[0].getElementsByTagName("radio"); - isnot(radios[0].selected, true, "Correct radio button should be selected"); - is(radios[1].selected, true, "Correct radio button should be selected"); - - radios = settings[1].getElementsByTagName("radio"); - isnot(radios[0].selected, true, "Correct radio button should be selected"); - isnot(radios[1].selected, true, "Correct radio button should be selected"); - is(radios[2].selected, true, "Correct radio button should be selected"); - - radios = settings[2].getElementsByTagName("radio"); - isnot(radios[0].selected, true, "Correct radio button should be selected"); - isnot(radios[1].selected, true, "Correct radio button should be selected"); - is(radios[2].selected, true, "Correct radio button should be selected"); - - var input = settings[3].firstElementChild; - is(input.value, "9", "Menulist should have initial value"); - - gCategoryUtilities.openType("extension", run_next_test); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_inlinesettings_browser.js b/toolkit/mozapps/webextensions/test/browser/browser_inlinesettings_browser.js deleted file mode 100644 index 5a704530a..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_inlinesettings_browser.js +++ /dev/null @@ -1,207 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -/* globals TestUtils */ - -var {Extension} = Components.utils.import("resource://gre/modules/Extension.jsm", {}); - -var gAddon; -var gOtherAddon; -var gManagerWindow; -var gCategoryUtilities; - -var installedAddons = []; - -function installAddon(details) { - let id = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator) - .generateUUID().number; - if (!details.manifest) { - details.manifest = {}; - } - details.manifest.applications = {gecko: {id}}; - let xpi = Extension.generateXPI(details); - - return AddonManager.installTemporaryAddon(xpi).then(addon => { - SimpleTest.registerCleanupFunction(function() { - addon.uninstall(); - - Services.obs.notifyObservers(xpi, "flush-cache-entry", null); - xpi.remove(false); - }); - - return addon; - }); -} - -add_task(function*() { - gAddon = yield installAddon({ - manifest: { - "options_ui": { - "page": "options.html", - } - }, - - files: { - "options.html": `<!DOCTYPE html> - <html> - <head> - <meta charset="UTF-8"> - <style type="text/css"> - body > p { - height: 300px; - margin: 0; - } - body.bigger > p { - height: 600px; - } - </style> - </head> - <body> - <p>The quick mauve fox jumps over the opalescent dog.</p> - </body> - </html>`, - }, - }); - - // Create another add-on with no inline options, to verify that detail - // view switches work correctly. - gOtherAddon = yield installAddon({}); - - gManagerWindow = yield open_manager("addons://list/extension"); - gCategoryUtilities = new CategoryUtilities(gManagerWindow); -}); - - -function* openDetailsBrowser(addonId) { - var addon = get_addon_element(gManagerWindow, addonId); - - is(addon.mAddon.optionsType, AddonManager.OPTIONS_TYPE_INLINE_BROWSER, - "Options should be inline browser type"); - - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - - is_element_visible(button, "Preferences button should be visible"); - - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - yield TestUtils.topicObserved(AddonManager.OPTIONS_NOTIFICATION_DISPLAYED, - (subject, data) => data == addonId); - - is(gManagerWindow.gViewController.currentViewId, - `addons://detail/${encodeURIComponent(addonId)}/preferences`, - "Current view should scroll to preferences"); - - var browser = gManagerWindow.document.querySelector( - "#detail-grid > rows > .inline-options-browser"); - var rows = browser.parentNode; - - ok(browser, "Grid should have a browser child"); - is(browser.localName, "browser", "Grid should have a browser child"); - is(browser.currentURI.spec, addon.mAddon.optionsURL, "Browser has the expected options URL loaded") - - is(browser.clientWidth, rows.clientWidth, - "Browser should be the same width as its parent node"); - - button = gManagerWindow.document.getElementById("detail-prefs-btn"); - is_element_hidden(button, "Preferences button should not be visible"); - - return browser; -} - - -add_task(function* test_inline_browser_addon() { - let browser = yield openDetailsBrowser(gAddon.id); - - let body = browser.contentDocument.body; - - function checkHeights(expected) { - is(body.clientHeight, expected, `Document body should be ${expected}px tall`); - is(body.clientHeight, body.scrollHeight, - "Document body should be tall enough to fit its contents"); - - let heightDiff = browser.clientHeight - expected; - ok(heightDiff >= 0 && heightDiff < 50, - "Browser should be slightly taller than the document body"); - } - - // Delay long enough to avoid hitting our resize rate limit. - let delay = () => new Promise(resolve => setTimeout(resolve, 300)); - - checkHeights(300); - - info("Increase the document height, and expect the browser to grow correspondingly"); - body.classList.toggle("bigger"); - - yield delay(); - - checkHeights(600); - - info("Decrease the document height, and expect the browser to shrink correspondingly"); - body.classList.toggle("bigger"); - - yield delay(); - - checkHeights(300); - - yield new Promise(resolve => - gCategoryUtilities.openType("extension", resolve)); - - browser = gManagerWindow.document.querySelector( - ".inline-options-browser"); - - is(browser, null, "Options browser should be removed from the document"); -}); - - -// Test that loading an add-on with no inline browser works as expected -// after having viewed our main test add-on. -add_task(function* test_plain_addon() { - var addon = get_addon_element(gManagerWindow, gOtherAddon.id); - - is(addon.mAddon.optionsType, null, "Add-on should have no options"); - - addon.parentNode.ensureElementIsVisible(addon); - - yield EventUtils.synthesizeMouseAtCenter(addon, { clickCount: 1 }, gManagerWindow); - - EventUtils.synthesizeMouseAtCenter(addon, { clickCount: 2 }, gManagerWindow); - - yield BrowserTestUtils.waitForEvent(gManagerWindow, "ViewChanged"); - - is(gManagerWindow.gViewController.currentViewId, - `addons://detail/${encodeURIComponent(gOtherAddon.id)}`, - "Detail view should be open"); - - var browser = gManagerWindow.document.querySelector( - "#detail-grid > rows > .inline-options-browser"); - - is(browser, null, "Detail view should have no inline browser"); - - yield new Promise(resolve => - gCategoryUtilities.openType("extension", resolve)); -}); - - -// Test that loading the original add-on details successfully creates a -// browser. -add_task(function* test_inline_browser_addon_again() { - let browser = yield openDetailsBrowser(gAddon.id); - - yield new Promise(resolve => - gCategoryUtilities.openType("extension", resolve)); - - browser = gManagerWindow.document.querySelector( - ".inline-options-browser"); - - is(browser, null, "Options browser should be removed from the document"); -}); - -add_task(function*() { - yield close_manager(gManagerWindow); - - gManagerWindow = null; - gCategoryUtilities = null; -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_inlinesettings_custom.js b/toolkit/mozapps/webextensions/test/browser/browser_inlinesettings_custom.js deleted file mode 100644 index ecd10852d..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_inlinesettings_custom.js +++ /dev/null @@ -1,92 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests various aspects of the details view - -var gManagerWindow; -var gCategoryUtilities; - -function installAddon(aCallback) { - AddonManager.getInstallForURL(TESTROOT + "addons/browser_inlinesettings1_custom.xpi", - function(aInstall) { - aInstall.addListener({ - onInstallEnded: function() { - executeSoon(aCallback); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -function test() { - waitForExplicitFinish(); - - installAddon(function () { - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - run_next_test(); - }); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - AddonManager.getAddonByID("inlinesettings1@tests.mozilla.org", function(aAddon) { - aAddon.uninstall(); - finish(); - }); - }); -} - -// Addon with options.xul, with custom <setting> binding -add_test(function() { - var addon = get_addon_element(gManagerWindow, "inlinesettings1@tests.mozilla.org"); - is(addon.mAddon.optionsType, AddonManager.OPTIONS_TYPE_INLINE, "Options should be inline type"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - is_element_visible(button, "Preferences button should be visible"); - - run_next_test(); -}); - -// Addon with options.xul, also a test for the setting.xml bindings -add_test(function() { - var addon = get_addon_element(gManagerWindow, "inlinesettings1@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gManagerWindow.gViewController.currentViewId, - "addons://detail/inlinesettings1%40tests.mozilla.org/preferences", - "Current view should scroll to preferences"); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - is(settings.length, 1, "Grid should have settings children"); - - ok(settings[0].hasAttribute("first-row"), "First visible row should have first-row attribute"); - - var style = window.getComputedStyle(settings[0], null); - is(style.getPropertyValue("background-color"), "rgb(0, 0, 255)", "Background color should be set"); - is(style.getPropertyValue("display"), "-moz-grid-line", "Display should be set"); - is(style.getPropertyValue("-moz-binding"), 'url("chrome://inlinesettings/content/binding.xml#custom")', "Binding should be set"); - - var label = gManagerWindow.document.getAnonymousElementByAttribute(settings[0], "anonid", "label"); - is(label.textContent, "Custom", "Localized string should be shown"); - - var input = gManagerWindow.document.getAnonymousElementByAttribute(settings[0], "anonid", "input"); - isnot(input, null, "Binding should be applied"); - is(input.value, "Woah!", "Binding should be applied"); - - button = gManagerWindow.document.getElementById("detail-prefs-btn"); - is_element_hidden(button, "Preferences button should not be visible"); - - gCategoryUtilities.openType("extension", run_next_test); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_inlinesettings_info.js b/toolkit/mozapps/webextensions/test/browser/browser_inlinesettings_info.js deleted file mode 100644 index ce618b7fa..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_inlinesettings_info.js +++ /dev/null @@ -1,574 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests various aspects of the details view -Components.utils.import("resource://gre/modules/Preferences.jsm"); - -var gManagerWindow; -var gCategoryUtilities; -var gProvider; - -const SETTINGS_ROWS = 8; - -var MockFilePicker = SpecialPowers.MockFilePicker; -MockFilePicker.init(window); - -var observer = { - lastDisplayed: null, - callback: null, - checkDisplayed: function(aExpected) { - is(this.lastDisplayed, aExpected, "'addon-options-displayed' notification should have fired"); - this.lastDisplayed = null; - }, - checkNotDisplayed: function() { - is(this.lastDisplayed, null, "'addon-options-displayed' notification should not have fired"); - }, - lastHidden: null, - checkHidden: function(aExpected) { - is(this.lastHidden, aExpected, "'addon-options-hidden' notification should have fired"); - this.lastHidden = null; - }, - checkNotHidden: function() { - is(this.lastHidden, null, "'addon-options-hidden' notification should not have fired"); - }, - observe: function(aSubject, aTopic, aData) { - if (aTopic == AddonManager.OPTIONS_NOTIFICATION_DISPLAYED) { - this.lastDisplayed = aData; - // Test if the binding has applied before the observers are notified. We test the second setting here, - // because the code operates on the first setting and we want to check it applies to all. - var setting = aSubject.querySelector("rows > setting[first-row] ~ setting"); - var input = gManagerWindow.document.getAnonymousElementByAttribute(setting, "class", "preferences-title"); - isnot(input, null, "XBL binding should be applied"); - - // Add some extra height to the scrolling pane to ensure that it needs to scroll when appropriate. - gManagerWindow.document.getElementById("detail-controls").style.marginBottom = "1000px"; - - if (this.callback) { - var tempCallback = this.callback; - this.callback = null; - tempCallback(); - } - } else if (aTopic == AddonManager.OPTIONS_NOTIFICATION_HIDDEN) { - this.lastHidden = aData; - } - } -}; - -function installAddon(aCallback) { - AddonManager.getInstallForURL(TESTROOT + "addons/browser_inlinesettings1_info.xpi", - function(aInstall) { - aInstall.addListener({ - onInstallEnded: function() { - executeSoon(aCallback); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -function checkScrolling(aShouldHaveScrolled) { - var detailView = gManagerWindow.document.getElementById("detail-view"); - var boxObject = detailView.boxObject; - ok(detailView.scrollHeight > boxObject.height, "Page should require scrolling"); - if (aShouldHaveScrolled) - isnot(detailView.scrollTop, 0, "Page should have scrolled"); - else - is(detailView.scrollTop, 0, "Page should not have scrolled"); -} - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "inlinesettings2@tests.mozilla.org", - name: "Inline Settings (Regular)", - version: "1", - optionsURL: CHROMEROOT + "options.xul", - optionsType: AddonManager.OPTIONS_TYPE_INLINE_INFO, - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_DISABLE, - }, { - id: "inlinesettings3@tests.mozilla.org", - name: "Inline Settings (More Options)", - description: "Tests for option types introduced after Mozilla 7.0", - version: "1", - optionsURL: CHROMEROOT + "more_options.xul", - optionsType: AddonManager.OPTIONS_TYPE_INLINE_INFO - }, { - id: "noninlinesettings@tests.mozilla.org", - name: "Non-Inline Settings", - version: "1", - optionsURL: CHROMEROOT + "addon_prefs.xul" - }]); - - installAddon(function () { - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - Services.obs.addObserver(observer, - AddonManager.OPTIONS_NOTIFICATION_DISPLAYED, - false); - Services.obs.addObserver(observer, - AddonManager.OPTIONS_NOTIFICATION_HIDDEN, - false); - - run_next_test(); - }); - }); -} - -function end_test() { - Services.obs.removeObserver(observer, - AddonManager.OPTIONS_NOTIFICATION_DISPLAYED); - - Services.prefs.clearUserPref("extensions.inlinesettings1.bool"); - Services.prefs.clearUserPref("extensions.inlinesettings1.boolint"); - Services.prefs.clearUserPref("extensions.inlinesettings1.integer"); - Services.prefs.clearUserPref("extensions.inlinesettings1.string"); - Services.prefs.clearUserPref("extensions.inlinesettings1.color"); - Services.prefs.clearUserPref("extensions.inlinesettings1.file"); - Services.prefs.clearUserPref("extensions.inlinesettings1.directory"); - Services.prefs.clearUserPref("extensions.inlinesettings3.radioBool"); - Services.prefs.clearUserPref("extensions.inlinesettings3.radioInt"); - Services.prefs.clearUserPref("extensions.inlinesettings3.radioString"); - Services.prefs.clearUserPref("extensions.inlinesettings3.menulist"); - - MockFilePicker.cleanup(); - - close_manager(gManagerWindow, function() { - observer.checkHidden("inlinesettings2@tests.mozilla.org"); - Services.obs.removeObserver(observer, - AddonManager.OPTIONS_NOTIFICATION_HIDDEN); - - AddonManager.getAddonByID("inlinesettings1@tests.mozilla.org", function(aAddon) { - aAddon.uninstall(); - finish(); - }); - }); -} - -// Addon with options.xul -add_test(function() { - var addon = get_addon_element(gManagerWindow, "inlinesettings1@tests.mozilla.org"); - is(addon.mAddon.optionsType, AddonManager.OPTIONS_TYPE_INLINE_INFO, "Options should be inline info type"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - is_element_hidden(button, "Preferences button should be hidden"); - - run_next_test(); -}); - -// Addon with inline preferences as optionsURL -add_test(function() { - var addon = get_addon_element(gManagerWindow, "inlinesettings2@tests.mozilla.org"); - is(addon.mAddon.optionsType, AddonManager.OPTIONS_TYPE_INLINE_INFO, "Options should be inline info type"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - is_element_hidden(button, "Preferences button should be hidden"); - - run_next_test(); -}); - -// Addon with non-inline preferences as optionsURL -add_test(function() { - var addon = get_addon_element(gManagerWindow, "noninlinesettings@tests.mozilla.org"); - is(addon.mAddon.optionsType, AddonManager.OPTIONS_TYPE_DIALOG, "Options should be dialog type"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - is_element_visible(button, "Preferences button should be visible"); - - run_next_test(); -}); - -// Addon with options.xul, also a test for the setting.xml bindings -add_test(function() { - var addon = get_addon_element(gManagerWindow, "inlinesettings1@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkDisplayed("inlinesettings1@tests.mozilla.org"); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - is(settings.length, SETTINGS_ROWS, "Grid should have settings children"); - - ok(settings[0].hasAttribute("first-row"), "First visible row should have first-row attribute"); - Services.prefs.setBoolPref("extensions.inlinesettings1.bool", false); - var input = gManagerWindow.document.getAnonymousElementByAttribute(settings[0], "anonid", "input"); - isnot(input.checked, true, "Checkbox should have initial value"); - is(input.label, "Check box label", "Checkbox should be labelled"); - EventUtils.synthesizeMouseAtCenter(input, { clickCount: 1 }, gManagerWindow); - is(input.checked, true, "Checkbox should have updated value"); - is(Services.prefs.getBoolPref("extensions.inlinesettings1.bool"), true, "Bool pref should have been updated"); - EventUtils.synthesizeMouseAtCenter(input, { clickCount: 1 }, gManagerWindow); - isnot(input.checked, true, "Checkbox should have updated value"); - is(Services.prefs.getBoolPref("extensions.inlinesettings1.bool"), false, "Bool pref should have been updated"); - - ok(!settings[1].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setIntPref("extensions.inlinesettings1.boolint", 0); - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[1], "anonid", "input"); - isnot(input.checked, true, "Checkbox should have initial value"); - EventUtils.synthesizeMouseAtCenter(input, { clickCount: 1 }, gManagerWindow); - is(input.checked, true, "Checkbox should have updated value"); - is(Services.prefs.getIntPref("extensions.inlinesettings1.boolint"), 1, "BoolInt pref should have been updated"); - EventUtils.synthesizeMouseAtCenter(input, { clickCount: 1 }, gManagerWindow); - isnot(input.checked, true, "Checkbox should have updated value"); - is(Services.prefs.getIntPref("extensions.inlinesettings1.boolint"), 2, "BoolInt pref should have been updated"); - - ok(!settings[2].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setIntPref("extensions.inlinesettings1.integer", 0); - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[2], "anonid", "input"); - is(input.value, "0", "Number box should have initial value"); - input.select(); - EventUtils.synthesizeKey("1", {}, gManagerWindow); - EventUtils.synthesizeKey("3", {}, gManagerWindow); - is(input.value, "13", "Number box should have updated value"); - is(Services.prefs.getIntPref("extensions.inlinesettings1.integer"), 13, "Integer pref should have been updated"); - EventUtils.synthesizeKey("VK_DOWN", {}, gManagerWindow); - is(input.value, "12", "Number box should have updated value"); - is(Services.prefs.getIntPref("extensions.inlinesettings1.integer"), 12, "Integer pref should have been updated"); - - ok(!settings[3].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setCharPref("extensions.inlinesettings1.string", "foo"); - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[3], "anonid", "input"); - is(input.value, "foo", "Text box should have initial value"); - input.select(); - EventUtils.synthesizeKey("b", {}, gManagerWindow); - EventUtils.synthesizeKey("a", {}, gManagerWindow); - EventUtils.synthesizeKey("r", {}, gManagerWindow); - is(input.value, "bar", "Text box should have updated value"); - is(Services.prefs.getCharPref("extensions.inlinesettings1.string"), "bar", "String pref should have been updated"); - - ok(!settings[4].hasAttribute("first-row"), "Not the first row"); - input = settings[4].firstElementChild; - is(input.value, "1", "Menulist should have initial value"); - input.focus(); - EventUtils.synthesizeKey("b", {}, gManagerWindow); - is(input.value, "2", "Menulist should have updated value"); - is(gManagerWindow._testValue, "2", "Menulist oncommand handler should've updated the test value"); - delete gManagerWindow._testValue; - - ok(!settings[5].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setCharPref("extensions.inlinesettings1.color", "#FF0000"); - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[5], "anonid", "input"); - is(input.color, "#FF0000", "Color picker should have initial value"); - input.focus(); - EventUtils.synthesizeKey("VK_RIGHT", {}, gManagerWindow); - EventUtils.synthesizeKey("VK_RIGHT", {}, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", {}, gManagerWindow); - input.hidePopup(); - is(input.color, "#FF9900", "Color picker should have updated value"); - is(Services.prefs.getCharPref("extensions.inlinesettings1.color"), "#FF9900", "Color pref should have been updated"); - - try { - ok(!settings[6].hasAttribute("first-row"), "Not the first row"); - var button = gManagerWindow.document.getAnonymousElementByAttribute(settings[6], "anonid", "button"); - - // Workaround for bug 1155324 - we need to ensure that the button is scrolled into view. - button.scrollIntoView(); - - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[6], "anonid", "input"); - is(input.value, "", "Label value should be empty"); - is(input.tooltipText, "", "Label tooltip should be empty"); - - var profD = Services.dirsvc.get("ProfD", Ci.nsIFile); - var curProcD = Services.dirsvc.get("CurProcD", Ci.nsIFile); - - MockFilePicker.returnFiles = [profD]; - MockFilePicker.returnValue = Ci.nsIFilePicker.returnOK; - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - is(MockFilePicker.mode, Ci.nsIFilePicker.modeOpen, "File picker mode should be open file"); - is(input.value, profD.path, "Label value should match file chosen"); - is(input.tooltipText, profD.path, "Label tooltip should match file chosen"); - is(Services.prefs.getCharPref("extensions.inlinesettings1.file"), profD.path, "File pref should match file chosen"); - - MockFilePicker.returnFiles = [curProcD]; - MockFilePicker.returnValue = Ci.nsIFilePicker.returnCancel; - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - is(MockFilePicker.mode, Ci.nsIFilePicker.modeOpen, "File picker mode should be open file"); - is(input.value, profD.path, "Label value should not have changed"); - is(input.tooltipText, profD.path, "Label tooltip should not have changed"); - is(Services.prefs.getCharPref("extensions.inlinesettings1.file"), profD.path, "File pref should not have changed"); - - ok(!settings[7].hasAttribute("first-row"), "Not the first row"); - button = gManagerWindow.document.getAnonymousElementByAttribute(settings[7], "anonid", "button"); - input = gManagerWindow.document.getAnonymousElementByAttribute(settings[7], "anonid", "input"); - is(input.value, "", "Label value should be empty"); - is(input.tooltipText, "", "Label tooltip should be empty"); - - MockFilePicker.returnFiles = [profD]; - MockFilePicker.returnValue = Ci.nsIFilePicker.returnOK; - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - is(MockFilePicker.mode, Ci.nsIFilePicker.modeGetFolder, "File picker mode should be directory"); - is(input.value, profD.path, "Label value should match file chosen"); - is(input.tooltipText, profD.path, "Label tooltip should match file chosen"); - is(Services.prefs.getCharPref("extensions.inlinesettings1.directory"), profD.path, "Directory pref should match file chosen"); - - MockFilePicker.returnFiles = [curProcD]; - MockFilePicker.returnValue = Ci.nsIFilePicker.returnCancel; - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - is(MockFilePicker.mode, Ci.nsIFilePicker.modeGetFolder, "File picker mode should be directory"); - is(input.value, profD.path, "Label value should not have changed"); - is(input.tooltipText, profD.path, "Label tooltip should not have changed"); - is(Services.prefs.getCharPref("extensions.inlinesettings1.directory"), profD.path, "Directory pref should not have changed"); - - } finally { - button = gManagerWindow.document.getElementById("detail-prefs-btn"); - is_element_hidden(button, "Preferences button should not be visible"); - - gCategoryUtilities.openType("extension", run_next_test); - } - }); -}); - -// Tests for the setting.xml bindings introduced after Mozilla 7 -add_test(function() { - observer.checkHidden("inlinesettings1@tests.mozilla.org"); - - var addon = get_addon_element(gManagerWindow, "inlinesettings3@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkDisplayed("inlinesettings3@tests.mozilla.org"); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - is(settings.length, 4, "Grid should have settings children"); - - ok(settings[0].hasAttribute("first-row"), "First visible row should have first-row attribute"); - Services.prefs.setBoolPref("extensions.inlinesettings3.radioBool", false); - var radios = settings[0].getElementsByTagName("radio"); - isnot(radios[0].selected, true, "Correct radio button should be selected"); - is(radios[1].selected, true, "Correct radio button should be selected"); - EventUtils.synthesizeMouseAtCenter(radios[0], { clickCount: 1 }, gManagerWindow); - is(Services.prefs.getBoolPref("extensions.inlinesettings3.radioBool"), true, "Radio pref should have been updated"); - EventUtils.synthesizeMouseAtCenter(radios[1], { clickCount: 1 }, gManagerWindow); - is(Services.prefs.getBoolPref("extensions.inlinesettings3.radioBool"), false, "Radio pref should have been updated"); - - ok(!settings[1].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setIntPref("extensions.inlinesettings3.radioInt", 5); - radios = settings[1].getElementsByTagName("radio"); - isnot(radios[0].selected, true, "Correct radio button should be selected"); - is(radios[1].selected, true, "Correct radio button should be selected"); - isnot(radios[2].selected, true, "Correct radio button should be selected"); - EventUtils.synthesizeMouseAtCenter(radios[0], { clickCount: 1 }, gManagerWindow); - is(Services.prefs.getIntPref("extensions.inlinesettings3.radioInt"), 4, "Radio pref should have been updated"); - EventUtils.synthesizeMouseAtCenter(radios[2], { clickCount: 1 }, gManagerWindow); - is(Services.prefs.getIntPref("extensions.inlinesettings3.radioInt"), 6, "Radio pref should have been updated"); - - ok(!settings[2].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setCharPref("extensions.inlinesettings3.radioString", "juliet"); - radios = settings[2].getElementsByTagName("radio"); - isnot(radios[0].selected, true, "Correct radio button should be selected"); - is(radios[1].selected, true, "Correct radio button should be selected"); - isnot(radios[2].selected, true, "Correct radio button should be selected"); - EventUtils.synthesizeMouseAtCenter(radios[0], { clickCount: 1 }, gManagerWindow); - is(Services.prefs.getCharPref("extensions.inlinesettings3.radioString"), "india", "Radio pref should have been updated"); - EventUtils.synthesizeMouseAtCenter(radios[2], { clickCount: 1 }, gManagerWindow); - is(Preferences.get("extensions.inlinesettings3.radioString", "wrong"), "kilo \u338F", "Radio pref should have been updated"); - - ok(!settings[3].hasAttribute("first-row"), "Not the first row"); - Services.prefs.setIntPref("extensions.inlinesettings3.menulist", 8); - var input = settings[3].firstElementChild; - is(input.value, "8", "Menulist should have initial value"); - input.focus(); - EventUtils.synthesizeKey("n", {}, gManagerWindow); - is(input.value, "9", "Menulist should have updated value"); - is(Services.prefs.getIntPref("extensions.inlinesettings3.menulist"), 9, "Menulist pref should have been updated"); - - button = gManagerWindow.document.getElementById("detail-prefs-btn"); - is_element_hidden(button, "Preferences button should not be visible"); - - gCategoryUtilities.openType("extension", run_next_test); - }); -}); - -// Addon with inline preferences as optionsURL -add_test(function() { - observer.checkHidden("inlinesettings3@tests.mozilla.org"); - - var addon = get_addon_element(gManagerWindow, "inlinesettings2@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkDisplayed("inlinesettings2@tests.mozilla.org"); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - is(settings.length, 5, "Grid should have settings children"); - - var node = settings[0]; - node = settings[0]; - is_element_hidden(node, "Unsupported settings should not be visible"); - ok(!node.hasAttribute("first-row"), "Hidden row is not the first row"); - - node = settings[1]; - is(node.nodeName, "setting", "Should be a setting node"); - ok(node.hasAttribute("first-row"), "First visible row should have first-row attribute"); - var description = gManagerWindow.document.getAnonymousElementByAttribute(node, "class", "preferences-description"); - is(description.textContent, "Description Attribute", "Description node should contain description"); - - node = settings[2]; - is(node.nodeName, "setting", "Should be a setting node"); - ok(!node.hasAttribute("first-row"), "Not the first row"); - description = gManagerWindow.document.getAnonymousElementByAttribute(node, "class", "preferences-description"); - is(description.textContent, "Description Text Node", "Description node should contain description"); - - node = settings[3]; - is(node.nodeName, "setting", "Should be a setting node"); - ok(!node.hasAttribute("first-row"), "Not the first row"); - description = gManagerWindow.document.getAnonymousElementByAttribute(node, "class", "preferences-description"); - is(description.textContent, "This is a test, all this text should be visible", "Description node should contain description"); - var button = node.firstElementChild; - isnot(button, null, "There should be a button"); - - node = settings[4]; - is_element_hidden(node, "Unsupported settings should not be visible"); - ok(!node.hasAttribute("first-row"), "Hidden row is not the first row"); - - button = gManagerWindow.document.getElementById("detail-prefs-btn"); - is_element_hidden(button, "Preferences button should not be visible"); - - gCategoryUtilities.openType("extension", run_next_test); - }); -}); - -// Addon with non-inline preferences as optionsURL -add_test(function() { - observer.checkHidden("inlinesettings2@tests.mozilla.org"); - - var addon = get_addon_element(gManagerWindow, "noninlinesettings@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkNotDisplayed(); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - is(settings.length, 0, "Grid should not have settings children"); - - var button = gManagerWindow.document.getElementById("detail-prefs-btn"); - is_element_visible(button, "Preferences button should be visible"); - - gCategoryUtilities.openType("extension", run_next_test); - }); -}); - -// Addon with options.xul, disabling and enabling should hide and show settings UI -add_test(function() { - observer.checkNotHidden(); - - var addon = get_addon_element(gManagerWindow, "inlinesettings1@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkDisplayed("inlinesettings1@tests.mozilla.org"); - is(gManagerWindow.gViewController.currentViewId, - "addons://detail/inlinesettings1%40tests.mozilla.org", - "Current view should not scroll to preferences"); - checkScrolling(false); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - is(settings.length, SETTINGS_ROWS, "Grid should have settings children"); - - // disable - var button = gManagerWindow.document.getElementById("detail-disable-btn"); - button.focus(); // make sure it's in view - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - observer.checkHidden("inlinesettings1@tests.mozilla.org"); - - settings = grid.querySelectorAll("rows > setting"); - is(settings.length, 0, "Grid should not have settings children"); - - gCategoryUtilities.openType("extension", function() { - var addon = get_addon_element(gManagerWindow, "inlinesettings1@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - is_element_hidden(button, "Preferences button should not be visible"); - - button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - is(settings.length, 0, "Grid should not have settings children"); - - // enable - var button = gManagerWindow.document.getElementById("detail-enable-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - observer.callback = function() { - observer.checkDisplayed("inlinesettings1@tests.mozilla.org"); - - settings = grid.querySelectorAll("rows > setting"); - is(settings.length, SETTINGS_ROWS, "Grid should have settings children"); - - gCategoryUtilities.openType("extension", run_next_test); - }; - }); - }); - }); -}); - - -// Addon with options.xul that requires a restart to disable, -// disabling and enabling should not hide and show settings UI. -add_test(function() { - observer.checkHidden("inlinesettings1@tests.mozilla.org"); - - var addon = get_addon_element(gManagerWindow, "inlinesettings2@tests.mozilla.org"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - observer.checkDisplayed("inlinesettings2@tests.mozilla.org"); - - var grid = gManagerWindow.document.getElementById("detail-grid"); - var settings = grid.querySelectorAll("rows > setting"); - ok(settings.length > 0, "Grid should have settings children"); - - // disable - var button = gManagerWindow.document.getElementById("detail-disable-btn"); - button.focus(); // make sure it's in view - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - observer.checkNotHidden(); - - settings = grid.querySelectorAll("rows > setting"); - ok(settings.length > 0, "Grid should still have settings children"); - - // cancel pending disable - button = gManagerWindow.document.getElementById("detail-enable-btn"); - button.focus(); // make sure it's in view - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - observer.checkNotDisplayed(); - - gCategoryUtilities.openType("extension", run_next_test); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_install.js b/toolkit/mozapps/webextensions/test/browser/browser_install.js deleted file mode 100644 index 880a4624d..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_install.js +++ /dev/null @@ -1,312 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests tha installs and undoing installs show up correctly - -var gManagerWindow; -var gCategoryUtilities; - -var gApp = document.getElementById("bundle_brand").getString("brandShortName"); -var gSearchCount = 0; - -function test() { - requestLongerTimeout(2); - waitForExplicitFinish(); - - // Turn on searching for this test - Services.prefs.setIntPref(PREF_SEARCH_MAXRESULTS, 15); - Services.prefs.setCharPref("extensions.getAddons.search.url", TESTROOT + "browser_install.xml"); - // Allow http update checks - Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - Services.prefs.clearUserPref("extensions.checkUpdateSecurity"); - - AddonManager.getAddonByID("install1@tests.mozilla.org", function(aAddon) { - aAddon.uninstall(); - finish(); - }); - }); -} - -function get_node(parent, anonid) { - return parent.ownerDocument.getAnonymousElementByAttribute(parent, "anonid", anonid); -} - -function installAddon(aCallback) { - AddonManager.getInstallForURL(TESTROOT + "addons/browser_install1_2.xpi", - function(aInstall) { - aInstall.addListener({ - onInstallEnded: function() { - executeSoon(aCallback); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -function installUpgrade(aCallback) { - AddonManager.getAddonByID("install1@tests.mozilla.org", function(aAddon) { - aAddon.findUpdates({ - onUpdateAvailable: function(aAddon, aInstall) { - is(get_list_item_count(), 1, "Should be only one item in the list"); - - aInstall.addListener({ - onDownloadEnded: function() { - is(get_list_item_count(), 1, "Should be only one item in the list once the update has started"); - }, - onInstallEnded: function() { - executeSoon(aCallback); - } - }); - aInstall.install(); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); -} - -function cancelInstall(aCallback) { - AddonManager.getInstallForURL(TESTROOT + "addons/browser_install1_2.xpi", - function(aInstall) { - aInstall.addListener({ - onDownloadEnded: function(aInstall) { - executeSoon(function() { - aInstall.cancel(); - aCallback(); - }); - return false; - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -function installSearchResult(aCallback) { - var searchBox = gManagerWindow.document.getElementById("header-search"); - // Search for something different each time - searchBox.value = "foo" + gSearchCount; - gSearchCount++; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - let remote = gManagerWindow.document.getElementById("search-filter-remote") - EventUtils.synthesizeMouseAtCenter(remote, { }, gManagerWindow); - - let item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org"); - ok(!!item, "Should see the search result in the list"); - - let status = get_node(item, "install-status"); - EventUtils.synthesizeMouseAtCenter(get_node(status, "install-remote-btn"), {}, gManagerWindow); - - item.mInstall.addListener({ - onInstallEnded: function() { - executeSoon(aCallback); - } - }); - }); -} - -function get_list_item_count() { - return get_test_items_in_list(gManagerWindow).length; -} - -function check_undo_install() { - is(get_list_item_count(), 1, "Should be only one item in the list"); - - let item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org"); - ok(!!item, "Should see the pending install in the list"); - // Force XBL to apply - item.clientTop; - is_element_visible(get_node(item, "pending"), "Pending message should be visible"); - is(get_node(item, "pending").textContent, "Install Tests will be installed after you restart " + gApp + ".", "Pending message should be correct"); - - EventUtils.synthesizeMouseAtCenter(get_node(item, "undo-btn"), {}, gManagerWindow); - - is(get_list_item_count(), 0, "Should be no items in the list"); - - item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org"); - ok(!item, "Should no longer see the pending install"); -} - -function check_undo_upgrade() { - is(get_list_item_count(), 1, "Should be only one item in the list"); - - let item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org"); - ok(!!item, "Should see the pending upgrade in the list"); - // Force XBL to apply - item.clientTop; - is_element_visible(get_node(item, "pending"), "Pending message should be visible"); - is(get_node(item, "pending").textContent, "Install Tests will be updated after you restart " + gApp + ".", "Pending message should be correct"); - - EventUtils.synthesizeMouseAtCenter(get_node(item, "undo-btn"), {}, gManagerWindow); - - is(get_list_item_count(), 1, "Should be only one item in the list"); - - item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org"); - ok(!!item, "Should still see installed item in the list"); - is_element_hidden(get_node(item, "pending"), "Pending message should be hidden"); -} - -// Install an add-on through the API with the manager open -add_test(function() { - gCategoryUtilities.openType("extension", function() { - installAddon(function() { - check_undo_install(); - run_next_test(); - }); - }); -}); - -// Install an add-on with the manager closed then open it -add_test(function() { - close_manager(gManagerWindow, function() { - installAddon(function() { - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - check_undo_install(); - run_next_test(); - }); - }); - }); -}); - -// Install an add-on through the search page and then undo it -add_test(function() { - installSearchResult(function() { - check_undo_install(); - run_next_test(); - }); -}); - -// Install an add-on through the search page then switch to the extensions page -// and then undo it -add_test(function() { - installSearchResult(function() { - gCategoryUtilities.openType("extension", function() { - check_undo_install(); - run_next_test(); - }); - }); -}); - -// Install an add-on through the search page then re-open the manager and then -// undo it -add_test(function() { - installSearchResult(function() { - close_manager(gManagerWindow, function() { - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - check_undo_install(); - run_next_test(); - }); - }); - }); -}); - -// Cancel an install after download with the manager open -add_test(function() { - cancelInstall(function() { - is(get_list_item_count(), 0, "Should be no items in the list"); - - run_next_test(); - }); -}); - -// Cancel an install after download with the manager closed -add_test(function() { - close_manager(gManagerWindow, function() { - cancelInstall(function() { - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - is(get_list_item_count(), 0, "Should be no items in the list"); - - run_next_test(); - }); - }); - }); -}); - -// Install an existing add-on for the subsequent tests -add_test(function() { - AddonManager.getInstallForURL(TESTROOT + "addons/browser_install1_1.xpi", - function(aInstall) { - aInstall.addListener({ - onInstallEnded: run_next_test - }); - aInstall.install(); - }, "application/x-xpinstall"); -}); - -// Install an upgrade through the API with the manager open -add_test(function() { - installAddon(function() { - check_undo_upgrade(); - run_next_test(); - }); -}); - -// Install an upgrade through the API with the manager open -add_test(function() { - installUpgrade(function() { - check_undo_upgrade(); - run_next_test(); - }); -}); - -// Install an upgrade through the API with the manager closed -add_test(function() { - close_manager(gManagerWindow, function() { - installAddon(function() { - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - check_undo_upgrade(); - run_next_test(); - }); - }); - }); -}); - -// Cancel an upgrade after download with the manager open -add_test(function() { - cancelInstall(function() { - is(get_list_item_count(), 1, "Should be no items in the list"); - let item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org"); - ok(!!item, "Should still see installed item in the list"); - is_element_hidden(get_node(item, "pending"), "Pending message should be hidden"); - - run_next_test(); - }); -}); - -// Cancel an upgrade after download with the manager closed -add_test(function() { - close_manager(gManagerWindow, function() { - cancelInstall(function() { - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - is(get_list_item_count(), 1, "Should be no items in the list"); - let item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org"); - ok(!!item, "Should still see installed item in the list"); - is_element_hidden(get_node(item, "pending"), "Pending message should be hidden"); - - run_next_test(); - }); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_install.rdf b/toolkit/mozapps/webextensions/test/browser/browser_install.rdf deleted file mode 100644 index 437bf9b85..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_install.rdf +++ /dev/null @@ -1,27 +0,0 @@ -<?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:install1@tests.mozilla.org"> - <em:updates> - <Seq> - <li> - <Description> - <em:version>2.0</em:version> - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - <em:updateLink>https://example.com/browser/toolkit/mozapps/extensions/test/browser/browser_install1_3.xpi</em:updateLink> - <em:updateHash>sha1:4f0f4391914e3e036beca50cbac33958e5269643</em:updateHash> - </Description> - </em:targetApplication> - </Description> - </li> - </Seq> - </em:updates> - </Description> - -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/browser_install.rdf^headers^ b/toolkit/mozapps/webextensions/test/browser/browser_install.rdf^headers^ deleted file mode 100644 index 2e4f8163b..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_install.rdf^headers^ +++ /dev/null @@ -1 +0,0 @@ -Connection: close diff --git a/toolkit/mozapps/webextensions/test/browser/browser_install.xml b/toolkit/mozapps/webextensions/test/browser/browser_install.xml deleted file mode 100644 index 0643c811a..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_install.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<searchresults total_results="1"> - <addon> - <name>Install Tests</name> - <type id='1'>Extension</type> - <guid>install1@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>Test add-on</summary> - <description>Test add-on</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> -</searchresults> diff --git a/toolkit/mozapps/webextensions/test/browser/browser_install1_3.xpi b/toolkit/mozapps/webextensions/test/browser/browser_install1_3.xpi Binary files differdeleted file mode 100644 index de3c90353..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_install1_3.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/browser_installssl.js b/toolkit/mozapps/webextensions/test/browser/browser_installssl.js deleted file mode 100644 index b0726ef9e..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_installssl.js +++ /dev/null @@ -1,374 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const xpi = RELATIVE_DIR + "addons/browser_installssl.xpi"; -const redirect = RELATIVE_DIR + "redirect.sjs?"; -const SUCCESS = 0; -const NETWORK_FAILURE = AddonManager.ERROR_NETWORK_FAILURE; - -const HTTP = "http://example.com/"; -const HTTPS = "https://example.com/"; -const NOCERT = "https://nocert.example.com/"; -const SELFSIGNED = "https://self-signed.example.com/"; -const UNTRUSTED = "https://untrusted.example.com/"; -const EXPIRED = "https://expired.example.com/"; - -const PREF_INSTALL_REQUIREBUILTINCERTS = "extensions.install.requireBuiltInCerts"; - -var gTests = []; -var gStart = 0; -var gLast = 0; -var gPendingInstall = null; - -function test() { - gStart = Date.now(); - requestLongerTimeout(4); - waitForExplicitFinish(); - - registerCleanupFunction(function() { - var cos = Cc["@mozilla.org/security/certoverride;1"]. - getService(Ci.nsICertOverrideService); - cos.clearValidityOverride("nocert.example.com", -1); - cos.clearValidityOverride("self-signed.example.com", -1); - cos.clearValidityOverride("untrusted.example.com", -1); - cos.clearValidityOverride("expired.example.com", -1); - - try { - Services.prefs.clearUserPref(PREF_INSTALL_REQUIREBUILTINCERTS); - } - catch (e) { - } - - if (gPendingInstall) { - gTests = []; - ok(false, "Timed out in the middle of downloading " + gPendingInstall.sourceURI.spec); - try { - gPendingInstall.cancel(); - } - catch (e) { - } - } - }); - - run_next_test(); -} - -function end_test() { - info("All tests completed in " + (Date.now() - gStart) + "ms"); - finish(); -} - -function add_install_test(mainURL, redirectURL, expectedStatus) { - gTests.push([mainURL, redirectURL, expectedStatus]); -} - -function run_install_tests(callback) { - function run_next_install_test() { - if (gTests.length == 0) { - callback(); - return; - } - gLast = Date.now(); - - let [mainURL, redirectURL, expectedStatus] = gTests.shift(); - if (redirectURL) { - var url = mainURL + redirect + redirectURL + xpi; - var message = "Should have seen the right result for an install redirected from " + - mainURL + " to " + redirectURL; - } - else { - url = mainURL + xpi; - message = "Should have seen the right result for an install from " + - mainURL; - } - - AddonManager.getInstallForURL(url, function(install) { - gPendingInstall = install; - install.addListener({ - onDownloadEnded: function(install) { - is(SUCCESS, expectedStatus, message); - info("Install test ran in " + (Date.now() - gLast) + "ms"); - // Don't proceed with the install - install.cancel(); - gPendingInstall = null; - run_next_install_test(); - return false; - }, - - onDownloadFailed: function(install) { - is(install.error, expectedStatus, message); - info("Install test ran in " + (Date.now() - gLast) + "ms"); - gPendingInstall = null; - run_next_install_test(); - } - }); - install.install(); - }, "application/x-xpinstall"); - } - - run_next_install_test(); -} - -// Add overrides for the bad certificates -function addCertOverrides() { - addCertOverride("nocert.example.com", Ci.nsICertOverrideService.ERROR_MISMATCH); - addCertOverride("self-signed.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED); - addCertOverride("untrusted.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED); - addCertOverride("expired.example.com", Ci.nsICertOverrideService.ERROR_TIME); -} - -// Runs tests with built-in certificates required, no certificate exceptions -// and no hashes -add_test(function() { - // Tests that a simple install works as expected. - add_install_test(HTTP, null, SUCCESS); - add_install_test(HTTPS, null, NETWORK_FAILURE); - add_install_test(NOCERT, null, NETWORK_FAILURE); - add_install_test(SELFSIGNED, null, NETWORK_FAILURE); - add_install_test(UNTRUSTED, null, NETWORK_FAILURE); - add_install_test(EXPIRED, null, NETWORK_FAILURE); - - // Tests that redirecting from http to other servers works as expected - add_install_test(HTTP, HTTP, SUCCESS); - add_install_test(HTTP, HTTPS, SUCCESS); - add_install_test(HTTP, NOCERT, NETWORK_FAILURE); - add_install_test(HTTP, SELFSIGNED, NETWORK_FAILURE); - add_install_test(HTTP, UNTRUSTED, NETWORK_FAILURE); - add_install_test(HTTP, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from valid https to other servers works as expected - add_install_test(HTTPS, HTTP, NETWORK_FAILURE); - add_install_test(HTTPS, HTTPS, NETWORK_FAILURE); - add_install_test(HTTPS, NOCERT, NETWORK_FAILURE); - add_install_test(HTTPS, SELFSIGNED, NETWORK_FAILURE); - add_install_test(HTTPS, UNTRUSTED, NETWORK_FAILURE); - add_install_test(HTTPS, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from nocert https to other servers works as expected - add_install_test(NOCERT, HTTP, NETWORK_FAILURE); - add_install_test(NOCERT, HTTPS, NETWORK_FAILURE); - add_install_test(NOCERT, NOCERT, NETWORK_FAILURE); - add_install_test(NOCERT, SELFSIGNED, NETWORK_FAILURE); - add_install_test(NOCERT, UNTRUSTED, NETWORK_FAILURE); - add_install_test(NOCERT, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from self-signed https to other servers works as expected - add_install_test(SELFSIGNED, HTTP, NETWORK_FAILURE); - add_install_test(SELFSIGNED, HTTPS, NETWORK_FAILURE); - add_install_test(SELFSIGNED, NOCERT, NETWORK_FAILURE); - add_install_test(SELFSIGNED, SELFSIGNED, NETWORK_FAILURE); - add_install_test(SELFSIGNED, UNTRUSTED, NETWORK_FAILURE); - add_install_test(SELFSIGNED, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from untrusted https to other servers works as expected - add_install_test(UNTRUSTED, HTTP, NETWORK_FAILURE); - add_install_test(UNTRUSTED, HTTPS, NETWORK_FAILURE); - add_install_test(UNTRUSTED, NOCERT, NETWORK_FAILURE); - add_install_test(UNTRUSTED, SELFSIGNED, NETWORK_FAILURE); - add_install_test(UNTRUSTED, UNTRUSTED, NETWORK_FAILURE); - add_install_test(UNTRUSTED, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from expired https to other servers works as expected - add_install_test(EXPIRED, HTTP, NETWORK_FAILURE); - add_install_test(EXPIRED, HTTPS, NETWORK_FAILURE); - add_install_test(EXPIRED, NOCERT, NETWORK_FAILURE); - add_install_test(EXPIRED, SELFSIGNED, NETWORK_FAILURE); - add_install_test(EXPIRED, UNTRUSTED, NETWORK_FAILURE); - add_install_test(EXPIRED, EXPIRED, NETWORK_FAILURE); - - run_install_tests(run_next_test); -}); - -// Runs tests without requiring built-in certificates, no certificate -// exceptions and no hashes -add_test(function() { - Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false); - - // Tests that a simple install works as expected. - add_install_test(HTTP, null, SUCCESS); - add_install_test(HTTPS, null, SUCCESS); - add_install_test(NOCERT, null, NETWORK_FAILURE); - add_install_test(SELFSIGNED, null, NETWORK_FAILURE); - add_install_test(UNTRUSTED, null, NETWORK_FAILURE); - add_install_test(EXPIRED, null, NETWORK_FAILURE); - - // Tests that redirecting from http to other servers works as expected - add_install_test(HTTP, HTTP, SUCCESS); - add_install_test(HTTP, HTTPS, SUCCESS); - add_install_test(HTTP, NOCERT, NETWORK_FAILURE); - add_install_test(HTTP, SELFSIGNED, NETWORK_FAILURE); - add_install_test(HTTP, UNTRUSTED, NETWORK_FAILURE); - add_install_test(HTTP, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from valid https to other servers works as expected - add_install_test(HTTPS, HTTP, NETWORK_FAILURE); - add_install_test(HTTPS, HTTPS, SUCCESS); - add_install_test(HTTPS, NOCERT, NETWORK_FAILURE); - add_install_test(HTTPS, SELFSIGNED, NETWORK_FAILURE); - add_install_test(HTTPS, UNTRUSTED, NETWORK_FAILURE); - add_install_test(HTTPS, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from nocert https to other servers works as expected - add_install_test(NOCERT, HTTP, NETWORK_FAILURE); - add_install_test(NOCERT, HTTPS, NETWORK_FAILURE); - add_install_test(NOCERT, NOCERT, NETWORK_FAILURE); - add_install_test(NOCERT, SELFSIGNED, NETWORK_FAILURE); - add_install_test(NOCERT, UNTRUSTED, NETWORK_FAILURE); - add_install_test(NOCERT, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from self-signed https to other servers works as expected - add_install_test(SELFSIGNED, HTTP, NETWORK_FAILURE); - add_install_test(SELFSIGNED, HTTPS, NETWORK_FAILURE); - add_install_test(SELFSIGNED, NOCERT, NETWORK_FAILURE); - add_install_test(SELFSIGNED, SELFSIGNED, NETWORK_FAILURE); - add_install_test(SELFSIGNED, UNTRUSTED, NETWORK_FAILURE); - add_install_test(SELFSIGNED, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from untrusted https to other servers works as expected - add_install_test(UNTRUSTED, HTTP, NETWORK_FAILURE); - add_install_test(UNTRUSTED, HTTPS, NETWORK_FAILURE); - add_install_test(UNTRUSTED, NOCERT, NETWORK_FAILURE); - add_install_test(UNTRUSTED, SELFSIGNED, NETWORK_FAILURE); - add_install_test(UNTRUSTED, UNTRUSTED, NETWORK_FAILURE); - add_install_test(UNTRUSTED, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from expired https to other servers works as expected - add_install_test(EXPIRED, HTTP, NETWORK_FAILURE); - add_install_test(EXPIRED, HTTPS, NETWORK_FAILURE); - add_install_test(EXPIRED, NOCERT, NETWORK_FAILURE); - add_install_test(EXPIRED, SELFSIGNED, NETWORK_FAILURE); - add_install_test(EXPIRED, UNTRUSTED, NETWORK_FAILURE); - add_install_test(EXPIRED, EXPIRED, NETWORK_FAILURE); - - run_install_tests(run_next_test); -}); - -// Runs tests with built-in certificates required, all certificate exceptions -// and no hashes -add_test(function() { - Services.prefs.clearUserPref(PREF_INSTALL_REQUIREBUILTINCERTS); - addCertOverrides(); - - // Tests that a simple install works as expected. - add_install_test(HTTP, null, SUCCESS); - add_install_test(HTTPS, null, NETWORK_FAILURE); - add_install_test(NOCERT, null, NETWORK_FAILURE); - add_install_test(SELFSIGNED, null, NETWORK_FAILURE); - add_install_test(UNTRUSTED, null, NETWORK_FAILURE); - add_install_test(EXPIRED, null, NETWORK_FAILURE); - - // Tests that redirecting from http to other servers works as expected - add_install_test(HTTP, HTTP, SUCCESS); - add_install_test(HTTP, HTTPS, SUCCESS); - add_install_test(HTTP, NOCERT, SUCCESS); - add_install_test(HTTP, SELFSIGNED, SUCCESS); - add_install_test(HTTP, UNTRUSTED, SUCCESS); - add_install_test(HTTP, EXPIRED, SUCCESS); - - // Tests that redirecting from valid https to other servers works as expected - add_install_test(HTTPS, HTTP, NETWORK_FAILURE); - add_install_test(HTTPS, HTTPS, NETWORK_FAILURE); - add_install_test(HTTPS, NOCERT, NETWORK_FAILURE); - add_install_test(HTTPS, SELFSIGNED, NETWORK_FAILURE); - add_install_test(HTTPS, UNTRUSTED, NETWORK_FAILURE); - add_install_test(HTTPS, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from nocert https to other servers works as expected - add_install_test(NOCERT, HTTP, NETWORK_FAILURE); - add_install_test(NOCERT, HTTPS, NETWORK_FAILURE); - add_install_test(NOCERT, NOCERT, NETWORK_FAILURE); - add_install_test(NOCERT, SELFSIGNED, NETWORK_FAILURE); - add_install_test(NOCERT, UNTRUSTED, NETWORK_FAILURE); - add_install_test(NOCERT, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from self-signed https to other servers works as expected - add_install_test(SELFSIGNED, HTTP, NETWORK_FAILURE); - add_install_test(SELFSIGNED, HTTPS, NETWORK_FAILURE); - add_install_test(SELFSIGNED, NOCERT, NETWORK_FAILURE); - add_install_test(SELFSIGNED, SELFSIGNED, NETWORK_FAILURE); - add_install_test(SELFSIGNED, UNTRUSTED, NETWORK_FAILURE); - add_install_test(SELFSIGNED, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from untrusted https to other servers works as expected - add_install_test(UNTRUSTED, HTTP, NETWORK_FAILURE); - add_install_test(UNTRUSTED, HTTPS, NETWORK_FAILURE); - add_install_test(UNTRUSTED, NOCERT, NETWORK_FAILURE); - add_install_test(UNTRUSTED, SELFSIGNED, NETWORK_FAILURE); - add_install_test(UNTRUSTED, UNTRUSTED, NETWORK_FAILURE); - add_install_test(UNTRUSTED, EXPIRED, NETWORK_FAILURE); - - // Tests that redirecting from expired https to other servers works as expected - add_install_test(EXPIRED, HTTP, NETWORK_FAILURE); - add_install_test(EXPIRED, HTTPS, NETWORK_FAILURE); - add_install_test(EXPIRED, NOCERT, NETWORK_FAILURE); - add_install_test(EXPIRED, SELFSIGNED, NETWORK_FAILURE); - add_install_test(EXPIRED, UNTRUSTED, NETWORK_FAILURE); - add_install_test(EXPIRED, EXPIRED, NETWORK_FAILURE); - - run_install_tests(run_next_test); -}); - -// Runs tests without requiring built-in certificates, all certificate -// exceptions and no hashes -add_test(function() { - Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false); - - // Tests that a simple install works as expected. - add_install_test(HTTP, null, SUCCESS); - add_install_test(HTTPS, null, SUCCESS); - add_install_test(NOCERT, null, SUCCESS); - add_install_test(SELFSIGNED, null, SUCCESS); - add_install_test(UNTRUSTED, null, SUCCESS); - add_install_test(EXPIRED, null, SUCCESS); - - // Tests that redirecting from http to other servers works as expected - add_install_test(HTTP, HTTP, SUCCESS); - add_install_test(HTTP, HTTPS, SUCCESS); - add_install_test(HTTP, NOCERT, SUCCESS); - add_install_test(HTTP, SELFSIGNED, SUCCESS); - add_install_test(HTTP, UNTRUSTED, SUCCESS); - add_install_test(HTTP, EXPIRED, SUCCESS); - - // Tests that redirecting from valid https to other servers works as expected - add_install_test(HTTPS, HTTP, NETWORK_FAILURE); - add_install_test(HTTPS, HTTPS, SUCCESS); - add_install_test(HTTPS, NOCERT, SUCCESS); - add_install_test(HTTPS, SELFSIGNED, SUCCESS); - add_install_test(HTTPS, UNTRUSTED, SUCCESS); - add_install_test(HTTPS, EXPIRED, SUCCESS); - - // Tests that redirecting from nocert https to other servers works as expected - add_install_test(NOCERT, HTTP, NETWORK_FAILURE); - add_install_test(NOCERT, HTTPS, SUCCESS); - add_install_test(NOCERT, NOCERT, SUCCESS); - add_install_test(NOCERT, SELFSIGNED, SUCCESS); - add_install_test(NOCERT, UNTRUSTED, SUCCESS); - add_install_test(NOCERT, EXPIRED, SUCCESS); - - // Tests that redirecting from self-signed https to other servers works as expected - add_install_test(SELFSIGNED, HTTP, NETWORK_FAILURE); - add_install_test(SELFSIGNED, HTTPS, SUCCESS); - add_install_test(SELFSIGNED, NOCERT, SUCCESS); - add_install_test(SELFSIGNED, SELFSIGNED, SUCCESS); - add_install_test(SELFSIGNED, UNTRUSTED, SUCCESS); - add_install_test(SELFSIGNED, EXPIRED, SUCCESS); - - // Tests that redirecting from untrusted https to other servers works as expected - add_install_test(UNTRUSTED, HTTP, NETWORK_FAILURE); - add_install_test(UNTRUSTED, HTTPS, SUCCESS); - add_install_test(UNTRUSTED, NOCERT, SUCCESS); - add_install_test(UNTRUSTED, SELFSIGNED, SUCCESS); - add_install_test(UNTRUSTED, UNTRUSTED, SUCCESS); - add_install_test(UNTRUSTED, EXPIRED, SUCCESS); - - // Tests that redirecting from expired https to other servers works as expected - add_install_test(EXPIRED, HTTP, NETWORK_FAILURE); - add_install_test(EXPIRED, HTTPS, SUCCESS); - add_install_test(EXPIRED, NOCERT, SUCCESS); - add_install_test(EXPIRED, SELFSIGNED, SUCCESS); - add_install_test(EXPIRED, UNTRUSTED, SUCCESS); - add_install_test(EXPIRED, EXPIRED, SUCCESS); - - run_install_tests(run_next_test); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_list.js b/toolkit/mozapps/webextensions/test/browser/browser_list.js deleted file mode 100644 index 49427329f..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_list.js +++ /dev/null @@ -1,956 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests the list view - -var tempScope = {}; -Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", tempScope); -var LightweightThemeManager = tempScope.LightweightThemeManager; -const { REQUIRE_SIGNING } = Components.utils.import("resource://gre/modules/addons/AddonConstants.jsm", {}); - -var gProvider; -var gManagerWindow; -var gCategoryUtilities; - -var gApp = document.getElementById("bundle_brand").getString("brandShortName"); -var gVersion = Services.appinfo.version; -var gBlocklistURL = Services.urlFormatter.formatURLPref("extensions.blocklist.detailsURL"); -var gDate = new Date(2010, 7, 16); -var infoURL = Services.urlFormatter.formatURLPref("app.support.baseURL") + "unsigned-addons"; - -const EXPECTED_ADDONS = 13; - -var gLWTheme = { - id: "4", - version: "1", - name: "Bling", - description: "SO MUCH BLING!", - author: "Pixel Pusher", - homepageURL: "http://mochi.test:8888/data/index.html", - headerURL: "http://mochi.test:8888/data/header.png", - footerURL: "http://mochi.test:8888/data/footer.png", - previewURL: "http://mochi.test:8888/data/preview.png", - iconURL: "http://mochi.test:8888/data/icon.png" - }; - -add_task(function*() { - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "Test add-on", - version: "1.0", - description: "A test add-on", - longDescription: " A longer description", - updateDate: gDate - }, { - id: "addon2@tests.mozilla.org", - name: "Test add-on 2", - version: "2.0", - longDescription: " A longer description", - _userDisabled: true, - isActive: false, - }, { - id: "addon3@tests.mozilla.org", - name: "Test add-on 3", - longDescription: " A longer description", - isActive: false, - isCompatible: false, - appDisabled: true, - permissions: AddonManager.PERM_CAN_ENABLE | - AddonManager.PERM_CAN_DISABLE | - AddonManager.PERM_CAN_UPGRADE - }, { - id: "addon4@tests.mozilla.org", - blocklistURL: "http://example.com/addon4@tests.mozilla.org", - name: "Test add-on 4", - _userDisabled: true, - isActive: false, - blocklistState: Ci.nsIBlocklistService.STATE_SOFTBLOCKED - }, { - id: "addon5@tests.mozilla.org", - blocklistURL: "http://example.com/addon5@tests.mozilla.org", - name: "Test add-on 5", - isActive: false, - blocklistState: Ci.nsIBlocklistService.STATE_BLOCKED, - appDisabled: true - }, { - id: "addon6@tests.mozilla.org", - blocklistURL: "http://example.com/addon6@tests.mozilla.org", - name: "Test add-on 6", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon7@tests.mozilla.org", - blocklistURL: "http://example.com/addon7@tests.mozilla.org", - name: "Test add-on 7", - blocklistState: Ci.nsIBlocklistService.STATE_OUTDATED, - }, { - id: "addon8@tests.mozilla.org", - blocklistURL: "http://example.com/addon8@tests.mozilla.org", - name: "Test add-on 8", - blocklistState: Ci.nsIBlocklistService.STATE_VULNERABLE_UPDATE_AVAILABLE, - }, { - id: "addon9@tests.mozilla.org", - blocklistURL: "http://example.com/addon9@tests.mozilla.org", - name: "Test add-on 9", - blocklistState: Ci.nsIBlocklistService.STATE_VULNERABLE_NO_UPDATE, - }, { - id: "addon10@tests.mozilla.org", - name: "Test add-on 10", - signedState: AddonManager.SIGNEDSTATE_MISSING, - }, { - id: "addon11@tests.mozilla.org", - name: "Test add-on 11", - signedState: AddonManager.SIGNEDSTATE_MISSING, - isActive: false, - isCompatible: false, - appDisabled: true, - }, { - id: "addon12@tests.mozilla.org", - name: "Test add-on 12", - signedState: AddonManager.SIGNEDSTATE_PRELIMINARY, - foreignInstall: true, - }, { - id: "addon13@tests.mozilla.org", - name: "Test add-on 13", - signedState: AddonManager.SIGNEDSTATE_SIGNED, - foreignInstall: true, - }, { - id: "addon15@tests.mozilla.org", - name: "Test add-on 15", - hidden: true, - }]); - - gManagerWindow = yield open_manager(null); - gCategoryUtilities = new CategoryUtilities(gManagerWindow); -}); - -function get_test_items() { - var tests = "@tests.mozilla.org"; - - var items = {}; - var item = gManagerWindow.document.getElementById("addon-list").firstChild; - - while (item) { - if (item.mAddon.id.substring(item.mAddon.id.length - tests.length) == tests && - !is_hidden(item)) - items[item.mAddon.name] = item; - item = item.nextSibling; - } - - return items; -} - -function get_node(parent, anonid) { - return parent.ownerDocument.getAnonymousElementByAttribute(parent, "anonid", anonid); -} - -function get_class_node(parent, cls) { - return parent.ownerDocument.getAnonymousElementByAttribute(parent, "class", cls); -} - -// Check that the list appears to have displayed correctly and trigger some -// changes -add_task(function*() { - yield gCategoryUtilities.openType("extension"); - let items = get_test_items(); - is(Object.keys(items).length, EXPECTED_ADDONS, "Should be the right number of add-ons installed"); - - info("Addon 1"); - let addon = items["Test add-on"]; - addon.parentNode.ensureElementIsVisible(addon); - let { name, version } = yield get_tooltip_info(addon); - is(get_node(addon, "name").value, "Test add-on", "Name should be correct"); - is(name, "Test add-on", "Tooltip name should be correct"); - is(version, "1.0", "Tooltip version should be correct"); - is(get_node(addon, "description").value, "A test add-on", "Description should be correct"); - is_element_hidden(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be hidden"); - is_element_hidden(get_class_node(addon, "update-postfix"), "Update postfix should be hidden"); - is(get_node(addon, "date-updated").value, formatDate(gDate), "Update date should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Disabling"); - EventUtils.synthesizeMouseAtCenter(get_node(addon, "disable-btn"), {}, gManagerWindow); - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be visible"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); - is(get_node(addon, "pending").textContent, "Test add-on will be disabled after you restart " + gApp + ".", "Pending message should be correct"); - - info("Addon 2"); - addon = items["Test add-on 2"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 2", "Name should be correct"); - is(name, "Test add-on 2", "Tooltip name should be correct"); - is(version, "2.0", "Tooltip version should be correct"); - is_element_hidden(get_node(addon, "description"), "Description should be hidden"); - is_element_visible(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be visible"); - is_element_hidden(get_class_node(addon, "update-postfix"), "Update postfix should be hidden"); - is(get_node(addon, "date-updated").value, "Unknown", "Date should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Enabling"); - EventUtils.synthesizeMouseAtCenter(get_node(addon, "enable-btn"), {}, gManagerWindow); - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); - is(get_node(addon, "pending").textContent, "Test add-on 2 will be enabled after you restart " + gApp + ".", "Pending message should be correct"); - - info("Addon 3"); - addon = items["Test add-on 3"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 3", "Name should be correct"); - is(name, "Test add-on 3", "Tooltip name should be correct"); - is(version, undefined, "Tooltip version should be hidden"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_hidden(get_node(addon, "remove-btn"), "Remove button should be hidden"); - - is_element_visible(get_node(addon, "warning"), "Warning message should be visible"); - is(get_node(addon, "warning").textContent, "Test add-on 3 is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Addon 4"); - addon = items["Test add-on 4"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 4", "Name should be correct"); - is(name, "Test add-on 4", "Tooltip name should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_visible(get_node(addon, "warning"), "Warning message should be visible"); - is(get_node(addon, "warning").textContent, "Test add-on 4 is known to cause security or stability issues.", "Warning message should be correct"); - is_element_visible(get_node(addon, "warning-link"), "Warning link should be visible"); - is(get_node(addon, "warning-link").value, "More Information", "Warning link text should be correct"); - is(get_node(addon, "warning-link").href, "http://example.com/addon4@tests.mozilla.org", "Warning link should be correct"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Enabling"); - EventUtils.synthesizeMouseAtCenter(get_node(addon, "enable-btn"), {}, gManagerWindow); - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); - is(get_node(addon, "pending").textContent, "Test add-on 4 will be enabled after you restart " + gApp + ".", "Pending message should be correct"); - - info("Addon 5"); - addon = items["Test add-on 5"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 5", "Name should be correct"); - is(name, "Test add-on 5", "Tooltip name should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_visible(get_node(addon, "error"), "Error message should be visible"); - is(get_node(addon, "error").textContent, "Test add-on 5 has been disabled due to security or stability issues.", "Error message should be correct"); - is_element_visible(get_node(addon, "error-link"), "Error link should be visible"); - is(get_node(addon, "error-link").value, "More Information", "Error link text should be correct"); - is(get_node(addon, "error-link").href, "http://example.com/addon5@tests.mozilla.org", "Error link should be correct"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Addon 6"); - addon = items["Test add-on 6"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 6", "Name should be correct"); - is(name, "Test add-on 6", "Tooltip name should be correct"); - is_element_hidden(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be hidden"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be visible"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Disabling"); - EventUtils.synthesizeMouseAtCenter(get_node(addon, "disable-btn"), {}, gManagerWindow); - is_element_visible(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be visible"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be visible"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Addon 7"); - addon = items["Test add-on 7"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 7", "Name should be correct"); - is(name, "Test add-on 7", "Tooltip name should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_visible(get_node(addon, "warning"), "Warning message should be hidden"); - is(get_node(addon, "warning").textContent, "An important update is available for Test add-on 7.", "Warning message should be correct"); - is_element_visible(get_node(addon, "warning-link"), "Warning link should be visible"); - is(get_node(addon, "warning-link").value, "Update Now", "Warning link text should be correct"); - is(get_node(addon, "warning-link").href, "http://example.com/addon7@tests.mozilla.org", "Warning link should be correct"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Disabling"); - EventUtils.synthesizeMouseAtCenter(get_node(addon, "disable-btn"), {}, gManagerWindow); - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be visible"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); - is(get_node(addon, "pending").textContent, "Test add-on 7 will be disabled after you restart " + gApp + ".", "Pending message should be correct"); - - info("Addon 8"); - addon = items["Test add-on 8"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 8", "Name should be correct"); - is(name, "Test add-on 8", "Tooltip name should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_visible(get_node(addon, "error"), "Error message should be visible"); - is(get_node(addon, "error").textContent, "Test add-on 8 is known to be vulnerable and should be updated.", "Error message should be correct"); - is_element_visible(get_node(addon, "error-link"), "Error link should be visible"); - is(get_node(addon, "error-link").value, "Update Now", "Error link text should be correct"); - is(get_node(addon, "error-link").href, "http://example.com/addon8@tests.mozilla.org", "Error link should be correct"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Addon 9"); - addon = items["Test add-on 9"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 9", "Name should be correct"); - is(name, "Test add-on 9", "Tooltip name should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_visible(get_node(addon, "error"), "Error message should be visible"); - is(get_node(addon, "error").textContent, "Test add-on 9 is known to be vulnerable. Use with caution.", "Error message should be correct"); - is_element_visible(get_node(addon, "error-link"), "Error link should be visible"); - is(get_node(addon, "error-link").value, "More Information", "Error link text should be correct"); - is(get_node(addon, "error-link").href, "http://example.com/addon9@tests.mozilla.org", "Error link should be correct"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - // These tests are only appropriate when signing can be turned off - if (!REQUIRE_SIGNING) { - info("Addon 10"); - addon = items["Test add-on 10"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 10", "Name should be correct"); - is(name, "Test add-on 10", "Tooltip name should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_visible(get_node(addon, "warning"), "Warning message should be visible"); - is(get_node(addon, "warning").textContent, "Test add-on 10 could not be verified for use in " + gApp + ". Proceed with caution.", "Warning message should be correct"); - is_element_visible(get_node(addon, "warning-link"), "Warning link should be visible"); - is(get_node(addon, "warning-link").value, "More Information", "Warning link text should be correct"); - is(get_node(addon, "warning-link").href, infoURL, "Warning link should be correct"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Addon 11"); - addon = items["Test add-on 11"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 11", "Name should be correct"); - is(name, "Test add-on 11", "Tooltip name should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_visible(get_node(addon, "warning"), "Warning message should be visible"); - is(get_node(addon, "warning").textContent, "Test add-on 11 is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Filter for disabled unsigned extensions shouldn't appear because signing checks are off"); - let filterButton = gManagerWindow.document.getElementById("show-disabled-unsigned-extensions"); - let showAllButton = gManagerWindow.document.getElementById("show-all-extensions"); - let signingInfoUI = gManagerWindow.document.getElementById("disabled-unsigned-addons-info"); - is_element_hidden(filterButton, "Button for showing disabled unsigned extensions should be hidden"); - is_element_hidden(showAllButton, "Button for showing all extensions should be hidden"); - is_element_hidden(signingInfoUI, "Signing info UI should be hidden"); - } -}); - -// Check the add-ons are now in the right state -add_task(function*() { - let [a1, a2, a4, a6] = yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon6@tests.mozilla.org"]); - - is(a1.pendingOperations, AddonManager.PENDING_DISABLE, "Add-on 1 should be pending disable"); - is(a2.pendingOperations, AddonManager.PENDING_ENABLE, "Add-on 2 should be pending enable"); - is(a4.pendingOperations, AddonManager.PENDING_ENABLE, "Add-on 4 should be pending enable"); -}); - -// Reload the list to make sure the changes are still pending and that undoing -// works -add_task(function*() { - yield gCategoryUtilities.openType("plugin"); - yield gCategoryUtilities.openType("extension"); - - let items = get_test_items(); - is(Object.keys(items).length, EXPECTED_ADDONS, "Should be the right number of add-ons installed"); - - info("Addon 1"); - let addon = items["Test add-on"]; - addon.parentNode.ensureElementIsVisible(addon); - let { name, version } = yield get_tooltip_info(addon); - is(get_node(addon, "name").value, "Test add-on", "Name should be correct"); - is(name, "Test add-on", "Tooltip name should be correct"); - is(version, "1.0", "Tooltip version should be correct"); - is_element_visible(get_node(addon, "description"), "Description should be visible"); - is(get_node(addon, "description").value, "A test add-on", "Description should be correct"); - is_element_hidden(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be hidden"); - is_element_hidden(get_class_node(addon, "update-postfix"), "Update postfix should be hidden"); - is(get_node(addon, "date-updated").value, formatDate(gDate), "Update date should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); - is(get_node(addon, "pending").textContent, "Test add-on will be disabled after you restart " + gApp + ".", "Pending message should be correct"); - - info("Undoing"); - EventUtils.synthesizeMouseAtCenter(get_node(addon, "undo-btn"), {}, gManagerWindow); - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Addon 2"); - addon = items["Test add-on 2"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 2", "Name should be correct"); - is(name, "Test add-on 2", "Tooltip name should be correct"); - is(version, "2.0", "Tooltip version should be correct"); - is_element_hidden(get_node(addon, "description"), "Description should be hidden"); - is_element_visible(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be visible"); - is_element_hidden(get_class_node(addon, "update-postfix"), "Update postfix should be hidden"); - is(get_node(addon, "date-updated").value, "Unknown", "Date should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); - is(get_node(addon, "pending").textContent, "Test add-on 2 will be enabled after you restart " + gApp + ".", "Pending message should be correct"); - - info("Undoing"); - EventUtils.synthesizeMouseAtCenter(get_node(addon, "undo-btn"), {}, gManagerWindow); - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Addon 4"); - addon = items["Test add-on 4"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 4", "Name should be correct"); - is(name, "Test add-on 4", "Tooltip name should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); - is(get_node(addon, "pending").textContent, "Test add-on 4 will be enabled after you restart " + gApp + ".", "Pending message should be correct"); - - info("Undoing"); - EventUtils.synthesizeMouseAtCenter(get_node(addon, "undo-btn"), {}, gManagerWindow); - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_visible(get_node(addon, "warning"), "Warning message should be visible"); - is(get_node(addon, "warning").textContent, "Test add-on 4 is known to cause security or stability issues.", "Warning message should be correct"); - is_element_visible(get_node(addon, "warning-link"), "Warning link should be visible"); - is(get_node(addon, "warning-link").value, "More Information", "Warning link text should be correct"); - is(get_node(addon, "warning-link").href, "http://example.com/addon4@tests.mozilla.org", "Warning link should be correct"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Addon 6"); - addon = items["Test add-on 6"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 6", "Name should be correct"); - is(name, "Test add-on 6", "Tooltip name should be correct"); - is_element_visible(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be visible"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be visible"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Enabling"); - EventUtils.synthesizeMouseAtCenter(get_node(addon, "enable-btn"), {}, gManagerWindow); - is_element_hidden(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be hidden"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be visible"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); - - info("Addon 7"); - addon = items["Test add-on 7"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 7", "Name should be correct"); - is(name, "Test add-on 7", "Tooltip name should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be visible"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); - is(get_node(addon, "pending").textContent, "Test add-on 7 will be disabled after you restart " + gApp + ".", "Pending message should be correct"); - - info("Undoing"); - EventUtils.synthesizeMouseAtCenter(get_node(addon, "undo-btn"), {}, gManagerWindow); - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_visible(get_node(addon, "warning"), "Warning message should be hidden"); - is(get_node(addon, "warning").textContent, "An important update is available for Test add-on 7.", "Warning message should be correct"); - is_element_visible(get_node(addon, "warning-link"), "Warning link should be visible"); - is(get_node(addon, "warning-link").value, "Update Now", "Warning link text should be correct"); - is(get_node(addon, "warning-link").href, "http://example.com/addon7@tests.mozilla.org", "Warning link should be correct"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); -}); - -// Check the add-ons are now in the right state -add_task(function*() { - let [a1, a2, a4] = yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon4@tests.mozilla.org"]); - - is(a1.pendingOperations, 0, "Add-on 1 should not have any pending operations"); - is(a2.pendingOperations, 0, "Add-on 1 should not have any pending operations"); - is(a4.pendingOperations, 0, "Add-on 1 should not have any pending operations"); -}); - -// Check that upgrades with onExternalInstall take effect immediately -add_task(function*() { - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "Test add-on replacement", - version: "2.0", - description: "A test add-on with a new description", - updateDate: gDate, - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon14@tests.mozilla.org", - name: "Test add-on 14", - hidden: true, - }]); - - let items = get_test_items(); - is(Object.keys(items).length, EXPECTED_ADDONS, "Should be the right number of add-ons installed"); - - let addon = items["Test add-on replacement"]; - addon.parentNode.ensureElementIsVisible(addon); - let { name, version } = yield get_tooltip_info(addon); - is(get_node(addon, "name").value, "Test add-on replacement", "Name should be correct"); - is(name, "Test add-on replacement", "Tooltip name should be correct"); - is(version, "2.0", "Tooltip version should be correct"); - is_element_visible(get_node(addon, "description"), "Description should be visible"); - is(get_node(addon, "description").value, "A test add-on with a new description", "Description should be correct"); - is_element_hidden(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be hidden"); - is_element_hidden(get_class_node(addon, "update-postfix"), "Update postfix should be hidden"); - is(get_node(addon, "date-updated").value, formatDate(gDate), "Update date should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); -}); - -// Check that focus changes correctly move around the selected list item -add_task(function*() { - function is_node_in_list(aNode) { - var list = gManagerWindow.document.getElementById("addon-list"); - - while (aNode && aNode != list) - aNode = aNode.parentNode; - - if (aNode) - return true; - return false; - } - - // Ignore the OSX full keyboard access setting - Services.prefs.setBoolPref("accessibility.tabfocus_applies_to_xul", false); - - let items = get_test_items(); - - var fm = Cc["@mozilla.org/focus-manager;1"]. - getService(Ci.nsIFocusManager); - - let addon = items["Test add-on 6"]; - addon.parentNode.ensureElementIsVisible(addon); - EventUtils.synthesizeMouseAtCenter(addon, { }, gManagerWindow); - is(fm.focusedElement, addon.parentNode, "Focus should have moved to the list"); - - EventUtils.synthesizeKey("VK_TAB", { }, gManagerWindow); - is(fm.focusedElement, get_node(addon, "details-btn"), "Focus should have moved to the more button"); - - EventUtils.synthesizeKey("VK_TAB", { }, gManagerWindow); - is(fm.focusedElement, get_node(addon, "disable-btn"), "Focus should have moved to the disable button"); - - EventUtils.synthesizeKey("VK_TAB", { }, gManagerWindow); - is(fm.focusedElement, get_node(addon, "remove-btn"), "Focus should have moved to the remove button"); - - EventUtils.synthesizeKey("VK_TAB", { }, gManagerWindow); - ok(!is_node_in_list(fm.focusedElement), "Focus should be outside the list"); - - EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, gManagerWindow); - is(fm.focusedElement, get_node(addon, "remove-btn"), "Focus should have moved to the remove button"); - - EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, gManagerWindow); - EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, gManagerWindow); - is(fm.focusedElement, get_node(addon, "details-btn"), "Focus should have moved to the more button"); - - EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, gManagerWindow); - is(fm.focusedElement, addon.parentNode, "Focus should have moved to the list"); - - EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, gManagerWindow); - ok(!is_node_in_list(fm.focusedElement), "Focus should be outside the list"); - - try { - Services.prefs.clearUserPref("accessibility.tabfocus_applies_to_xul"); - } - catch (e) { } -}); - - -add_task(function*() { - info("Enabling lightweight theme"); - LightweightThemeManager.currentTheme = gLWTheme; - - gManagerWindow.loadView("addons://list/theme"); - yield new Promise(resolve => wait_for_view_load(gManagerWindow, resolve)); - - var addon = get_addon_element(gManagerWindow, "4@personas.mozilla.org"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - info("Disabling lightweight theme"); - LightweightThemeManager.currentTheme = null; - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_visible(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - let [aAddon] = yield promiseAddonsByIDs(["4@personas.mozilla.org"]); - aAddon.uninstall(); -}); - -// Check that onPropertyChanges for appDisabled updates the UI -add_task(function*() { - info("Checking that onPropertyChanges for appDisabled updates the UI"); - - let [aAddon] = yield promiseAddonsByIDs(["addon2@tests.mozilla.org"]); - aAddon.userDisabled = true; - aAddon.isCompatible = true; - aAddon.appDisabled = false; - - gManagerWindow.loadView("addons://list/extension"); - yield new Promise(resolve => wait_for_view_load(gManagerWindow, resolve)); - var el = get_addon_element(gManagerWindow, "addon2@tests.mozilla.org"); - - is(el.getAttribute("active"), "false", "Addon should not be marked as active"); - is_element_hidden(get_node(el, "warning"), "Warning message should not be visible"); - - info("Making addon incompatible and appDisabled"); - aAddon.isCompatible = false; - aAddon.appDisabled = true; - - is(el.getAttribute("active"), "false", "Addon should not be marked as active"); - is_element_visible(get_node(el, "warning"), "Warning message should be visible"); - is(get_node(el, "warning").textContent, "Test add-on 2 is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); -}); - -// Check that the list displays correctly when signing is required -add_task(function*() { - yield close_manager(gManagerWindow); - Services.prefs.setBoolPref("xpinstall.signatures.required", true); - gManagerWindow = yield open_manager(null); - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - yield gCategoryUtilities.openType("extension"); - let items = get_test_items(); - is(Object.keys(items).length, EXPECTED_ADDONS, "Should be the right number of add-ons installed"); - - info("Addon 10"); - let addon = items["Test add-on 10"]; - addon.parentNode.ensureElementIsVisible(addon); - let { name, version } = yield get_tooltip_info(addon); - is(get_node(addon, "name").value, "Test add-on 10", "Name should be correct"); - is(name, "Test add-on 10", "Tooltip name should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_visible(get_node(addon, "error"), "Error message should be visible"); - is(get_node(addon, "error").textContent, "Test add-on 10 could not be verified for use in " + gApp + " and has been disabled.", "Error message should be correct"); - is_element_visible(get_node(addon, "error-link"), "Error link should be visible"); - is(get_node(addon, "error-link").value, "More Information", "Error link text should be correct"); - is(get_node(addon, "error-link").href, infoURL, "Error link should be correct"); - - info("Addon 11"); - addon = items["Test add-on 11"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 11", "Name should be correct"); - is(name, "Test add-on 11", "Tooltip name should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_visible(get_node(addon, "error"), "Error message should be visible"); - is(get_node(addon, "error").textContent, "Test add-on 11 could not be verified for use in " + gApp + " and has been disabled.", "Error message should be correct"); - is_element_visible(get_node(addon, "error-link"), "Error link should be visible"); - is(get_node(addon, "error-link").value, "More Information", "Error link text should be correct"); - is(get_node(addon, "error-link").href, infoURL, "Error link should be correct"); - - info("Addon 12"); - addon = items["Test add-on 12"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)) - is(get_node(addon, "name").value, "Test add-on 12", "Name should be correct"); - is(name, "Test add-on 12", "Tooltip name should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); - - info("Addon 13"); - addon = items["Test add-on 13"]; - addon.parentNode.ensureElementIsVisible(addon); - ({ name, version } = yield get_tooltip_info(addon)); - is(get_node(addon, "name").value, "Test add-on 13", "Name should be correct"); - is(name, "Test add-on 13", "Tooltip name should be correct"); - - is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); - is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); - is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); - is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); - - is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); - is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); - is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); - - info("Filter for disabled unsigned extensions"); - let filterButton = gManagerWindow.document.getElementById("show-disabled-unsigned-extensions"); - let showAllButton = gManagerWindow.document.getElementById("show-all-extensions"); - let signingInfoUI = gManagerWindow.document.getElementById("disabled-unsigned-addons-info"); - is_element_visible(filterButton, "Button for showing disabled unsigned extensions should be visible"); - is_element_hidden(showAllButton, "Button for showing all extensions should be hidden"); - is_element_hidden(signingInfoUI, "Signing info UI should be hidden"); - - filterButton.click(); - - yield new Promise(resolve => wait_for_view_load(gManagerWindow, resolve)); - - is_element_hidden(filterButton, "Button for showing disabled unsigned extensions should be hidden"); - is_element_visible(showAllButton, "Button for showing all extensions should be visible"); - is_element_visible(signingInfoUI, "Signing info UI should be visible"); - - items = get_test_items(); - is(Object.keys(items).length, 2, "Two add-ons should be shown"); - is(Object.keys(items)[0], "Test add-on 10", "The disabled unsigned extension should be shown"); - is(Object.keys(items)[1], "Test add-on 11", "The disabled unsigned extension should be shown"); - - showAllButton.click(); - - yield new Promise(resolve => wait_for_view_load(gManagerWindow, resolve)); - - items = get_test_items(); - is(Object.keys(items).length, EXPECTED_ADDONS, "All add-ons should be shown again"); - is_element_visible(filterButton, "Button for showing disabled unsigned extensions should be visible again"); - is_element_hidden(showAllButton, "Button for showing all extensions should be hidden again"); - is_element_hidden(signingInfoUI, "Signing info UI should be hidden again"); - - Services.prefs.setBoolPref("xpinstall.signatures.required", false); -}); - -add_task(function*() { - return close_manager(gManagerWindow); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_manualupdates.js b/toolkit/mozapps/webextensions/test/browser/browser_manualupdates.js deleted file mode 100644 index 0c5eb2da6..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_manualupdates.js +++ /dev/null @@ -1,246 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests manual updates, including the Available Updates pane - -var gProvider; -var gManagerWindow; -var gCategoryUtilities; -var gAvailableCategory; - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "auto updating addon", - version: "1.0", - applyBackgroundUpdates: AddonManager.AUTOUPDATE_ENABLE - }]); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - - -add_test(function() { - gAvailableCategory = gManagerWindow.gCategories.get("addons://updates/available"); - is(gCategoryUtilities.isVisible(gAvailableCategory), false, "Available Updates category should initially be hidden"); - - gProvider.createAddons([{ - id: "addon2@tests.mozilla.org", - name: "manually updating addon", - version: "1.0", - isCompatible: false, - blocklistState: Ci.nsIBlocklistService.STATE_BLOCKED, - applyBackgroundUpdates: AddonManager.AUTOUPDATE_DISABLE - }]); - - is(gCategoryUtilities.isVisible(gAvailableCategory), false, "Available Updates category should still be hidden"); - - run_next_test(); -}); - - -add_test(function() { - let finished = 0; - function maybeRunNext() { - if (++finished == 2) - run_next_test(); - } - - gAvailableCategory.addEventListener("CategoryBadgeUpdated", function() { - gAvailableCategory.removeEventListener("CategoryBadgeUpdated", arguments.callee, false); - is(gCategoryUtilities.isVisible(gAvailableCategory), true, "Available Updates category should now be visible"); - is(gAvailableCategory.badgeCount, 1, "Badge for Available Updates should now be 1"); - maybeRunNext(); - }, false); - - gCategoryUtilities.openType("extension", function() { - gProvider.createInstalls([{ - name: "manually updating addon (new and improved!)", - existingAddon: gProvider.addons[1], - version: "1.1", - releaseNotesURI: Services.io.newURI(TESTROOT + "thereIsNoFileHere.xhtml", null, null) - }]); - - var item = get_addon_element(gManagerWindow, "addon2@tests.mozilla.org"); - get_tooltip_info(item).then(({ version }) => { - is(version, "1.0", "Should still show the old version in the tooltip"); - maybeRunNext(); - }); - }); -}); - - -add_test(function() { - wait_for_view_load(gManagerWindow, function() { - is(gManagerWindow.document.getElementById("categories").selectedItem.value, "addons://updates/available", "Available Updates category should now be selected"); - is(gManagerWindow.gViewController.currentViewId, "addons://updates/available", "Available Updates view should be the current view"); - run_next_test(); - }, true); - EventUtils.synthesizeMouseAtCenter(gAvailableCategory, { }, gManagerWindow); -}); - - -add_test(function() { - var list = gManagerWindow.document.getElementById("updates-list"); - is(list.itemCount, 1, "Should be 1 available update listed"); - var item = list.firstChild; - is(item.mAddon.id, "addon2@tests.mozilla.org", "Update item should be for the manually updating addon"); - - // The item in the list will be checking for update information asynchronously - // so we have to wait for it to complete. Doing the same async request should - // make our callback be called later. - AddonManager.getAllInstalls(run_next_test); -}); - -add_test(function() { - var list = gManagerWindow.document.getElementById("updates-list"); - var item = list.firstChild; - get_tooltip_info(item).then(({ version }) => { - is(version, "1.1", "Update item should have version number of the update"); - var postfix = gManagerWindow.document.getAnonymousElementByAttribute(item, "class", "update-postfix"); - is_element_visible(postfix, "'Update' postfix should be visible"); - is_element_visible(item._updateAvailable, ""); - is_element_visible(item._relNotesToggle, "Release notes toggle should be visible"); - is_element_hidden(item._warning, "Incompatible warning should be hidden"); - is_element_hidden(item._error, "Blocklist error should be hidden"); - - info("Opening release notes"); - item.addEventListener("RelNotesToggle", function() { - item.removeEventListener("RelNotesToggle", arguments.callee, false); - info("Release notes now open"); - - is_element_hidden(item._relNotesLoading, "Release notes loading message should be hidden"); - is_element_visible(item._relNotesError, "Release notes error message should be visible"); - is(item._relNotes.childElementCount, 0, "Release notes should be empty"); - - info("Closing release notes"); - item.addEventListener("RelNotesToggle", function() { - item.removeEventListener("RelNotesToggle", arguments.callee, false); - info("Release notes now closed"); - info("Setting Release notes URI to something that should load"); - gProvider.installs[0].releaseNotesURI = Services.io.newURI(TESTROOT + "releaseNotes.xhtml", null, null) - - info("Re-opening release notes"); - item.addEventListener("RelNotesToggle", function() { - item.removeEventListener("RelNotesToggle", arguments.callee, false); - info("Release notes now open"); - - is_element_hidden(item._relNotesLoading, "Release notes loading message should be hidden"); - is_element_hidden(item._relNotesError, "Release notes error message should be hidden"); - isnot(item._relNotes.childElementCount, 0, "Release notes should have been inserted into container"); - run_next_test(); - - }, false); - EventUtils.synthesizeMouseAtCenter(item._relNotesToggle, { }, gManagerWindow); - is_element_visible(item._relNotesLoading, "Release notes loading message should be visible"); - - }, false); - EventUtils.synthesizeMouseAtCenter(item._relNotesToggle, { }, gManagerWindow); - - }, false); - EventUtils.synthesizeMouseAtCenter(item._relNotesToggle, { }, gManagerWindow); - is_element_visible(item._relNotesLoading, "Release notes loading message should be visible"); - }); -}); - - -add_test(function() { - var badgeUpdated = false; - var installCompleted = false; - - gAvailableCategory.addEventListener("CategoryBadgeUpdated", function() { - gAvailableCategory.removeEventListener("CategoryBadgeUpdated", arguments.callee, false); - if (installCompleted) - run_next_test(); - else - badgeUpdated = true; - }, false); - - var list = gManagerWindow.document.getElementById("updates-list"); - var item = list.firstChild; - var updateBtn = item._updateBtn; - is_element_visible(updateBtn, "Update button should be visible"); - - var install = gProvider.installs[0]; - var listener = { - onInstallStarted: function() { - info("Install started"); - is_element_visible(item._installStatus, "Install progress widget should be visible"); - }, - onInstallEnded: function() { - install.removeTestListener(this); - info("Install ended"); - is_element_hidden(item._installStatus, "Install progress widget should be hidden"); - - if (badgeUpdated) - run_next_test(); - else - installCompleted = true; - } - }; - install.addTestListener(listener); - EventUtils.synthesizeMouseAtCenter(updateBtn, { }, gManagerWindow); -}); - - -add_test(function() { - is(gCategoryUtilities.isVisible(gAvailableCategory), true, "Available Updates category should still be visible"); - is(gAvailableCategory.badgeCount, 0, "Badge for Available Updates should now be 0"); - - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.isVisible(gAvailableCategory), false, "Available Updates category should be hidden"); - - close_manager(gManagerWindow, function() { - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - gAvailableCategory = gManagerWindow.gCategories.get("addons://updates/available"); - - is(gCategoryUtilities.isVisible(gAvailableCategory), false, "Available Updates category should be hidden"); - - run_next_test(); - }); - }); - }); -}); - -add_test(function() { - gAvailableCategory.addEventListener("CategoryBadgeUpdated", function() { - gAvailableCategory.removeEventListener("CategoryBadgeUpdated", arguments.callee, false); - is(gCategoryUtilities.isVisible(gAvailableCategory), true, "Available Updates category should now be visible"); - is(gAvailableCategory.badgeCount, 1, "Badge for Available Updates should now be 1"); - - gAvailableCategory.addEventListener("CategoryBadgeUpdated", function() { - gAvailableCategory.removeEventListener("CategoryBadgeUpdated", arguments.callee, false); - is(gCategoryUtilities.isVisible(gAvailableCategory), false, "Available Updates category should now be hidden"); - - run_next_test(); - }, false); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(aAddon) { - aAddon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_ENABLE; - }); - }, false); - - gProvider.createInstalls([{ - name: "manually updating addon (new and even more improved!)", - existingAddon: gProvider.addons[1], - version: "1.2", - releaseNotesURI: Services.io.newURI(TESTROOT + "thereIsNoFileHere.xhtml", null, null) - }]); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_metadataTimeout.js b/toolkit/mozapps/webextensions/test/browser/browser_metadataTimeout.js deleted file mode 100644 index 98be4b7f8..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_metadataTimeout.js +++ /dev/null @@ -1,114 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Test how update window behaves when metadata ping times out -// bug 965788 - -const URI_EXTENSION_UPDATE_DIALOG = "chrome://mozapps/content/extensions/update.xul"; - -const PREF_GETADDONS_BYIDS = "extensions.getAddons.get.url"; -const PREF_MIN_PLATFORM_COMPAT = "extensions.minCompatiblePlatformVersion"; -const PREF_METADATA_LASTUPDATE = "extensions.getAddons.cache.lastUpdate"; - -Components.utils.import("resource://gre/modules/Promise.jsm"); - -var repo = {}; -var ARContext = Components.utils.import("resource://gre/modules/addons/AddonRepository.jsm", repo); - -// Mock out the XMLHttpRequest factory for AddonRepository so -// we can reply with a timeout -var pXHRStarted = Promise.defer(); -var oldXHRConstructor = ARContext.ServiceRequest; -ARContext.ServiceRequest = function() { - this._handlers = new Map(); - this.mozBackgroundRequest = false; - this.timeout = undefined; - this.open = function(aMethod, aURI, aAsync) { - this.method = aMethod; - this.uri = aURI; - this.async = aAsync; - info("Opened XHR for " + aMethod + " " + aURI); - }; - this.overrideMimeType = function(aMimeType) { - this.mimeType = aMimeType; - }; - this.addEventListener = function(aEvent, aHandler, aCapture) { - this._handlers.set(aEvent, aHandler); - }; - this.send = function(aBody) { - info("Send XHR for " + this.method + " " + this.uri + " handlers: " + [this._handlers.keys()].join(", ")); - pXHRStarted.resolve(this); - } -}; - - -// Returns promise{window}, resolves with a handle to the compatibility -// check window -function promise_open_compatibility_window(aInactiveAddonIds) { - let deferred = Promise.defer(); - // This will reset the longer timeout multiplier to 2 which will give each - // test that calls open_compatibility_window a minimum of 60 seconds to - // complete. - requestLongerTimeout(2); - - var variant = Cc["@mozilla.org/variant;1"]. - createInstance(Ci.nsIWritableVariant); - variant.setFromVariant(aInactiveAddonIds); - - // Cannot be modal as we want to interract with it, shouldn't cause problems - // with testing though. - var features = "chrome,centerscreen,dialog,titlebar"; - var ww = Cc["@mozilla.org/embedcomp/window-watcher;1"]. - getService(Ci.nsIWindowWatcher); - var win = ww.openWindow(null, URI_EXTENSION_UPDATE_DIALOG, "", features, variant); - - win.addEventListener("load", function() { - function page_shown(aEvent) { - if (aEvent.target.pageid) - info("Page " + aEvent.target.pageid + " shown"); - } - - win.removeEventListener("load", arguments.callee, false); - - info("Compatibility dialog opened"); - - win.addEventListener("pageshow", page_shown, false); - win.addEventListener("unload", function() { - win.removeEventListener("unload", arguments.callee, false); - win.removeEventListener("pageshow", page_shown, false); - dump("Compatibility dialog closed\n"); - }, false); - - deferred.resolve(win); - }, false); - return deferred.promise; -} - -function promise_window_close(aWindow) { - let deferred = Promise.defer(); - aWindow.addEventListener("unload", function() { - aWindow.removeEventListener("unload", arguments.callee, false); - deferred.resolve(aWindow); - }, false); - return deferred.promise; -} - -// Start the compatibility update dialog, but use the mock XHR to respond with -// a timeout -add_task(function* amo_ping_timeout() { - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - Services.prefs.clearUserPref(PREF_METADATA_LASTUPDATE); - let compatWindow = yield promise_open_compatibility_window([]); - - let xhr = yield pXHRStarted.promise; - is(xhr.timeout, 30000, "XHR request should have 30 second timeout"); - ok(xhr._handlers.has("timeout"), "Timeout handler set on XHR"); - // call back the timeout handler - xhr._handlers.get("timeout")(); - - // Put the old XHR constructor back - ARContext.ServiceRequest = oldXHRConstructor; - // The window should close without further interaction - yield promise_window_close(compatWindow); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_newaddon.js b/toolkit/mozapps/webextensions/test/browser/browser_newaddon.js deleted file mode 100644 index d450828ba..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_newaddon.js +++ /dev/null @@ -1,232 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests the new add-on tab - -var gProvider; - -function loadPage(aURL, aCallback, aBackground = false) { - let tab = gBrowser.addTab(); - if (!aBackground) - gBrowser.selectedTab = tab; - let browser = tab.linkedBrowser; - browser.loadURI(aURL); - browser.addEventListener("AddonDisplayed", function(event) { - browser.removeEventListener("AddonDisplayed", arguments.callee, false); - - aCallback(tab); - }); -} - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "Test 1", - version: "5.3", - userDisabled: true, - seen: false, - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon2@tests.mozilla.org", - name: "Test 2", - version: "7.1", - creator: "Dave Townsend", - userDisabled: true, - seen: false - }]); - - run_next_test(); -} - -function end_test() { - finish(); -} - -// Tests that ignoring a restartless add-on works -add_test(function() { - loadPage("about:newaddon?id=addon1@tests.mozilla.org", function(aTab) { - var doc = aTab.linkedBrowser.contentDocument; - is(doc.getElementById("name").value, "Test 1 5.3", "Should say the right name"); - - is_element_hidden(doc.getElementById("author"), "Should be no author displayed"); - is_element_hidden(doc.getElementById("location"), "Should be no location displayed"); - - is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"), - "Should be showing the right buttons"); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - ok(aAddon.seen, "Add-on should have been marked as seen"); - - EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"), - {}, aTab.linkedBrowser.contentWindow); - - is(gBrowser.tabs.length, 1, "Page should have been closed"); - - ok(aAddon.userDisabled, "Add-on should not have been enabled"); - - ok(!aAddon.isActive, "Add-on should not be running"); - - aAddon.seen = false; - run_next_test(); - }); - }); -}); - -// Tests that enabling a restartless add-on works -add_test(function() { - loadPage("about:newaddon?id=addon1@tests.mozilla.org", function(aTab) { - var doc = aTab.linkedBrowser.contentDocument; - is(doc.getElementById("name").value, "Test 1 5.3", "Should say the right name"); - - is_element_hidden(doc.getElementById("author"), "Should be no author displayed"); - is_element_hidden(doc.getElementById("location"), "Should be no location displayed"); - - is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"), - "Should be showing the right buttons"); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - ok(aAddon.seen, "Add-on should have been marked as seen"); - - EventUtils.synthesizeMouseAtCenter(doc.getElementById("allow"), - {}, aTab.linkedBrowser.contentWindow); - - EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"), - {}, aTab.linkedBrowser.contentWindow); - - is(gBrowser.tabs.length, 1, "Page should have been closed"); - - ok(!aAddon.userDisabled, "Add-on should now have been enabled"); - - ok(aAddon.isActive, "Add-on should now be running"); - - aAddon.userDisabled = true; - aAddon.seen = false; - run_next_test(); - }); - }); -}); - -// Tests that ignoring a non-restartless add-on works -add_test(function() { - loadPage("about:newaddon?id=addon2@tests.mozilla.org", function(aTab) { - var doc = aTab.linkedBrowser.contentDocument; - is(doc.getElementById("name").value, "Test 2 7.1", "Should say the right name"); - - is_element_visible(doc.getElementById("author"), "Should be an author displayed"); - is(doc.getElementById("author").value, "By Dave Townsend", "Should have the right author"); - is_element_hidden(doc.getElementById("location"), "Should be no location displayed"); - - is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"), - "Should be showing the right buttons"); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(aAddon) { - ok(aAddon.seen, "Add-on should have been marked as seen"); - - EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"), - {}, aTab.linkedBrowser.contentWindow); - - is(gBrowser.tabs.length, 1, "Page should have been closed"); - - ok(aAddon.userDisabled, "Add-on should not have been enabled"); - - ok(!aAddon.isActive, "Add-on should not be running"); - - aAddon.seen = false; - run_next_test(); - }); - }); -}); - -// Tests that enabling a non-restartless add-on works -add_test(function() { - loadPage("about:newaddon?id=addon2@tests.mozilla.org", function(aTab) { - var doc = aTab.linkedBrowser.contentDocument; - is(doc.getElementById("name").value, "Test 2 7.1", "Should say the right name"); - - is_element_visible(doc.getElementById("author"), "Should be an author displayed"); - is(doc.getElementById("author").value, "By Dave Townsend", "Should have the right author"); - is_element_hidden(doc.getElementById("location"), "Should be no location displayed"); - - is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"), - "Should be showing the right buttons"); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(aAddon) { - ok(aAddon.seen, "Add-on should have been marked as seen"); - - EventUtils.synthesizeMouseAtCenter(doc.getElementById("allow"), - {}, aTab.linkedBrowser.contentWindow); - - EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"), - {}, aTab.linkedBrowser.contentWindow); - - is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("restartPanel"), - "Should be showing the right buttons"); - - ok(!aAddon.userDisabled, "Add-on should now have been enabled"); - - ok(!aAddon.isActive, "Add-on should not be running"); - - ok(doc.getElementById("allow").disabled, "Should have disabled checkbox"); - - EventUtils.synthesizeMouseAtCenter(doc.getElementById("cancel-button"), - {}, aTab.linkedBrowser.contentWindow); - - is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"), - "Should be showing the right buttons"); - - ok(!doc.getElementById("allow").disabled, "Should have enabled checkbox"); - - ok(aAddon.userDisabled, "Add-on should not have been enabled"); - - ok(!aAddon.isActive, "Add-on should not be running"); - - EventUtils.synthesizeMouseAtCenter(doc.getElementById("allow"), - {}, aTab.linkedBrowser.contentWindow); - - EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"), - {}, aTab.linkedBrowser.contentWindow); - - ok(aAddon.userDisabled, "Add-on should not have been enabled"); - - ok(!aAddon.isActive, "Add-on should not be running"); - - is(gBrowser.tabs.length, 1, "Page should have been closed"); - - aAddon.seen = false; - run_next_test(); - }); - }); -}); - -// Tests that opening the page in the background doesn't mark as seen -add_test(function() { - loadPage("about:newaddon?id=addon1@tests.mozilla.org", function(aTab) { - var doc = aTab.linkedBrowser.contentDocument; - is(doc.getElementById("name").value, "Test 1 5.3", "Should say the right name"); - - is_element_hidden(doc.getElementById("author"), "Should be no author displayed"); - is_element_hidden(doc.getElementById("location"), "Should be no location displayed"); - - is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"), - "Should be showing the right buttons"); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - ok(!aAddon.seen, "Add-on should not have been marked as seen."); - - gBrowser.selectedTab = aTab; - - waitForFocus(function() { - ok(aAddon.seen, "Add-on should have been marked as seen after focusing the tab."); - - gBrowser.removeTab(aTab); - - run_next_test(); - }, aTab.linkedBrowser.contentWindow); - }); - }, true); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_openDialog.js b/toolkit/mozapps/webextensions/test/browser/browser_openDialog.js deleted file mode 100644 index f95365a4c..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_openDialog.js +++ /dev/null @@ -1,173 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests the dialog open by the Options button for addons that provide a -// custom chrome-like protocol for optionsURL. - -var CustomChromeProtocol = { - scheme: "khrome", - defaultPort: -1, - protocolFlags: Ci.nsIProtocolHandler.URI_DANGEROUS_TO_LOAD | - Ci.nsIProtocolHandler.URI_IS_LOCAL_RESOURCE | - Ci.nsIProtocolHandler.URI_NORELATIVE | - Ci.nsIProtocolHandler.URI_NOAUTH, - - newURI: function CCP_newURI(aSpec, aOriginCharset, aBaseUri) { - let uri = Cc["@mozilla.org/network/simple-uri;1"]. - createInstance(Ci.nsIURI); - uri.spec = aSpec; - return uri; - }, - - newChannel2: function CCP_newChannel2(aURI, aLoadInfo) { - let url = Services.io.newURI("chrome:" + aURI.path, null, null); - let ch = Services.io.newChannelFromURIWithLoadInfo(url, aLoadInfo); - ch.originalURI = aURI; - return ch; - }, - - newChannel: function CCP_newChannel(aURI) { - return this.newChannel2(aURI, null); - }, - - allowPort: function CCP_allowPort(aPort, aScheme) { - return false; - }, - - QueryInterface: XPCOMUtils.generateQI([ - Ci.nsIProtocolHandler - ]), - - classID: Components.ID("{399cb2d1-05dd-4363-896f-63b78e008cf8}"), - - factory: { - registrar: Components.manager.QueryInterface(Ci.nsIComponentRegistrar), - - register: function CCP_register() { - this.registrar.registerFactory( - CustomChromeProtocol.classID, - "CustomChromeProtocol", - "@mozilla.org/network/protocol;1?name=khrome", - this - ); - }, - - unregister: function CCP_register() { - this.registrar.unregisterFactory(CustomChromeProtocol.classID, this); - }, - - // nsIFactory - createInstance: function BNPH_createInstance(aOuter, aIID) { - if (aOuter) { - throw Components.Exception("Class does not allow aggregation", - Components.results.NS_ERROR_NO_AGGREGATION); - } - return CustomChromeProtocol.QueryInterface(aIID); - }, - - lockFactory: function BNPH_lockFactory(aLock) { - throw Components.Exception("Function lockFactory is not implemented", - Components.results.NS_ERROR_NOT_IMPLEMENTED); - }, - - QueryInterface: XPCOMUtils.generateQI([ - Ci.nsIFactory - ]) - } -} - -function test() { - waitForExplicitFinish(); - requestLongerTimeout(2); - - info("Registering custom chrome-like protocol."); - CustomChromeProtocol.factory.register(); - registerCleanupFunction(() => CustomChromeProtocol.factory.unregister()); - - const ADDONS_LIST = [ - { id: "test1@tests.mozilla.org", - name: "Test add-on 1", - optionsURL: CHROMEROOT + "addon_prefs.xul" }, - { id: "test2@tests.mozilla.org", - name: "Test add-on 2", - optionsURL: (CHROMEROOT + "addon_prefs.xul").replace("chrome:", "khrome:") }, - ]; - - var gProvider = new MockProvider(); - gProvider.createAddons(ADDONS_LIST); - - open_manager("addons://list/extension", function(aManager) { - let addonList = aManager.document.getElementById("addon-list"); - let currentAddon; - let instantApply = Services.prefs.getBoolPref("browser.preferences.instantApply"); - - function getAddonByName(aName) { - for (let addonItem of addonList.childNodes) { - if (addonItem.hasAttribute("name") && - addonItem.getAttribute("name") == aName) - return addonItem; - } - return null; - } - - function observer(aSubject, aTopic, aData) { - switch (aTopic) { - case "domwindowclosed": - // Give the preference window a chance to finish closing before - // closing the add-ons manager. - waitForFocus(function () { - test_next_addon(); - }); - break; - case "domwindowopened": - let win = aSubject.QueryInterface(Ci.nsIDOMEventTarget); - waitForFocus(function () { - // If the openDialog privileges are wrong a new browser window - // will open, let the test proceed (and fail) rather than timeout. - if (win.location != currentAddon.optionsURL && - win.location != "chrome://browser/content/browser.xul") - return; - - is(win.location, currentAddon.optionsURL, - "The correct addon pref window should have opened"); - - let chromeFlags = win.QueryInterface(Ci.nsIInterfaceRequestor). - getInterface(Ci.nsIWebNavigation). - QueryInterface(Ci.nsIDocShellTreeItem).treeOwner. - QueryInterface(Ci.nsIInterfaceRequestor). - getInterface(Ci.nsIXULWindow).chromeFlags; - ok(chromeFlags & Ci.nsIWebBrowserChrome.CHROME_OPENAS_CHROME && - (instantApply || chromeFlags & Ci.nsIWebBrowserChrome.CHROME_OPENAS_DIALOG), - "Window was open as a chrome dialog."); - - win.close(); - }, win); - break; - } - } - - function test_next_addon() { - currentAddon = ADDONS_LIST.shift(); - if (!currentAddon) { - Services.ww.unregisterNotification(observer); - close_manager(aManager, finish); - return; - } - - info("Testing " + currentAddon.name); - let addonItem = getAddonByName(currentAddon.name, addonList); - let optionsBtn = - aManager.document.getAnonymousElementByAttribute(addonItem, "anonid", - "preferences-btn"); - is(optionsBtn.hidden, false, "Prefs button should be visible.") - - addonList.ensureElementIsVisible(addonItem); - EventUtils.synthesizeMouseAtCenter(optionsBtn, { }, aManager); - } - - Services.ww.registerNotification(observer); - test_next_addon(); - }); - -} diff --git a/toolkit/mozapps/webextensions/test/browser/browser_plugin_enabled_state_locked.js b/toolkit/mozapps/webextensions/test/browser/browser_plugin_enabled_state_locked.js deleted file mode 100644 index a9c7be4bc..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_plugin_enabled_state_locked.js +++ /dev/null @@ -1,124 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that state menu is displayed correctly (enabled or disabled) in the add-on manager -// when the preference is unlocked / locked -var {classes: Cc, interfaces: Ci} = Components; -const gIsWindows = ("@mozilla.org/windows-registry-key;1" in Cc); -const gIsOSX = ("nsILocalFileMac" in Ci); -const gIsLinux = ("@mozilla.org/gnome-gconf-service;1" in Cc) || - ("@mozilla.org/gio-service;1" in Cc); - -var gManagerWindow; -var gCategoryUtilities; -var gPluginElement; - -function getTestPluginPref() { - let prefix = "plugin.state."; - if (gIsWindows) - return `${prefix}nptest`; - if (gIsLinux) - return `${prefix}libnptest`; - return `${prefix}test`; -} - -registerCleanupFunction(() => { - Services.prefs.unlockPref(getTestPluginPref()); - Services.prefs.clearUserPref(getTestPluginPref()); -}); - -function getPlugins() { - return new Promise(resolve => { - AddonManager.getAddonsByTypes(["plugin"], plugins => resolve(plugins)); - }); -} - -function getTestPlugin(aPlugins) { - let testPluginId; - - for (let plugin of aPlugins) { - if (plugin.name == "Test Plug-in") { - testPluginId = plugin.id; - break; - } - } - - Assert.ok(testPluginId, "Test Plug-in should exist"); - - let pluginElement = get_addon_element(gManagerWindow, testPluginId); - pluginElement.parentNode.ensureElementIsVisible(pluginElement); - - return pluginElement; -} - -function checkStateMenu(locked) { - Assert.equal(Services.prefs.prefIsLocked(getTestPluginPref()), locked, - "Preference lock state should be correct."); - let menuList = gManagerWindow.document.getAnonymousElementByAttribute(gPluginElement, "anonid", "state-menulist"); - // State menu should always have a selected item which must be visible - let selectedMenuItem = menuList.querySelector(".addon-control[selected=\"true\"]"); - - is_element_visible(menuList, "State menu should be visible."); - Assert.equal(menuList.disabled, locked, - "State menu should" + (locked === true ? "" : " not") + " be disabled."); - - is_element_visible(selectedMenuItem, "State menu's selected item should be visible."); -} - -function checkStateMenuDetail(locked) { - Assert.equal(Services.prefs.prefIsLocked(getTestPluginPref()), locked, - "Preference should be " + (locked === true ? "" : "un") + "locked."); - - // open details menu - let details = gManagerWindow.document.getAnonymousElementByAttribute(gPluginElement, "anonid", "details-btn"); - is_element_visible(details, "Details link should be visible."); - EventUtils.synthesizeMouseAtCenter(details, {}, gManagerWindow); - - return new Promise(resolve => { - wait_for_view_load(gManagerWindow, function() { - let menuList = gManagerWindow.document.getElementById("detail-state-menulist"); - is_element_visible(menuList, "Details state menu should be visible."); - Assert.equal(menuList.disabled, locked, - "Details state menu enabled state should be correct."); - resolve(); - }); - }); -} - -add_task(function* initializeState() { - Services.prefs.setIntPref(getTestPluginPref(), Ci.nsIPluginTag.STATE_ENABLED); - Services.prefs.unlockPref(getTestPluginPref()); - gManagerWindow = yield open_manager(); - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - yield gCategoryUtilities.openType("plugin"); - - let plugins = yield getPlugins(); - gPluginElement = getTestPlugin(plugins); -}); - -// Tests that plugin state menu is enabled if the preference is unlocked -add_task(function* taskCheckStateMenuIsEnabled() { - checkStateMenu(false); - yield checkStateMenuDetail(false); -}); - -// Lock the preference and then reload the plugin category -add_task(function* reinitializeState() { - // lock the preference - Services.prefs.lockPref(getTestPluginPref()); - yield gCategoryUtilities.openType("plugin"); - // Retrieve the test plugin element - let plugins = yield getPlugins(); - gPluginElement = getTestPlugin(plugins); -}); - -// Tests that plugin state menu is disabled if the preference is locked -add_task(function* taskCheckStateMenuIsDisabled() { - checkStateMenu(true); - yield checkStateMenuDetail(true); -}); - -add_task(function* testCleanup() { - yield close_manager(gManagerWindow); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_pluginprefs.js b/toolkit/mozapps/webextensions/test/browser/browser_pluginprefs.js deleted file mode 100644 index 458e8e334..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_pluginprefs.js +++ /dev/null @@ -1,61 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests the detail view of plugins - -var gManagerWindow; - -function test() { - waitForExplicitFinish(); - - open_manager("addons://list/plugin", function(aWindow) { - gManagerWindow = aWindow; - - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - -add_test(function() { - AddonManager.getAddonsByTypes(["plugin"], function(plugins) { - let testPluginId; - for (let plugin of plugins) { - if (plugin.name == "Test Plug-in") { - testPluginId = plugin.id; - break; - } - } - ok(testPluginId, "Test Plug-in should exist") - - AddonManager.getAddonByID(testPluginId, function(testPlugin) { - let pluginEl = get_addon_element(gManagerWindow, testPluginId); - is(pluginEl.mAddon.optionsType, AddonManager.OPTIONS_TYPE_INLINE_INFO, "Options should be inline info type"); - pluginEl.parentNode.ensureElementIsVisible(pluginEl); - - let button = gManagerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "preferences-btn"); - is_element_hidden(button, "Preferences button should be hidden"); - - button = gManagerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - let pluginLibraries = gManagerWindow.document.getElementById("pluginLibraries"); - ok(pluginLibraries, "Plugin file name row should be displayed"); - // the file name depends on the platform - ok(pluginLibraries.textContent, testPlugin.pluginLibraries, "Plugin file name should be displayed"); - - let pluginMimeTypes = gManagerWindow.document.getElementById("pluginMimeTypes"); - ok(pluginMimeTypes, "Plugin mime type row should be displayed"); - ok(pluginMimeTypes.textContent, "application/x-test (tst)", "Plugin mime type should be displayed"); - - run_next_test(); - }); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_purchase.js b/toolkit/mozapps/webextensions/test/browser/browser_purchase.js deleted file mode 100644 index a815d10d5..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_purchase.js +++ /dev/null @@ -1,197 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that marketplace results show up in searches, are sorted right and -// attempting to buy links through to the right webpage - -const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url"; -const SEARCH_URL = TESTROOT + "browser_purchase.xml"; - -var gManagerWindow; - -function test() { - // Turn on searching for this test - Services.prefs.setIntPref(PREF_SEARCH_MAXRESULTS, 15); - Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, SEARCH_URL); - - waitForExplicitFinish(); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - - waitForFocus(function() { - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = "foo"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - var remoteFilter = gManagerWindow.document.getElementById("search-filter-remote"); - EventUtils.synthesizeMouseAtCenter(remoteFilter, { }, gManagerWindow); - - run_next_test(); - }); - }, aWindow); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - // Will have created an install so cancel it - AddonManager.getAllInstalls(function(aInstalls) { - is(aInstalls.length, 1, "Should have been one install created"); - aInstalls[0].cancel(); - - finish(); - }); - }); -} - -function get_node(parent, anonid) { - return parent.ownerDocument.getAnonymousElementByAttribute(parent, "anonid", anonid); -} - -function get_install_btn(parent) { - var installStatus = get_node(parent, "install-status"); - return get_node(installStatus, "install-remote-btn"); -} - -function get_purchase_btn(parent) { - var installStatus = get_node(parent, "install-status"); - return get_node(installStatus, "purchase-remote-btn"); -} - -// Tests that the expected results appeared -add_test(function() { - var list = gManagerWindow.document.getElementById("search-list"); - var items = Array.filter(list.childNodes, function(e) { - return e.tagName == "richlistitem"; - }); - - is(items.length, 5, "Should be 5 results"); - - is(get_node(items[0], "name").value, "Ludicrously Expensive Add-on", "Add-on 0 should be in expected position"); - is_element_hidden(get_install_btn(items[0]), "Add-on 0 install button should be hidden"); - is_element_visible(get_purchase_btn(items[0]), "Add-on 0 purchase button should be visible"); - is(get_purchase_btn(items[0]).label, "Purchase for $101\u2026", "Add-on 0 should have the right price"); - - is(get_node(items[1], "name").value, "Cheap Add-on", "Add-on 1 should be in expected position"); - is_element_hidden(get_install_btn(items[1]), "Add-on 1 install button should be hidden"); - is_element_visible(get_purchase_btn(items[1]), "Add-on 1 purchase button should be visible"); - is(get_purchase_btn(items[1]).label, "Purchase for $0.99\u2026", "Add-on 2 should have the right price"); - - is(get_node(items[2], "name").value, "Reasonable Add-on", "Add-on 2 should be in expected position"); - is_element_hidden(get_install_btn(items[2]), "Add-on 2 install button should be hidden"); - is_element_visible(get_purchase_btn(items[2]), "Add-on 2 purchase button should be visible"); - is(get_purchase_btn(items[2]).label, "Purchase for $1\u2026", "Add-on 3 should have the right price"); - - is(get_node(items[3], "name").value, "Free Add-on", "Add-on 3 should be in expected position"); - is_element_visible(get_install_btn(items[3]), "Add-on 3 install button should be visible"); - is_element_hidden(get_purchase_btn(items[3]), "Add-on 3 purchase button should be hidden"); - - is(get_node(items[4], "name").value, "More Expensive Add-on", "Add-on 4 should be in expected position"); - is_element_hidden(get_install_btn(items[4]), "Add-on 4 install button should be hidden"); - is_element_visible(get_purchase_btn(items[4]), "Add-on 4 purchase button should be visible"); - is(get_purchase_btn(items[4]).label, "Purchase for $1.01\u2026", "Add-on 4 should have the right price"); - - run_next_test(); -}); - -// Tests that sorting by price works -add_test(function() { - var list = gManagerWindow.document.getElementById("search-list"); - - var sorters = gManagerWindow.document.getElementById("search-sorters"); - var priceSorter = get_node(sorters, "price-btn"); - info("Changing sort order"); - EventUtils.synthesizeMouseAtCenter(priceSorter, { }, gManagerWindow); - - var items = Array.filter(list.childNodes, function(e) { - return e.tagName == "richlistitem"; - }); - - is(get_node(items[0], "name").value, "Free Add-on", "Add-on 0 should be in expected position"); - is(get_node(items[1], "name").value, "Cheap Add-on", "Add-on 1 should be in expected position"); - is(get_node(items[2], "name").value, "Reasonable Add-on", "Add-on 2 should be in expected position"); - is(get_node(items[3], "name").value, "More Expensive Add-on", "Add-on 3 should be in expected position"); - is(get_node(items[4], "name").value, "Ludicrously Expensive Add-on", "Add-on 4 should be in expected position"); - - info("Changing sort order"); - EventUtils.synthesizeMouseAtCenter(priceSorter, { }, gManagerWindow); - - items = Array.filter(list.childNodes, function(e) { - return e.tagName == "richlistitem"; - }); - - is(get_node(items[0], "name").value, "Ludicrously Expensive Add-on", "Add-on 0 should be in expected position"); - is(get_node(items[1], "name").value, "More Expensive Add-on", "Add-on 1 should be in expected position"); - is(get_node(items[2], "name").value, "Reasonable Add-on", "Add-on 2 should be in expected position"); - is(get_node(items[3], "name").value, "Cheap Add-on", "Add-on 3 should be in expected position"); - is(get_node(items[4], "name").value, "Free Add-on", "Add-on 4 should be in expected position"); - - run_next_test(); -}); - -// Tests that clicking the buy button works from the list -add_test(function() { - gBrowser.tabContainer.addEventListener("TabOpen", function listener(event) { - gBrowser.tabContainer.removeEventListener("TabOpen", listener, true); - function wantLoad(url) { - return url != "about:blank"; - } - BrowserTestUtils.browserLoaded(event.target.linkedBrowser, false, wantLoad).then(() => { - is(gBrowser.currentURI.spec, TESTROOT + "releaseNotes.xhtml?addon5", "Should have loaded the right page"); - - gBrowser.removeCurrentTab(); - - if (gUseInContentUI) { - is(gBrowser.currentURI.spec, "about:addons", "Should be back to the add-ons manager"); - run_next_test(); - } - else { - waitForFocus(run_next_test, gManagerWindow); - } - }); - }, true); - - var list = gManagerWindow.document.getElementById("search-list"); - EventUtils.synthesizeMouseAtCenter(get_purchase_btn(list.firstChild), { }, gManagerWindow); -}); - -// Tests that clicking the buy button from the details view works -add_test(function() { - gBrowser.tabContainer.addEventListener("TabOpen", function listener(event) { - gBrowser.tabContainer.removeEventListener("TabOpen", listener, true); - function wantLoad(url) { - return url != "about:blank"; - } - BrowserTestUtils.browserLoaded(event.target.linkedBrowser, false, wantLoad).then(() => { - is(gBrowser.currentURI.spec, TESTROOT + "releaseNotes.xhtml?addon4", "Should have loaded the right page"); - - gBrowser.removeCurrentTab(); - - if (gUseInContentUI) { - is(gBrowser.currentURI.spec, "about:addons", "Should be back to the add-ons manager"); - run_next_test(); - } - else { - waitForFocus(run_next_test, gManagerWindow); - } - }); - }, true); - - var list = gManagerWindow.document.getElementById("search-list"); - var item = list.firstChild.nextSibling; - list.ensureElementIsVisible(item); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - var btn = gManagerWindow.document.getElementById("detail-purchase-btn"); - is_element_visible(btn, "Purchase button should be visible"); - - EventUtils.synthesizeMouseAtCenter(btn, { }, gManagerWindow); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_purchase.xml b/toolkit/mozapps/webextensions/test/browser/browser_purchase.xml deleted file mode 100644 index 9d4b18880..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_purchase.xml +++ /dev/null @@ -1,180 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<searchresults total_results="100"> - <addon> - <name>Ludicrously Expensive Add-on</name> - <type id='1'>Extension</type> - <guid>addon5@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>Test summary</summary> - <description>Test 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> - <all_compatible_os> - <os>ALL</os> - </all_compatible_os> - <payment_data> - <link>http://example.com/browser/toolkit/mozapps/extensions/test/browser/releaseNotes.xhtml?addon5</link> - <amount amount="101">$101</amount> - </payment_data> - </addon> - <addon> - <name>Cheap Add-on</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>Test summary</summary> - <description>Test 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> - <all_compatible_os> - <os>ALL</os> - </all_compatible_os> - <payment_data> - <link>http://example.com/browser/toolkit/mozapps/extensions/test/browser/releaseNotes.xhtml?addon2</link> - <amount amount="0.99">$0.99</amount> - </payment_data> - </addon> - <addon> - <name>Reasonable Add-on</name> - <type id='1'>Extension</type> - <guid>addon3@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>Test summary</summary> - <description>Test 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> - <all_compatible_os> - <os>ALL</os> - </all_compatible_os> - <payment_data> - <link>http://example.com/browser/toolkit/mozapps/extensions/test/browser/releaseNotes.xhtml?addon3</link> - <amount amount="1">$1</amount> - </payment_data> - </addon> - <addon> - <name>Free Add-on</name> - <type id='1'>Extension</type> - <guid>addon1@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>Test summary</summary> - <description>Test 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> - <all_compatible_os> - <os>ALL</os> - </all_compatible_os> - <install size="1">http://example.com/addon1.xpi</install> - </addon> - <addon> - <name>More Expensive Add-on</name> - <type id='1'>Extension</type> - <guid>addon4@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>Test summary</summary> - <description>Test 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> - <all_compatible_os> - <os>ALL</os> - </all_compatible_os> - <payment_data> - <link>http://example.com/browser/toolkit/mozapps/extensions/test/browser/releaseNotes.xhtml?addon4</link> - <amount amount="1.01">$1.01</amount> - </payment_data> - </addon> -</searchresults> diff --git a/toolkit/mozapps/webextensions/test/browser/browser_recentupdates.js b/toolkit/mozapps/webextensions/test/browser/browser_recentupdates.js deleted file mode 100644 index 02007dbbf..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_recentupdates.js +++ /dev/null @@ -1,125 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests the recent updates pane - -var gProvider; -var gManagerWindow; -var gCategoryUtilities; - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "updated 6 hours ago", - version: "1.0", - updateDate: new Date(Date.now() - (1000 * 60 * 60 * 6)), - releaseNotesURI: Services.io.newURI(TESTROOT + "releaseNotes.xhtml", null, null) - }, { - id: "addon2@tests.mozilla.org", - name: "updated 5 seconds ago", - version: "1.0", - updateDate: new Date(Date.now() - (1000 * 5)) - }, { - id: "addon3@tests.mozilla.org", - name: "updated 1 month ago", - version: "1.0", - updateDate: new Date(Date.now() - (1000 * 60 * 60 * 25 * 30)) - }]); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - - -add_test(function() { - info("Checking menuitem for Recent Updates opens that pane"); - var recentCat = gManagerWindow.gCategories.get("addons://updates/recent"); - is(gCategoryUtilities.isVisible(recentCat), false, "Recent Updates category should initially be hidden"); - - var utilsBtn = gManagerWindow.document.getElementById("header-utils-btn"); - utilsBtn.addEventListener("popupshown", function() { - utilsBtn.removeEventListener("popupshown", arguments.callee, false); - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.isVisible(recentCat), true, "Recent Updates category should now be visible"); - is(gManagerWindow.document.getElementById("categories").selectedItem.value, "addons://updates/recent", "Recent Updates category should now be selected"); - is(gManagerWindow.gViewController.currentViewId, "addons://updates/recent", "Recent Updates view should be the current view"); - run_next_test(); - }, true); - var menuitem = gManagerWindow.document.getElementById("utils-viewUpdates"); - EventUtils.synthesizeMouse(menuitem, 2, 2, { }, gManagerWindow); - }, false); - EventUtils.synthesizeMouse(utilsBtn, 2, 2, { }, gManagerWindow); -}); - - -add_test(function() { - var updatesList = gManagerWindow.document.getElementById("updates-list"); - var sorters = gManagerWindow.document.getElementById("updates-sorters"); - var dateSorter = gManagerWindow.document.getAnonymousElementByAttribute(sorters, "anonid", "date-btn"); - var nameSorter = gManagerWindow.document.getAnonymousElementByAttribute(sorters, "anonid", "name-btn"); - - function check_order(expected) { - var items = updatesList.getElementsByTagName("richlistitem"); - var possible = ["addon1@tests.mozilla.org", "addon2@tests.mozilla.org", "addon3@tests.mozilla.org"]; - for (let item of items) { - let itemId = item.mAddon.id; - if (possible.indexOf(itemId) == -1) - continue; // skip over any other addons, such as shipped addons that would update on every build - isnot(expected.length, 0, "Should be expecting more items"); - is(itemId, expected.shift(), "Should get expected item based on sort order"); - if (itemId == "addon1@tests.mozilla.org") - is_element_visible(item._relNotesToggle, "Release notes toggle should be visible for addon with release notes"); - else - is_element_hidden(item._relNotesToggle, "Release notes toggle should be hidden for addon with no release notes"); - } - } - - is_element_visible(dateSorter); - is_element_visible(nameSorter); - - // sorted by date, descending - check_order(["addon2@tests.mozilla.org", "addon1@tests.mozilla.org"]); - - // sorted by date, ascending - EventUtils.synthesizeMouseAtCenter(dateSorter, { }, gManagerWindow); - check_order(["addon1@tests.mozilla.org", "addon2@tests.mozilla.org"]); - - // sorted by name, ascending - EventUtils.synthesizeMouseAtCenter(nameSorter, { }, gManagerWindow); - check_order(["addon2@tests.mozilla.org", "addon1@tests.mozilla.org"]); - - // sorted by name, descending - EventUtils.synthesizeMouseAtCenter(nameSorter, { }, gManagerWindow); - check_order(["addon1@tests.mozilla.org", "addon2@tests.mozilla.org"]); - - run_next_test(); -}); - - -add_test(function() { - close_manager(gManagerWindow, function() { - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - var recentCat = gManagerWindow.gCategories.get("addons://updates/recent"); - is(gCategoryUtilities.isVisible(recentCat), true, "Recent Updates category should still be visible"); - - run_next_test(); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_searching.js b/toolkit/mozapps/webextensions/test/browser/browser_searching.js deleted file mode 100644 index 907d9b105..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_searching.js +++ /dev/null @@ -1,698 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that searching for add-ons works correctly - -const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url"; -const SEARCH_URL = TESTROOT + "browser_searching.xml"; -const NO_MATCH_URL = TESTROOT + "browser_searching_empty.xml"; - -const QUERY = "SEARCH"; -const NO_MATCH_QUERY = "NOMATCHQUERY"; -const REMOTE_TO_INSTALL = "remote1"; -const REMOTE_INSTALL_URL = TESTROOT + "addons/browser_searching.xpi"; - -var gManagerWindow; -var gCategoryUtilities; -var gProvider; -var gServer; -var gAddonInstalled = false; - -function test() { - requestLongerTimeout(2); - // Turn on searching for this test - Services.prefs.setIntPref(PREF_SEARCH_MAXRESULTS, 15); - Services.prefs.setBoolPref(PREF_STRICT_COMPAT, true); - - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "PASS - f", - description: "Test description - SEARCH", - size: 3, - version: "1.0", - updateDate: new Date(2010, 4, 2, 0, 0, 1) - }, { - id: "fail-addon1@tests.mozilla.org", - name: "FAIL", - description: "Does not match query" - }, { - id: "addon2@tests.mozilla.org", - name: "PASS - c", - description: "Test description - reSEARCHing SEARCH SEARCH", - size: 6, - version: "2.0", - updateDate: new Date(2010, 4, 2, 0, 0, 0) - }]); - - var installs = gProvider.createInstalls([{ - name: "PASS - a - SEARCHing", - sourceURI: "http://example.com/install1.xpi" - }, { - name: "PASS - g - reSEARCHing SEARCH", - sourceURI: "http://example.com/install2.xpi" - }, { - // Does not match query - name: "FAIL", - sourceURI: "http://example.com/fail-install1.xpi" - }]); - - for (let install of installs ) - install.install(); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - var installedAddon = get_addon_item(REMOTE_TO_INSTALL).mAddon; - installedAddon.uninstall(); - - AddonManager.getAllInstalls(function(aInstallsList) { - for (var install of aInstallsList) { - var sourceURI = install.sourceURI.spec; - if (sourceURI == REMOTE_INSTALL_URL || - sourceURI.match(/^http:\/\/example\.com\/(.+)\.xpi$/) != null) - install.cancel(); - } - - finish(); - }); - }); -} - -function getAnonymousElementByAttribute(aElement, aName, aValue) { - return gManagerWindow.document.getAnonymousElementByAttribute(aElement, - aName, - aValue); -} - -/* - * Checks whether or not the Add-ons Manager is currently searching - * - * @param aExpectedSearching - * The expected isSearching state - */ -function check_is_searching(aExpectedSearching) { - var loading = gManagerWindow.document.getElementById("search-loading"); - is(!is_hidden(loading), aExpectedSearching, - "Search throbber should be showing iff currently searching"); -} - -/* - * Completes a search - * - * @param aQuery - * The query to search for - * @param aFinishImmediately - * Boolean representing whether or not the search is expected to - * finish immediately - * @param aCallback - * The callback to call when the search is done - * @param aCategoryType - * The expected selected category after the search is done. - * Optional and defaults to "search" - */ -function search(aQuery, aFinishImmediately, aCallback, aCategoryType) { - // Point search to the correct xml test file - var url = (aQuery == NO_MATCH_QUERY) ? NO_MATCH_URL : SEARCH_URL; - Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, url); - - aCategoryType = aCategoryType ? aCategoryType : "search"; - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = aQuery; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - var finishImmediately = true; - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, aCategoryType, "Expected category view should be selected"); - is(gCategoryUtilities.isTypeVisible("search"), aCategoryType == "search", - "Search category should only be visible if it is the current view"); - check_is_searching(false); - is(finishImmediately, aFinishImmediately, "Search should finish immediately only if expected"); - - aCallback(); - }); - - finishImmediately = false - if (!aFinishImmediately) - check_is_searching(true); -} - -/* - * Return results of a search - * - * @return Array of objects, each containing the name and item of a specific - * result - */ -function get_actual_results() { - var list = gManagerWindow.document.getElementById("search-list"); - var rows = list.getElementsByTagName("richlistitem"); - - var results = []; - for (var item of rows) { - - // Only consider items that are currently showing - var style = gManagerWindow.document.defaultView.getComputedStyle(item, ""); - if (style.display == "none" || style.visibility != "visible") - continue; - - if (item.mInstall || item.isPending("install")) { - var sourceURI = item.mInstall.sourceURI.spec; - if (sourceURI == REMOTE_INSTALL_URL) { - results.push({name: REMOTE_TO_INSTALL, item: item}); - continue; - } - - let result = sourceURI.match(/^http:\/\/example\.com\/(.+)\.xpi$/); - if (result != null) { - is(item.mInstall.name.indexOf("PASS"), 0, "Install name should start with PASS"); - results.push({name: result[1], item: item}); - continue; - } - } - else if (item.mAddon) { - let result = item.mAddon.id.match(/^(.+)@tests\.mozilla\.org$/); - if (result != null) { - is(item.mAddon.name.indexOf("PASS"), 0, "Addon name should start with PASS"); - results.push({name: result[1], item: item}); - continue; - } - } - else { - ok(false, "Found an item in the list that was neither installing or installed"); - } - } - - return results; -} - -/* - * Returns expected results when searching for QUERY with default ordering - * - * @param aSortBy - * How the results are sorted (e.g. "name") - * @param aLocalExpected - * Boolean representing if local results are expected - * @return A pair: [array of results with an expected order, - * array of results with unknown order] - */ -function get_expected_results(aSortBy, aLocalExpected) { - var expectedOrder = null, unknownOrder = null; - switch (aSortBy) { - case "relevancescore": - expectedOrder = [ "addon2", "remote1", "install2", "addon1", - "install1", "remote2", "remote3", "remote4" ]; - unknownOrder = []; - break; - case "name": - // Defaults to ascending order - expectedOrder = [ "install1", "remote1", "addon2", "remote2", - "remote3", "addon1", "install2", "remote4" ]; - unknownOrder = []; - break; - case "dateUpdated": - expectedOrder = [ "addon1", "addon2" ]; - // Updated date not available for installs and remote add-ons - unknownOrder = [ "install1", "install2", "remote1", - "remote2", "remote3", "remote4" ]; - break; - default: - ok(false, "Should recognize sortBy when checking the order of items"); - } - - // Only keep expected results - function filterResults(aId) { - // Include REMOTE_TO_INSTALL as a local add-on if it has been installed - if (gAddonInstalled && aId == REMOTE_TO_INSTALL) - return aLocalExpected; - - if (aId.indexOf("addon") == 0 || aId.indexOf("install") == 0) - return aLocalExpected; - if (aId.indexOf("remote") == 0) - return !aLocalExpected; - - return false; - } - - - return [expectedOrder.filter(filterResults), - unknownOrder.filter(filterResults)] -} - -/* - * Check that the actual and expected results are the same - * - * @param aQuery - * The search query used - * @param aSortBy - * How the results are sorted (e.g. "name") - * @param aReverseOrder - * Boolean representing if the results are in reverse default order - * @param aShowLocal - * Boolean representing if local results are being shown - */ -function check_results(aQuery, aSortBy, aReverseOrder, aShowLocal) { - - var xpinstall_enabled = true; - try { - xpinstall_enabled = Services.prefs.getBoolPref(PREF_XPI_ENABLED); - } - catch (e) {} - - // When XPI Instalation is disabled, those buttons are hidden and unused - if (xpinstall_enabled) { - var localFilterSelected = gManagerWindow.document.getElementById("search-filter-local").selected; - var remoteFilterSelected = gManagerWindow.document.getElementById("search-filter-remote").selected; - is(localFilterSelected, aShowLocal, "Local filter should be selected if showing local items"); - is(remoteFilterSelected, !aShowLocal, "Remote filter should be selected if showing remote items"); - } - - // Get expected order assuming default order - var expectedOrder = [], unknownOrder = []; - if (aQuery == QUERY) - [expectedOrder, unknownOrder] = get_expected_results(aSortBy, aShowLocal); - - // Get actual order of results - var actualResults = get_actual_results(); - var actualOrder = actualResults.map(result => result.name); - - // Reverse array of actual results if supposed to be in reverse order. - // Reverse actualOrder instead of expectedOrder so can always check - // expectedOrder before unknownOrder - if (aReverseOrder) - actualOrder.reverse(); - - // Check actual vs. expected list of results - var totalExpectedResults = expectedOrder.length + unknownOrder.length; - is(actualOrder.length, totalExpectedResults, "Should get correct number of results"); - - // Check the "first" and "last" attributes are set correctly - for (let i = 0; i < actualResults.length; i++) { - if (i == 0) { - is(actualResults[0].item.hasAttribute("first"), true, - "First item should have 'first' attribute set"); - is(actualResults[0].item.hasAttribute("last"), false, - "First item should not have 'last' attribute set"); - } else if (i == (actualResults.length - 1)) { - is(actualResults[actualResults.length - 1].item.hasAttribute("first"), false, - "Last item should not have 'first' attribute set"); - is(actualResults[actualResults.length - 1].item.hasAttribute("last"), true, - "Last item should have 'last' attribute set"); - } else { - is(actualResults[i].item.hasAttribute("first"), false, - "Item " + i + " should not have 'first' attribute set"); - is(actualResults[i].item.hasAttribute("last"), false, - "Item " + i + " should not have 'last' attribute set"); - } - } - - var i = 0; - for (; i < expectedOrder.length; i++) - is(actualOrder[i], expectedOrder[i], "Should have seen expected item"); - - // Items with data that is unknown can appear in any order among themselves, - // so just check that these items exist - for (; i < actualOrder.length; i++) { - var unknownOrderIndex = unknownOrder.indexOf(actualOrder[i]); - ok(unknownOrderIndex >= 0, "Should expect to see item with data that is unknown"); - unknownOrder[unknownOrderIndex] = null; - } - - // Check status of empty notice - var emptyNotice = gManagerWindow.document.getElementById("search-list-empty"); - is(emptyNotice.hidden, totalExpectedResults > 0, - "Empty notice should be hidden only if expecting shown items"); -} - -/* - * Check results of a search with different filterings - * - * @param aQuery - * The search query used - * @param aSortBy - * How the results are sorted (e.g. "name") - * @param aReverseOrder - * Boolean representing if the results are in reverse default order - * @param aLocalOnly - * Boolean representing if the results are local only, can be undefined - */ -function check_filtered_results(aQuery, aSortBy, aReverseOrder, aLocalOnly) { - var localFilter = gManagerWindow.document.getElementById("search-filter-local"); - var remoteFilter = gManagerWindow.document.getElementById("search-filter-remote"); - - var list = gManagerWindow.document.getElementById("search-list"); - list.ensureElementIsVisible(localFilter); - - // Check with showing local add-ons - EventUtils.synthesizeMouseAtCenter(localFilter, { }, gManagerWindow); - check_results(aQuery, aSortBy, aReverseOrder, true); - - // Check with showing remote add-ons - aLocalOnly = aLocalOnly || false; - EventUtils.synthesizeMouseAtCenter(remoteFilter, { }, gManagerWindow); - check_results(aQuery, aSortBy, aReverseOrder, aLocalOnly); -} - -/* - * Get item for a specific add-on by name - * - * @param aName - * The name of the add-on to search for - * @return Row of add-on if found, null otherwise - */ -function get_addon_item(aName) { - var id = aName + "@tests.mozilla.org"; - var list = gManagerWindow.document.getElementById("search-list"); - var rows = list.getElementsByTagName("richlistitem"); - for (var row of rows) { - if (row.mAddon && row.mAddon.id == id) - return row; - } - - return null; -} - -/* - * Get item for a specific install by name - * - * @param aName - * The name of the install to search for - * @return Row of install if found, null otherwise - */ -function get_install_item(aName) { - var sourceURI = "http://example.com/" + aName + ".xpi"; - var list = gManagerWindow.document.getElementById("search-list"); - var rows = list.getElementsByTagName("richlistitem"); - for (var row of rows) { - if (row.mInstall && row.mInstall.sourceURI.spec == sourceURI) - return row; - } - - return null; -} - -/* - * Gets the install button for a specific item - * - * @param aItem - * The item to get the install button for - * @return The install button for aItem - */ -function get_install_button(aItem) { - isnot(aItem, null, "Item should not be null when checking state of install button"); - var installStatus = getAnonymousElementByAttribute(aItem, "anonid", "install-status"); - return getAnonymousElementByAttribute(installStatus, "anonid", "install-remote-btn"); -} - - -// Tests that searching for the empty string does nothing when not in the search view -add_test(function() { - is(gCategoryUtilities.isTypeVisible("search"), false, "Search category should initially be hidden"); - - var selectedCategory = gCategoryUtilities.selectedCategory; - isnot(selectedCategory, "search", "Selected type should not initially be the search view"); - search("", true, run_next_test, selectedCategory); -}); - -// Tests that the results from a query are sorted by relevancescore in descending order. -// Also test that double clicking non-install items goes to the detail view, and that -// only remote items have install buttons showing -add_test(function() { - search(QUERY, false, function() { - check_filtered_results(QUERY, "relevancescore", false); - - var list = gManagerWindow.document.getElementById("search-list"); - var results = get_actual_results(); - for (var result of results) { - var installBtn = get_install_button(result.item); - is(installBtn.hidden, result.name.indexOf("remote") != 0, - "Install button should only be showing for remote items"); - } - - var currentIndex = -1; - function run_next_double_click_test() { - currentIndex++; - if (currentIndex >= results.length) { - run_next_test(); - return; - } - - var result = results[currentIndex]; - if (result.name.indexOf("install") == 0) { - run_next_double_click_test(); - return; - } - - var item = result.item; - list.ensureElementIsVisible(item); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - var name = gManagerWindow.document.getElementById("detail-name").textContent; - is(name, item.mAddon.name, "Name in detail view should be correct"); - var version = gManagerWindow.document.getElementById("detail-version").value; - is(version, item.mAddon.version, "Version in detail view should be correct"); - - EventUtils.synthesizeMouseAtCenter(gManagerWindow.document.getElementById("category-search"), - { }, gManagerWindow); - wait_for_view_load(gManagerWindow, run_next_double_click_test); - }); - } - - run_next_double_click_test(); - }); -}); - -// Tests that the sorters and filters correctly manipulate the results -add_test(function() { - var sorters = gManagerWindow.document.getElementById("search-sorters"); - var originalHandler = sorters.handler; - - var sorterNames = ["name", "dateUpdated"]; - var buttonIds = ["name-btn", "date-btn"]; - var currentIndex = 0; - var currentReversed = false; - - function run_sort_test() { - if (currentIndex >= sorterNames.length) { - sorters.handler = originalHandler; - run_next_test(); - return; - } - - // Simulate clicking on a specific sorter - var buttonId = buttonIds[currentIndex]; - var sorter = getAnonymousElementByAttribute(sorters, "anonid", buttonId); - is_element_visible(sorter); - EventUtils.synthesizeMouseAtCenter(sorter, { }, gManagerWindow); - } - - sorters.handler = { - onSortChanged: function(aSortBy, aAscending) { - if (originalHandler && "onSortChanged" in originalHandler) - originalHandler.onSortChanged(aSortBy, aAscending); - - check_filtered_results(QUERY, sorterNames[currentIndex], currentReversed); - - if (currentReversed) - currentIndex++; - currentReversed = !currentReversed; - - run_sort_test(); - } - }; - - check_filtered_results(QUERY, "relevancescore", false); - run_sort_test(); -}); - -// Tests that searching for the empty string does nothing when in search view -add_test(function() { - search("", true, function() { - check_filtered_results(QUERY, "dateUpdated", true); - run_next_test(); - }); -}); - -// Tests that clicking a different category hides the search query -add_test(function() { - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.isTypeVisible("search"), false, "Search category should be hidden"); - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - run_next_test(); - }); -}); - -// Tests that re-searching for query doesn't actually complete a new search, -// and the last sort is still used -add_test(function() { - search(QUERY, true, function() { - check_filtered_results(QUERY, "dateUpdated", true); - run_next_test(); - }); -}); - -// Tests that getting zero results works correctly -add_test(function() { - search(NO_MATCH_QUERY, false, function() { - check_filtered_results(NO_MATCH_QUERY, "relevancescore", false); - run_next_test(); - }); -}); - -// Tests that installing a remote add-on works -add_test(function() { - var installBtn = null; - - var listener = { - onInstallEnded: function(aInstall, aAddon) { - // Don't immediately consider the installed add-on as local because - // if the user was filtering out local add-ons, the installed add-on - // would vanish. Only consider add-on as local on new searches. - - aInstall.removeListener(this); - - is(installBtn.hidden, true, "Install button should be hidden after install ended"); - check_filtered_results(QUERY, "relevancescore", false); - run_next_test(); - } - } - - search(QUERY, false, function() { - var list = gManagerWindow.document.getElementById("search-list"); - var remoteItem = get_addon_item(REMOTE_TO_INSTALL); - list.ensureElementIsVisible(remoteItem); - - installBtn = get_install_button(remoteItem); - is(installBtn.hidden, false, "Install button should be showing before install"); - remoteItem.mAddon.install.addListener(listener); - EventUtils.synthesizeMouseAtCenter(installBtn, { }, gManagerWindow); - }); -}); - -// Tests that re-searching for query results in correct results -add_test(function() { - // Select a different category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.isTypeVisible("search"), false, "Search category should be hidden"); - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - var installBtn = get_install_button(get_addon_item(REMOTE_TO_INSTALL)); - is(installBtn.hidden, true, "Install button should be hidden for installed item"); - - search(QUERY, true, function() { - check_filtered_results(QUERY, "relevancescore", false); - run_next_test(); - }); - }); -}); - -// Tests that incompatible add-ons are shown with a warning if compatibility checking is disabled -add_test(function() { - AddonManager.checkCompatibility = false; - search("incompatible", false, function() { - var item = get_addon_item("remote5"); - is_element_visible(item, "Incompatible addon should be visible"); - is(item.getAttribute("notification"), "warning", "Compatibility warning should be shown"); - - item = get_addon_item("remote6"); - is(item, null, "Addon incompatible with the product should not be visible"); - - AddonManager.checkCompatibility = true; - run_next_test(); - }); -}); - -// Tests that compatible-by-default addons are shown if strict compatibility checking is disabled -add_test(function() { - restart_manager(gManagerWindow, "addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - Services.prefs.setBoolPref(PREF_STRICT_COMPAT, false); - search("incompatible", false, function() { - var item = get_addon_item("remote5"); - is_element_visible(item, "Incompatible addon should be visible"); - isnot(item.getAttribute("notification"), "warning", "Compatibility warning should not be shown"); - - item = get_addon_item("remote6"); - is(item, null, "Addon incompatible with the product should not be visible"); - - Services.prefs.setBoolPref(PREF_STRICT_COMPAT, true); - run_next_test(); - }); - }); -}); - - -// Tests that restarting the manager doesn't change search results -add_test(function() { - restart_manager(gManagerWindow, null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - // We never restore to the search pane - is(gCategoryUtilities.selectedCategory, "discover", "View should have changed to discover"); - - // Installed add-on is considered local on new search - gAddonInstalled = true; - - // Switch over to extensions list so we can do a new search - gCategoryUtilities.openType("extension", function() { - search(QUERY, false, function() { - check_filtered_results(QUERY, "relevancescore", false); - - var installBtn = get_install_button(get_addon_item(REMOTE_TO_INSTALL)); - is(installBtn.hidden, true, "Install button should be hidden for installed item"); - - run_next_test(); - }); - }); - }); -}); - -function bug_815120_test_search(aLocalOnly) { - restart_manager(gManagerWindow, "addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - // Installed add-on is considered local on new search - gAddonInstalled = true; - - // The search buttons should be hidden in the LocalOnly setup - var localFilterButton = aWindow.document.getElementById("search-filter-local"); - is(aLocalOnly, is_hidden(localFilterButton), "Local filter button visibility does not match, aLocalOnly = " + aLocalOnly); - - var remoteFilterButton = aWindow.document.getElementById("search-filter-remote"); - is(aLocalOnly, is_hidden(remoteFilterButton), "Remote filter button visibility does not match, aLocalOnly = " + aLocalOnly); - - search(QUERY, false, function() { - check_filtered_results(QUERY, "relevancescore", false, aLocalOnly); - run_next_test(); - }); - }); -} - -// Tests for Bug 815120 -add_test(function() { - Services.prefs.setBoolPref(PREF_XPI_ENABLED, false); - bug_815120_test_search(true); -}); - -add_test(function() { - Services.prefs.setBoolPref(PREF_XPI_ENABLED, true); - bug_815120_test_search(false); -}); - diff --git a/toolkit/mozapps/webextensions/test/browser/browser_searching.xml b/toolkit/mozapps/webextensions/test/browser/browser_searching.xml deleted file mode 100644 index a3537b269..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_searching.xml +++ /dev/null @@ -1,277 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<searchresults total_results="100"> - <addon> - <name>FAIL</name> - <type id='1'>Extension</type> - <guid>addon1@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>Addon already installed - SEARCH</summary> - <description>Test 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="1">http://example.com/addon1.xpi</install> - </addon> - <addon> - <name>FAIL</name> - <type id='9'>lightweight theme</type> - <guid>addon12345@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>Addon with uninstallable type shouldn't be visible in search</summary> - <description>Test 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="1">http://example.com/addon1.xpi</install> - </addon> - <addon> - <name>FAIL</name> - <type id='1'>Extension</type> - <guid>install1@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>Install already exists - SEARCH</summary> - <description>Test 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="1">http://example.com/install1.xpi</install> - </addon> - <addon> - <name>PASS - b</name> - <type id='1'>Extension</type> - <guid>remote1@tests.mozilla.org</guid> - <version>3.0</version> - <authors> - <author> - <name>Test Creator</name> - <link>http://example.com/creator.html</link> - </author> - </authors> - <status id='4'>Public</status> - <summary>Test summary - SEARCH SEARCH</summary> - <description>Test 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_searching.xpi</install> - </addon> - <addon> - <name>PASS - d</name> - <type id='1'>Extension</type> - <guid>remote2@tests.mozilla.org</guid> - <version>4.0</version> - <authors> - <author> - <name>Test Creator</name> - <link>http://example.com/creator.html</link> - </author> - </authors> - <status id='4'>Public</status> - <summary>Test summary - SEARCHing SEARCH</summary> - <description>Test 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="5">http://example.com/remote2.xpi</install> - </addon> - <addon> - <name>PASS - e</name> - <type id='1'>Extension</type> - <guid>remote3@tests.mozilla.org</guid> - <version>5.0</version> - <authors> - <author> - <name>Test Creator</name> - <link>http://example.com/creator.html</link> - </author> - </authors> - <status id='4'>Public</status> - <summary>Test summary - Does not match query</summary> - <description>Test 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="1">http://example.com/remote3.xpi</install> - </addon> - <addon> - <name>PASS - h</name> - <type id='1'>Extension</type> - <guid>remote4@tests.mozilla.org</guid> - <version>6.0</version> - <authors> - <author> - <name>Test Creator</name> - <link>http://example.com/creator.html</link> - </author> - </authors> - <status id='4'>Public</status> - <summary>Test summary - SEARCHing SEARCH SEARCH</summary> - <description>Test 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="4">http://example.com/remote4.xpi</install> - </addon> - <addon> - <name>PASS - i</name> - <type id='1'>Extension</type> - <guid>remote5@tests.mozilla.org</guid> - <version>6.0</version> - <authors> - <author> - <name>Test Creator</name> - <link>http://example.com/creator.html</link> - </author> - </authors> - <status id='4'>Public</status> - <summary>Incompatible test</summary> - <description>Test description</description> - <compatible_applications> - <application> - <name>Firefox</name> - <appID>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</appID> - <min_version>0</min_version> - <max_version>1</max_version> - </application> - <application> - <name>SeaMonkey</name> - <appID>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</appID> - <min_version>0</min_version> - <max_version>1</max_version> - </application> - </compatible_applications> - <compatible_os>ALL</compatible_os> - <install size="1">http://example.com/addon1.xpi</install> - </addon> - <addon> - <name>FAIL - j</name> - <type id='1'>Extension</type> - <guid>remote6@tests.mozilla.org</guid> - <version>6.0</version> - <authors> - <author> - <name>Test Creator</name> - <link>http://example.com/creator.html</link> - </author> - </authors> - <status id='4'>Public</status> - <summary>Incompatible test</summary> - <description>Test description</description> - <compatible_applications> - <application> - <name>Fake Product</name> - <appID>fakeproduct@mozilla.org</appID> - <min_version>0</min_version> - <max_version>1</max_version> - </application> - </compatible_applications> - <compatible_os>ALL</compatible_os> - <install size="1">http://example.com/addon1.xpi</install> - </addon> -</searchresults> - diff --git a/toolkit/mozapps/webextensions/test/browser/browser_searching_empty.xml b/toolkit/mozapps/webextensions/test/browser/browser_searching_empty.xml deleted file mode 100644 index 24f6cb89f..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_searching_empty.xml +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<searchresults total_results="100" /> - diff --git a/toolkit/mozapps/webextensions/test/browser/browser_sorting.js b/toolkit/mozapps/webextensions/test/browser/browser_sorting.js deleted file mode 100644 index b57e7a6f7..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_sorting.js +++ /dev/null @@ -1,372 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that sorting of add-ons works correctly -// (this test uses the list view, even though it no longer has sort buttons - see bug 623207) - -var gManagerWindow; -var gProvider; - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - gProvider.createAddons([{ - // enabledInstalled group - // * Enabled - // * Incompatible but enabled because compatibility checking is off - // * Waiting to be installed - // * Waiting to be enabled - id: "test1@tests.mozilla.org", - name: "Test add-on", - description: "foo", - updateDate: new Date(2010, 4, 2, 0, 0, 0), - size: 1, - pendingOperations: AddonManager.PENDING_NONE, - }, { - id: "test2@tests.mozilla.org", - name: "a first add-on", - description: "foo", - updateDate: new Date(2010, 4, 1, 23, 59, 59), - size: 265, - pendingOperations: AddonManager.PENDING_UPGRADE, - isActive: true, - isCompatible: false, - }, { - id: "test3@tests.mozilla.org", - name: "\u010Cesk\u00FD slovn\u00EDk", // Český slovník - description: "foo", - updateDate: new Date(2010, 4, 2, 0, 0, 1), - size: 12, - pendingOperations: AddonManager.PENDING_INSTALL, - isActive: false, - }, { - id: "test4@tests.mozilla.org", - name: "canadian dictionary", - updateDate: new Date(1970, 0, 1, 0, 0, 0), - description: "foo", - isActive: true, - }, { - id: "test5@tests.mozilla.org", - name: "croatian dictionary", - description: "foo", - updateDate: new Date(2012, 12, 12, 0, 0, 0), - size: 5, - pendingOperations: AddonManager.PENDING_ENABLE, - isActive: false, - }, { - // pendingDisable group - // * Waiting to be disabled - id: "test6@tests.mozilla.org", - name: "orange Add-on", - description: "foo", - updateDate: new Date(2010, 4, 2, 0, 0, 0), - size: 142, - isCompatible: false, - isActive: true, - pendingOperations: AddonManager.PENDING_DISABLE, - }, { - id: "test7@tests.mozilla.org", - name: "Blue Add-on", - description: "foo", - updateDate: new Date(2010, 4, 1, 23, 59, 59), - size: 65, - isActive: true, - pendingOperations: AddonManager.PENDING_DISABLE, - }, { - id: "test8@tests.mozilla.org", - name: "Green Add-on", - description: "foo", - updateDate: new Date(2010, 4, 3, 0, 0, 1), - size: 125, - pendingOperations: AddonManager.PENDING_DISABLE, - }, { - id: "test9@tests.mozilla.org", - name: "red Add-on", - updateDate: new Date(2011, 4, 1, 0, 0, 0), - description: "foo", - isCompatible: false, - pendingOperations: AddonManager.PENDING_DISABLE, - }, { - id: "test10@tests.mozilla.org", - name: "Purple Add-on", - description: "foo", - updateDate: new Date(2012, 12, 12, 0, 0, 0), - size: 56, - isCompatible: false, - pendingOperations: AddonManager.PENDING_DISABLE, - }, { - // pendingUninstall group - // * Waiting to be removed - id: "test11@tests.mozilla.org", - name: "amber Add-on", - description: "foo", - updateDate: new Date(1978, 4, 2, 0, 0, 0), - size: 142, - isActive: false, - appDisabled: true, - pendingOperations: AddonManager.PENDING_UNINSTALL, - }, { - id: "test12@tests.mozilla.org", - name: "Salmon Add-on - pending disable", - description: "foo", - updateDate: new Date(2054, 4, 1, 23, 59, 59), - size: 65, - isActive: true, - pendingOperations: AddonManager.PENDING_UNINSTALL, - }, { - id: "test13@tests.mozilla.org", - name: "rose Add-on", - description: "foo", - updateDate: new Date(2010, 4, 2, 0, 0, 1), - size: 125, - isActive: false, - userDisabled: true, - pendingOperations: AddonManager.PENDING_UNINSTALL, - }, { - id: "test14@tests.mozilla.org", - name: "Violet Add-on", - updateDate: new Date(2010, 5, 1, 0, 0, 0), - description: "foo", - isActive: false, - appDisabled: true, - pendingOperations: AddonManager.PENDING_UNINSTALL, - }, { - id: "test15@tests.mozilla.org", - name: "white Add-on", - description: "foo", - updateDate: new Date(2010, 4, 12, 0, 0, 0), - size: 56, - isActive: false, - userDisabled: true, - pendingOperations: AddonManager.PENDING_UNINSTALL, - }, { - // disabledIncompatibleBlocked group - // * Disabled - // * Incompatible - // * Blocklisted - id: "test16@tests.mozilla.org", - name: "grimsby Add-on", - description: "foo", - updateDate: new Date(2010, 4, 1, 0, 0, 0), - size: 142, - isActive: false, - appDisabled: true, - }, { - id: "test17@tests.mozilla.org", - name: "beamsville Add-on", - description: "foo", - updateDate: new Date(2010, 4, 8, 23, 59, 59), - size: 65, - isActive: false, - userDisabled: true, - }, { - id: "test18@tests.mozilla.org", - name: "smithville Add-on", - description: "foo", - updateDate: new Date(2010, 4, 3, 0, 0, 1), - size: 125, - isActive: false, - userDisabled: true, - blocklistState: Ci.nsIBlocklistService.STATE_OUTDATED, - }, { - id: "test19@tests.mozilla.org", - name: "dunnville Add-on", - updateDate: new Date(2010, 4, 2, 0, 0, 0), - description: "foo", - isActive: false, - appDisabled: true, - isCompatible: false, - blocklistState: Ci.nsIBlocklistService.STATE_NOT_BLOCKED, - }, { - id: "test20@tests.mozilla.org", - name: "silverdale Add-on", - description: "foo", - updateDate: new Date(2010, 4, 12, 0, 0, 0), - size: 56, - isActive: false, - appDisabled: true, - blocklistState: Ci.nsIBlocklistService.STATE_BLOCKED, - }]); - - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - -function set_order(aSortBy, aAscending) { - var list = gManagerWindow.document.getElementById("addon-list"); - var elements = []; - var node = list.firstChild; - while (node) { - elements.push(node); - node = node.nextSibling; - } - gManagerWindow.sortElements(elements, ["uiState", aSortBy], aAscending); - for (let element of elements) - list.appendChild(element); -} - -function check_order(aExpectedOrder) { - var order = []; - var list = gManagerWindow.document.getElementById("addon-list"); - var node = list.firstChild; - while (node) { - var id = node.getAttribute("value"); - if (id && id.endsWith("@tests.mozilla.org")) - order.push(node.getAttribute("value")); - node = node.nextSibling; - } - - is(order.toSource(), aExpectedOrder.toSource(), "Should have seen the right order"); -} - -// Tests that ascending name ordering was the default -add_test(function() { - - check_order([ - "test2@tests.mozilla.org", - "test4@tests.mozilla.org", - "test3@tests.mozilla.org", - "test5@tests.mozilla.org", - "test1@tests.mozilla.org", - "test7@tests.mozilla.org", - "test8@tests.mozilla.org", - "test6@tests.mozilla.org", - "test10@tests.mozilla.org", - "test9@tests.mozilla.org", - "test11@tests.mozilla.org", - "test13@tests.mozilla.org", - "test12@tests.mozilla.org", - "test14@tests.mozilla.org", - "test15@tests.mozilla.org", - "test17@tests.mozilla.org", - "test19@tests.mozilla.org", - "test16@tests.mozilla.org", - "test20@tests.mozilla.org", - "test18@tests.mozilla.org", - ]); - run_next_test(); -}); - -// Tests that switching to date ordering works -add_test(function() { - set_order("updateDate", false); - - // When we're ascending with updateDate, it's from newest - // to oldest. - - check_order([ - "test5@tests.mozilla.org", - "test3@tests.mozilla.org", - "test1@tests.mozilla.org", - "test2@tests.mozilla.org", - "test4@tests.mozilla.org", - "test10@tests.mozilla.org", - "test9@tests.mozilla.org", - "test8@tests.mozilla.org", - "test6@tests.mozilla.org", - "test7@tests.mozilla.org", - "test12@tests.mozilla.org", - "test14@tests.mozilla.org", - "test15@tests.mozilla.org", - "test13@tests.mozilla.org", - "test11@tests.mozilla.org", - "test20@tests.mozilla.org", - "test17@tests.mozilla.org", - "test18@tests.mozilla.org", - "test19@tests.mozilla.org", - "test16@tests.mozilla.org", - ]); - - set_order("updateDate", true); - - check_order([ - "test4@tests.mozilla.org", - "test2@tests.mozilla.org", - "test1@tests.mozilla.org", - "test3@tests.mozilla.org", - "test5@tests.mozilla.org", - "test7@tests.mozilla.org", - "test6@tests.mozilla.org", - "test8@tests.mozilla.org", - "test9@tests.mozilla.org", - "test10@tests.mozilla.org", - "test11@tests.mozilla.org", - "test13@tests.mozilla.org", - "test15@tests.mozilla.org", - "test14@tests.mozilla.org", - "test12@tests.mozilla.org", - "test16@tests.mozilla.org", - "test19@tests.mozilla.org", - "test18@tests.mozilla.org", - "test17@tests.mozilla.org", - "test20@tests.mozilla.org", - ]); - - run_next_test(); -}); - -// Tests that switching to name ordering works -add_test(function() { - set_order("name", true); - - check_order([ - "test2@tests.mozilla.org", - "test4@tests.mozilla.org", - "test3@tests.mozilla.org", - "test5@tests.mozilla.org", - "test1@tests.mozilla.org", - "test7@tests.mozilla.org", - "test8@tests.mozilla.org", - "test6@tests.mozilla.org", - "test10@tests.mozilla.org", - "test9@tests.mozilla.org", - "test11@tests.mozilla.org", - "test13@tests.mozilla.org", - "test12@tests.mozilla.org", - "test14@tests.mozilla.org", - "test15@tests.mozilla.org", - "test17@tests.mozilla.org", - "test19@tests.mozilla.org", - "test16@tests.mozilla.org", - "test20@tests.mozilla.org", - "test18@tests.mozilla.org", - ]); - - set_order("name", false); - - check_order([ - "test1@tests.mozilla.org", - "test5@tests.mozilla.org", - "test3@tests.mozilla.org", - "test4@tests.mozilla.org", - "test2@tests.mozilla.org", - "test9@tests.mozilla.org", - "test10@tests.mozilla.org", - "test6@tests.mozilla.org", - "test8@tests.mozilla.org", - "test7@tests.mozilla.org", - "test15@tests.mozilla.org", - "test14@tests.mozilla.org", - "test12@tests.mozilla.org", - "test13@tests.mozilla.org", - "test11@tests.mozilla.org", - "test18@tests.mozilla.org", - "test20@tests.mozilla.org", - "test16@tests.mozilla.org", - "test19@tests.mozilla.org", - "test17@tests.mozilla.org", - ]); - - run_next_test(); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_sorting_plugins.js b/toolkit/mozapps/webextensions/test/browser/browser_sorting_plugins.js deleted file mode 100644 index 2bb6b4ba4..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_sorting_plugins.js +++ /dev/null @@ -1,95 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that sorting of plugins works correctly -// (this test checks that plugins with "ask to activate" state appear after those with -// "always activate" and before those with "never activate") - -var gManagerWindow; -var gProvider; - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - gProvider.createAddons([{ - // enabledInstalled group - // * Always activate - // * Ask to activate - // * Never activate - id: "test1@tests.mozilla.org", - name: "Java Applet Plug-in Java 7 Update 51", - description: "foo", - type: "plugin", - isActive: true, - userDisabled: AddonManager.STATE_ASK_TO_ACTIVATE - }, { - id: "test2@tests.mozilla.org", - name: "Quick Time Plug-in", - description: "foo", - type: "plugin", - isActive: true, - userDisabled: false - }, { - id: "test3@tests.mozilla.org", - name: "Shockwave Flash", - description: "foo", - type: "plugin", - isActive: false, - userDisabled: true - }, { - id: "test4@tests.mozilla.org", - name: "Adobe Reader Plug-in", - description: "foo", - type: "plugin", - isActive: true, - userDisabled: AddonManager.STATE_ASK_TO_ACTIVATE - }, { - id: "test5@tests.mozilla.org", - name: "3rd Party Plug-in", - description: "foo", - type: "plugin", - isActive: true, - userDisabled: false - }]); - - open_manager("addons://list/plugin", function(aWindow) { - gManagerWindow = aWindow; - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - -function check_order(aExpectedOrder) { - var order = []; - var list = gManagerWindow.document.getElementById("addon-list"); - var node = list.firstChild; - while (node) { - var id = node.getAttribute("value"); - if (id && id.endsWith("@tests.mozilla.org")) - order.push(node.getAttribute("value")); - node = node.nextSibling; - } - - is(order.toSource(), aExpectedOrder.toSource(), "Should have seen the right order"); -} - -// Tests that ascending name ordering was the default -add_test(function() { - - check_order([ - "test5@tests.mozilla.org", - "test2@tests.mozilla.org", - "test4@tests.mozilla.org", - "test1@tests.mozilla.org", - "test3@tests.mozilla.org" - ]); - - run_next_test(); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_system_addons_are_e10s.js b/toolkit/mozapps/webextensions/test/browser/browser_system_addons_are_e10s.js deleted file mode 100644 index 37ab76542..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_system_addons_are_e10s.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; - -add_task(function* test_enabled() { - let addons = yield new Promise(resolved => AddonManager.getAllAddons(resolved)); - for (let addon of addons) { - if (addon.isSystem) { - ok(addon.multiprocessCompatible, - `System addon ${addon.id} is not marked as multiprocess compatible`); - ok(!addon.unpack, - `System add-on ${addon.id} isn't a packed add-on.`); - } - } -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_tabsettings.js b/toolkit/mozapps/webextensions/test/browser/browser_tabsettings.js deleted file mode 100644 index 2838698c7..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_tabsettings.js +++ /dev/null @@ -1,100 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests various aspects of the details view - -var gManagerWindow; -var gCategoryUtilities; -var gProvider; - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "tabsettings@tests.mozilla.org", - name: "Tab Settings", - version: "1", - optionsURL: CHROMEROOT + "addon_prefs.xul", - optionsType: AddonManager.OPTIONS_TYPE_TAB - }]); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - -add_test(function() { - var addon = get_addon_element(gManagerWindow, "tabsettings@tests.mozilla.org"); - is(addon.mAddon.optionsType, AddonManager.OPTIONS_TYPE_TAB, "Options should be inline type"); - addon.parentNode.ensureElementIsVisible(addon); - - var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn"); - is_element_visible(button, "Preferences button should be visible"); - - if (gUseInContentUI) { - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); - - var browser = gBrowser.selectedBrowser; - browser.addEventListener("DOMContentLoaded", function() { - browser.removeEventListener("DOMContentLoaded", arguments.callee, false); - is(browser.currentURI.spec, addon.mAddon.optionsURL, "New tab should have loaded the options URL"); - browser.contentWindow.close(); - run_next_test(); - }, false); - return; - } - - let instantApply = Services.prefs.getBoolPref("browser.preferences.instantApply"); - - function observer(aSubject, aTopic, aData) { - switch (aTopic) { - case "domwindowclosed": - // Give the preference window a chance to finish closing before - // closing the add-ons manager. - waitForFocus(function () { - Services.ww.unregisterNotification(observer); - run_next_test(); - }); - break; - case "domwindowopened": - let win = aSubject.QueryInterface(Ci.nsIDOMEventTarget); - waitForFocus(function () { - // If the openDialog privileges are wrong a new browser window - // will open, let the test proceed (and fail) rather than timeout. - if (win.location != addon.mAddon.optionsURL && - win.location != "chrome://browser/content/browser.xul") - return; - - is(win.location, addon.mAddon.optionsURL, - "The correct addon pref window should have opened"); - - let chromeFlags = win.QueryInterface(Ci.nsIInterfaceRequestor). - getInterface(Ci.nsIWebNavigation). - QueryInterface(Ci.nsIDocShellTreeItem).treeOwner. - QueryInterface(Ci.nsIInterfaceRequestor). - getInterface(Ci.nsIXULWindow).chromeFlags; - ok(chromeFlags & Ci.nsIWebBrowserChrome.CHROME_OPENAS_CHROME && - (instantApply || chromeFlags & Ci.nsIWebBrowserChrome.CHROME_OPENAS_DIALOG), - "Window was open as a chrome dialog."); - - win.close(); - }, win); - break; - } - } - - Services.ww.registerNotification(observer); - EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_task_next_test.js b/toolkit/mozapps/webextensions/test/browser/browser_task_next_test.js deleted file mode 100644 index 5ff2aff78..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_task_next_test.js +++ /dev/null @@ -1,17 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Test that we throw if a test created with add_task() -// calls run_next_test - -add_task(function* run_next_throws() { - let err = null; - try { - run_next_test(); - } catch (e) { - err = e; - info("run_next_test threw " + err); - } - ok(err, "run_next_test() should throw an error inside an add_task test"); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_types.js b/toolkit/mozapps/webextensions/test/browser/browser_types.js deleted file mode 100644 index 8abb0ff73..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_types.js +++ /dev/null @@ -1,473 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that registering new types works - -var gManagerWindow; -var gCategoryUtilities; - -var gProvider = { -}; - -var gTypes = [ - new AddonManagerPrivate.AddonType("type1", null, "Type 1", - AddonManager.VIEW_TYPE_LIST, 4500), - new AddonManagerPrivate.AddonType("missing1", null, "Missing 1"), - new AddonManagerPrivate.AddonType("type2", null, "Type 1", - AddonManager.VIEW_TYPE_LIST, 5100, - AddonManager.TYPE_UI_HIDE_EMPTY), - { - id: "type3", - name: "Type 3", - uiPriority: 5200, - viewType: AddonManager.VIEW_TYPE_LIST - } -]; - -function go_back(aManager) { - if (gUseInContentUI) { - gBrowser.goBack(); - } else { - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("back-btn"), - { }, aManager); - } -} - -function go_forward(aManager) { - if (gUseInContentUI) { - gBrowser.goForward(); - } else { - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("forward-btn"), - { }, aManager); - } -} - -function check_state(aManager, canGoBack, canGoForward) { - var doc = aManager.document; - - if (gUseInContentUI) { - is(gBrowser.canGoBack, canGoBack, "canGoBack should be correct"); - is(gBrowser.canGoForward, canGoForward, "canGoForward should be correct"); - } - - if (!is_hidden(doc.getElementById("back-btn"))) { - is(!doc.getElementById("back-btn").disabled, canGoBack, "Back button should have the right state"); - is(!doc.getElementById("forward-btn").disabled, canGoForward, "Forward button should have the right state"); - } -} - -function test() { - waitForExplicitFinish(); - - run_next_test(); -} - -function end_test() { - finish(); -} - -// Add a new type, open the manager and make sure it is in the right place -add_test(function() { - AddonManagerPrivate.registerProvider(gProvider, gTypes); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - ok(gCategoryUtilities.get("type1"), "Type 1 should be present"); - ok(gCategoryUtilities.get("type2"), "Type 2 should be present"); - ok(!gCategoryUtilities.get("missing1", true), "Missing 1 should be absent"); - - is(gCategoryUtilities.get("type1").previousSibling.getAttribute("value"), - "addons://list/extension", "Type 1 should be in the right place"); - is(gCategoryUtilities.get("type2").previousSibling.getAttribute("value"), - "addons://list/theme", "Type 2 should be in the right place"); - - ok(gCategoryUtilities.isTypeVisible("type1"), "Type 1 should be visible"); - ok(!gCategoryUtilities.isTypeVisible("type2"), "Type 2 should be hidden"); - - run_next_test(); - }); -}); - -// Select the type, close the manager and remove it then open the manager and -// check we're back to the default view -add_test(function() { - gCategoryUtilities.openType("type1", function() { - close_manager(gManagerWindow, function() { - AddonManagerPrivate.unregisterProvider(gProvider); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - ok(!gCategoryUtilities.get("type1", true), "Type 1 should be absent"); - ok(!gCategoryUtilities.get("type2", true), "Type 2 should be absent"); - ok(!gCategoryUtilities.get("missing1", true), "Missing 1 should be absent"); - - is(gCategoryUtilities.selectedCategory, "discover", "Should be back to the default view"); - - close_manager(gManagerWindow, run_next_test); - }); - }); - }); -}); - -// Add a type while the manager is still open and check it appears -add_test(function() { - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - ok(!gCategoryUtilities.get("type1", true), "Type 1 should be absent"); - ok(!gCategoryUtilities.get("type2", true), "Type 2 should be absent"); - ok(!gCategoryUtilities.get("missing1", true), "Missing 1 should be absent"); - - AddonManagerPrivate.registerProvider(gProvider, gTypes); - - ok(gCategoryUtilities.get("type1"), "Type 1 should be present"); - ok(gCategoryUtilities.get("type2"), "Type 2 should be present"); - ok(!gCategoryUtilities.get("missing1", true), "Missing 1 should be absent"); - - is(gCategoryUtilities.get("type1").previousSibling.getAttribute("value"), - "addons://list/extension", "Type 1 should be in the right place"); - is(gCategoryUtilities.get("type2").previousSibling.getAttribute("value"), - "addons://list/theme", "Type 2 should be in the right place"); - - ok(gCategoryUtilities.isTypeVisible("type1"), "Type 1 should be visible"); - ok(!gCategoryUtilities.isTypeVisible("type2"), "Type 2 should be hidden"); - - run_next_test(); - }); -}); - -// Remove the type while it is beng viewed and check it is replaced with the -// default view -add_test(function() { - gCategoryUtilities.openType("type1", function() { - gCategoryUtilities.openType("plugin", function() { - go_back(gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "type1", "Should be showing the custom view"); - check_state(gManagerWindow, true, true); - - AddonManagerPrivate.unregisterProvider(gProvider); - - ok(!gCategoryUtilities.get("type1", true), "Type 1 should be absent"); - ok(!gCategoryUtilities.get("type2", true), "Type 2 should be absent"); - ok(!gCategoryUtilities.get("missing1", true), "Missing 1 should be absent"); - - is(gCategoryUtilities.selectedCategory, "discover", "Should be back to the default view"); - check_state(gManagerWindow, true, true); - - go_back(gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "extension", "Should be showing the extension view"); - check_state(gManagerWindow, false, true); - - go_forward(gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "discover", "Should be back to the default view"); - check_state(gManagerWindow, true, true); - - go_forward(gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "plugin", "Should be back to the plugins view"); - check_state(gManagerWindow, true, false); - - go_back(gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "discover", "Should be back to the default view"); - check_state(gManagerWindow, true, true); - - close_manager(gManagerWindow, run_next_test); - }); - }); - }); - }); - }); - }); - }); -}); - -// Test that when going back to a now missing category we skip it -add_test(function() { - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - AddonManagerPrivate.registerProvider(gProvider, gTypes); - - ok(gCategoryUtilities.get("type1"), "Type 1 should be present"); - ok(gCategoryUtilities.isTypeVisible("type1"), "Type 1 should be visible"); - - gCategoryUtilities.openType("type1", function() { - gCategoryUtilities.openType("plugin", function() { - AddonManagerPrivate.unregisterProvider(gProvider); - - ok(!gCategoryUtilities.get("type1", true), "Type 1 should not be present"); - - go_back(gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "extension", "Should be back to the first view"); - check_state(gManagerWindow, false, true); - - close_manager(gManagerWindow, run_next_test); - }); - }); - }); - }); -}); - -// Test that when going forward to a now missing category we skip it -add_test(function() { - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - AddonManagerPrivate.registerProvider(gProvider, gTypes); - - ok(gCategoryUtilities.get("type1"), "Type 1 should be present"); - ok(gCategoryUtilities.isTypeVisible("type1"), "Type 1 should be visible"); - - gCategoryUtilities.openType("type1", function() { - gCategoryUtilities.openType("plugin", function() { - go_back(gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - go_back(gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "extension", "Should be back to the extension view"); - - AddonManagerPrivate.unregisterProvider(gProvider); - - ok(!gCategoryUtilities.get("type1", true), "Type 1 should not be present"); - - go_forward(gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "plugin", "Should be back to the plugin view"); - check_state(gManagerWindow, true, false); - - close_manager(gManagerWindow, run_next_test); - }); - }); - }); - }); - }); - }); -}); - -// Test that when going back to a now missing category and we can't go back any -// any further then we just display the default view -add_test(function() { - AddonManagerPrivate.registerProvider(gProvider, gTypes); - - open_manager("addons://list/type1", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - is(gCategoryUtilities.selectedCategory, "type1", "Should be at the custom view"); - - ok(gCategoryUtilities.get("type1"), "Type 1 should be present"); - ok(gCategoryUtilities.isTypeVisible("type1"), "Type 1 should be visible"); - - gCategoryUtilities.openType("extension", function() { - AddonManagerPrivate.unregisterProvider(gProvider); - - ok(!gCategoryUtilities.get("type1", true), "Type 1 should not be present"); - - go_back(gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "discover", "Should be at the default view"); - check_state(gManagerWindow, false, true); - - close_manager(gManagerWindow, run_next_test); - }); - }); - }); -}); - -// Test that when going forward to a now missing category and we can't go -// forward any further then we just display the default view -add_test(function() { - AddonManagerPrivate.registerProvider(gProvider, gTypes); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - ok(gCategoryUtilities.get("type1"), "Type 1 should be present"); - ok(gCategoryUtilities.isTypeVisible("type1"), "Type 1 should be visible"); - - gCategoryUtilities.openType("type1", function() { - go_back(gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "extension", "Should be at the extension view"); - - AddonManagerPrivate.unregisterProvider(gProvider); - - ok(!gCategoryUtilities.get("type1", true), "Type 1 should not be present"); - - go_forward(gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "discover", "Should be at the default view"); - check_state(gManagerWindow, true, false); - - close_manager(gManagerWindow, run_next_test); - }); - }); - }); - }); -}); - -// Test that when going back we skip multiple missing categories -add_test(function() { - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - AddonManagerPrivate.registerProvider(gProvider, gTypes); - - ok(gCategoryUtilities.get("type1"), "Type 1 should be present"); - ok(gCategoryUtilities.isTypeVisible("type1"), "Type 1 should be visible"); - - gCategoryUtilities.openType("type1", function() { - gCategoryUtilities.openType("type3", function() { - gCategoryUtilities.openType("plugin", function() { - AddonManagerPrivate.unregisterProvider(gProvider); - - ok(!gCategoryUtilities.get("type1", true), "Type 1 should not be present"); - - go_back(gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "extension", "Should be back to the first view"); - check_state(gManagerWindow, false, true); - - close_manager(gManagerWindow, run_next_test); - }); - }); - }); - }); - }); -}); - -// Test that when going forward we skip multiple missing categories -add_test(function() { - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - AddonManagerPrivate.registerProvider(gProvider, gTypes); - - ok(gCategoryUtilities.get("type1"), "Type 1 should be present"); - ok(gCategoryUtilities.isTypeVisible("type1"), "Type 1 should be visible"); - - gCategoryUtilities.openType("type1", function() { - gCategoryUtilities.openType("type3", function() { - gCategoryUtilities.openType("plugin", function() { - go_back(gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - go_back(gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - go_back(gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "extension", "Should be back to the extension view"); - - AddonManagerPrivate.unregisterProvider(gProvider); - - ok(!gCategoryUtilities.get("type1", true), "Type 1 should not be present"); - - go_forward(gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "plugin", "Should be back to the plugin view"); - check_state(gManagerWindow, true, false); - - close_manager(gManagerWindow, run_next_test); - }); - }); - }); - }); - }); - }); - }); - }); -}); - -// Test that when going back we skip all missing categories and when we can't go -// back any any further then we just display the default view -add_test(function() { - AddonManagerPrivate.registerProvider(gProvider, gTypes); - - open_manager("addons://list/type1", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - is(gCategoryUtilities.selectedCategory, "type1", "Should be at the custom view"); - - ok(gCategoryUtilities.get("type1"), "Type 1 should be present"); - ok(gCategoryUtilities.isTypeVisible("type1"), "Type 1 should be visible"); - - gCategoryUtilities.openType("type3", function() { - gCategoryUtilities.openType("extension", function() { - AddonManagerPrivate.unregisterProvider(gProvider); - - ok(!gCategoryUtilities.get("type1", true), "Type 1 should not be present"); - - go_back(gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "discover", "Should be at the default view"); - check_state(gManagerWindow, false, true); - - close_manager(gManagerWindow, run_next_test); - }); - }); - }); - }); -}); - -// Test that when going forward we skip all missing categories and when we can't -// go back any any further then we just display the default view -add_test(function() { - AddonManagerPrivate.registerProvider(gProvider, gTypes); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - ok(gCategoryUtilities.get("type1"), "Type 1 should be present"); - ok(gCategoryUtilities.isTypeVisible("type1"), "Type 1 should be visible"); - - gCategoryUtilities.openType("type1", function() { - gCategoryUtilities.openType("type3", function() { - go_back(gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - go_back(gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "extension", "Should be at the extension view"); - - AddonManagerPrivate.unregisterProvider(gProvider); - - ok(!gCategoryUtilities.get("type1", true), "Type 1 should not be present"); - - go_forward(gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "discover", "Should be at the default view"); - check_state(gManagerWindow, true, false); - - close_manager(gManagerWindow, run_next_test); - }); - }); - }); - }); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_uninstalling.js b/toolkit/mozapps/webextensions/test/browser/browser_uninstalling.js deleted file mode 100644 index a9329e496..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_uninstalling.js +++ /dev/null @@ -1,1098 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that searching for add-ons works correctly - -var gManagerWindow; -var gDocument; -var gCategoryUtilities; -var gProvider; - -function test() { - requestLongerTimeout(2); - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "Uninstall needs restart", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_UNINSTALL - }, { - id: "addon2@tests.mozilla.org", - name: "Uninstall doesn't need restart 1", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon3@tests.mozilla.org", - name: "Uninstall doesn't need restart 2", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon4@tests.mozilla.org", - name: "Uninstall doesn't need restart 3", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon5@tests.mozilla.org", - name: "Uninstall doesn't need restart 4", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon6@tests.mozilla.org", - name: "Uninstall doesn't need restart 5", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon7@tests.mozilla.org", - name: "Uninstall doesn't need restart 6", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon8@tests.mozilla.org", - name: "Uninstall doesn't need restart 7", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon9@tests.mozilla.org", - name: "Uninstall doesn't need restart 8", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }]); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gDocument = gManagerWindow.document; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - -function get_item_in_list(aId, aList) { - var item = aList.firstChild; - while (item) { - if ("mAddon" in item && item.mAddon.id == aId) { - aList.ensureElementIsVisible(item); - return item; - } - item = item.nextSibling; - } - return null; -} - -// Tests that uninstalling a normal add-on from the list view can be undone -add_test(function() { - var ID = "addon1@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - ok(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL, "Add-on should require a restart to uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); -}); - -// Tests that uninstalling a restartless add-on from the list view can be undone -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(aAddon.isActive, "Add-on should be active"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); -}); - -// Tests that uninstalling a disabled restartless add-on from the list view can -// be undone and doesn't re-enable -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - aAddon.userDisabled = true; - - ok(!aAddon.isActive, "Add-on should be inactive"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!aAddon.isActive, "Add-on should be inactive"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - aAddon.userDisabled = false; - ok(aAddon.isActive, "Add-on should be active"); - - run_next_test(); - }); - }); -}); - -// Tests that uninstalling a normal add-on from the search view can be undone -add_test(function() { - var ID = "addon1@tests.mozilla.org"; - var list = gDocument.getElementById("search-list"); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - // Make sure to show local add-ons - EventUtils.synthesizeMouseAtCenter(gDocument.getElementById("search-filter-local"), { }, gManagerWindow); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - ok(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL, "Add-on should require a restart to uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); -}); - -// Tests that uninstalling a restartless add-on from the search view can be undone -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var list = gDocument.getElementById("search-list"); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - // Make sure to show local add-ons - EventUtils.synthesizeMouseAtCenter(gDocument.getElementById("search-filter-local"), { }, gManagerWindow); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(aAddon.isActive, "Add-on should be active"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); -}); - -// Tests that uninstalling a disabled restartless add-on from the search view can -// be undone and doesn't re-enable -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var list = gDocument.getElementById("search-list"); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - // Make sure to show local add-ons - EventUtils.synthesizeMouseAtCenter(gDocument.getElementById("search-filter-local"), { }, gManagerWindow); - - AddonManager.getAddonByID(ID, function(aAddon) { - aAddon.userDisabled = true; - - ok(!aAddon.isActive, "Add-on should be inactive"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!aAddon.isActive, "Add-on should be inactive"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - aAddon.userDisabled = false; - ok(aAddon.isActive, "Add-on should be active"); - - run_next_test(); - }); - }); -}); - -// Tests that uninstalling a normal add-on from the details view switches back -// to the list view and can be undone -add_test(function() { - var ID = "addon1@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - ok(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL, "Add-on should require a restart to uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(get_current_view(gManagerWindow).id, "detail-view", "Should be in the detail view"); - - var button = gDocument.getElementById("detail-uninstall-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - // Force XBL to apply - item.clientTop; - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); - }); - }); -}); - -// Tests that uninstalling a restartless add-on from the details view switches -// back to the list view and can be undone -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(get_current_view(gManagerWindow).id, "detail-view", "Should be in the detail view"); - - var button = gDocument.getElementById("detail-uninstall-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - // Force XBL to apply - item.clientTop; - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(aAddon.isActive, "Add-on should be active"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); - }); - }); -}); - -// Tests that uninstalling a restartless add-on from the details view switches -// back to the list view and can be undone and doesn't re-enable -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - aAddon.userDisabled = true; - - ok(!aAddon.isActive, "Add-on should be inactive"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(get_current_view(gManagerWindow).id, "detail-view", "Should be in the detail view"); - - var button = gDocument.getElementById("detail-uninstall-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - // Force XBL to apply - item.clientTop; - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!aAddon.isActive, "Add-on should be inactive"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - aAddon.userDisabled = false; - ok(aAddon.isActive, "Add-on should be active"); - - run_next_test(); - }); - }); - }); - }); -}); - -// Tests that a normal add-on pending uninstall shows up in the list view -add_test(function() { - var ID = "addon1@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - ok(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL, "Add-on should require a restart to uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - gCategoryUtilities.openType("plugin", function() { - is(gCategoryUtilities.selectedCategory, "plugin", "View should have changed to plugin"); - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); - }); - }); -}); - -// Tests that a normal add-on pending uninstall shows up in the search view -add_test(function() { - var ID = "addon1@tests.mozilla.org"; - var list = gDocument.getElementById("search-list"); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - // Make sure to show local add-ons - EventUtils.synthesizeMouseAtCenter(gDocument.getElementById("search-filter-local"), { }, gManagerWindow); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - ok(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL, "Add-on should require a restart to uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - gCategoryUtilities.openType("plugin", function() { - is(gCategoryUtilities.selectedCategory, "plugin", "View should have changed to plugin"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); - }); - }); -}); - -// Tests that switching away from the list view finalises the uninstall of -// multiple restartless add-ons -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var ID2 = "addon6@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - item = get_item_in_list(ID2, list); - isnot(item, null, "Should have found the add-on in the list"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - gCategoryUtilities.openType("plugin", function() { - is(gCategoryUtilities.selectedCategory, "plugin", "View should have changed to extension"); - - AddonManager.getAddonsByIDs([ID, ID2], function([aAddon, aAddon2]) { - is(aAddon, null, "Add-on should no longer be installed"); - is(aAddon2, null, "Second add-on should no longer be installed"); - - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - var item = get_item_in_list(ID, list); - is(item, null, "Should not have found the add-on in the list"); - item = get_item_in_list(ID2, list); - is(item, null, "Should not have found the second add-on in the list"); - - run_next_test(); - }); - }); - }); - }); - }); -}); - -// Tests that switching away from the search view finalises the uninstall of -// multiple restartless add-ons -add_test(function() { - var ID = "addon3@tests.mozilla.org"; - var ID2 = "addon7@tests.mozilla.org"; - var list = gDocument.getElementById("search-list"); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - // Make sure to show local add-ons - EventUtils.synthesizeMouseAtCenter(gDocument.getElementById("search-filter-local"), { }, gManagerWindow); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - item = get_item_in_list(ID2, list); - isnot(item, null, "Should have found the add-on in the list"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - gCategoryUtilities.openType("plugin", function() { - is(gCategoryUtilities.selectedCategory, "plugin", "View should have changed to extension"); - - AddonManager.getAddonsByIDs([ID, ID2], function([aAddon, aAddon2]) { - is(aAddon, null, "Add-on should no longer be installed"); - is(aAddon2, null, "Second add-on should no longer be installed"); - - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - var item = get_item_in_list(ID, list); - is(item, null, "Should not have found the add-on in the list"); - item = get_item_in_list(ID2, list); - is(item, null, "Should not have found the second add-on in the list"); - - run_next_test(); - }); - }); - }); - }); - }); -}); - -// Tests that closing the manager from the list view finalises the uninstall of -// multiple restartless add-ons -add_test(function() { - var ID = "addon4@tests.mozilla.org"; - var ID2 = "addon8@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - item = get_item_in_list(ID2, list); - isnot(item, null, "Should have found the add-on in the list"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - close_manager(gManagerWindow, function() { - AddonManager.getAddonsByIDs([ID, ID2], function([aAddon, aAddon2]) { - is(aAddon, null, "Add-on should no longer be installed"); - is(aAddon2, null, "Second add-on should no longer be installed"); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gDocument = gManagerWindow.document; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - var list = gDocument.getElementById("addon-list"); - - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - var item = get_item_in_list(ID, list); - is(item, null, "Should not have found the add-on in the list"); - item = get_item_in_list(ID2, list); - is(item, null, "Should not have found the second add-on in the list"); - - run_next_test(); - }); - }); - }); - }); - }); -}); - -// Tests that closing the manager from the search view finalises the uninstall -// of multiple restartless add-ons -add_test(function() { - var ID = "addon5@tests.mozilla.org"; - var ID2 = "addon9@tests.mozilla.org"; - var list = gDocument.getElementById("search-list"); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - // Make sure to show local add-ons - EventUtils.synthesizeMouseAtCenter(gDocument.getElementById("search-filter-local"), { }, gManagerWindow); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - item = get_item_in_list(ID2, list); - isnot(item, null, "Should have found the add-on in the list"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - close_manager(gManagerWindow, function() { - AddonManager.getAddonsByIDs([ID, ID2], function([aAddon, aAddon2]) { - is(aAddon, null, "Add-on should no longer be installed"); - is(aAddon2, null, "Second add-on should no longer be installed"); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gDocument = gManagerWindow.document; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - var list = gDocument.getElementById("search-list"); - var searchBox = gManagerWindow.document.getElementById("header-search"); - - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - var item = get_item_in_list(ID, list); - is(item, null, "Should not have found the add-on in the list"); - item = get_item_in_list(ID2, list); - is(item, null, "Should not have found the second add-on in the list"); - - run_next_test(); - }); - }); - }); - }); - }); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_update.js b/toolkit/mozapps/webextensions/test/browser/browser_update.js deleted file mode 100644 index 09ceb1240..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_update.js +++ /dev/null @@ -1,53 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that updates correctly flush caches and that new files gets updated. - -function test() { - requestLongerTimeout(2); - waitForExplicitFinish(); - - Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - - run_next_test(); -} - -// Install a first version -add_test(function() { - AddonManager.getInstallForURL(TESTROOT + "addons/browser_update1_1.xpi", - function(aInstall) { - aInstall.install(); - }, "application/x-xpinstall"); - - Services.ppmm.addMessageListener("my-addon-1", function messageListener() { - Services.ppmm.removeMessageListener("my-addon-1", messageListener); - ok(true, "first version sent frame script message"); - run_next_test(); - }); -}); - -// Update to a second version and verify that content gets updated -add_test(function() { - AddonManager.getInstallForURL(TESTROOT + "addons/browser_update1_2.xpi", - function(aInstall) { - aInstall.install(); - }, "application/x-xpinstall"); - - Services.ppmm.addMessageListener("my-addon-2", function messageListener() { - Services.ppmm.removeMessageListener("my-addon-2", messageListener); - ok(true, "second version sent frame script message"); - run_next_test(); - }); -}); - -// Finally, cleanup things -add_test(function() { - Services.prefs.setBoolPref("xpinstall.signatures.required", true); - - AddonManager.getAddonByID("update1@tests.mozilla.org", function(aAddon) { - aAddon.uninstall(); - - finish(); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_updateid.js b/toolkit/mozapps/webextensions/test/browser/browser_updateid.js deleted file mode 100644 index 0fe3eeec5..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_updateid.js +++ /dev/null @@ -1,84 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that updates that change an add-on's ID show up correctly in the UI - -var gProvider; -var gManagerWindow; -var gCategoryUtilities; - -var gApp = document.getElementById("bundle_brand").getString("brandShortName"); - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "manually updating addon", - version: "1.0", - applyBackgroundUpdates: AddonManager.AUTOUPDATE_DISABLE - }]); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - -add_test(function() { - gCategoryUtilities.openType("extension", function() { - gProvider.createInstalls([{ - name: "updated add-on", - existingAddon: gProvider.addons[0], - version: "2.0" - }]); - var newAddon = new MockAddon("addon2@tests.mozilla.org"); - newAddon.name = "updated add-on"; - newAddon.version = "2.0"; - newAddon.pendingOperations = AddonManager.PENDING_INSTALL; - gProvider.installs[0]._addonToInstall = newAddon; - - var item = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org"); - var name = gManagerWindow.document.getAnonymousElementByAttribute(item, "anonid", "name"); - is(name.value, "manually updating addon", "Should show the old name in the list"); - get_tooltip_info(item).then(({ name, version }) => { - is(name, "manually updating addon", "Should show the old name in the tooltip"); - is(version, "1.0", "Should still show the old version in the tooltip"); - - var update = gManagerWindow.document.getAnonymousElementByAttribute(item, "anonid", "update-btn"); - is_element_visible(update, "Update button should be visible"); - - item = get_addon_element(gManagerWindow, "addon2@tests.mozilla.org"); - is(item, null, "Should not show the new version in the list"); - - run_next_test(); - }); - }); -}); - -add_test(function() { - var item = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org"); - var update = gManagerWindow.document.getAnonymousElementByAttribute(item, "anonid", "update-btn"); - EventUtils.synthesizeMouseAtCenter(update, { }, gManagerWindow); - - var pending = gManagerWindow.document.getAnonymousElementByAttribute(item, "anonid", "pending"); - is_element_visible(pending, "Pending message should be visible"); - is(pending.textContent, - get_string("notification.upgrade", "manually updating addon", gApp), - "Pending message should be correct"); - - item = get_addon_element(gManagerWindow, "addon2@tests.mozilla.org"); - is(item, null, "Should not show the new version in the list"); - - run_next_test(); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_updatessl.js b/toolkit/mozapps/webextensions/test/browser/browser_updatessl.js deleted file mode 100644 index 8b816c927..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_updatessl.js +++ /dev/null @@ -1,370 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -var tempScope = {}; -Components.utils.import("resource://gre/modules/addons/AddonUpdateChecker.jsm", tempScope); -var AddonUpdateChecker = tempScope.AddonUpdateChecker; - -const updaterdf = RELATIVE_DIR + "browser_updatessl.rdf"; -const redirect = RELATIVE_DIR + "redirect.sjs?"; -const SUCCESS = 0; -const DOWNLOAD_ERROR = AddonUpdateChecker.ERROR_DOWNLOAD_ERROR; - -const HTTP = "http://example.com/"; -const HTTPS = "https://example.com/"; -const NOCERT = "https://nocert.example.com/"; -const SELFSIGNED = "https://self-signed.example.com/"; -const UNTRUSTED = "https://untrusted.example.com/"; -const EXPIRED = "https://expired.example.com/"; - -const PREF_UPDATE_REQUIREBUILTINCERTS = "extensions.update.requireBuiltInCerts"; - -var gTests = []; -var gStart = 0; -var gLast = 0; - -var HTTPObserver = { - observeActivity: function(aChannel, aType, aSubtype, aTimestamp, aSizeData, - aStringData) { - aChannel.QueryInterface(Ci.nsIChannel); - - dump("*** HTTP Activity 0x" + aType.toString(16) + " 0x" + aSubtype.toString(16) + - " " + aChannel.URI.spec + "\n"); - } -}; - -function test() { - gStart = Date.now(); - requestLongerTimeout(4); - waitForExplicitFinish(); - - let observerService = Cc["@mozilla.org/network/http-activity-distributor;1"]. - getService(Ci.nsIHttpActivityDistributor); - observerService.addObserver(HTTPObserver); - - registerCleanupFunction(function() { - observerService.removeObserver(HTTPObserver); - }); - - run_next_test(); -} - -function end_test() { - Services.prefs.clearUserPref(PREF_UPDATE_REQUIREBUILTINCERTS); - - var cos = Cc["@mozilla.org/security/certoverride;1"]. - getService(Ci.nsICertOverrideService); - cos.clearValidityOverride("nocert.example.com", -1); - cos.clearValidityOverride("self-signed.example.com", -1); - cos.clearValidityOverride("untrusted.example.com", -1); - cos.clearValidityOverride("expired.example.com", -1); - - info("All tests completed in " + (Date.now() - gStart) + "ms"); - finish(); -} - -function add_update_test(mainURL, redirectURL, expectedStatus) { - gTests.push([mainURL, redirectURL, expectedStatus]); -} - -function run_update_tests(callback) { - function run_next_update_test() { - if (gTests.length == 0) { - callback(); - return; - } - gLast = Date.now(); - - let [mainURL, redirectURL, expectedStatus] = gTests.shift(); - if (redirectURL) { - var url = mainURL + redirect + redirectURL + updaterdf; - var message = "Should have seen the right result for an update check redirected from " + - mainURL + " to " + redirectURL; - } - else { - url = mainURL + updaterdf; - message = "Should have seen the right result for an update check from " + - mainURL; - } - - AddonUpdateChecker.checkForUpdates("addon1@tests.mozilla.org", - null, url, { - onUpdateCheckComplete: function(updates) { - is(updates.length, 1, "Should be the right number of results"); - is(SUCCESS, expectedStatus, message); - info("Update test ran in " + (Date.now() - gLast) + "ms"); - run_next_update_test(); - }, - - onUpdateCheckError: function(status) { - is(status, expectedStatus, message); - info("Update test ran in " + (Date.now() - gLast) + "ms"); - run_next_update_test(); - } - }); - } - - run_next_update_test(); -} - -// Add overrides for the bad certificates -function addCertOverrides() { - addCertOverride("nocert.example.com", Ci.nsICertOverrideService.ERROR_MISMATCH); - addCertOverride("self-signed.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED); - addCertOverride("untrusted.example.com", Ci.nsICertOverrideService.ERROR_UNTRUSTED); - addCertOverride("expired.example.com", Ci.nsICertOverrideService.ERROR_TIME); -} - -// Runs tests with built-in certificates required and no certificate exceptions. -add_test(function() { - // Tests that a simple update.rdf retrieval works as expected. - add_update_test(HTTP, null, SUCCESS); - add_update_test(HTTPS, null, DOWNLOAD_ERROR); - add_update_test(NOCERT, null, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, null, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, null, DOWNLOAD_ERROR); - add_update_test(EXPIRED, null, DOWNLOAD_ERROR); - - // Tests that redirecting from http to other servers works as expected - add_update_test(HTTP, HTTP, SUCCESS); - add_update_test(HTTP, HTTPS, SUCCESS); - add_update_test(HTTP, NOCERT, DOWNLOAD_ERROR); - add_update_test(HTTP, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(HTTP, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(HTTP, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from valid https to other servers works as expected - add_update_test(HTTPS, HTTP, DOWNLOAD_ERROR); - add_update_test(HTTPS, HTTPS, DOWNLOAD_ERROR); - add_update_test(HTTPS, NOCERT, DOWNLOAD_ERROR); - add_update_test(HTTPS, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(HTTPS, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(HTTPS, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from nocert https to other servers works as expected - add_update_test(NOCERT, HTTP, DOWNLOAD_ERROR); - add_update_test(NOCERT, HTTPS, DOWNLOAD_ERROR); - add_update_test(NOCERT, NOCERT, DOWNLOAD_ERROR); - add_update_test(NOCERT, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(NOCERT, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(NOCERT, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from self-signed https to other servers works as expected - add_update_test(SELFSIGNED, HTTP, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, HTTPS, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, NOCERT, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from untrusted https to other servers works as expected - add_update_test(UNTRUSTED, HTTP, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, HTTPS, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, NOCERT, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from expired https to other servers works as expected - add_update_test(EXPIRED, HTTP, DOWNLOAD_ERROR); - add_update_test(EXPIRED, HTTPS, DOWNLOAD_ERROR); - add_update_test(EXPIRED, NOCERT, DOWNLOAD_ERROR); - add_update_test(EXPIRED, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(EXPIRED, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(EXPIRED, EXPIRED, DOWNLOAD_ERROR); - - run_update_tests(run_next_test); -}); - -// Runs tests without requiring built-in certificates and no certificate -// exceptions. -add_test(function() { - Services.prefs.setBoolPref(PREF_UPDATE_REQUIREBUILTINCERTS, false); - - // Tests that a simple update.rdf retrieval works as expected. - add_update_test(HTTP, null, SUCCESS); - add_update_test(HTTPS, null, SUCCESS); - add_update_test(NOCERT, null, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, null, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, null, DOWNLOAD_ERROR); - add_update_test(EXPIRED, null, DOWNLOAD_ERROR); - - // Tests that redirecting from http to other servers works as expected - add_update_test(HTTP, HTTP, SUCCESS); - add_update_test(HTTP, HTTPS, SUCCESS); - add_update_test(HTTP, NOCERT, DOWNLOAD_ERROR); - add_update_test(HTTP, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(HTTP, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(HTTP, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from valid https to other servers works as expected - add_update_test(HTTPS, HTTP, DOWNLOAD_ERROR); - add_update_test(HTTPS, HTTPS, SUCCESS); - add_update_test(HTTPS, NOCERT, DOWNLOAD_ERROR); - add_update_test(HTTPS, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(HTTPS, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(HTTPS, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from nocert https to other servers works as expected - add_update_test(NOCERT, HTTP, DOWNLOAD_ERROR); - add_update_test(NOCERT, HTTPS, DOWNLOAD_ERROR); - add_update_test(NOCERT, NOCERT, DOWNLOAD_ERROR); - add_update_test(NOCERT, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(NOCERT, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(NOCERT, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from self-signed https to other servers works as expected - add_update_test(SELFSIGNED, HTTP, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, HTTPS, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, NOCERT, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from untrusted https to other servers works as expected - add_update_test(UNTRUSTED, HTTP, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, HTTPS, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, NOCERT, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from expired https to other servers works as expected - add_update_test(EXPIRED, HTTP, DOWNLOAD_ERROR); - add_update_test(EXPIRED, HTTPS, DOWNLOAD_ERROR); - add_update_test(EXPIRED, NOCERT, DOWNLOAD_ERROR); - add_update_test(EXPIRED, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(EXPIRED, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(EXPIRED, EXPIRED, DOWNLOAD_ERROR); - - run_update_tests(run_next_test); -}); - -// Runs tests with built-in certificates required and all certificate exceptions. -add_test(function() { - Services.prefs.clearUserPref(PREF_UPDATE_REQUIREBUILTINCERTS); - addCertOverrides(); - - // Tests that a simple update.rdf retrieval works as expected. - add_update_test(HTTP, null, SUCCESS); - add_update_test(HTTPS, null, DOWNLOAD_ERROR); - add_update_test(NOCERT, null, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, null, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, null, DOWNLOAD_ERROR); - add_update_test(EXPIRED, null, DOWNLOAD_ERROR); - - // Tests that redirecting from http to other servers works as expected - add_update_test(HTTP, HTTP, SUCCESS); - add_update_test(HTTP, HTTPS, SUCCESS); - add_update_test(HTTP, NOCERT, SUCCESS); - add_update_test(HTTP, SELFSIGNED, SUCCESS); - add_update_test(HTTP, UNTRUSTED, SUCCESS); - add_update_test(HTTP, EXPIRED, SUCCESS); - - // Tests that redirecting from valid https to other servers works as expected - add_update_test(HTTPS, HTTP, DOWNLOAD_ERROR); - add_update_test(HTTPS, HTTPS, DOWNLOAD_ERROR); - add_update_test(HTTPS, NOCERT, DOWNLOAD_ERROR); - add_update_test(HTTPS, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(HTTPS, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(HTTPS, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from nocert https to other servers works as expected - add_update_test(NOCERT, HTTP, DOWNLOAD_ERROR); - add_update_test(NOCERT, HTTPS, DOWNLOAD_ERROR); - add_update_test(NOCERT, NOCERT, DOWNLOAD_ERROR); - add_update_test(NOCERT, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(NOCERT, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(NOCERT, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from self-signed https to other servers works as expected - add_update_test(SELFSIGNED, HTTP, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, HTTPS, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, NOCERT, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from untrusted https to other servers works as expected - add_update_test(UNTRUSTED, HTTP, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, HTTPS, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, NOCERT, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, EXPIRED, DOWNLOAD_ERROR); - - // Tests that redirecting from expired https to other servers works as expected - add_update_test(EXPIRED, HTTP, DOWNLOAD_ERROR); - add_update_test(EXPIRED, HTTPS, DOWNLOAD_ERROR); - add_update_test(EXPIRED, NOCERT, DOWNLOAD_ERROR); - add_update_test(EXPIRED, SELFSIGNED, DOWNLOAD_ERROR); - add_update_test(EXPIRED, UNTRUSTED, DOWNLOAD_ERROR); - add_update_test(EXPIRED, EXPIRED, DOWNLOAD_ERROR); - - run_update_tests(run_next_test); -}); - -// Runs tests without requiring built-in certificates and all certificate -// exceptions. -add_test(function() { - Services.prefs.setBoolPref(PREF_UPDATE_REQUIREBUILTINCERTS, false); - - // Tests that a simple update.rdf retrieval works as expected. - add_update_test(HTTP, null, SUCCESS); - add_update_test(HTTPS, null, SUCCESS); - add_update_test(NOCERT, null, SUCCESS); - add_update_test(SELFSIGNED, null, SUCCESS); - add_update_test(UNTRUSTED, null, SUCCESS); - add_update_test(EXPIRED, null, SUCCESS); - - // Tests that redirecting from http to other servers works as expected - add_update_test(HTTP, HTTP, SUCCESS); - add_update_test(HTTP, HTTPS, SUCCESS); - add_update_test(HTTP, NOCERT, SUCCESS); - add_update_test(HTTP, SELFSIGNED, SUCCESS); - add_update_test(HTTP, UNTRUSTED, SUCCESS); - add_update_test(HTTP, EXPIRED, SUCCESS); - - // Tests that redirecting from valid https to other servers works as expected - add_update_test(HTTPS, HTTP, DOWNLOAD_ERROR); - add_update_test(HTTPS, HTTPS, SUCCESS); - add_update_test(HTTPS, NOCERT, SUCCESS); - add_update_test(HTTPS, SELFSIGNED, SUCCESS); - add_update_test(HTTPS, UNTRUSTED, SUCCESS); - add_update_test(HTTPS, EXPIRED, SUCCESS); - - // Tests that redirecting from nocert https to other servers works as expected - add_update_test(NOCERT, HTTP, DOWNLOAD_ERROR); - add_update_test(NOCERT, HTTPS, SUCCESS); - add_update_test(NOCERT, NOCERT, SUCCESS); - add_update_test(NOCERT, SELFSIGNED, SUCCESS); - add_update_test(NOCERT, UNTRUSTED, SUCCESS); - add_update_test(NOCERT, EXPIRED, SUCCESS); - - // Tests that redirecting from self-signed https to other servers works as expected - add_update_test(SELFSIGNED, HTTP, DOWNLOAD_ERROR); - add_update_test(SELFSIGNED, HTTPS, SUCCESS); - add_update_test(SELFSIGNED, NOCERT, SUCCESS); - add_update_test(SELFSIGNED, SELFSIGNED, SUCCESS); - add_update_test(SELFSIGNED, UNTRUSTED, SUCCESS); - add_update_test(SELFSIGNED, EXPIRED, SUCCESS); - - // Tests that redirecting from untrusted https to other servers works as expected - add_update_test(UNTRUSTED, HTTP, DOWNLOAD_ERROR); - add_update_test(UNTRUSTED, HTTPS, SUCCESS); - add_update_test(UNTRUSTED, NOCERT, SUCCESS); - add_update_test(UNTRUSTED, SELFSIGNED, SUCCESS); - add_update_test(UNTRUSTED, UNTRUSTED, SUCCESS); - add_update_test(UNTRUSTED, EXPIRED, SUCCESS); - - // Tests that redirecting from expired https to other servers works as expected - add_update_test(EXPIRED, HTTP, DOWNLOAD_ERROR); - add_update_test(EXPIRED, HTTPS, SUCCESS); - add_update_test(EXPIRED, NOCERT, SUCCESS); - add_update_test(EXPIRED, SELFSIGNED, SUCCESS); - add_update_test(EXPIRED, UNTRUSTED, SUCCESS); - add_update_test(EXPIRED, EXPIRED, SUCCESS); - - run_update_tests(run_next_test); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_updatessl.rdf b/toolkit/mozapps/webextensions/test/browser/browser_updatessl.rdf deleted file mode 100644 index f24573847..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_updatessl.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?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>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>20</em:maxVersion> - </Description> - </em:targetApplication> - </Description> - </li> - </Seq> - </em:updates> - </Description> - -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/browser_updatessl.rdf^headers^ b/toolkit/mozapps/webextensions/test/browser/browser_updatessl.rdf^headers^ deleted file mode 100644 index 2e4f8163b..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_updatessl.rdf^headers^ +++ /dev/null @@ -1 +0,0 @@ -Connection: close diff --git a/toolkit/mozapps/webextensions/test/browser/browser_webapi.js b/toolkit/mozapps/webextensions/test/browser/browser_webapi.js deleted file mode 100644 index ca8e41aad..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_webapi.js +++ /dev/null @@ -1,106 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const TESTPAGE = `${SECURE_TESTROOT}webapi_checkavailable.html`; - -Services.prefs.setBoolPref("extensions.webapi.testing", true); -registerCleanupFunction(() => { - Services.prefs.clearUserPref("extensions.webapi.testing"); -}); - -function testWithAPI(task) { - return function*() { - yield BrowserTestUtils.withNewTab(TESTPAGE, task); - } -} - -let gProvider = new MockProvider(); - -let addons = gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "Test add-on 1", - version: "2.1", - description: "Short description", - type: "extension", - userDisabled: false, - isActive: true, -}, { - id: "addon2@tests.mozilla.org", - name: "Test add-on 2", - version: "5.3.7ab", - description: null, - type: "theme", - userDisabled: false, - isActive: false, -}, { - id: "addon3@tests.mozilla.org", - name: "Test add-on 3", - version: "1", - description: "Longer description", - type: "extension", - userDisabled: true, - isActive: false, -}, { - id: "addon4@tests.mozilla.org", - name: "Test add-on 4", - version: "1", - description: "Longer description", - type: "extension", - userDisabled: false, - isActive: true, -}]); - -addons[3].permissions &= ~AddonManager.PERM_CAN_UNINSTALL; - -function API_getAddonByID(browser, id) { - return ContentTask.spawn(browser, id, function*(id) { - let addon = yield content.navigator.mozAddonManager.getAddonByID(id); - - // We can't send native objects back so clone its properties. - let result = {}; - for (let prop in addon) { - result[prop] = addon[prop]; - } - - return result; - }); -} - -add_task(testWithAPI(function*(browser) { - function compareObjects(web, real) { - for (let prop of Object.keys(web)) { - let webVal = web[prop]; - let realVal = real[prop]; - - switch (prop) { - case "isEnabled": - realVal = !real.userDisabled; - break; - - case "canUninstall": - realVal = Boolean(real.permissions & AddonManager.PERM_CAN_UNINSTALL); - break; - } - - // null and undefined don't compare well so stringify them first - if (realVal === null || realVal === undefined) { - realVal = `${realVal}`; - webVal = `${webVal}`; - } - - is(webVal, realVal, `Property ${prop} should have the right value in add-on ${real.id}`); - } - } - - let [a1, a2, a3] = yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org"]); - let w1 = yield API_getAddonByID(browser, "addon1@tests.mozilla.org"); - let w2 = yield API_getAddonByID(browser, "addon2@tests.mozilla.org"); - let w3 = yield API_getAddonByID(browser, "addon3@tests.mozilla.org"); - - compareObjects(w1, a1); - compareObjects(w2, a2); - compareObjects(w3, a3); -})); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_webapi_access.js b/toolkit/mozapps/webextensions/test/browser/browser_webapi_access.js deleted file mode 100644 index f4b1dc745..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_webapi_access.js +++ /dev/null @@ -1,127 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -registerCleanupFunction(() => { - Services.prefs.clearUserPref("extensions.webapi.testing"); -}); - -function check_frame_availability(browser) { - return ContentTask.spawn(browser, null, function*() { - let frame = content.document.getElementById("frame"); - return frame.contentWindow.document.getElementById("result").textContent == "true"; - }); -} - -function check_availability(browser) { - return ContentTask.spawn(browser, null, function*() { - return content.document.getElementById("result").textContent == "true"; - }); -} - -// Test that initially the API isn't available in the test domain -add_task(function* test_not_available() { - yield BrowserTestUtils.withNewTab(`${SECURE_TESTROOT}webapi_checkavailable.html`, - function* test_not_available(browser) { - let available = yield check_availability(browser); - ok(!available, "API should not be available."); - }) -}); - -// Test that with testing on the API is available in the test domain -add_task(function* test_available() { - Services.prefs.setBoolPref("extensions.webapi.testing", true); - - yield BrowserTestUtils.withNewTab(`${SECURE_TESTROOT}webapi_checkavailable.html`, - function* test_not_available(browser) { - let available = yield check_availability(browser); - ok(available, "API should be available."); - }) -}); - -// Test that the API is not available in a bad domain -add_task(function* test_bad_domain() { - yield BrowserTestUtils.withNewTab(`${SECURE_TESTROOT2}webapi_checkavailable.html`, - function* test_not_available(browser) { - let available = yield check_availability(browser); - ok(!available, "API should not be available."); - }) -}); - -// Test that the API is only available in https sites -add_task(function* test_not_available_http() { - yield BrowserTestUtils.withNewTab(`${TESTROOT}webapi_checkavailable.html`, - function* test_not_available(browser) { - let available = yield check_availability(browser); - ok(!available, "API should not be available."); - }) -}); - -// Test that the API is available when in a frame of the test domain -add_task(function* test_available_framed() { - yield BrowserTestUtils.withNewTab(`${SECURE_TESTROOT}webapi_checkframed.html`, - function* test_available(browser) { - let available = yield check_frame_availability(browser); - ok(available, "API should be available."); - }) -}); - -// Test that if the external frame is http then the inner frame doesn't have -// the API -add_task(function* test_not_available_http_framed() { - yield BrowserTestUtils.withNewTab(`${TESTROOT}webapi_checkframed.html`, - function* test_not_available(browser) { - let available = yield check_frame_availability(browser); - ok(!available, "API should not be available."); - }) -}); - -// Test that if the external frame is a bad domain then the inner frame doesn't -// have the API -add_task(function* test_not_available_framed() { - yield BrowserTestUtils.withNewTab(`${SECURE_TESTROOT2}webapi_checkframed.html`, - function* test_not_available(browser) { - let available = yield check_frame_availability(browser); - ok(!available, "API should not be available."); - }) -}); - -// Test that a window navigated to a bad domain doesn't allow access to the API -add_task(function* test_navigated_window() { - yield BrowserTestUtils.withNewTab(`${SECURE_TESTROOT2}webapi_checknavigatedwindow.html`, - function* test_available(browser) { - let tabPromise = BrowserTestUtils.waitForNewTab(gBrowser); - - yield ContentTask.spawn(browser, null, function*() { - yield content.wrappedJSObject.openWindow(); - }); - - // Should be a new tab open - let tab = yield tabPromise; - let loadPromise = BrowserTestUtils.browserLoaded(gBrowser.getBrowserForTab(tab)); - - ContentTask.spawn(browser, null, function*() { - content.wrappedJSObject.navigate(); - }); - - yield loadPromise; - - let available = yield ContentTask.spawn(browser, null, function*() { - return content.wrappedJSObject.check(); - }); - - ok(!available, "API should not be available."); - - gBrowser.removeTab(tab); - }) -}); - -// Check that if a page is embedded in a chrome content UI that it can still -// access the API. -add_task(function* test_chrome_frame() { - yield BrowserTestUtils.withNewTab(`${CHROMEROOT}webapi_checkchromeframe.xul`, - function* test_available(browser) { - let available = yield check_frame_availability(browser); - ok(available, "API should be available."); - }) -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_webapi_addon_listener.js b/toolkit/mozapps/webextensions/test/browser/browser_webapi_addon_listener.js deleted file mode 100644 index b8049f13c..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_webapi_addon_listener.js +++ /dev/null @@ -1,174 +0,0 @@ -const TESTPAGE = `${SECURE_TESTROOT}webapi_addon_listener.html`; - -Services.prefs.setBoolPref("extensions.webapi.testing", true); -registerCleanupFunction(() => { - Services.prefs.clearUserPref("extensions.webapi.testing"); -}); - - -function* getListenerEvents(browser) { - let result = yield ContentTask.spawn(browser, null, function*() { - return content.document.getElementById("result").textContent; - }); - - return result.split('\n').map(JSON.parse); -} - -const RESTART_ID = "restart@tests.mozilla.org"; -const RESTART_DISABLED_ID = "restart_disabled@tests.mozilla.org"; -const RESTARTLESS_ID = "restartless@tests.mozilla.org"; -const INSTALL_ID = "install@tests.mozilla.org"; -const CANCEL_ID = "cancel@tests.mozilla.org"; - -let provider = new MockProvider(false); -provider.createAddons([ - { - id: RESTART_ID, - name: "Add-on that requires restart", - }, - { - id: RESTART_DISABLED_ID, - name: "Disabled add-on that requires restart", - userDisabled: true, - }, - { - id: RESTARTLESS_ID, - name: "Restartless add-on", - operationsRequiringRestart: AddonManager.OP_NEED_RESTART_NONE, - }, - { - id: CANCEL_ID, - name: "Add-on for uninstall cancel", - }, -]); - -// Test disable of add-on requiring restart -add_task(function* test_disable() { - yield BrowserTestUtils.withNewTab(TESTPAGE, function*(browser) { - let addon = yield promiseAddonByID(RESTART_ID); - is(addon.userDisabled, false, "addon is enabled"); - - // disable it - addon.userDisabled = true; - is(addon.userDisabled, true, "addon was disabled successfully"); - - let events = yield getListenerEvents(browser); - - // Just a single onDisabling since restart is needed to complete - let expected = [ - {id: RESTART_ID, needsRestart: true, event: "onDisabling"}, - ]; - Assert.deepEqual(events, expected, "Got expected disable event"); - }); -}); - -// Test enable of add-on requiring restart -add_task(function* test_enable() { - yield BrowserTestUtils.withNewTab(TESTPAGE, function*(browser) { - let addon = yield promiseAddonByID(RESTART_DISABLED_ID); - is(addon.userDisabled, true, "addon is disabled"); - - // enable it - addon.userDisabled = false; - is(addon.userDisabled, false, "addon was enabled successfully"); - - let events = yield getListenerEvents(browser); - - // Just a single onEnabling since restart is needed to complete - let expected = [ - {id: RESTART_DISABLED_ID, needsRestart: true, event: "onEnabling"}, - ]; - Assert.deepEqual(events, expected, "Got expected enable event"); - }); -}); - -// Test enable/disable events for restartless -add_task(function* test_restartless() { - yield BrowserTestUtils.withNewTab(TESTPAGE, function*(browser) { - let addon = yield promiseAddonByID(RESTARTLESS_ID); - is(addon.userDisabled, false, "addon is enabled"); - - // disable it - addon.userDisabled = true; - is(addon.userDisabled, true, "addon was disabled successfully"); - - // re-enable it - addon.userDisabled = false; - is(addon.userDisabled, false, "addon was re-enabled successfuly"); - - let events = yield getListenerEvents(browser); - let expected = [ - {id: RESTARTLESS_ID, needsRestart: false, event: "onDisabling"}, - {id: RESTARTLESS_ID, needsRestart: false, event: "onDisabled"}, - {id: RESTARTLESS_ID, needsRestart: false, event: "onEnabling"}, - {id: RESTARTLESS_ID, needsRestart: false, event: "onEnabled"}, - ]; - Assert.deepEqual(events, expected, "Got expected disable/enable events"); - }); -}); - -// Test install events -add_task(function* test_restartless() { - yield BrowserTestUtils.withNewTab(TESTPAGE, function*(browser) { - let addon = new MockAddon(INSTALL_ID, "installme", null, - AddonManager.OP_NEED_RESTART_NONE); - let install = new MockInstall(null, null, addon); - - let installPromise = new Promise(resolve => { - install.addTestListener({ - onInstallEnded: resolve, - }); - }); - - provider.addInstall(install); - install.install(); - - yield installPromise; - - let events = yield getListenerEvents(browser); - let expected = [ - {id: INSTALL_ID, needsRestart: false, event: "onInstalling"}, - {id: INSTALL_ID, needsRestart: false, event: "onInstalled"}, - ]; - Assert.deepEqual(events, expected, "Got expected install events"); - }); -}); - -// Test uninstall -add_task(function* test_uninstall() { - yield BrowserTestUtils.withNewTab(TESTPAGE, function*(browser) { - let addon = yield promiseAddonByID(RESTARTLESS_ID); - isnot(addon, null, "Found add-on for uninstall"); - - addon.uninstall(); - - let events = yield getListenerEvents(browser); - let expected = [ - {id: RESTARTLESS_ID, needsRestart: false, event: "onUninstalling"}, - {id: RESTARTLESS_ID, needsRestart: false, event: "onUninstalled"}, - ]; - Assert.deepEqual(events, expected, "Got expected uninstall events"); - }); -}); - -// Test cancel of uninstall. -add_task(function* test_cancel() { - yield BrowserTestUtils.withNewTab(TESTPAGE, function*(browser) { - let addon = yield promiseAddonByID(CANCEL_ID); - isnot(addon, null, "Found add-on for cancelling uninstall"); - - addon.uninstall(); - - let events = yield getListenerEvents(browser); - let expected = [ - {id: CANCEL_ID, needsRestart: true, event: "onUninstalling"}, - ]; - Assert.deepEqual(events, expected, "Got expected uninstalling event"); - - addon.cancelUninstall(); - events = yield getListenerEvents(browser); - expected.push({id: CANCEL_ID, needsRestart: false, event: "onOperationCancelled"}); - Assert.deepEqual(events, expected, "Got expected cancel event"); - }); -}); - diff --git a/toolkit/mozapps/webextensions/test/browser/browser_webapi_enable.js b/toolkit/mozapps/webextensions/test/browser/browser_webapi_enable.js deleted file mode 100644 index 27d8029c5..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_webapi_enable.js +++ /dev/null @@ -1,62 +0,0 @@ -const TESTPAGE = `${SECURE_TESTROOT}webapi_addon_listener.html`; - -Services.prefs.setBoolPref("extensions.webapi.testing", true); -registerCleanupFunction(() => { - Services.prefs.clearUserPref("extensions.webapi.testing"); -}); - -function* getListenerEvents(browser) { - let result = yield ContentTask.spawn(browser, null, function*() { - return content.document.getElementById("result").textContent; - }); - - return result.split('\n').map(JSON.parse); -} - -const ID = "test@tests.mozilla.org"; - -let provider = new MockProvider(false); -provider.createAddons([ - { - id: ID, - name: "Test add-on", - operationsRequiringRestart: AddonManager.OP_NEED_RESTART_NONE, - }, -]); - -// Test disable and enable from content -add_task(function* () { - yield BrowserTestUtils.withNewTab(TESTPAGE, function*(browser) { - let addon = yield promiseAddonByID(ID); - isnot(addon, null, "Test addon exists"); - is(addon.userDisabled, false, "addon is enabled"); - - // Disable the addon from content. - yield ContentTask.spawn(browser, null, function* () { - return content.navigator.mozAddonManager - .getAddonByID("test@tests.mozilla.org") - .then(addon => { addon.setEnabled(false); }); - }); - - let events = yield getListenerEvents(browser); - let expected = [ - {id: ID, needsRestart: false, event: "onDisabling"}, - {id: ID, needsRestart: false, event: "onDisabled"}, - ]; - Assert.deepEqual(events, expected, "Got expected disable events"); - - // Enable the addon from content. - yield ContentTask.spawn(browser, null, function* () { - return content.navigator.mozAddonManager - .getAddonByID("test@tests.mozilla.org") - .then(addon => { addon.setEnabled(true); }); - }); - - events = yield getListenerEvents(browser); - expected = expected.concat([ - {id: ID, needsRestart: false, event: "onEnabling"}, - {id: ID, needsRestart: false, event: "onEnabled"}, - ]); - Assert.deepEqual(events, expected, "Got expected enable events"); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_webapi_install.js b/toolkit/mozapps/webextensions/test/browser/browser_webapi_install.js deleted file mode 100644 index bc31c2331..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_webapi_install.js +++ /dev/null @@ -1,311 +0,0 @@ -const TESTPAGE = `${SECURE_TESTROOT}webapi_checkavailable.html`; -const XPI_URL = `${SECURE_TESTROOT}addons/browser_webapi_install.xpi`; -const XPI_SHA = "sha256:d4bab17ff9ba5f635e97c84021f4c527c502250d62ab7f6e6c9e8ee28822f772"; - -const ID = "webapi_install@tests.mozilla.org"; -// eh, would be good to just stat the real file instead of this... -const XPI_LEN = 4782; - -function waitForClear() { - const MSG = "WebAPICleanup"; - return new Promise(resolve => { - let listener = { - receiveMessage: function(msg) { - if (msg.name == MSG) { - Services.mm.removeMessageListener(MSG, listener); - resolve(); - } - } - }; - - Services.mm.addMessageListener(MSG, listener, true); - }); -} - -add_task(function* setup() { - yield SpecialPowers.pushPrefEnv({ - set: [["extensions.webapi.testing", true], - ["extensions.install.requireBuiltInCerts", false]], - }); - info("added preferences"); -}); - -// Wrapper around a common task to run in the content process to test -// the mozAddonManager API. Takes a URL for the XPI to install and an -// array of steps, each of which can either be an action to take -// (i.e., start or cancel the install) or an install event to wait for. -// Steps that look for a specific event may also include a "props" property -// with properties that the AddonInstall object is expected to have when -// that event is triggered. -function* testInstall(browser, args, steps, description) { - let success = yield ContentTask.spawn(browser, {args, steps}, function* (opts) { - let { args, steps } = opts; - let install = yield content.navigator.mozAddonManager.createInstall(args); - if (!install) { - yield Promise.reject("createInstall() did not return an install object"); - } - - // Check that the initial state of the AddonInstall is sane. - if (install.state != "STATE_AVAILABLE") { - yield Promise.reject("new install should be in STATE_AVAILABLE"); - } - if (install.error != null) { - yield Promise.reject("new install should have null error"); - } - - const events = [ - "onDownloadStarted", - "onDownloadProgress", - "onDownloadEnded", - "onDownloadCancelled", - "onDownloadFailed", - "onInstallStarted", - "onInstallEnded", - "onInstallCancelled", - "onInstallFailed", - ]; - let eventWaiter = null; - let receivedEvents = []; - let prevEvent = null; - events.forEach(event => { - install.addEventListener(event, e => { - receivedEvents.push({ - event, - state: install.state, - error: install.error, - progress: install.progress, - maxProgress: install.maxProgress, - }); - if (eventWaiter) { - eventWaiter(); - } - }); - }); - - // Returns a promise that is resolved when the given event occurs - // or rejects if a different event comes first or if props is supplied - // and properties on the AddonInstall don't match those in props. - function expectEvent(event, props) { - return new Promise((resolve, reject) => { - function check() { - let received = receivedEvents.shift(); - // Skip any repeated onDownloadProgress events. - while (received && - received.event == prevEvent && - prevEvent == "onDownloadProgress") { - received = receivedEvents.shift(); - } - // Wait for more events if we skipped all there were. - if (!received) { - eventWaiter = () => { - eventWaiter = null; - check(); - } - return; - } - prevEvent = received.event; - if (received.event != event) { - let err = new Error(`expected ${event} but got ${received.event}`); - reject(err); - } - if (props) { - for (let key of Object.keys(props)) { - if (received[key] != props[key]) { - throw new Error(`AddonInstall property ${key} was ${received[key]} but expected ${props[key]}`); - } - } - } - resolve(); - } - check(); - }); - } - - while (steps.length > 0) { - let nextStep = steps.shift(); - if (nextStep.action) { - if (nextStep.action == "install") { - yield install.install(); - } else if (nextStep.action == "cancel") { - yield install.cancel(); - } else { - throw new Error(`unknown action ${nextStep.action}`); - } - } else { - yield expectEvent(nextStep.event, nextStep.props); - } - } - - return true; - }); - - is(success, true, description); -} - -function makeInstallTest(task) { - return function*() { - // withNewTab() will close the test tab before returning, at which point - // the cleanup event will come from the content process. We need to see - // that event but don't want to race to install a listener for it after - // the tab is closed. So set up the listener now but don't yield the - // listening promise until below. - let clearPromise = waitForClear(); - - yield BrowserTestUtils.withNewTab(TESTPAGE, task); - - yield clearPromise; - is(AddonManager.webAPI.installs.size, 0, "AddonInstall was cleaned up"); - }; -} - -function makeRegularTest(options, what) { - return makeInstallTest(function* (browser) { - let steps = [ - {action: "install"}, - { - event: "onDownloadStarted", - props: {state: "STATE_DOWNLOADING"}, - }, - { - event: "onDownloadProgress", - props: {maxProgress: XPI_LEN}, - }, - { - event: "onDownloadEnded", - props: { - state: "STATE_DOWNLOADED", - progress: XPI_LEN, - maxProgress: XPI_LEN, - }, - }, - { - event: "onInstallStarted", - props: {state: "STATE_INSTALLING"}, - }, - { - event: "onInstallEnded", - props: {state: "STATE_INSTALLED"}, - }, - ]; - - yield testInstall(browser, options, steps, what); - - let version = Services.prefs.getIntPref("webapitest.active_version"); - is(version, 1, "the install really did work"); - - // Sanity check to ensure that the test in makeInstallTest() that - // installs.size == 0 means we actually did clean up. - ok(AddonManager.webAPI.installs.size > 0, "webAPI is tracking the AddonInstall"); - - let addons = yield promiseAddonsByIDs([ID]); - isnot(addons[0], null, "Found the addon"); - - yield addons[0].uninstall(); - - addons = yield promiseAddonsByIDs([ID]); - is(addons[0], null, "Addon was uninstalled"); - }); -} - -add_task(makeRegularTest({url: XPI_URL}, "a basic install works")); -add_task(makeRegularTest({url: XPI_URL, hash: null}, "install with hash=null works")); -add_task(makeRegularTest({url: XPI_URL, hash: ""}, "install with empty string for hash works")); -add_task(makeRegularTest({url: XPI_URL, hash: XPI_SHA}, "install with hash works")); - -add_task(makeInstallTest(function* (browser) { - let steps = [ - {action: "cancel"}, - { - event: "onDownloadCancelled", - props: { - state: "STATE_CANCELLED", - error: null, - }, - } - ]; - - yield testInstall(browser, {url: XPI_URL}, steps, "canceling an install works"); - - let addons = yield promiseAddonsByIDs([ID]); - is(addons[0], null, "The addon was not installed"); - - ok(AddonManager.webAPI.installs.size > 0, "webAPI is tracking the AddonInstall"); -})); - -add_task(makeInstallTest(function* (browser) { - let steps = [ - {action: "install"}, - { - event: "onDownloadStarted", - props: {state: "STATE_DOWNLOADING"}, - }, - {event: "onDownloadProgress"}, - { - event: "onDownloadFailed", - props: { - state: "STATE_DOWNLOAD_FAILED", - error: "ERROR_NETWORK_FAILURE", - }, - } - ]; - - yield testInstall(browser, {url: XPI_URL + "bogus"}, steps, "install of a bad url fails"); - - let addons = yield promiseAddonsByIDs([ID]); - is(addons[0], null, "The addon was not installed"); - - ok(AddonManager.webAPI.installs.size > 0, "webAPI is tracking the AddonInstall"); -})); - -add_task(makeInstallTest(function* (browser) { - let steps = [ - {action: "install"}, - { - event: "onDownloadStarted", - props: {state: "STATE_DOWNLOADING"}, - }, - {event: "onDownloadProgress"}, - { - event: "onDownloadFailed", - props: { - state: "STATE_DOWNLOAD_FAILED", - error: "ERROR_INCORRECT_HASH", - }, - } - ]; - - yield testInstall(browser, {url: XPI_URL, hash: "sha256:bogus"}, steps, "install with bad hash fails"); - - let addons = yield promiseAddonsByIDs([ID]); - is(addons[0], null, "The addon was not installed"); - - ok(AddonManager.webAPI.installs.size > 0, "webAPI is tracking the AddonInstall"); -})); - -add_task(function* test_permissions() { - function testBadUrl(url, pattern, successMessage) { - return BrowserTestUtils.withNewTab(TESTPAGE, function* (browser) { - let result = yield ContentTask.spawn(browser, {url, pattern}, function (opts) { - return new Promise(resolve => { - content.navigator.mozAddonManager.createInstall({url: opts.url}) - .then(() => { - resolve({success: false, message: "createInstall should not have succeeded"}); - }, err => { - if (err.message.match(new RegExp(opts.pattern))) { - resolve({success: true}); - } - resolve({success: false, message: `Wrong error message: ${err.message}`}); - }); - }); - }); - is(result.success, true, result.message || successMessage); - }); - } - - yield testBadUrl("i am not a url", "NS_ERROR_MALFORMED_URI", - "Installing from an unparseable URL fails"); - - yield testBadUrl("https://addons.not-really-mozilla.org/impostor.xpi", - "not permitted", - "Installing from non-approved URL fails"); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_webapi_uninstall.js b/toolkit/mozapps/webextensions/test/browser/browser_webapi_uninstall.js deleted file mode 100644 index 724f6fefe..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_webapi_uninstall.js +++ /dev/null @@ -1,51 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const TESTPAGE = `${SECURE_TESTROOT}webapi_checkavailable.html`; - -Services.prefs.setBoolPref("extensions.webapi.testing", true); -registerCleanupFunction(() => { - Services.prefs.clearUserPref("extensions.webapi.testing"); -}); - -function testWithAPI(task) { - return function*() { - yield BrowserTestUtils.withNewTab(TESTPAGE, task); - } -} - -function API_uninstallByID(browser, id) { - return ContentTask.spawn(browser, id, function*(id) { - let addon = yield content.navigator.mozAddonManager.getAddonByID(id); - - let result = yield addon.uninstall(); - return result; - }); -} - -add_task(testWithAPI(function*(browser) { - const ID1 = "addon1@tests.mozilla.org"; - const ID2 = "addon2@tests.mozilla.org"; - - let provider = new MockProvider(); - - provider.addAddon(new MockAddon(ID1, "Test add-on 1", "extension", 0)); - provider.addAddon(new MockAddon(ID2, "Test add-on 2", "extension", 0)); - - let [a1, a2] = yield promiseAddonsByIDs([ID1, ID2]); - isnot(a1, null, "addon1 is installed"); - isnot(a2, null, "addon2 is installed"); - - let result = yield API_uninstallByID(browser, ID1); - is(result, true, "uninstall of addon1 succeeded"); - - [a1, a2] = yield promiseAddonsByIDs([ID1, ID2]); - is(a1, null, "addon1 is uninstalled"); - isnot(a2, null, "addon2 is still installed"); - - result = yield API_uninstallByID(browser, ID2); - is(result, true, "uninstall of addon2 succeeded"); - [a2] = yield promiseAddonsByIDs([ID2]); - is(a2, null, "addon2 is uninstalled"); -})); diff --git a/toolkit/mozapps/webextensions/test/browser/browser_webext_options.js b/toolkit/mozapps/webextensions/test/browser/browser_webext_options.js deleted file mode 100644 index b13213f0b..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_webext_options.js +++ /dev/null @@ -1,70 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Wrapper to run a test that consists of: -// 1. opening the add-ons manager viewing the list of extensions -// 2. installing an extension (using the provider installer callable) -// 3. opening the preferences panel for the new extension and verifying -// that it opens cleanly -function* runTest(installer) { - let mgrWindow = yield open_manager("addons://list/extension"); - - let {addon, id} = yield* installer(); - isnot(addon, null, "Extension is installed"); - - let element = get_addon_element(mgrWindow, id); - element.parentNode.ensureElementIsVisible(element); - - let button = mgrWindow.document.getAnonymousElementByAttribute(element, "anonid", "preferences-btn"); - is_element_visible(button, "Preferences button should be visible"); - - EventUtils.synthesizeMouseAtCenter(button, {clickCount: 1}, mgrWindow); - - yield TestUtils.topicObserved(AddonManager.OPTIONS_NOTIFICATION_DISPLAYED, - (subject, data) => data == id); - - is(mgrWindow.gViewController.currentViewId, - `addons://detail/${encodeURIComponent(id)}/preferences`, - "Current view should scroll to preferences"); - - var browser = mgrWindow.document.querySelector("#detail-grid > rows > .inline-options-browser"); - var rows = browser.parentNode; - - ok(browser, "Grid should have a browser child"); - is(browser.localName, "browser", "Grid should have a browser child"); - is(browser.currentURI.spec, element.mAddon.optionsURL, "Browser has the expected options URL loaded") - - is(browser.clientWidth, rows.clientWidth, - "Browser should be the same width as its parent node"); - - button = mgrWindow.document.getElementById("detail-prefs-btn"); - is_element_hidden(button, "Preferences button should not be visible"); - - yield close_manager(mgrWindow); - - addon.uninstall(); -} - -// Test that deferred handling of optionsURL works for a signed webextension -add_task(function* test_options_signed() { - yield* runTest(function*() { - // The extension in-tree is signed with this ID: - const ID = "{9792932b-32b2-4567-998c-e7bf6c4c5e35}"; - - yield install_addon("addons/options_signed.xpi"); - let addon = yield promiseAddonByID(ID); - - return {addon, id: ID}; - }); -}); - -add_task(function* test_options_temporary() { - yield* runTest(function*() { - let dir = get_addon_file_url("options_signed").file; - let addon = yield AddonManager.installTemporaryAddon(dir); - isnot(addon, null, "Extension is installed (temporarily)"); - - return {addon, id: addon.id}; - }); -}); diff --git a/toolkit/mozapps/webextensions/test/browser/cancelCompatCheck.sjs b/toolkit/mozapps/webextensions/test/browser/cancelCompatCheck.sjs deleted file mode 100644 index 38bc25d08..000000000 --- a/toolkit/mozapps/webextensions/test/browser/cancelCompatCheck.sjs +++ /dev/null @@ -1,43 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ - -// Delay before responding to an HTTP call attempting to read -// an addon update RDF file - -function handleRequest(req, resp) { - resp.processAsync(); - resp.setHeader("Cache-Control", "no-cache, no-store", false); - resp.setHeader("Content-Type", "text/xml;charset=utf-8", false); - - let file = null; - getObjectState("SERVER_ROOT", function(serverRoot) - { - file = serverRoot.getFile("browser/toolkit/mozapps/extensions/test/browser/browser_bug557956.rdf"); - }); - dump("*** cancelCompatCheck.sjs: " + file.path + "\n"); - let fstream = Components.classes["@mozilla.org/network/file-input-stream;1"]. - createInstance(Components.interfaces.nsIFileInputStream); - fstream.init(file, -1, 0, 0); - let cstream = null; - cstream = Components.classes["@mozilla.org/intl/converter-input-stream;1"]. - createInstance(Components.interfaces.nsIConverterInputStream); - cstream.init(fstream, "UTF-8", 0, 0); - - // The delay can be passed on the query string - let delay = req.queryString + 0; - - timer = Components.classes["@mozilla.org/timer;1"]. - createInstance(Components.interfaces.nsITimer); - timer.init(function sendFile() { - dump("cancelCompatCheck: starting to send file\n"); - let str = {}; - let read = 0; - do { - // read as much as we can and put it in str.value - read = cstream.readString(0xffffffff, str); - resp.write(str.value); - } while (read != 0); - cstream.close(); - resp.finish(); - }, delay, Components.interfaces.nsITimer.TYPE_ONE_SHOT); -} diff --git a/toolkit/mozapps/webextensions/test/browser/discovery.html b/toolkit/mozapps/webextensions/test/browser/discovery.html deleted file mode 100644 index 72f4fe374..000000000 --- a/toolkit/mozapps/webextensions/test/browser/discovery.html +++ /dev/null @@ -1,10 +0,0 @@ -<html> -<body> - <h1>Test page for the discovery pane</h1> - <p><a id="link-normal" href="https://example.com/browser/toolkit/mozapps/extensions/test/browser/discovery.html">Load normal</a></p> - <p><a id="link-http" href="http://example.com/browser/toolkit/mozapps/extensions/test/browser/discovery.html">Load insecure</a></p> - <p><a id="link-domain" href="https://test1.example.com/browser/toolkit/mozapps/extensions/test/browser/discovery.html">Load other domain</a></p> - <p><a id="link-bad" href="https://example.com/browser/toolkit/mozapps/extensions/test/browser/foo.html">Load missing page</a></p> - <p><a id="link-good" href="https://example.com/browser/toolkit/mozapps/extensions/test/browser/releaseNotes.xhtml">Load other page</a></p> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/browser/discovery_frame.html b/toolkit/mozapps/webextensions/test/browser/discovery_frame.html deleted file mode 100644 index 8ec722812..000000000 --- a/toolkit/mozapps/webextensions/test/browser/discovery_frame.html +++ /dev/null @@ -1,6 +0,0 @@ -<!DOCTYPE html> - -<html> -<body> -<iframe id="frame" width="100%" height="100%" src="https://example.com/browser/toolkit/mozapps/extensions/test/browser/discovery_install.html"></iframe> -</body> diff --git a/toolkit/mozapps/webextensions/test/browser/discovery_install.html b/toolkit/mozapps/webextensions/test/browser/discovery_install.html deleted file mode 100644 index c6499ec03..000000000 --- a/toolkit/mozapps/webextensions/test/browser/discovery_install.html +++ /dev/null @@ -1,19 +0,0 @@ -<html> -<head> -<script type="text/javascript"> -/* globals InstallTrigger */ -function install() { - InstallTrigger.install({ - "Test Add-on": { - URL: "https://example.com/browser/toolkit/mozapps/extensions/test/xpinstall/amosigned.xpi" - } - }); -} -</script> -</head> -<body> - <h1>Test page for the discovery pane</h1> - <p><a id="install-direct" href="https://example.com/browser/toolkit/mozapps/extensions/test/xpinstall/amosigned.xpi">Direct install</a></p> - <p><a id="install-js" href="javascript:install()">JS install</a></p> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/browser/head.js b/toolkit/mozapps/webextensions/test/browser/head.js deleted file mode 100644 index 5a749099d..000000000 --- a/toolkit/mozapps/webextensions/test/browser/head.js +++ /dev/null @@ -1,1468 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ -/* globals end_test*/ - -Components.utils.import("resource://gre/modules/NetUtil.jsm"); - -var tmp = {}; -Components.utils.import("resource://gre/modules/AddonManager.jsm", tmp); -Components.utils.import("resource://gre/modules/Log.jsm", tmp); -var AddonManager = tmp.AddonManager; -var AddonManagerPrivate = tmp.AddonManagerPrivate; -var Log = tmp.Log; - -var pathParts = gTestPath.split("/"); -// Drop the test filename -pathParts.splice(pathParts.length - 1, pathParts.length); - -var gTestInWindow = /-window$/.test(pathParts[pathParts.length - 1]); - -// Drop the UI type -if (gTestInWindow) { - pathParts.splice(pathParts.length - 1, pathParts.length); -} - -const RELATIVE_DIR = pathParts.slice(4).join("/") + "/"; - -const TESTROOT = "http://example.com/" + RELATIVE_DIR; -const SECURE_TESTROOT = "https://example.com/" + RELATIVE_DIR; -const TESTROOT2 = "http://example.org/" + RELATIVE_DIR; -const SECURE_TESTROOT2 = "https://example.org/" + RELATIVE_DIR; -const CHROMEROOT = pathParts.join("/") + "/"; -const PREF_DISCOVERURL = "extensions.webservice.discoverURL"; -const PREF_DISCOVER_ENABLED = "extensions.getAddons.showPane"; -const PREF_XPI_ENABLED = "xpinstall.enabled"; -const PREF_UPDATEURL = "extensions.update.url"; -const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled"; -const PREF_CUSTOM_XPINSTALL_CONFIRMATION_UI = "xpinstall.customConfirmationUI"; -const PREF_UI_LASTCATEGORY = "extensions.ui.lastCategory"; - -const MANAGER_URI = "about:addons"; -const INSTALL_URI = "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul"; -const PREF_LOGGING_ENABLED = "extensions.logging.enabled"; -const PREF_SEARCH_MAXRESULTS = "extensions.getAddons.maxResults"; -const PREF_STRICT_COMPAT = "extensions.strictCompatibility"; - -var PREF_CHECK_COMPATIBILITY; -(function() { - var channel = "default"; - try { - channel = Services.prefs.getCharPref("app.update.channel"); - } catch (e) { } - if (channel != "aurora" && - channel != "beta" && - channel != "release" && - channel != "esr") { - var version = "nightly"; - } else { - version = Services.appinfo.version.replace(/^([^\.]+\.[0-9]+[a-z]*).*/gi, "$1"); - } - PREF_CHECK_COMPATIBILITY = "extensions.checkCompatibility." + version; -})(); - -var gPendingTests = []; -var gTestsRun = 0; -var gTestStart = null; - -var gUseInContentUI = !gTestInWindow && ("switchToTabHavingURI" in window); - -var gRestorePrefs = [{name: PREF_LOGGING_ENABLED}, - {name: PREF_CUSTOM_XPINSTALL_CONFIRMATION_UI}, - {name: "extensions.webservice.discoverURL"}, - {name: "extensions.update.url"}, - {name: "extensions.update.background.url"}, - {name: "extensions.update.enabled"}, - {name: "extensions.update.autoUpdateDefault"}, - {name: "extensions.getAddons.get.url"}, - {name: "extensions.getAddons.getWithPerformance.url"}, - {name: "extensions.getAddons.search.browseURL"}, - {name: "extensions.getAddons.search.url"}, - {name: "extensions.getAddons.cache.enabled"}, - {name: "devtools.chrome.enabled"}, - {name: PREF_SEARCH_MAXRESULTS}, - {name: PREF_STRICT_COMPAT}, - {name: PREF_CHECK_COMPATIBILITY}]; - -for (let pref of gRestorePrefs) { - if (!Services.prefs.prefHasUserValue(pref.name)) { - pref.type = "clear"; - continue; - } - pref.type = Services.prefs.getPrefType(pref.name); - if (pref.type == Services.prefs.PREF_BOOL) - pref.value = Services.prefs.getBoolPref(pref.name); - else if (pref.type == Services.prefs.PREF_INT) - pref.value = Services.prefs.getIntPref(pref.name); - else if (pref.type == Services.prefs.PREF_STRING) - pref.value = Services.prefs.getCharPref(pref.name); -} - -// Turn logging on for all tests -Services.prefs.setBoolPref(PREF_LOGGING_ENABLED, true); - -Services.prefs.setBoolPref(PREF_CUSTOM_XPINSTALL_CONFIRMATION_UI, false); - -// Helper to register test failures and close windows if any are left open -function checkOpenWindows(aWindowID) { - let windows = Services.wm.getEnumerator(aWindowID); - let found = false; - while (windows.hasMoreElements()) { - let win = windows.getNext().QueryInterface(Ci.nsIDOMWindow); - if (!win.closed) { - found = true; - win.close(); - } - } - if (found) - ok(false, "Found unexpected " + aWindowID + " window still open"); -} - -// Tools to disable and re-enable the background update and blocklist timers -// so that tests can protect themselves from unwanted timer events. -var gCatMan = Components.classes["@mozilla.org/categorymanager;1"] - .getService(Components.interfaces.nsICategoryManager); -// Default values from toolkit/mozapps/extensions/extensions.manifest, but disable*UpdateTimer() -// records the actual value so we can put it back in enable*UpdateTimer() -var backgroundUpdateConfig = "@mozilla.org/addons/integration;1,getService,addon-background-update-timer,extensions.update.interval,86400"; -var blocklistUpdateConfig = "@mozilla.org/extensions/blocklist;1,getService,blocklist-background-update-timer,extensions.blocklist.interval,86400"; - -var UTIMER = "update-timer"; -var AMANAGER = "addonManager"; -var BLOCKLIST = "nsBlocklistService"; - -function disableBackgroundUpdateTimer() { - info("Disabling " + UTIMER + " " + AMANAGER); - backgroundUpdateConfig = gCatMan.getCategoryEntry(UTIMER, AMANAGER); - gCatMan.deleteCategoryEntry(UTIMER, AMANAGER, true); -} - -function enableBackgroundUpdateTimer() { - info("Enabling " + UTIMER + " " + AMANAGER); - gCatMan.addCategoryEntry(UTIMER, AMANAGER, backgroundUpdateConfig, false, true); -} - -function disableBlocklistUpdateTimer() { - info("Disabling " + UTIMER + " " + BLOCKLIST); - blocklistUpdateConfig = gCatMan.getCategoryEntry(UTIMER, BLOCKLIST); - gCatMan.deleteCategoryEntry(UTIMER, BLOCKLIST, true); -} - -function enableBlocklistUpdateTimer() { - info("Enabling " + UTIMER + " " + BLOCKLIST); - gCatMan.addCategoryEntry(UTIMER, BLOCKLIST, blocklistUpdateConfig, false, true); -} - -registerCleanupFunction(function() { - // Restore prefs - for (let pref of gRestorePrefs) { - if (pref.type == "clear") - Services.prefs.clearUserPref(pref.name); - else if (pref.type == Services.prefs.PREF_BOOL) - Services.prefs.setBoolPref(pref.name, pref.value); - else if (pref.type == Services.prefs.PREF_INT) - Services.prefs.setIntPref(pref.name, pref.value); - else if (pref.type == Services.prefs.PREF_STRING) - Services.prefs.setCharPref(pref.name, pref.value); - } - - // Throw an error if the add-ons manager window is open anywhere - checkOpenWindows("Addons:Manager"); - checkOpenWindows("Addons:Compatibility"); - checkOpenWindows("Addons:Install"); - - return new Promise((resolve, reject) => AddonManager.getAllInstalls(resolve)) - .then(aInstalls => { - for (let install of aInstalls) { - if (install instanceof MockInstall) - continue; - - ok(false, "Should not have seen an install of " + install.sourceURI.spec + " in state " + install.state); - install.cancel(); - } - }); -}); - -function log_exceptions(aCallback, ...aArgs) { - try { - return aCallback.apply(null, aArgs); - } - catch (e) { - info("Exception thrown: " + e); - throw e; - } -} - -function log_callback(aPromise, aCallback) { - aPromise.then(aCallback) - .then(null, e => info("Exception thrown: " + e)); - return aPromise; -} - -function add_test(test) { - gPendingTests.push(test); -} - -function run_next_test() { - // Make sure we're not calling run_next_test from inside an add_task() test - // We're inside the browser_test.js 'testScope' here - if (this.__tasks) { - throw new Error("run_next_test() called from an add_task() test function. " + - "run_next_test() should not be called from inside add_task() " + - "under any circumstances!"); - } - if (gTestsRun > 0) - info("Test " + gTestsRun + " took " + (Date.now() - gTestStart) + "ms"); - - if (gPendingTests.length == 0) { - executeSoon(end_test); - return; - } - - gTestsRun++; - var test = gPendingTests.shift(); - if (test.name) - info("Running test " + gTestsRun + " (" + test.name + ")"); - else - info("Running test " + gTestsRun); - - gTestStart = Date.now(); - executeSoon(() => log_exceptions(test)); -} - -var get_tooltip_info = Task.async(function*(addon) { - let managerWindow = addon.ownerDocument.defaultView; - - // The popup code uses a triggering event's target to set the - // document.tooltipNode property. - let nameNode = addon.ownerDocument.getAnonymousElementByAttribute(addon, "anonid", "name"); - let event = new managerWindow.CustomEvent("TriggerEvent"); - nameNode.dispatchEvent(event); - - let tooltip = managerWindow.document.getElementById("addonitem-tooltip"); - - let promise = BrowserTestUtils.waitForEvent(tooltip, "popupshown"); - tooltip.openPopup(nameNode, "after_start", 0, 0, false, false, event); - yield promise; - - let tiptext = tooltip.label; - - promise = BrowserTestUtils.waitForEvent(tooltip, "popuphidden"); - tooltip.hidePopup(); - yield promise; - - let expectedName = addon.getAttribute("name"); - ok(tiptext.substring(0, expectedName.length), expectedName, - "Tooltip should always start with the expected name"); - - if (expectedName.length == tiptext.length) { - return { - name: tiptext, - version: undefined - }; - } - return { - name: tiptext.substring(0, expectedName.length), - version: tiptext.substring(expectedName.length + 1) - }; -}); - -function get_addon_file_url(aFilename) { - try { - var cr = Cc["@mozilla.org/chrome/chrome-registry;1"]. - getService(Ci.nsIChromeRegistry); - var fileurl = cr.convertChromeURL(makeURI(CHROMEROOT + "addons/" + aFilename)); - return fileurl.QueryInterface(Ci.nsIFileURL); - } catch (ex) { - var jar = getJar(CHROMEROOT + "addons/" + aFilename); - var tmpDir = extractJarToTmp(jar); - tmpDir.append(aFilename); - - return Services.io.newFileURI(tmpDir).QueryInterface(Ci.nsIFileURL); - } -} - -function get_current_view(aManager) { - let view = aManager.document.getElementById("view-port").selectedPanel; - if (view.id == "headered-views") { - view = aManager.document.getElementById("headered-views-content").selectedPanel; - } - is(view, aManager.gViewController.displayedView, "view controller is tracking the displayed view correctly"); - return view; -} - -function get_test_items_in_list(aManager) { - var tests = "@tests.mozilla.org"; - - let view = get_current_view(aManager); - let listid = view.id == "search-view" ? "search-list" : "addon-list"; - let item = aManager.document.getElementById(listid).firstChild; - let items = []; - - while (item) { - if (item.localName != "richlistitem") { - item = item.nextSibling; - continue; - } - - if (!item.mAddon || item.mAddon.id.substring(item.mAddon.id.length - tests.length) == tests) - items.push(item); - item = item.nextSibling; - } - - return items; -} - -function check_all_in_list(aManager, aIds, aIgnoreExtras) { - var doc = aManager.document; - var view = get_current_view(aManager); - var listid = view.id == "search-view" ? "search-list" : "addon-list"; - var list = doc.getElementById(listid); - - var inlist = []; - var node = list.firstChild; - while (node) { - if (node.value) - inlist.push(node.value); - node = node.nextSibling; - } - - for (let id of aIds) { - if (inlist.indexOf(id) == -1) - ok(false, "Should find " + id + " in the list"); - } - - if (aIgnoreExtras) - return; - - for (let inlistItem of inlist) { - if (aIds.indexOf(inlistItem) == -1) - ok(false, "Shouldn't have seen " + inlistItem + " in the list"); - } -} - -function get_addon_element(aManager, aId) { - var doc = aManager.document; - var view = get_current_view(aManager); - var listid = "addon-list"; - if (view.id == "search-view") - listid = "search-list"; - else if (view.id == "updates-view") - listid = "updates-list"; - var list = doc.getElementById(listid); - - var node = list.firstChild; - while (node) { - if (node.value == aId) - return node; - node = node.nextSibling; - } - return null; -} - -function wait_for_view_load(aManagerWindow, aCallback, aForceWait, aLongerTimeout) { - requestLongerTimeout(aLongerTimeout ? aLongerTimeout : 2); - - if (!aForceWait && !aManagerWindow.gViewController.isLoading) { - log_exceptions(aCallback, aManagerWindow); - return; - } - - aManagerWindow.document.addEventListener("ViewChanged", function() { - aManagerWindow.document.removeEventListener("ViewChanged", arguments.callee, false); - log_exceptions(aCallback, aManagerWindow); - }, false); -} - -function wait_for_manager_load(aManagerWindow, aCallback) { - if (!aManagerWindow.gIsInitializing) { - log_exceptions(aCallback, aManagerWindow); - return; - } - - info("Waiting for initialization"); - aManagerWindow.document.addEventListener("Initialized", function() { - aManagerWindow.document.removeEventListener("Initialized", arguments.callee, false); - log_exceptions(aCallback, aManagerWindow); - }, false); -} - -function open_manager(aView, aCallback, aLoadCallback, aLongerTimeout) { - let p = new Promise((resolve, reject) => { - - function setup_manager(aManagerWindow) { - if (aLoadCallback) - log_exceptions(aLoadCallback, aManagerWindow); - - if (aView) - aManagerWindow.loadView(aView); - - ok(aManagerWindow != null, "Should have an add-ons manager window"); - is(aManagerWindow.location, MANAGER_URI, "Should be displaying the correct UI"); - - waitForFocus(function() { - info("window has focus, waiting for manager load"); - wait_for_manager_load(aManagerWindow, function() { - info("Manager waiting for view load"); - wait_for_view_load(aManagerWindow, function() { - resolve(aManagerWindow); - }, null, aLongerTimeout); - }); - }, aManagerWindow); - } - - if (gUseInContentUI) { - info("Loading manager window in tab"); - Services.obs.addObserver(function (aSubject, aTopic, aData) { - Services.obs.removeObserver(arguments.callee, aTopic); - if (aSubject.location.href != MANAGER_URI) { - info("Ignoring load event for " + aSubject.location.href); - return; - } - setup_manager(aSubject); - }, "EM-loaded", false); - - gBrowser.selectedTab = gBrowser.addTab(); - switchToTabHavingURI(MANAGER_URI, true); - } else { - info("Loading manager window in dialog"); - Services.obs.addObserver(function (aSubject, aTopic, aData) { - Services.obs.removeObserver(arguments.callee, aTopic); - setup_manager(aSubject); - }, "EM-loaded", false); - - openDialog(MANAGER_URI); - } - }); - - // The promise resolves with the manager window, so it is passed to the callback - return log_callback(p, aCallback); -} - -function close_manager(aManagerWindow, aCallback, aLongerTimeout) { - let p = new Promise((resolve, reject) => { - requestLongerTimeout(aLongerTimeout ? aLongerTimeout : 2); - - ok(aManagerWindow != null, "Should have an add-ons manager window to close"); - is(aManagerWindow.location, MANAGER_URI, "Should be closing window with correct URI"); - - aManagerWindow.addEventListener("unload", function() { - try { - dump("Manager window unload handler\n"); - this.removeEventListener("unload", arguments.callee, false); - resolve(); - } catch (e) { - reject(e); - } - }, false); - }); - - info("Telling manager window to close"); - aManagerWindow.close(); - info("Manager window close() call returned"); - - return log_callback(p, aCallback); -} - -function restart_manager(aManagerWindow, aView, aCallback, aLoadCallback) { - if (!aManagerWindow) { - return open_manager(aView, aCallback, aLoadCallback); - } - - return close_manager(aManagerWindow) - .then(() => open_manager(aView, aCallback, aLoadCallback)); -} - -function wait_for_window_open(aCallback) { - Services.wm.addListener({ - onOpenWindow: function(aWindow) { - Services.wm.removeListener(this); - - let domwindow = aWindow.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIDOMWindow); - domwindow.addEventListener("load", function() { - domwindow.removeEventListener("load", arguments.callee, false); - executeSoon(function() { - aCallback(domwindow); - }); - }, false); - }, - - onCloseWindow: function(aWindow) { - }, - - onWindowTitleChange: function(aWindow, aTitle) { - } - }); -} - -function get_string(aName, ...aArgs) { - var bundle = Services.strings.createBundle("chrome://mozapps/locale/extensions/extensions.properties"); - if (aArgs.length == 0) - return bundle.GetStringFromName(aName); - return bundle.formatStringFromName(aName, aArgs, aArgs.length); -} - -function formatDate(aDate) { - const locale = Cc["@mozilla.org/chrome/chrome-registry;1"] - .getService(Ci.nsIXULChromeRegistry) - .getSelectedLocale("global", true); - const dtOptions = { year: 'numeric', month: 'long', day: 'numeric' }; - return aDate.toLocaleDateString(locale, dtOptions); -} - -function is_hidden(aElement) { - var style = aElement.ownerDocument.defaultView.getComputedStyle(aElement, ""); - if (style.display == "none") - return true; - if (style.visibility != "visible") - return true; - - // Hiding a parent element will hide all its children - if (aElement.parentNode != aElement.ownerDocument) - return is_hidden(aElement.parentNode); - - return false; -} - -function is_element_visible(aElement, aMsg) { - isnot(aElement, null, "Element should not be null, when checking visibility"); - ok(!is_hidden(aElement), aMsg || (aElement + " should be visible")); -} - -function is_element_hidden(aElement, aMsg) { - isnot(aElement, null, "Element should not be null, when checking visibility"); - ok(is_hidden(aElement), aMsg || (aElement + " should be hidden")); -} - -function promiseAddonByID(aId) { - return new Promise(resolve => { - AddonManager.getAddonByID(aId, resolve); - }); -} - -function promiseAddonsByIDs(aIDs) { - return new Promise(resolve => { - AddonManager.getAddonsByIDs(aIDs, resolve); - }); -} -/** - * Install an add-on and call a callback when complete. - * - * The callback will receive the Addon for the installed add-on. - */ -function install_addon(path, cb, pathPrefix=TESTROOT) { - let p = new Promise((resolve, reject) => { - AddonManager.getInstallForURL(pathPrefix + path, (install) => { - install.addListener({ - onInstallEnded: () => resolve(install.addon), - }); - - install.install(); - }, "application/x-xpinstall"); - }); - - return log_callback(p, cb); -} - -function CategoryUtilities(aManagerWindow) { - this.window = aManagerWindow; - - var self = this; - this.window.addEventListener("unload", function() { - self.window.removeEventListener("unload", arguments.callee, false); - self.window = null; - }, false); -} - -CategoryUtilities.prototype = { - window: null, - - get selectedCategory() { - isnot(this.window, null, "Should not get selected category when manager window is not loaded"); - var selectedItem = this.window.document.getElementById("categories").selectedItem; - isnot(selectedItem, null, "A category should be selected"); - var view = this.window.gViewController.parseViewId(selectedItem.value); - return (view.type == "list") ? view.param : view.type; - }, - - get: function(aCategoryType, aAllowMissing) { - isnot(this.window, null, "Should not get category when manager window is not loaded"); - var categories = this.window.document.getElementById("categories"); - - var viewId = "addons://list/" + aCategoryType; - var items = categories.getElementsByAttribute("value", viewId); - if (items.length) - return items[0]; - - viewId = "addons://" + aCategoryType + "/"; - items = categories.getElementsByAttribute("value", viewId); - if (items.length) - return items[0]; - - if (!aAllowMissing) - ok(false, "Should have found a category with type " + aCategoryType); - return null; - }, - - getViewId: function(aCategoryType) { - isnot(this.window, null, "Should not get view id when manager window is not loaded"); - return this.get(aCategoryType).value; - }, - - isVisible: function(aCategory) { - isnot(this.window, null, "Should not check visible state when manager window is not loaded"); - if (aCategory.hasAttribute("disabled") && - aCategory.getAttribute("disabled") == "true") - return false; - - return !is_hidden(aCategory); - }, - - isTypeVisible: function(aCategoryType) { - return this.isVisible(this.get(aCategoryType)); - }, - - open: function(aCategory, aCallback) { - - isnot(this.window, null, "Should not open category when manager window is not loaded"); - ok(this.isVisible(aCategory), "Category should be visible if attempting to open it"); - - EventUtils.synthesizeMouse(aCategory, 2, 2, { }, this.window); - let p = new Promise((resolve, reject) => wait_for_view_load(this.window, resolve)); - - return log_callback(p, aCallback); - }, - - openType: function(aCategoryType, aCallback) { - return this.open(this.get(aCategoryType), aCallback); - } -} - -function CertOverrideListener(host, bits) { - this.host = host; - this.bits = bits; -} - -CertOverrideListener.prototype = { - host: null, - bits: null, - - getInterface: function (aIID) { - return this.QueryInterface(aIID); - }, - - QueryInterface: function(aIID) { - if (aIID.equals(Ci.nsIBadCertListener2) || - aIID.equals(Ci.nsIInterfaceRequestor) || - aIID.equals(Ci.nsISupports)) - return this; - - throw Components.Exception("No interface", Components.results.NS_ERROR_NO_INTERFACE); - }, - - notifyCertProblem: function (socketInfo, sslStatus, targetHost) { - var cert = sslStatus.QueryInterface(Components.interfaces.nsISSLStatus) - .serverCert; - var cos = Cc["@mozilla.org/security/certoverride;1"]. - getService(Ci.nsICertOverrideService); - cos.rememberValidityOverride(this.host, -1, cert, this.bits, false); - return true; - } -} - -// Add overrides for the bad certificates -function addCertOverride(host, bits) { - var req = new XMLHttpRequest(); - try { - req.open("GET", "https://" + host + "/", false); - req.channel.notificationCallbacks = new CertOverrideListener(host, bits); - req.send(null); - } - catch (e) { - // This request will fail since the SSL server is not trusted yet - } -} - -/** *** Mock Provider *****/ - -function MockProvider(aUseAsyncCallbacks, aTypes) { - this.addons = []; - this.installs = []; - this.callbackTimers = []; - this.timerLocations = new Map(); - this.useAsyncCallbacks = (aUseAsyncCallbacks === undefined) ? true : aUseAsyncCallbacks; - this.types = (aTypes === undefined) ? [{ - id: "extension", - name: "Extensions", - uiPriority: 4000, - flags: AddonManager.TYPE_UI_VIEW_LIST | - AddonManager.TYPE_SUPPORTS_UNDO_RESTARTLESS_UNINSTALL, - }] : aTypes; - - var self = this; - registerCleanupFunction(function() { - if (self.started) - self.unregister(); - }); - - this.register(); -} - -MockProvider.prototype = { - addons: null, - installs: null, - started: null, - apiDelay: 10, - callbackTimers: null, - timerLocations: null, - useAsyncCallbacks: null, - types: null, - - /** *** Utility functions *****/ - - /** - * Register this provider with the AddonManager - */ - register: function MP_register() { - info("Registering mock add-on provider"); - AddonManagerPrivate.registerProvider(this, this.types); - }, - - /** - * Unregister this provider with the AddonManager - */ - unregister: function MP_unregister() { - info("Unregistering mock add-on provider"); - AddonManagerPrivate.unregisterProvider(this); - }, - - /** - * Adds an add-on to the list of add-ons that this provider exposes to the - * AddonManager, dispatching appropriate events in the process. - * - * @param aAddon - * The add-on to add - */ - addAddon: function MP_addAddon(aAddon) { - var oldAddons = this.addons.filter(aOldAddon => aOldAddon.id == aAddon.id); - var oldAddon = oldAddons.length > 0 ? oldAddons[0] : null; - - this.addons = this.addons.filter(aOldAddon => aOldAddon.id != aAddon.id); - - this.addons.push(aAddon); - aAddon._provider = this; - - if (!this.started) - return; - - let requiresRestart = (aAddon.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_INSTALL) != 0; - AddonManagerPrivate.callInstallListeners("onExternalInstall", null, aAddon, - oldAddon, requiresRestart) - }, - - /** - * Removes an add-on from the list of add-ons that this provider exposes to - * the AddonManager, dispatching the onUninstalled event in the process. - * - * @param aAddon - * The add-on to add - */ - removeAddon: function MP_removeAddon(aAddon) { - var pos = this.addons.indexOf(aAddon); - if (pos == -1) { - ok(false, "Tried to remove an add-on that wasn't registered with the mock provider"); - return; - } - - this.addons.splice(pos, 1); - - if (!this.started) - return; - - AddonManagerPrivate.callAddonListeners("onUninstalled", aAddon); - }, - - /** - * Adds an add-on install to the list of installs that this provider exposes - * to the AddonManager, dispatching appropriate events in the process. - * - * @param aInstall - * The add-on install to add - */ - addInstall: function MP_addInstall(aInstall) { - this.installs.push(aInstall); - aInstall._provider = this; - - if (!this.started) - return; - - aInstall.callListeners("onNewInstall"); - }, - - removeInstall: function MP_removeInstall(aInstall) { - var pos = this.installs.indexOf(aInstall); - if (pos == -1) { - ok(false, "Tried to remove an install that wasn't registered with the mock provider"); - return; - } - - this.installs.splice(pos, 1); - }, - - /** - * Creates a set of mock add-on objects and adds them to the list of add-ons - * managed by this provider. - * - * @param aAddonProperties - * An array of objects containing properties describing the add-ons - * @return Array of the new MockAddons - */ - createAddons: function MP_createAddons(aAddonProperties) { - var newAddons = []; - for (let addonProp of aAddonProperties) { - let addon = new MockAddon(addonProp.id); - for (let prop in addonProp) { - if (prop == "id") - continue; - if (prop == "applyBackgroundUpdates") { - addon._applyBackgroundUpdates = addonProp[prop]; - continue; - } - if (prop == "appDisabled") { - addon._appDisabled = addonProp[prop]; - continue; - } - addon[prop] = addonProp[prop]; - } - if (!addon.optionsType && !!addon.optionsURL) - addon.optionsType = AddonManager.OPTIONS_TYPE_DIALOG; - - // Make sure the active state matches the passed in properties - addon.isActive = addon.shouldBeActive; - - this.addAddon(addon); - newAddons.push(addon); - } - - return newAddons; - }, - - /** - * Creates a set of mock add-on install objects and adds them to the list - * of installs managed by this provider. - * - * @param aInstallProperties - * An array of objects containing properties describing the installs - * @return Array of the new MockInstalls - */ - createInstalls: function MP_createInstalls(aInstallProperties) { - var newInstalls = []; - for (let installProp of aInstallProperties) { - let install = new MockInstall(installProp.name || null, - installProp.type || null, - null); - for (let prop in installProp) { - switch (prop) { - case "name": - case "type": - break; - case "sourceURI": - install[prop] = NetUtil.newURI(installProp[prop]); - break; - default: - install[prop] = installProp[prop]; - } - } - this.addInstall(install); - newInstalls.push(install); - } - - return newInstalls; - }, - - /** *** AddonProvider implementation *****/ - - /** - * Called to initialize the provider. - */ - startup: function MP_startup() { - this.started = true; - }, - - /** - * Called when the provider should shutdown. - */ - shutdown: function MP_shutdown() { - if (this.callbackTimers.length) { - info("MockProvider: pending callbacks at shutdown(): calling immediately"); - } - while (this.callbackTimers.length > 0) { - // When we notify the callback timer, it removes itself from our array - let timer = this.callbackTimers[0]; - try { - let setAt = this.timerLocations.get(timer); - info("Notifying timer set at " + (setAt || "unknown location")); - timer.callback.notify(timer); - timer.cancel(); - } catch (e) { - info("Timer notify failed: " + e); - } - } - this.callbackTimers = []; - this.timerLocations = null; - - this.started = false; - }, - - /** - * Called to get an Addon with a particular ID. - * - * @param aId - * The ID of the add-on to retrieve - * @param aCallback - * A callback to pass the Addon to - */ - getAddonByID: function MP_getAddon(aId, aCallback) { - for (let addon of this.addons) { - if (addon.id == aId) { - this._delayCallback(aCallback, addon); - return; - } - } - - aCallback(null); - }, - - /** - * Called to get Addons of a particular type. - * - * @param aTypes - * An array of types to fetch. Can be null to get all types. - * @param callback - * A callback to pass an array of Addons to - */ - getAddonsByTypes: function MP_getAddonsByTypes(aTypes, aCallback) { - var addons = this.addons.filter(function(aAddon) { - if (aTypes && aTypes.length > 0 && aTypes.indexOf(aAddon.type) == -1) - return false; - return true; - }); - this._delayCallback(aCallback, addons); - }, - - /** - * Called to get Addons that have pending operations. - * - * @param aTypes - * An array of types to fetch. Can be null to get all types - * @param aCallback - * A callback to pass an array of Addons to - */ - getAddonsWithOperationsByTypes: function MP_getAddonsWithOperationsByTypes(aTypes, aCallback) { - var addons = this.addons.filter(function(aAddon) { - if (aTypes && aTypes.length > 0 && aTypes.indexOf(aAddon.type) == -1) - return false; - return aAddon.pendingOperations != 0; - }); - this._delayCallback(aCallback, addons); - }, - - /** - * Called to get the current AddonInstalls, optionally restricting by type. - * - * @param aTypes - * An array of types or null to get all types - * @param aCallback - * A callback to pass the array of AddonInstalls to - */ - getInstallsByTypes: function MP_getInstallsByTypes(aTypes, aCallback) { - var installs = this.installs.filter(function(aInstall) { - // Appear to have actually removed cancelled installs from the provider - if (aInstall.state == AddonManager.STATE_CANCELLED) - return false; - - if (aTypes && aTypes.length > 0 && aTypes.indexOf(aInstall.type) == -1) - return false; - - return true; - }); - this._delayCallback(aCallback, installs); - }, - - /** - * Called when a new add-on has been enabled when only one add-on of that type - * can be enabled. - * - * @param aId - * The ID of the newly enabled add-on - * @param aType - * The type of the newly enabled add-on - * @param aPendingRestart - * true if the newly enabled add-on will only become enabled after a - * restart - */ - addonChanged: function MP_addonChanged(aId, aType, aPendingRestart) { - // Not implemented - }, - - /** - * Update the appDisabled property for all add-ons. - */ - updateAddonAppDisabledStates: function MP_updateAddonAppDisabledStates() { - // Not needed - }, - - /** - * Called to get an AddonInstall to download and install an add-on from a URL. - * - * @param aUrl - * The URL to be installed - * @param aHash - * A hash for the install - * @param aName - * A name for the install - * @param aIconURL - * An icon URL for the install - * @param aVersion - * A version for the install - * @param aLoadGroup - * An nsILoadGroup to associate requests with - * @param aCallback - * A callback to pass the AddonInstall to - */ - getInstallForURL: function MP_getInstallForURL(aUrl, aHash, aName, aIconURL, - aVersion, aLoadGroup, aCallback) { - // Not yet implemented - }, - - /** - * Called to get an AddonInstall to install an add-on from a local file. - * - * @param aFile - * The file to be installed - * @param aCallback - * A callback to pass the AddonInstall to - */ - getInstallForFile: function MP_getInstallForFile(aFile, aCallback) { - // Not yet implemented - }, - - /** - * Called to test whether installing add-ons is enabled. - * - * @return true if installing is enabled - */ - isInstallEnabled: function MP_isInstallEnabled() { - return false; - }, - - /** - * Called to test whether this provider supports installing a particular - * mimetype. - * - * @param aMimetype - * The mimetype to check for - * @return true if the mimetype is supported - */ - supportsMimetype: function MP_supportsMimetype(aMimetype) { - return false; - }, - - /** - * Called to test whether installing add-ons from a URI is allowed. - * - * @param aUri - * The URI being installed from - * @return true if installing is allowed - */ - isInstallAllowed: function MP_isInstallAllowed(aUri) { - return false; - }, - - - /** *** Internal functions *****/ - - /** - * Delay calling a callback to fake a time-consuming async operation. - * The delay is specified by the apiDelay property, in milliseconds. - * Parameters to send to the callback should be specified as arguments after - * the aCallback argument. - * - * @param aCallback Callback to eventually call - */ - _delayCallback: function MP_delayCallback(aCallback, ...aArgs) { - if (!this.useAsyncCallbacks) { - aCallback(...aArgs); - return; - } - - let timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); - // Need to keep a reference to the timer, so it doesn't get GC'ed - this.callbackTimers.push(timer); - // Capture a stack trace where the timer was set - // needs the 'new Error' hack until bug 1007656 - this.timerLocations.set(timer, Log.stackTrace(new Error("dummy"))); - timer.initWithCallback(() => { - let idx = this.callbackTimers.indexOf(timer); - if (idx == -1) { - dump("MockProvider._delayCallback lost track of timer set at " - + (this.timerLocations.get(timer) || "unknown location") + "\n"); - } else { - this.callbackTimers.splice(idx, 1); - } - this.timerLocations.delete(timer); - aCallback(...aArgs); - }, this.apiDelay, timer.TYPE_ONE_SHOT); - } -}; - -/** *** Mock Addon object for the Mock Provider *****/ - -function MockAddon(aId, aName, aType, aOperationsRequiringRestart) { - // Only set required attributes. - this.id = aId || ""; - this.name = aName || ""; - this.type = aType || "extension"; - this.version = ""; - this.isCompatible = true; - this.providesUpdatesSecurely = true; - this.blocklistState = 0; - this._appDisabled = false; - this._userDisabled = false; - this._applyBackgroundUpdates = AddonManager.AUTOUPDATE_ENABLE; - this.scope = AddonManager.SCOPE_PROFILE; - this.isActive = true; - this.creator = ""; - this.pendingOperations = 0; - this._permissions = AddonManager.PERM_CAN_UNINSTALL | - AddonManager.PERM_CAN_ENABLE | - AddonManager.PERM_CAN_DISABLE | - AddonManager.PERM_CAN_UPGRADE; - this.operationsRequiringRestart = (aOperationsRequiringRestart != undefined) ? - aOperationsRequiringRestart : - (AddonManager.OP_NEEDS_RESTART_INSTALL | - AddonManager.OP_NEEDS_RESTART_UNINSTALL | - AddonManager.OP_NEEDS_RESTART_ENABLE | - AddonManager.OP_NEEDS_RESTART_DISABLE); -} - -MockAddon.prototype = { - get isCorrectlySigned() { - if (this.signedState === AddonManager.SIGNEDSTATE_NOT_REQUIRED) - return true; - return this.signedState > AddonManager.SIGNEDSTATE_MISSING; - }, - - get shouldBeActive() { - return !this.appDisabled && !this._userDisabled && - !(this.pendingOperations & AddonManager.PENDING_UNINSTALL); - }, - - get appDisabled() { - return this._appDisabled; - }, - - set appDisabled(val) { - if (val == this._appDisabled) - return val; - - AddonManagerPrivate.callAddonListeners("onPropertyChanged", this, ["appDisabled"]); - - var currentActive = this.shouldBeActive; - this._appDisabled = val; - var newActive = this.shouldBeActive; - this._updateActiveState(currentActive, newActive); - - return val; - }, - - get userDisabled() { - return this._userDisabled; - }, - - set userDisabled(val) { - if (val == this._userDisabled) - return val; - - var currentActive = this.shouldBeActive; - this._userDisabled = val; - var newActive = this.shouldBeActive; - this._updateActiveState(currentActive, newActive); - - return val; - }, - - get permissions() { - let permissions = this._permissions; - if (this.appDisabled || !this._userDisabled) - permissions &= ~AddonManager.PERM_CAN_ENABLE; - if (this.appDisabled || this._userDisabled) - permissions &= ~AddonManager.PERM_CAN_DISABLE; - return permissions; - }, - - set permissions(val) { - return this._permissions = val; - }, - - get applyBackgroundUpdates() { - return this._applyBackgroundUpdates; - }, - - set applyBackgroundUpdates(val) { - if (val != AddonManager.AUTOUPDATE_DEFAULT && - val != AddonManager.AUTOUPDATE_DISABLE && - val != AddonManager.AUTOUPDATE_ENABLE) { - ok(false, "addon.applyBackgroundUpdates set to an invalid value: " + val); - } - this._applyBackgroundUpdates = val; - AddonManagerPrivate.callAddonListeners("onPropertyChanged", this, ["applyBackgroundUpdates"]); - }, - - isCompatibleWith: function(aAppVersion, aPlatformVersion) { - return true; - }, - - findUpdates: function(aListener, aReason, aAppVersion, aPlatformVersion) { - // Tests can implement this if they need to - }, - - uninstall: function(aAlwaysAllowUndo = false) { - if ((this.operationsRequiringRestart & AddonManager.OP_NEED_RESTART_UNINSTALL) - && this.pendingOperations & AddonManager.PENDING_UNINSTALL) - throw Components.Exception("Add-on is already pending uninstall"); - - var needsRestart = aAlwaysAllowUndo || !!(this.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL); - this.pendingOperations |= AddonManager.PENDING_UNINSTALL; - AddonManagerPrivate.callAddonListeners("onUninstalling", this, needsRestart); - if (!needsRestart) { - this.pendingOperations -= AddonManager.PENDING_UNINSTALL; - this._provider.removeAddon(this); - } else if (!(this.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_DISABLE)) { - this.isActive = false; - } - }, - - cancelUninstall: function() { - if (!(this.pendingOperations & AddonManager.PENDING_UNINSTALL)) - throw Components.Exception("Add-on is not pending uninstall"); - - this.pendingOperations -= AddonManager.PENDING_UNINSTALL; - this.isActive = this.shouldBeActive; - AddonManagerPrivate.callAddonListeners("onOperationCancelled", this); - }, - - markAsSeen: function() { - this.seen = true; - }, - - _updateActiveState: function(currentActive, newActive) { - if (currentActive == newActive) - return; - - if (newActive == this.isActive) { - this.pendingOperations -= (newActive ? AddonManager.PENDING_DISABLE : AddonManager.PENDING_ENABLE); - AddonManagerPrivate.callAddonListeners("onOperationCancelled", this); - } - else if (newActive) { - let needsRestart = !!(this.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_ENABLE); - this.pendingOperations |= AddonManager.PENDING_ENABLE; - AddonManagerPrivate.callAddonListeners("onEnabling", this, needsRestart); - if (!needsRestart) { - this.isActive = newActive; - this.pendingOperations -= AddonManager.PENDING_ENABLE; - AddonManagerPrivate.callAddonListeners("onEnabled", this); - } - } - else { - let needsRestart = !!(this.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_DISABLE); - this.pendingOperations |= AddonManager.PENDING_DISABLE; - AddonManagerPrivate.callAddonListeners("onDisabling", this, needsRestart); - if (!needsRestart) { - this.isActive = newActive; - this.pendingOperations -= AddonManager.PENDING_DISABLE; - AddonManagerPrivate.callAddonListeners("onDisabled", this); - } - } - } -}; - -/** *** Mock AddonInstall object for the Mock Provider *****/ - -function MockInstall(aName, aType, aAddonToInstall) { - this.name = aName || ""; - // Don't expose type until download completed - this._type = aType || "extension"; - this.type = null; - this.version = "1.0"; - this.iconURL = ""; - this.infoURL = ""; - this.state = AddonManager.STATE_AVAILABLE; - this.error = 0; - this.sourceURI = null; - this.file = null; - this.progress = 0; - this.maxProgress = -1; - this.certificate = null; - this.certName = ""; - this.existingAddon = null; - this.addon = null; - this._addonToInstall = aAddonToInstall; - this.listeners = []; - - // Another type of install listener for tests that want to check the results - // of code run from standard install listeners - this.testListeners = []; -} - -MockInstall.prototype = { - install: function() { - switch (this.state) { - case AddonManager.STATE_AVAILABLE: - this.state = AddonManager.STATE_DOWNLOADING; - if (!this.callListeners("onDownloadStarted")) { - this.state = AddonManager.STATE_CANCELLED; - this.callListeners("onDownloadCancelled"); - return; - } - - this.type = this._type; - - // Adding addon to MockProvider to be implemented when needed - if (this._addonToInstall) - this.addon = this._addonToInstall; - else { - this.addon = new MockAddon("", this.name, this.type); - this.addon.version = this.version; - this.addon.pendingOperations = AddonManager.PENDING_INSTALL; - } - this.addon.install = this; - if (this.existingAddon) { - if (!this.addon.id) - this.addon.id = this.existingAddon.id; - this.existingAddon.pendingUpgrade = this.addon; - this.existingAddon.pendingOperations |= AddonManager.PENDING_UPGRADE; - } - - this.state = AddonManager.STATE_DOWNLOADED; - this.callListeners("onDownloadEnded"); - - case AddonManager.STATE_DOWNLOADED: - this.state = AddonManager.STATE_INSTALLING; - if (!this.callListeners("onInstallStarted")) { - this.state = AddonManager.STATE_CANCELLED; - this.callListeners("onInstallCancelled"); - return; - } - - let needsRestart = (this.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_INSTALL); - AddonManagerPrivate.callAddonListeners("onInstalling", this.addon, needsRestart); - if (!needsRestart) { - AddonManagerPrivate.callAddonListeners("onInstalled", this.addon); - } - - this.state = AddonManager.STATE_INSTALLED; - this.callListeners("onInstallEnded"); - break; - case AddonManager.STATE_DOWNLOADING: - case AddonManager.STATE_CHECKING: - case AddonManager.STATE_INSTALLING: - // Installation is already running - return; - default: - ok(false, "Cannot start installing when state = " + this.state); - } - }, - - cancel: function() { - switch (this.state) { - case AddonManager.STATE_AVAILABLE: - this.state = AddonManager.STATE_CANCELLED; - break; - case AddonManager.STATE_INSTALLED: - this.state = AddonManager.STATE_CANCELLED; - this._provider.removeInstall(this); - this.callListeners("onInstallCancelled"); - break; - default: - // Handling cancelling when downloading to be implemented when needed - ok(false, "Cannot cancel when state = " + this.state); - } - }, - - - addListener: function(aListener) { - if (!this.listeners.some(i => i == aListener)) - this.listeners.push(aListener); - }, - - removeListener: function(aListener) { - this.listeners = this.listeners.filter(i => i != aListener); - }, - - addTestListener: function(aListener) { - if (!this.testListeners.some(i => i == aListener)) - this.testListeners.push(aListener); - }, - - removeTestListener: function(aListener) { - this.testListeners = this.testListeners.filter(i => i != aListener); - }, - - callListeners: function(aMethod) { - var result = AddonManagerPrivate.callInstallListeners(aMethod, this.listeners, - this, this.addon); - - // Call test listeners after standard listeners to remove race condition - // between standard and test listeners - for (let listener of this.testListeners) { - try { - if (aMethod in listener) - if (listener[aMethod].call(listener, this, this.addon) === false) - result = false; - } - catch (e) { - ok(false, "Test listener threw exception: " + e); - } - } - - return result; - } -}; - -function waitForCondition(condition, nextTest, errorMsg) { - let tries = 0; - let interval = setInterval(function() { - if (tries >= 30) { - ok(false, errorMsg); - moveOn(); - } - var conditionPassed; - try { - conditionPassed = condition(); - } catch (e) { - ok(false, e + "\n" + e.stack); - conditionPassed = false; - } - if (conditionPassed) { - moveOn(); - } - tries++; - }, 100); - let moveOn = function() { clearInterval(interval); nextTest(); }; -} - -function getTestPluginTag() { - let ph = Cc["@mozilla.org/plugin/host;1"].getService(Ci.nsIPluginHost); - let tags = ph.getPluginTags(); - - // Find the test plugin - for (let i = 0; i < tags.length; i++) { - if (tags[i].name == "Test Plug-in") - return tags[i]; - } - ok(false, "Unable to find plugin"); - return null; -} diff --git a/toolkit/mozapps/webextensions/test/browser/more_options.xul b/toolkit/mozapps/webextensions/test/browser/more_options.xul deleted file mode 100644 index 28dbb0a2e..000000000 --- a/toolkit/mozapps/webextensions/test/browser/more_options.xul +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" ?> -<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <setting pref="extensions.inlinesettings3.radioBool" type="radio" title="Radio"> - <radiogroup> - <radio label="Delta" value="true" /> - <radio label="Echo" value="false" /> - </radiogroup> - </setting> - <setting pref="extensions.inlinesettings3.radioInt" type="radio" title="Radio"> - <radiogroup> - <radio label="Foxtrot" value="4" /> - <radio label="Golf" value="5" /> - <radio label="Hotel" value="6" /> - </radiogroup> - </setting> - <setting pref="extensions.inlinesettings3.radioString" type="radio" title="Radio"> - <radiogroup> - <radio label="India" value="india" /> - <radio label="Juliet" value="juliet" /> - <radio label="Kilo ㎏" value="kilo ㎏" /> - </radiogroup> - </setting> - <setting pref="extensions.inlinesettings3.menulist" type="menulist" title="Menulist"> - <menulist sizetopopup="always"> - <menupopup> - <menuitem label="Lima" value="7" /> - <menuitem label="Mike" value="8" /> - <menuitem label="November" value="9" /> - </menupopup> - </menulist> - </setting> -</vbox> diff --git a/toolkit/mozapps/webextensions/test/browser/moz.build b/toolkit/mozapps/webextensions/test/browser/moz.build deleted file mode 100644 index af04aaeef..000000000 --- a/toolkit/mozapps/webextensions/test/browser/moz.build +++ /dev/null @@ -1,10 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -BROWSER_CHROME_MANIFESTS += [ - 'browser-window.ini', - 'browser.ini', -] diff --git a/toolkit/mozapps/webextensions/test/browser/options.xul b/toolkit/mozapps/webextensions/test/browser/options.xul deleted file mode 100644 index 1b6827915..000000000 --- a/toolkit/mozapps/webextensions/test/browser/options.xul +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" ?> -<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <setting /> - <setting pref="extensions.inlinesettings2.bool1" type="bool" title="Bool 1" desc="Description Attribute"/> - <setting pref="extensions.inlinesettings2.bool2" type="bool" title="Bool 2">Description Text Node</setting> - <setting type="control" title="Button"> - This is a test, <button label="button" />all this text should be visible - </setting> - <setting type="unsupported"> - This setting should never appear - </setting> -</vbox> diff --git a/toolkit/mozapps/webextensions/test/browser/plugin_test.html b/toolkit/mozapps/webextensions/test/browser/plugin_test.html deleted file mode 100644 index 0709eda06..000000000 --- a/toolkit/mozapps/webextensions/test/browser/plugin_test.html +++ /dev/null @@ -1,7 +0,0 @@ -<!DOCTYPE html> -<html> -<head><meta charset="utf-8"></head> -<body> -<object id="test" width=200 height=200 type="application/x-test"></object> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/browser/redirect.sjs b/toolkit/mozapps/webextensions/test/browser/redirect.sjs deleted file mode 100644 index 8f9d1c08a..000000000 --- a/toolkit/mozapps/webextensions/test/browser/redirect.sjs +++ /dev/null @@ -1,5 +0,0 @@ -function handleRequest(request, response) { - dump("*** Received redirect for " + request.queryString + "\n"); - response.setStatusLine(request.httpVersion, 301, "Moved Permanently"); - response.setHeader("Location", request.queryString, false); -} diff --git a/toolkit/mozapps/webextensions/test/browser/releaseNotes.xhtml b/toolkit/mozapps/webextensions/test/browser/releaseNotes.xhtml deleted file mode 100644 index 63ae07901..000000000 --- a/toolkit/mozapps/webextensions/test/browser/releaseNotes.xhtml +++ /dev/null @@ -1,15 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html lang="en-US" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> - <title></title> -</head> - -<body> - <h1>OMG, an update!!!!</h1> - <ul> - <li>Made everything more awesome</li> - <li>Added hot sauce</li> - </ul> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/browser/signed_hotfix.rdf b/toolkit/mozapps/webextensions/test/browser/signed_hotfix.rdf deleted file mode 100644 index 39bd936c9..000000000 --- a/toolkit/mozapps/webextensions/test/browser/signed_hotfix.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?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>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - <em:updateLink>https://example.com/browser/toolkit/mozapps/extensions/test/browser/signed_hotfix.xpi</em:updateLink> - </Description> - </em:targetApplication> - </Description> - </li> - </Seq> - </em:updates> - </Description> - -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/signed_hotfix.xpi b/toolkit/mozapps/webextensions/test/browser/signed_hotfix.xpi Binary files differdeleted file mode 100644 index bd1890573..000000000 --- a/toolkit/mozapps/webextensions/test/browser/signed_hotfix.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/unsigned_hotfix.rdf b/toolkit/mozapps/webextensions/test/browser/unsigned_hotfix.rdf deleted file mode 100644 index 2b4ba9362..000000000 --- a/toolkit/mozapps/webextensions/test/browser/unsigned_hotfix.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?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>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - <em:updateLink>https://example.com/browser/toolkit/mozapps/extensions/test/browser/unsigned_hotfix.xpi</em:updateLink> - </Description> - </em:targetApplication> - </Description> - </li> - </Seq> - </em:updates> - </Description> - -</RDF> diff --git a/toolkit/mozapps/webextensions/test/browser/unsigned_hotfix.xpi b/toolkit/mozapps/webextensions/test/browser/unsigned_hotfix.xpi Binary files differdeleted file mode 100644 index f2d475bd2..000000000 --- a/toolkit/mozapps/webextensions/test/browser/unsigned_hotfix.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/browser/webapi_addon_listener.html b/toolkit/mozapps/webextensions/test/browser/webapi_addon_listener.html deleted file mode 100644 index 56128fd9c..000000000 --- a/toolkit/mozapps/webextensions/test/browser/webapi_addon_listener.html +++ /dev/null @@ -1,30 +0,0 @@ -<!DOCTYPE html> - -<html> -<head> - <meta charset="utf-8"> -</head> -<body> -<p id="result"></p> -<script type="text/javascript"> -let events = []; -let resultEl = document.getElementById("result"); -[ "onEnabling", - "onEnabled", - "onDisabling", - "onDisabled", - "onInstalling", - "onInstalled", - "onUninstalling", - "onUninstalled", - "onOperationCancelled", -].forEach(event => { - navigator.mozAddonManager.addEventListener(event, data => { - let obj = {event, id: data.id, needsRestart: data.needsRestart}; - events.push(JSON.stringify(obj)); - resultEl.textContent = events.join('\n'); - }); -}); -</script> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/browser/webapi_checkavailable.html b/toolkit/mozapps/webextensions/test/browser/webapi_checkavailable.html deleted file mode 100644 index 141f09cc6..000000000 --- a/toolkit/mozapps/webextensions/test/browser/webapi_checkavailable.html +++ /dev/null @@ -1,13 +0,0 @@ -<!DOCTYPE html> - -<html> -<head> - <meta charset="utf-8"> -</head> -<body> -<p id="result"></p> -<script type="text/javascript"> -document.getElementById("result").textContent = ("mozAddonManager" in window.navigator); -</script> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/browser/webapi_checkchromeframe.xul b/toolkit/mozapps/webextensions/test/browser/webapi_checkchromeframe.xul deleted file mode 100644 index 76e642604..000000000 --- a/toolkit/mozapps/webextensions/test/browser/webapi_checkchromeframe.xul +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <browser id="frame" disablehistory="true" flex="1" type="content" - src="https://example.com/browser/toolkit/mozapps/extensions/test/browser/webapi_checkavailable.html"/> -</window> diff --git a/toolkit/mozapps/webextensions/test/browser/webapi_checkframed.html b/toolkit/mozapps/webextensions/test/browser/webapi_checkframed.html deleted file mode 100644 index 146769978..000000000 --- a/toolkit/mozapps/webextensions/test/browser/webapi_checkframed.html +++ /dev/null @@ -1,7 +0,0 @@ -<!DOCTYPE html> - -<html> -<body> -<iframe id="frame" height="200" width="200" src="https://example.com/browser/toolkit/mozapps/extensions/test/browser/webapi_checkavailable.html"> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/browser/webapi_checknavigatedwindow.html b/toolkit/mozapps/webextensions/test/browser/webapi_checknavigatedwindow.html deleted file mode 100644 index ba3653310..000000000 --- a/toolkit/mozapps/webextensions/test/browser/webapi_checknavigatedwindow.html +++ /dev/null @@ -1,28 +0,0 @@ -<!DOCTYPE html> - -<html> -<body> -<script type="text/javascript"> -var nav, win; - -function openWindow() { - return new Promise(resolve => { - win = window.open(window.location); - - win.addEventListener("load", function listener() { - nav = win.navigator; - resolve(); - }, false); - }); -} - -function navigate() { - win.location = "http://example.com/"; -} - -function check() { - return "mozAddonManager" in nav; -} -</script> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/mochitest/.eslintrc.js b/toolkit/mozapps/webextensions/test/mochitest/.eslintrc.js deleted file mode 100644 index 383da0f41..000000000 --- a/toolkit/mozapps/webextensions/test/mochitest/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -module.exports = { // eslint-disable-line no-undef - "extends": [ - "../../../../../testing/mochitest/mochitest.eslintrc.js" - ] -}; diff --git a/toolkit/mozapps/webextensions/test/mochitest/file_bug687194.xpi b/toolkit/mozapps/webextensions/test/mochitest/file_bug687194.xpi Binary files differdeleted file mode 100644 index e215cffad..000000000 --- a/toolkit/mozapps/webextensions/test/mochitest/file_bug687194.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/mochitest/file_empty.html b/toolkit/mozapps/webextensions/test/mochitest/file_empty.html deleted file mode 100644 index b6c8a53b4..000000000 --- a/toolkit/mozapps/webextensions/test/mochitest/file_empty.html +++ /dev/null @@ -1,2 +0,0 @@ -<!DOCTYPE html> -<html><head></head><body><span id="text">Nothing to see here</span></body></html> diff --git a/toolkit/mozapps/webextensions/test/mochitest/mochitest.ini b/toolkit/mozapps/webextensions/test/mochitest/mochitest.ini deleted file mode 100644 index b14cfe87a..000000000 --- a/toolkit/mozapps/webextensions/test/mochitest/mochitest.ini +++ /dev/null @@ -1,9 +0,0 @@ -[DEFAULT] -support-files = - file_empty.html - file_bug687194.xpi - -[test_bug609794.html] -[test_bug687194.html] -skip-if = e10s || os == "android" # this test creates its own child process, no need to run it in e10s -[test_bug887098.html] diff --git a/toolkit/mozapps/webextensions/test/mochitest/test_bug609794.html b/toolkit/mozapps/webextensions/test/mochitest/test_bug609794.html deleted file mode 100644 index d13e6ef2f..000000000 --- a/toolkit/mozapps/webextensions/test/mochitest/test_bug609794.html +++ /dev/null @@ -1,27 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=609794 ---> -<head> - <title>Test for Bug 609794</title> - <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> -</head> -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=609794">Mozilla Bug 609794</a> -<p id="display"></p> -<div id="content" style="display: none"> - -</div> -<pre id="test"> -<script type="application/javascript"> - -/** Test for Bug 609794 **/ -var obj = Object.create(window); -is(Object.prototype.toString.call(obj.InstallTrigger), "[object InstallTriggerImpl]", "can get InstallTrigger through the prototype"); - -</script> -</pre> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/mochitest/test_bug687194.html b/toolkit/mozapps/webextensions/test/mochitest/test_bug687194.html deleted file mode 100644 index 8f99ea73a..000000000 --- a/toolkit/mozapps/webextensions/test/mochitest/test_bug687194.html +++ /dev/null @@ -1,133 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <title>Test for registering/unregistering chrome OOP</title> - <script type="application/javascript" - src="/tests/SimpleTest/SimpleTest.js"> - </script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> -</head> -<body> - - <script type="application/javascript;version=1.8"> - "use strict"; - - SimpleTest.waitForExplicitFinish(); - - const childFrameURL = - "data:text/html,<!DOCTYPE HTML><html><body></body></html>"; - - function childFrameScript() { - "use strict"; - - var ios = - Components.classes["@mozilla.org/network/io-service;1"] - .getService(Components.interfaces.nsIIOService); - let cr = - Components.classes["@mozilla.org/chrome/chrome-registry;1"] - .getService(Ci.nsIXULChromeRegistry); - addMessageListener("test687194:resolveChromeURI", function(message) { - let result; - let threw = false; - try { - let uri = ios.newURI(message.data.URI, null, null); - result = cr.convertChromeURL(uri).spec; - } catch (e) { - threw = true; - result = "EXCEPTION: " + e; - } - - message.target.sendAsyncMessage("test687194:resolveChromeURI:Answer", - { threw: threw, result: result }); - }); - } - - let test; - function* testStructure(mm) { - let lastResult; - - mm.addMessageListener("test687194:resolveChromeURI:Answer", function(msg) { - test.next(msg.data); - }); - - mm.sendAsyncMessage("test687194:resolveChromeURI", - { URI: "chrome://bug687194/content/e10sbug.js" }); - lastResult = yield; - is(lastResult.threw, true, "URI shouldn't resolve to begin with"); - - let { AddonManager } = SpecialPowers.Cu.import("resource://gre/modules/AddonManager.jsm", {}); - const INSTALL_URI = - "http://mochi.test:8888/tests/toolkit/mozapps/extensions/test/mochitest/file_bug687194.xpi" - AddonManager.getInstallForURL(INSTALL_URI, (install) => { - install = SpecialPowers.wrap(install); - install.addListener(SpecialPowers.wrapCallbackObject({ - onInstallEnded: function(install, addon) { - SimpleTest.executeSoon(() => test.next(addon)); - } - })); - install.install(); - }, "application/x-xpinstall"); - - let addon = SpecialPowers.wrap(yield); - - mm.sendAsyncMessage("test687194:resolveChromeURI", - { URI: "chrome://bug687194/content/e10sbug.js" }); - lastResult = yield; - is(lastResult.threw, false, "able to resolve after the installation"); - - let listener = SpecialPowers.wrapCallbackObject({ - onUninstalled: function(removedAddon) { - if (removedAddon.id === addon.id) { - AddonManager.removeAddonListener(listener); - SimpleTest.executeSoon(() => test.next()); - } - } - }); - AddonManager.addAddonListener(listener); - addon.uninstall(); - - yield; - - mm.sendAsyncMessage("test687194:resolveChromeURI", - { URI: "chrome://bug687194/content/e10sbug.js" }); - lastResult = yield; - is(lastResult.threw, true, "should have unregistered the URI"); - SimpleTest.finish(); - } - - function runTests() { - info("Browser prefs set."); - - let iframe = document.createElement("iframe"); - SpecialPowers.wrap(iframe).mozbrowser = true; - iframe.id = "iframe"; - iframe.src = childFrameURL; - - iframe.addEventListener("mozbrowserloadend", function() { - info("Got iframe load event."); - let mm = SpecialPowers.getBrowserFrameMessageManager(iframe); - mm.loadFrameScript("data:,(" + childFrameScript.toString() + ")();", - false); - - test = testStructure(mm); - test.next(); - }); - - document.body.appendChild(iframe); - } - - addEventListener("load", function() { - info("Got load event."); - - SpecialPowers.addPermission("browser", true, document); - SpecialPowers.pushPrefEnv({ - "set": [ - ["dom.ipc.browser_frames.oop_by_default", true], - ["dom.mozBrowserFramesEnabled", true], - ["browser.pagethumbnails.capturing_disabled", true] - ] - }, runTests); - }); - </script> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/mochitest/test_bug887098.html b/toolkit/mozapps/webextensions/test/mochitest/test_bug887098.html deleted file mode 100644 index 535799b27..000000000 --- a/toolkit/mozapps/webextensions/test/mochitest/test_bug887098.html +++ /dev/null @@ -1,52 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=887098 ---> -<head> - <meta charset="utf-8"> - <title>Test for Bug 887098</title> - <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> - <script type="application/javascript"> - - /** Test for Bug 887098 **/ - SimpleTest.waitForExplicitFinish(); - /* globals $,evalRef */ - - function loaded() { - var iwin = $('ifr').contentWindow; - var href = SpecialPowers.wrap(iwin).location.href; - if (/file_empty/.test(href)) { - window.evalRef = iwin.eval; - window.installTriggerRef = iwin.InstallTrigger; // Force lazy instantiation. - // about: is privileged, so we need to be privileged to load it. - SpecialPowers.wrap(iwin).location.href = 'about:'; - } else { - is(href, 'about:', "Successfully navigated to about:"); - try { - evalRef('InstallTrigger.install({URL: "chrome://global/skin/global.css"});'); - ok(false, "Should have thrown when trying to install restricted URI from InstallTrigger"); - } catch (e) { - // XXXgijs this test broke because of the switch to webidl. I'm told - // it has to do with compartments and the fact that we eval in "about:". - // Tracking in bug 1007671 - todo(/permission/.test(e), "We should throw a security exception. Got: " + e); - } - SimpleTest.finish(); - } - } - - </script> -</head> -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=887098">Mozilla Bug 887098</a> -<p id="display"></p> -<div id="content" style="display: none"> - -</div> -<iframe onload="loaded();" id="ifr" src="file_empty.html"></iframe> -<pre id="test"> -</pre> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/moz.build b/toolkit/mozapps/webextensions/test/moz.build deleted file mode 100644 index 716659198..000000000 --- a/toolkit/mozapps/webextensions/test/moz.build +++ /dev/null @@ -1,19 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -DIRS += ['browser'] - -BROWSER_CHROME_MANIFESTS += ['xpinstall/browser.ini'] -MOCHITEST_MANIFESTS += ['mochitest/mochitest.ini'] - -TESTING_JS_MODULES += [ - 'AddonManagerTesting.jsm', -] - -XPCSHELL_TESTS_MANIFESTS += [ - 'xpcshell/xpcshell-unpack.ini', - 'xpcshell/xpcshell.ini', -] diff --git a/toolkit/mozapps/webextensions/test/xpcshell/.eslintrc.js b/toolkit/mozapps/webextensions/test/xpcshell/.eslintrc.js deleted file mode 100644 index ba65517f9..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -module.exports = { // eslint-disable-line no-undef - "extends": [ - "../../../../../testing/xpcshell/xpcshell.eslintrc.js" - ] -}; diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/BootstrapMonitor.jsm b/toolkit/mozapps/webextensions/test/xpcshell/data/BootstrapMonitor.jsm deleted file mode 100644 index 7c1e4aa9d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/BootstrapMonitor.jsm +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index a229a653a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_change.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?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 deleted file mode 100644 index 588290968..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update1.rdf +++ /dev/null @@ -1,144 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <RDF:Description about="urn:mozilla:extension: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 deleted file mode 100644 index 5c3747f5f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update2.rdf +++ /dev/null @@ -1,144 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <RDF:Description about="urn:mozilla:extension: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 deleted file mode 100644 index d60708414..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/addon_update3.rdf +++ /dev/null @@ -1,144 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <RDF:Description about="urn:mozilla:extension: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 deleted file mode 100644 index 85a66fe55..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/app_update.xml +++ /dev/null @@ -1,62 +0,0 @@ -<?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 deleted file mode 100644 index 87011cd39..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/blocklist_update1.xml +++ /dev/null @@ -1,3 +0,0 @@ -<?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 deleted file mode 100644 index 867a34255..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/blocklist_update2.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?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 deleted file mode 100644 index df9276525..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/blocklistchange/manual_update.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?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 deleted file mode 100644 index 1f673ef2f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_block.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?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 deleted file mode 100644 index 88d22f281..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_empty.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?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 deleted file mode 100644 index daba6f4c1..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_start.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?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 deleted file mode 100644 index 232fd0d07..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/bug455906_warn.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?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 deleted file mode 100644 index 35d7bd5e5..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/corrupt.xpi +++ /dev/null @@ -1 +0,0 @@ -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 Binary files differdeleted file mode 100644 index 0c30989aa..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/corruptfile.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/empty.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/empty.xpi Binary files differdeleted file mode 100644 index 74ed2b817..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/empty.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/from_sources/bootstrap.js b/toolkit/mozapps/webextensions/test/xpcshell/data/from_sources/bootstrap.js deleted file mode 100644 index 1666f2972..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/from_sources/bootstrap.js +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index f02a3869c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/from_sources/install.rdf +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>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 deleted file mode 100644 index 75e252a46..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/pluginInfoURL_block.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?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 deleted file mode 100644 index f17f98b15..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad.txt +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index 0e3d415c4..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad.xml +++ /dev/null @@ -1,3 +0,0 @@ -<?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 deleted file mode 100644 index 55ad1c7d5..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/bad2.xml +++ /dev/null @@ -1,3 +0,0 @@ -<?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 deleted file mode 100644 index 42cb20bd0..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/empty.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?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 deleted file mode 100644 index e1da86fa5..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/good.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?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 deleted file mode 100644 index 8c9501478..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/missing.xml +++ /dev/null @@ -1,3 +0,0 @@ -<?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 Binary files differdeleted file mode 100644 index 51b00475a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/productaddons/unsigned.xpi +++ /dev/null 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 deleted file mode 100644 index 0cf01d319..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/bootstrap.js +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index 9d08c357c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>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 deleted file mode 100644 index 11686f61c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_1/test.txt +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index 718c82be4..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/bootstrap.js +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index 0a345dd92..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/install.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>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 deleted file mode 100644 index 11686f61c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/bootstrap_2/test.txt +++ /dev/null @@ -1 +0,0 @@ -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 Binary files differdeleted file mode 100644 index 9d6f0c708..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_badid.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 4496a90cf..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_broken.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index e61e3c721..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/hotfix_good.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 1682a7506..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_63_hash.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index cd67e25fc..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_63_plain.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index e4040a274..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_64_hash.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index ca453b9d5..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_64_plain.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 69579d2dc..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/long_65_hash.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 6e23eb214..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_badid.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 0ba0f30d1..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_broken.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 33101f63c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_signed.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 3146870d8..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/multi_unsigned.xpi +++ /dev/null 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 deleted file mode 100644 index 97ae60988..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_1/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>test@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 deleted file mode 100644 index 11686f61c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_1/test.txt +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index df2fd8081..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_2/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>test@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 deleted file mode 100644 index 11686f61c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/nonbootstrap_2/test.txt +++ /dev/null @@ -1 +0,0 @@ -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 Binary files differdeleted file mode 100644 index ec38fcc65..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/preliminary_bootstrap_2.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index fc2842399..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_1.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 327c8a187..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_2.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index efad21d1b..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_bootstrap_badid_2.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index d6ddbcec3..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_nonbootstrap_2.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 5898d83e4..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/signed_nonbootstrap_badid_2.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 9d50f0825..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/unsigned_bootstrap_2.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 6ba1efd72..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/signing_checks/unsigned_nonbootstrap_2.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/bootstrap.js b/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/bootstrap.js deleted file mode 100644 index 1666f2972..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/bootstrap.js +++ /dev/null @@ -1 +0,0 @@ -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 Binary files differdeleted file mode 100644 index 2fc2fd189..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_1.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index e7e50c8ea..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_1_badcert.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index a858cf74a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system1_2.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 911632e49..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_1.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 102a053bb..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_2.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 295e77611..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system2_3.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 954995619..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_1.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index dc8632aef..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_2.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 3f818172a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system3_3.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 1f70b1a75..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system4_1.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index fc636e97f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system5_1.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index ff620966d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_1_unpack.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index e474dbd59..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_2_notBootstrap.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 1ccde90c5..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system6_3_notMultiprocess.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 94d9e47d2..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_complete.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 28c8561c6..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_complete_2.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index daf55c0d4..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 75cacbbc8..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_2.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 2eb6b7fc9..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_also.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index fb588b3e0..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_defer_also_2.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 7a5eb265d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_ignore.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index dc6749355..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_delay_ignore_2.xpi +++ /dev/null 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 Binary files differdeleted file mode 100644 index 3c673ac2e..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/system_addons/system_failed_update.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository.xml b/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository.xml deleted file mode 100644 index 0bebca2c1..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository.xml +++ /dev/null @@ -1,820 +0,0 @@ -<?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><h1>Test Summary 2</h1><p>paragraph</p></summary> - <description>Test Description 2<br>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<br><ul><li>List item 1<li>List item 2</ul> </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 deleted file mode 100644 index f707f1217..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_cache.xml +++ /dev/null @@ -1,182 +0,0 @@ -<?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<br>Second line</summary> - <description><p>Repo Add-on 1 - Full Description &amp; some extra</p></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 deleted file mode 100644 index 003095727..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_ignore.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?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 deleted file mode 100644 index fec8b09ca..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_normal.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?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 deleted file mode 100644 index f99256b87..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_compatmode_strict.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?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 deleted file mode 100644 index 4cd5c1443..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_empty.xml +++ /dev/null @@ -1,3 +0,0 @@ -<?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 deleted file mode 100644 index d02fa0249..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_failed.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?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 deleted file mode 100644 index 8a6167969..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_AddonRepository_getAddonsByIDs.xml +++ /dev/null @@ -1,187 +0,0 @@ -<?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 deleted file mode 100644 index ab7cdef34..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_backgroundupdate.rdf +++ /dev/null @@ -1,70 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <RDF:Description about="urn:mozilla:extension: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 deleted file mode 100644 index 368a6ed53..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_metadata_filters_1.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?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 deleted file mode 100644 index 41df457b0..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_prefs_1.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?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 deleted file mode 100644 index 20035c6a2..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_blocklist_regexp_1.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?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 deleted file mode 100644 index d60d8ca3f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug299716.rdf +++ /dev/null @@ -1,181 +0,0 @@ -<?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 deleted file mode 100644 index 94a4ea450..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug299716_2.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <RDF:Description about="urn:mozilla:extension: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 deleted file mode 100644 index 2c453f756..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug324121.rdf +++ /dev/null @@ -1,91 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <RDF:Description about="urn:mozilla:extension: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 deleted file mode 100644 index 1767b4332..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug393285.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?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 deleted file mode 100644 index 94e12527f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug394300.rdf +++ /dev/null @@ -1,159 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <RDF:Description about="urn:mozilla:extension: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 deleted file mode 100644 index d797debbb..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug424262.xml +++ /dev/null @@ -1,185 +0,0 @@ -<?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 deleted file mode 100644 index f12ca1fa6..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug449027_app.xml +++ /dev/null @@ -1,333 +0,0 @@ -<?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 deleted file mode 100644 index ad8ec5ed9..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug449027_toolkit.xml +++ /dev/null @@ -1,208 +0,0 @@ -<?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 deleted file mode 100644 index 85f0da57c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug468528.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?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 deleted file mode 100644 index 5397e8a87..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_1.rdf +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>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 deleted file mode 100644 index b1dde7f7a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_2.rdf +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>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 deleted file mode 100644 index ae483434a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_3.rdf +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>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 deleted file mode 100644 index 97abacc5e..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_4.rdf +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>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 deleted file mode 100644 index bff1104a7..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/install_5.rdf +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>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 deleted file mode 100644 index e4ad91ae9..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_1.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <RDF:Description about="urn:mozilla:extension:test_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 deleted file mode 100644 index 10fcafd39..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_2.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <RDF:Description about="urn:mozilla:extension:test_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 deleted file mode 100644 index 684002462..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_3.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <RDF:Description about="urn:mozilla:extension:test_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 deleted file mode 100644 index 6e7116239..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_4.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <RDF:Description about="urn:mozilla:extension:test_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 deleted file mode 100644 index c926af934..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug470377/update_5.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <RDF:Description about="urn:mozilla:extension:test_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 deleted file mode 100644 index c4cc2fe37..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_1.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?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 deleted file mode 100644 index cc0a0c69d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_2.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?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 deleted file mode 100644 index 0261794f8..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_empty.xml +++ /dev/null @@ -1,4 +0,0 @@ -<?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 deleted file mode 100644 index d651f8799..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_outdated_1.xml +++ /dev/null @@ -1,13 +0,0 @@ -<?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 deleted file mode 100644 index 208444681..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug514327_3_outdated_2.xml +++ /dev/null @@ -1,13 +0,0 @@ -<?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 Binary files differdeleted file mode 100644 index 2dbcc0b50..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug526598_1.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug526598_2.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug526598_2.xpi Binary files differdeleted file mode 100644 index 86fc6baaa..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug526598_2.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug541420.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug541420.xpi Binary files differdeleted file mode 100644 index adb7be9ad..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug541420.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug542391.rdf b/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug542391.rdf deleted file mode 100644 index db82cf675..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug542391.rdf +++ /dev/null @@ -1,25 +0,0 @@ -<?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 deleted file mode 100644 index 736c10514..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug554133.xml +++ /dev/null @@ -1,292 +0,0 @@ -<?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 deleted file mode 100644 index f2511c0de..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug619730.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?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 deleted file mode 100644 index 9857dcb55..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_bug655254.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <RDF:Description about="urn:mozilla:extension: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 deleted file mode 100644 index c0d67d033..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_compatoverrides.xml +++ /dev/null @@ -1,228 +0,0 @@ -<?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 deleted file mode 100644 index f3341bdcf..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_corrupt.rdf +++ /dev/null @@ -1,44 +0,0 @@ -<?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 deleted file mode 100644 index a81c90bf0..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_complete/bootstrap.js +++ /dev/null @@ -1,24 +0,0 @@ -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 deleted file mode 100644 index 25ffd8565..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_defer/bootstrap.js +++ /dev/null @@ -1,34 +0,0 @@ -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 deleted file mode 100644 index 7693c9c2d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_update_ignore/bootstrap.js +++ /dev/null @@ -1,26 +0,0 @@ -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 deleted file mode 100644 index cf3defdc7..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_complete.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "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 deleted file mode 100644 index 8af39cb0e..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_complete.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?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 deleted file mode 100644 index 2fcab10b5..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_defer.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "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 deleted file mode 100644 index d44d4880f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_defer.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?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 deleted file mode 100644 index b7f48149d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_ignore.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "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 deleted file mode 100644 index 866884f8d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_delay_updates_ignore.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?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 deleted file mode 100644 index 364b3bba1..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_dictionary.rdf +++ /dev/null @@ -1,65 +0,0 @@ -<?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 deleted file mode 100644 index 01682d3b7..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/bootstrap.js +++ /dev/null @@ -1,21 +0,0 @@ -Components.utils.import("resource://gre/modules/Services.jsm"); - -function install(data, reason) { - Services.prefs.setIntPref("bootstraptest.installed_version", 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 deleted file mode 100644 index ebe547ccc..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/install.rdf +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>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 deleted file mode 100644 index 051aef85a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/subdir/dummy.txt +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index 9eddc4493..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_distribution2_2/subdir/subdir2/dummy2.txt +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index d535d2c3f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist.xml +++ /dev/null @@ -1,304 +0,0 @@ -<?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 deleted file mode 100644 index 0ad8f6819..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist2.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?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 deleted file mode 100644 index f64676355..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist_AllOS.xml +++ /dev/null @@ -1,783 +0,0 @@ -<?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 deleted file mode 100644 index 248868a2e..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_gfxBlacklist_OSVersion.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?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 deleted file mode 100644 index 016726021..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_1.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?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 deleted file mode 100644 index 35a2befee..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_2.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?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 deleted file mode 100644 index 7180da143..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_hotfix_3.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?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 deleted file mode 100644 index fe82334fa..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_install.rdf +++ /dev/null @@ -1,63 +0,0 @@ -<?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 deleted file mode 100644 index 33f14a2fd..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_install.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?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 deleted file mode 100644 index d1dc992d5..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_migrate.rdf +++ /dev/null @@ -1,125 +0,0 @@ -<?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 deleted file mode 100644 index a3bf4f8ae..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_migrate4.rdf +++ /dev/null @@ -1,46 +0,0 @@ -<?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 deleted file mode 100644 index 2773c7f98..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_no_update.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "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 deleted file mode 100644 index 699257f87..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/ancient.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?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 deleted file mode 100644 index 8cbfb5d6a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/new.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?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 deleted file mode 100644 index 75bd6e934..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_overrideblocklist/old.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?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 deleted file mode 100644 index d3564aebd..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_pluginBlocklistCtp.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?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 deleted file mode 100644 index 7cd8496b3..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_pluginBlocklistCtpUndo.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?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 deleted file mode 100644 index 1666f2972..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_proxy/bootstrap.js +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index a1d18470c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_softblocked1.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?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 deleted file mode 100644 index 949288e3f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_sourceURI.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?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 deleted file mode 100644 index 1666f2972..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_temporary/bootstrap.js +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index 027a9b233..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_update.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "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 deleted file mode 100644 index 4d4640f60..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_update.rdf +++ /dev/null @@ -1,270 +0,0 @@ -<?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 deleted file mode 100644 index 62928815b..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_update.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?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 deleted file mode 100644 index f28a3f26d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_update_multi.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?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 deleted file mode 100644 index 811e50158..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecheck.json +++ /dev/null @@ -1,327 +0,0 @@ -{ - "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 deleted file mode 100644 index c5d97ada0..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecheck.rdf +++ /dev/null @@ -1,419 +0,0 @@ -<?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 deleted file mode 100644 index ec6e88ec4..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_ignore.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?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 deleted file mode 100644 index 2ef88860e..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_normal.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?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 deleted file mode 100644 index 2f72c181d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_updatecompatmode_strict.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?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 deleted file mode 100644 index c13928520..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/test_updateid.rdf +++ /dev/null @@ -1,26 +0,0 @@ -<?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 Binary files differdeleted file mode 100644 index 51b00475a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/unsigned.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpcshell/data/webext-implicit-id.xpi b/toolkit/mozapps/webextensions/test/xpcshell/data/webext-implicit-id.xpi Binary files differdeleted file mode 100644 index 6b4abaa69..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/data/webext-implicit-id.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpcshell/head_addons.js b/toolkit/mozapps/webextensions/test/xpcshell/head_addons.js deleted file mode 100644 index 960caceeb..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/head_addons.js +++ /dev/null @@ -1,1345 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -var AM_Cc = Components.classes; -var AM_Ci = Components.interfaces; -var AM_Cu = Components.utils; - -AM_Cu.importGlobalProperties(["TextEncoder"]); - -const CERTDB_CONTRACTID = "@mozilla.org/security/x509certdb;1"; -const CERTDB_CID = Components.ID("{fb0bbc5c-452e-4783-b32c-80124693d871}"); - -const PREF_EM_CHECK_UPDATE_SECURITY = "extensions.checkUpdateSecurity"; -const PREF_EM_STRICT_COMPATIBILITY = "extensions.strictCompatibility"; -const PREF_EM_MIN_COMPAT_APP_VERSION = "extensions.minCompatibleAppVersion"; -const PREF_EM_MIN_COMPAT_PLATFORM_VERSION = "extensions.minCompatiblePlatformVersion"; -const PREF_GETADDONS_BYIDS = "extensions.getAddons.get.url"; -const PREF_GETADDONS_BYIDS_PERFORMANCE = "extensions.getAddons.getWithPerformance.url"; -const PREF_XPI_SIGNATURES_REQUIRED = "xpinstall.signatures.required"; - -// Forcibly end the test if it runs longer than 15 minutes -const TIMEOUT_MS = 900000; - -// Maximum error in file modification times. Some file systems don't store -// modification times exactly. As long as we are closer than this then it -// still passes. -const MAX_TIME_DIFFERENCE = 3000; - -// Time to reset file modified time relative to Date.now() so we can test that -// times are modified (10 hours old). -const MAKE_FILE_OLD_DIFFERENCE = 10 * 3600 * 1000; - -Components.utils.import("resource://gre/modules/addons/AddonRepository.jsm"); -Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); -Components.utils.import("resource://gre/modules/FileUtils.jsm"); -Components.utils.import("resource://gre/modules/Services.jsm"); -Components.utils.import("resource://gre/modules/NetUtil.jsm"); -Components.utils.import("resource://gre/modules/Promise.jsm"); -Components.utils.import("resource://gre/modules/Task.jsm"); -const { OS } = Components.utils.import("resource://gre/modules/osfile.jsm", {}); -Components.utils.import("resource://gre/modules/AsyncShutdown.jsm"); - -Components.utils.import("resource://testing-common/AddonTestUtils.jsm"); - -XPCOMUtils.defineLazyModuleGetter(this, "Extension", - "resource://gre/modules/Extension.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "ExtensionTestUtils", - "resource://testing-common/ExtensionXPCShellUtils.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "HttpServer", - "resource://testing-common/httpd.js"); -XPCOMUtils.defineLazyModuleGetter(this, "MockAsyncShutdown", - "resource://testing-common/AddonTestUtils.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "MockRegistrar", - "resource://testing-common/MockRegistrar.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "MockRegistry", - "resource://testing-common/MockRegistry.jsm"); - -const { - awaitPromise, - createAppInfo, - createInstallRDF, - createTempWebExtensionFile, - createUpdateRDF, - getFileForAddon, - manuallyInstall, - manuallyUninstall, - promiseAddonByID, - promiseAddonEvent, - promiseAddonsByIDs, - promiseAddonsWithOperationsByTypes, - promiseCompleteAllInstalls, - promiseConsoleOutput, - promiseFindAddonUpdates, - promiseInstallAllFiles, - promiseInstallFile, - promiseRestartManager, - promiseSetExtensionModifiedTime, - promiseShutdownManager, - promiseStartupManager, - promiseWriteProxyFileToDir, - registerDirectory, - setExtensionModifiedTime, - writeFilesToZip -} = AddonTestUtils; - -// WebExtension wrapper for ease of testing -ExtensionTestUtils.init(this); - -AddonTestUtils.init(this); -AddonTestUtils.overrideCertDB(); - -Object.defineProperty(this, "gAppInfo", { - get() { - return AddonTestUtils.appInfo; - }, -}); - -Object.defineProperty(this, "gExtensionsINI", { - get() { - return AddonTestUtils.extensionsINI.clone(); - }, -}); - -Object.defineProperty(this, "gInternalManager", { - get() { - return AddonTestUtils.addonIntegrationService.QueryInterface(AM_Ci.nsITimerCallback); - }, -}); - -Object.defineProperty(this, "gProfD", { - get() { - return AddonTestUtils.profileDir.clone(); - }, -}); - -Object.defineProperty(this, "gTmpD", { - get() { - return AddonTestUtils.tempDir.clone(); - }, -}); - -Object.defineProperty(this, "gUseRealCertChecks", { - get() { - return AddonTestUtils.useRealCertChecks; - }, - set(val) { - return AddonTestUtils.useRealCertChecks = val; - }, -}); - -Object.defineProperty(this, "TEST_UNPACKED", { - get() { - return AddonTestUtils.testUnpacked; - }, - set(val) { - return AddonTestUtils.testUnpacked = val; - }, -}); - -// We need some internal bits of AddonManager -var AMscope = Components.utils.import("resource://gre/modules/AddonManager.jsm", {}); -var { AddonManager, AddonManagerInternal, AddonManagerPrivate } = AMscope; - -var gPort = null; -var gUrlToFileMap = {}; - -// Map resource://xpcshell-data/ to the data directory -var resHandler = Services.io.getProtocolHandler("resource") - .QueryInterface(AM_Ci.nsISubstitutingProtocolHandler); -// Allow non-existent files because of bug 1207735 -var dataURI = NetUtil.newURI(do_get_file("data", true)); -resHandler.setSubstitution("xpcshell-data", dataURI); - -function isManifestRegistered(file) { - let manifests = Components.manager.getManifestLocations(); - for (let i = 0; i < manifests.length; i++) { - let manifest = manifests.queryElementAt(i, AM_Ci.nsIURI); - - // manifest is the url to the manifest file either in an XPI or a directory. - // We want the location of the XPI or directory itself. - if (manifest instanceof AM_Ci.nsIJARURI) { - manifest = manifest.JARFile.QueryInterface(AM_Ci.nsIFileURL).file; - } - else if (manifest instanceof AM_Ci.nsIFileURL) { - manifest = manifest.file.parent; - } - else { - continue; - } - - if (manifest.equals(file)) - return true; - } - return false; -} - -// Listens to messages from bootstrap.js telling us what add-ons were started -// and stopped etc. and performs some sanity checks that only installed add-ons -// are started etc. -this.BootstrapMonitor = { - inited: false, - - // Contain the current state of add-ons in the system - installed: new Map(), - started: new Map(), - - // Contain the last state of shutdown and uninstall calls for an add-on - stopped: new Map(), - uninstalled: new Map(), - - startupPromises: [], - installPromises: [], - - init() { - this.inited = true; - Services.obs.addObserver(this, "bootstrapmonitor-event", false); - }, - - shutdownCheck() { - if (!this.inited) - return; - - do_check_eq(this.started.size, 0); - }, - - clear(id) { - this.installed.delete(id); - this.started.delete(id); - this.stopped.delete(id); - this.uninstalled.delete(id); - }, - - promiseAddonStartup(id) { - return new Promise(resolve => { - this.startupPromises.push(resolve); - }); - }, - - promiseAddonInstall(id) { - return new Promise(resolve => { - this.installPromises.push(resolve); - }); - }, - - checkMatches(cached, current) { - do_check_neq(cached, undefined); - do_check_eq(current.data.version, cached.data.version); - do_check_eq(current.data.installPath, cached.data.installPath); - do_check_eq(current.data.resourceURI, cached.data.resourceURI); - }, - - checkAddonStarted(id, version = undefined) { - let started = this.started.get(id); - do_check_neq(started, undefined); - if (version != undefined) - do_check_eq(started.data.version, version); - - // Chrome should be registered by now - let installPath = new FileUtils.File(started.data.installPath); - let isRegistered = isManifestRegistered(installPath); - do_check_true(isRegistered); - }, - - checkAddonNotStarted(id) { - do_check_false(this.started.has(id)); - }, - - checkAddonInstalled(id, version = undefined) { - const installed = this.installed.get(id); - notEqual(installed, undefined); - if (version !== undefined) { - equal(installed.data.version, version); - } - return installed; - }, - - checkAddonNotInstalled(id) { - do_check_false(this.installed.has(id)); - }, - - observe(subject, topic, data) { - let info = JSON.parse(data); - let id = info.data.id; - let installPath = new FileUtils.File(info.data.installPath); - - if (subject && subject.wrappedJSObject) { - // NOTE: in some of the new tests, we need to received the real objects instead of - // their JSON representations, but most of the current tests expect intallPath - // and resourceURI to have been converted to strings. - info.data = Object.assign({}, subject.wrappedJSObject.data, { - installPath: info.data.installPath, - resourceURI: info.data.resourceURI, - }); - } - - // If this is the install event the add-ons shouldn't already be installed - if (info.event == "install") { - this.checkAddonNotInstalled(id); - - this.installed.set(id, info); - - for (let resolve of this.installPromises) - resolve(); - this.installPromises = []; - } - else { - this.checkMatches(this.installed.get(id), info); - } - - // If this is the shutdown event than the add-on should already be started - if (info.event == "shutdown") { - this.checkMatches(this.started.get(id), info); - - this.started.delete(id); - this.stopped.set(id, info); - - // Chrome should still be registered at this point - let isRegistered = isManifestRegistered(installPath); - do_check_true(isRegistered); - - // XPIProvider doesn't bother unregistering chrome on app shutdown but - // since we simulate restarts we must do so manually to keep the registry - // consistent. - if (info.reason == 2 /* APP_SHUTDOWN */) - Components.manager.removeBootstrappedManifestLocation(installPath); - } - else { - this.checkAddonNotStarted(id); - } - - if (info.event == "uninstall") { - // Chrome should be unregistered at this point - let isRegistered = isManifestRegistered(installPath); - do_check_false(isRegistered); - - this.installed.delete(id); - this.uninstalled.set(id, info) - } - else if (info.event == "startup") { - this.started.set(id, info); - - // Chrome should be registered at this point - let isRegistered = isManifestRegistered(installPath); - do_check_true(isRegistered); - - for (let resolve of this.startupPromises) - resolve(); - this.startupPromises = []; - } - } -} - -AddonTestUtils.on("addon-manager-shutdown", () => BootstrapMonitor.shutdownCheck()); - -function isNightlyChannel() { - var channel = "default"; - try { - channel = Services.prefs.getCharPref("app.update.channel"); - } - catch (e) { } - - return channel != "aurora" && channel != "beta" && channel != "release" && channel != "esr"; -} - -/** - * Tests that an add-on does appear in the crash report annotations, if - * crash reporting is enabled. The test will fail if the add-on is not in the - * annotation. - * @param aId - * The ID of the add-on - * @param aVersion - * The version of the add-on - */ -function do_check_in_crash_annotation(aId, aVersion) { - if (!("nsICrashReporter" in AM_Ci)) - return; - - if (!("Add-ons" in gAppInfo.annotations)) { - do_check_false(true); - return; - } - - let addons = gAppInfo.annotations["Add-ons"].split(","); - do_check_false(addons.indexOf(encodeURIComponent(aId) + ":" + - encodeURIComponent(aVersion)) < 0); -} - -/** - * Tests that an add-on does not appear in the crash report annotations, if - * crash reporting is enabled. The test will fail if the add-on is in the - * annotation. - * @param aId - * The ID of the add-on - * @param aVersion - * The version of the add-on - */ -function do_check_not_in_crash_annotation(aId, aVersion) { - if (!("nsICrashReporter" in AM_Ci)) - return; - - if (!("Add-ons" in gAppInfo.annotations)) { - do_check_true(true); - return; - } - - let addons = gAppInfo.annotations["Add-ons"].split(","); - do_check_true(addons.indexOf(encodeURIComponent(aId) + ":" + - encodeURIComponent(aVersion)) < 0); -} - -/** - * Returns a testcase xpi - * - * @param aName - * The name of the testcase (without extension) - * @return an nsIFile pointing to the testcase xpi - */ -function do_get_addon(aName) { - return do_get_file("addons/" + aName + ".xpi"); -} - -function do_get_addon_hash(aName, aAlgorithm) { - let file = do_get_addon(aName); - return do_get_file_hash(file); -} - -function do_get_file_hash(aFile, aAlgorithm) { - if (!aAlgorithm) - aAlgorithm = "sha1"; - - let crypto = AM_Cc["@mozilla.org/security/hash;1"]. - createInstance(AM_Ci.nsICryptoHash); - crypto.initWithString(aAlgorithm); - let fis = AM_Cc["@mozilla.org/network/file-input-stream;1"]. - createInstance(AM_Ci.nsIFileInputStream); - fis.init(aFile, -1, -1, false); - crypto.updateFromStream(fis, aFile.fileSize); - - // return the two-digit hexadecimal code for a byte - let toHexString = charCode => ("0" + charCode.toString(16)).slice(-2); - - let binary = crypto.finish(false); - let hash = Array.from(binary, c => toHexString(c.charCodeAt(0))); - return aAlgorithm + ":" + hash.join(""); -} - -/** - * Returns an extension uri spec - * - * @param aProfileDir - * The extension install directory - * @return a uri spec pointing to the root of the extension - */ -function do_get_addon_root_uri(aProfileDir, aId) { - let path = aProfileDir.clone(); - path.append(aId); - if (!path.exists()) { - path.leafName += ".xpi"; - return "jar:" + Services.io.newFileURI(path).spec + "!/"; - } - return Services.io.newFileURI(path).spec; -} - -function do_get_expected_addon_name(aId) { - if (TEST_UNPACKED) - return aId; - return aId + ".xpi"; -} - -/** - * Check that an array of actual add-ons is the same as an array of - * expected add-ons. - * - * @param aActualAddons - * The array of actual add-ons to check. - * @param aExpectedAddons - * The array of expected add-ons to check against. - * @param aProperties - * An array of properties to check. - */ -function do_check_addons(aActualAddons, aExpectedAddons, aProperties) { - do_check_neq(aActualAddons, null); - do_check_eq(aActualAddons.length, aExpectedAddons.length); - for (let i = 0; i < aActualAddons.length; i++) - do_check_addon(aActualAddons[i], aExpectedAddons[i], aProperties); -} - -/** - * Check that the actual add-on is the same as the expected add-on. - * - * @param aActualAddon - * The actual add-on to check. - * @param aExpectedAddon - * The expected add-on to check against. - * @param aProperties - * An array of properties to check. - */ -function do_check_addon(aActualAddon, aExpectedAddon, aProperties) { - do_check_neq(aActualAddon, null); - - aProperties.forEach(function(aProperty) { - let actualValue = aActualAddon[aProperty]; - let expectedValue = aExpectedAddon[aProperty]; - - // Check that all undefined expected properties are null on actual add-on - if (!(aProperty in aExpectedAddon)) { - if (actualValue !== undefined && actualValue !== null) { - do_throw("Unexpected defined/non-null property for add-on " + - aExpectedAddon.id + " (addon[" + aProperty + "] = " + - actualValue.toSource() + ")"); - } - - return; - } - else if (expectedValue && !actualValue) { - do_throw("Missing property for add-on " + aExpectedAddon.id + - ": expected addon[" + aProperty + "] = " + expectedValue); - return; - } - - switch (aProperty) { - case "creator": - do_check_author(actualValue, expectedValue); - break; - - case "developers": - case "translators": - case "contributors": - do_check_eq(actualValue.length, expectedValue.length); - for (let i = 0; i < actualValue.length; i++) - do_check_author(actualValue[i], expectedValue[i]); - break; - - case "screenshots": - do_check_eq(actualValue.length, expectedValue.length); - for (let i = 0; i < actualValue.length; i++) - do_check_screenshot(actualValue[i], expectedValue[i]); - break; - - case "sourceURI": - do_check_eq(actualValue.spec, expectedValue); - break; - - case "updateDate": - do_check_eq(actualValue.getTime(), expectedValue.getTime()); - break; - - case "compatibilityOverrides": - do_check_eq(actualValue.length, expectedValue.length); - for (let i = 0; i < actualValue.length; i++) - do_check_compatibilityoverride(actualValue[i], expectedValue[i]); - break; - - case "icons": - do_check_icons(actualValue, expectedValue); - break; - - default: - if (remove_port(actualValue) !== remove_port(expectedValue)) - do_throw("Failed for " + aProperty + " for add-on " + aExpectedAddon.id + - " (" + actualValue + " === " + expectedValue + ")"); - } - }); -} - -/** - * Check that the actual author is the same as the expected author. - * - * @param aActual - * The actual author to check. - * @param aExpected - * The expected author to check against. - */ -function do_check_author(aActual, aExpected) { - do_check_eq(aActual.toString(), aExpected.name); - do_check_eq(aActual.name, aExpected.name); - do_check_eq(aActual.url, aExpected.url); -} - -/** - * Check that the actual screenshot is the same as the expected screenshot. - * - * @param aActual - * The actual screenshot to check. - * @param aExpected - * The expected screenshot to check against. - */ -function do_check_screenshot(aActual, aExpected) { - do_check_eq(aActual.toString(), aExpected.url); - do_check_eq(aActual.url, aExpected.url); - do_check_eq(aActual.width, aExpected.width); - do_check_eq(aActual.height, aExpected.height); - do_check_eq(aActual.thumbnailURL, aExpected.thumbnailURL); - do_check_eq(aActual.thumbnailWidth, aExpected.thumbnailWidth); - do_check_eq(aActual.thumbnailHeight, aExpected.thumbnailHeight); - do_check_eq(aActual.caption, aExpected.caption); -} - -/** - * Check that the actual compatibility override is the same as the expected - * compatibility override. - * - * @param aAction - * The actual compatibility override to check. - * @param aExpected - * The expected compatibility override to check against. - */ -function do_check_compatibilityoverride(aActual, aExpected) { - do_check_eq(aActual.type, aExpected.type); - do_check_eq(aActual.minVersion, aExpected.minVersion); - do_check_eq(aActual.maxVersion, aExpected.maxVersion); - do_check_eq(aActual.appID, aExpected.appID); - do_check_eq(aActual.appMinVersion, aExpected.appMinVersion); - do_check_eq(aActual.appMaxVersion, aExpected.appMaxVersion); -} - -function do_check_icons(aActual, aExpected) { - for (var size in aExpected) { - do_check_eq(remove_port(aActual[size]), remove_port(aExpected[size])); - } -} - -function startupManager(aAppChanged) { - promiseStartupManager(aAppChanged); -} - -/** - * Restarts the add-on manager as if the host application was restarted. - * - * @param aNewVersion - * An optional new version to use for the application. Passing this - * will change nsIXULAppInfo.version and make the startup appear as if - * the application version has changed. - */ -function restartManager(aNewVersion) { - awaitPromise(promiseRestartManager(aNewVersion)); -} - -function shutdownManager() { - awaitPromise(promiseShutdownManager()); -} - -function isItemMarkedMPIncompatible(aId) { - return AddonTestUtils.addonsList.isMultiprocessIncompatible(aId); -} - -function isThemeInAddonsList(aDir, aId) { - return AddonTestUtils.addonsList.hasTheme(aDir, aId); -} - -function isExtensionInAddonsList(aDir, aId) { - return AddonTestUtils.addonsList.hasExtension(aDir, aId); -} - -function check_startup_changes(aType, aIds) { - var ids = aIds.slice(0); - ids.sort(); - var changes = AddonManager.getStartupChanges(aType); - changes = changes.filter(aEl => /@tests.mozilla.org$/.test(aEl)); - changes.sort(); - - do_check_eq(JSON.stringify(ids), JSON.stringify(changes)); -} - -/** - * Writes an install.rdf manifest into a directory using the properties passed - * in a JS object. The objects should contain a property for each property to - * appear in the RDF. The object may contain an array of objects with id, - * minVersion and maxVersion in the targetApplications property to give target - * application compatibility. - * - * @param aData - * The object holding data about the add-on - * @param aDir - * The directory to add the install.rdf to - * @param aId - * An optional string to override the default installation aId - * @param aExtraFile - * An optional dummy file to create in the directory - * @return An nsIFile for the directory in which the add-on is installed. - */ -function writeInstallRDFToDir(aData, aDir, aId = aData.id, aExtraFile = null) { - let files = { - "install.rdf": AddonTestUtils.createInstallRDF(aData), - }; - if (aExtraFile) - files[aExtraFile] = ""; - - let dir = aDir.clone(); - dir.append(aId); - - awaitPromise(AddonTestUtils.promiseWriteFilesToDir(dir.path, files)); - return dir; -} - -/** - * Writes an install.rdf manifest into a packed extension using the properties passed - * in a JS object. The objects should contain a property for each property to - * appear in the RDF. The object may contain an array of objects with id, - * minVersion and maxVersion in the targetApplications property to give target - * application compatibility. - * - * @param aData - * The object holding data about the add-on - * @param aDir - * The install directory to add the extension to - * @param aId - * An optional string to override the default installation aId - * @param aExtraFile - * An optional dummy file to create in the extension - * @return A file pointing to where the extension was installed - */ -function writeInstallRDFToXPI(aData, aDir, aId = aData.id, aExtraFile = null) { - let files = { - "install.rdf": AddonTestUtils.createInstallRDF(aData), - }; - if (aExtraFile) - files[aExtraFile] = ""; - - if (!aDir.exists()) - aDir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY); - - var file = aDir.clone(); - file.append(`${aId}.xpi`); - - AddonTestUtils.writeFilesToZip(file.path, files); - - return file; -} - -/** - * Writes an install.rdf manifest into an extension using the properties passed - * in a JS object. The objects should contain a property for each property to - * appear in the RDF. The object may contain an array of objects with id, - * minVersion and maxVersion in the targetApplications property to give target - * application compatibility. - * - * @param aData - * The object holding data about the add-on - * @param aDir - * The install directory to add the extension to - * @param aId - * An optional string to override the default installation aId - * @param aExtraFile - * An optional dummy file to create in the extension - * @return A file pointing to where the extension was installed - */ -function writeInstallRDFForExtension(aData, aDir, aId, aExtraFile) { - if (TEST_UNPACKED) { - return writeInstallRDFToDir(aData, aDir, aId, aExtraFile); - } - return writeInstallRDFToXPI(aData, aDir, aId, aExtraFile); -} - -/** - * Writes a manifest.json manifest into an extension using the properties passed - * in a JS object. - * - * @param aManifest - * The data to write - * @param aDir - * The install directory to add the extension to - * @param aId - * An optional string to override the default installation aId - * @return A file pointing to where the extension was installed - */ -function promiseWriteWebManifestForExtension(aData, aDir, aId = aData.applications.gecko.id) { - let files = { - "manifest.json": JSON.stringify(aData), - } - return AddonTestUtils.promiseWriteFilesToExtension(aDir.path, aId, files); -} - -/** - * Creates an XPI file for some manifest data in the temporary directory and - * returns the nsIFile for it. The file will be deleted when the test completes. - * - * @param aData - * The object holding data about the add-on - * @return A file pointing to the created XPI file - */ -function createTempXPIFile(aData, aExtraFile) { - let files = { - "install.rdf": aData, - }; - if (typeof aExtraFile == "object") - Object.assign(files, aExtraFile); - else if (aExtraFile) - files[aExtraFile] = ""; - - return AddonTestUtils.createTempXPIFile(files); -} - -var gExpectedEvents = {}; -var gExpectedInstalls = []; -var gNext = null; - -function getExpectedEvent(aId) { - if (!(aId in gExpectedEvents)) - do_throw("Wasn't expecting events for " + aId); - if (gExpectedEvents[aId].length == 0) - do_throw("Too many events for " + aId); - let event = gExpectedEvents[aId].shift(); - if (event instanceof Array) - return event; - return [event, true]; -} - -function getExpectedInstall(aAddon) { - if (gExpectedInstalls instanceof Array) - return gExpectedInstalls.shift(); - if (!aAddon || !aAddon.id) - return gExpectedInstalls["NO_ID"].shift(); - let id = aAddon.id; - if (!(id in gExpectedInstalls) || !(gExpectedInstalls[id] instanceof Array)) - do_throw("Wasn't expecting events for " + id); - if (gExpectedInstalls[id].length == 0) - do_throw("Too many events for " + id); - return gExpectedInstalls[id].shift(); -} - -const AddonListener = { - onPropertyChanged: function(aAddon, aProperties) { - do_print(`Got onPropertyChanged event for ${aAddon.id}`); - let [event, properties] = getExpectedEvent(aAddon.id); - do_check_eq("onPropertyChanged", event); - do_check_eq(aProperties.length, properties.length); - properties.forEach(function(aProperty) { - // Only test that the expected properties are listed, having additional - // properties listed is not necessary a problem - if (aProperties.indexOf(aProperty) == -1) - do_throw("Did not see property change for " + aProperty); - }); - return check_test_completed(arguments); - }, - - onEnabling: function(aAddon, aRequiresRestart) { - do_print(`Got onEnabling event for ${aAddon.id}`); - let [event, expectedRestart] = getExpectedEvent(aAddon.id); - do_check_eq("onEnabling", event); - do_check_eq(aRequiresRestart, expectedRestart); - if (expectedRestart) - do_check_true(hasFlag(aAddon.pendingOperations, AddonManager.PENDING_ENABLE)); - do_check_false(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_ENABLE)); - return check_test_completed(arguments); - }, - - onEnabled: function(aAddon) { - do_print(`Got onEnabled event for ${aAddon.id}`); - let [event, expectedRestart] = getExpectedEvent(aAddon.id); - do_check_eq("onEnabled", event); - do_check_false(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_ENABLE)); - return check_test_completed(arguments); - }, - - onDisabling: function(aAddon, aRequiresRestart) { - do_print(`Got onDisabling event for ${aAddon.id}`); - let [event, expectedRestart] = getExpectedEvent(aAddon.id); - do_check_eq("onDisabling", event); - do_check_eq(aRequiresRestart, expectedRestart); - if (expectedRestart) - do_check_true(hasFlag(aAddon.pendingOperations, AddonManager.PENDING_DISABLE)); - do_check_false(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_DISABLE)); - return check_test_completed(arguments); - }, - - onDisabled: function(aAddon) { - do_print(`Got onDisabled event for ${aAddon.id}`); - let [event, expectedRestart] = getExpectedEvent(aAddon.id); - do_check_eq("onDisabled", event); - do_check_false(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_DISABLE)); - return check_test_completed(arguments); - }, - - onInstalling: function(aAddon, aRequiresRestart) { - do_print(`Got onInstalling event for ${aAddon.id}`); - let [event, expectedRestart] = getExpectedEvent(aAddon.id); - do_check_eq("onInstalling", event); - do_check_eq(aRequiresRestart, expectedRestart); - if (expectedRestart) - do_check_true(hasFlag(aAddon.pendingOperations, AddonManager.PENDING_INSTALL)); - return check_test_completed(arguments); - }, - - onInstalled: function(aAddon) { - do_print(`Got onInstalled event for ${aAddon.id}`); - let [event, expectedRestart] = getExpectedEvent(aAddon.id); - do_check_eq("onInstalled", event); - return check_test_completed(arguments); - }, - - onUninstalling: function(aAddon, aRequiresRestart) { - do_print(`Got onUninstalling event for ${aAddon.id}`); - let [event, expectedRestart] = getExpectedEvent(aAddon.id); - do_check_eq("onUninstalling", event); - do_check_eq(aRequiresRestart, expectedRestart); - if (expectedRestart) - do_check_true(hasFlag(aAddon.pendingOperations, AddonManager.PENDING_UNINSTALL)); - return check_test_completed(arguments); - }, - - onUninstalled: function(aAddon) { - do_print(`Got onUninstalled event for ${aAddon.id}`); - let [event, expectedRestart] = getExpectedEvent(aAddon.id); - do_check_eq("onUninstalled", event); - return check_test_completed(arguments); - }, - - onOperationCancelled: function(aAddon) { - do_print(`Got onOperationCancelled event for ${aAddon.id}`); - let [event, expectedRestart] = getExpectedEvent(aAddon.id); - do_check_eq("onOperationCancelled", event); - return check_test_completed(arguments); - } -}; - -const InstallListener = { - onNewInstall: function(install) { - if (install.state != AddonManager.STATE_DOWNLOADED && - install.state != AddonManager.STATE_DOWNLOAD_FAILED && - install.state != AddonManager.STATE_AVAILABLE) - do_throw("Bad install state " + install.state); - if (install.state != AddonManager.STATE_DOWNLOAD_FAILED) - do_check_eq(install.error, 0); - else - do_check_neq(install.error, 0); - do_check_eq("onNewInstall", getExpectedInstall()); - return check_test_completed(arguments); - }, - - onDownloadStarted: function(install) { - do_check_eq(install.state, AddonManager.STATE_DOWNLOADING); - do_check_eq(install.error, 0); - do_check_eq("onDownloadStarted", getExpectedInstall()); - return check_test_completed(arguments); - }, - - onDownloadEnded: function(install) { - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_eq(install.error, 0); - do_check_eq("onDownloadEnded", getExpectedInstall()); - return check_test_completed(arguments); - }, - - onDownloadFailed: function(install) { - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq("onDownloadFailed", getExpectedInstall()); - return check_test_completed(arguments); - }, - - onDownloadCancelled: function(install) { - do_check_eq(install.state, AddonManager.STATE_CANCELLED); - do_check_eq(install.error, 0); - do_check_eq("onDownloadCancelled", getExpectedInstall()); - return check_test_completed(arguments); - }, - - onInstallStarted: function(install) { - do_check_eq(install.state, AddonManager.STATE_INSTALLING); - do_check_eq(install.error, 0); - do_check_eq("onInstallStarted", getExpectedInstall(install.addon)); - return check_test_completed(arguments); - }, - - onInstallEnded: function(install, newAddon) { - do_check_eq(install.state, AddonManager.STATE_INSTALLED); - do_check_eq(install.error, 0); - do_check_eq("onInstallEnded", getExpectedInstall(install.addon)); - return check_test_completed(arguments); - }, - - onInstallFailed: function(install) { - do_check_eq(install.state, AddonManager.STATE_INSTALL_FAILED); - do_check_eq("onInstallFailed", getExpectedInstall(install.addon)); - return check_test_completed(arguments); - }, - - onInstallCancelled: function(install) { - // If the install was cancelled by a listener returning false from - // onInstallStarted, then the state will revert to STATE_DOWNLOADED. - let possibleStates = [AddonManager.STATE_CANCELLED, - AddonManager.STATE_DOWNLOADED]; - do_check_true(possibleStates.indexOf(install.state) != -1); - do_check_eq(install.error, 0); - do_check_eq("onInstallCancelled", getExpectedInstall(install.addon)); - return check_test_completed(arguments); - }, - - onExternalInstall: function(aAddon, existingAddon, aRequiresRestart) { - do_check_eq("onExternalInstall", getExpectedInstall(aAddon)); - do_check_false(aRequiresRestart); - return check_test_completed(arguments); - } -}; - -function hasFlag(aBits, aFlag) { - return (aBits & aFlag) != 0; -} - -// Just a wrapper around setting the expected events -function prepare_test(aExpectedEvents, aExpectedInstalls, aNext) { - AddonManager.addAddonListener(AddonListener); - AddonManager.addInstallListener(InstallListener); - - gExpectedInstalls = aExpectedInstalls; - gExpectedEvents = aExpectedEvents; - gNext = aNext; -} - -// Checks if all expected events have been seen and if so calls the callback -function check_test_completed(aArgs) { - if (!gNext) - return undefined; - - if (gExpectedInstalls instanceof Array && - gExpectedInstalls.length > 0) - return undefined; - - for (let id in gExpectedInstalls) { - let installList = gExpectedInstalls[id]; - if (installList.length > 0) - return undefined; - } - - for (let id in gExpectedEvents) { - if (gExpectedEvents[id].length > 0) - return undefined; - } - - return gNext.apply(null, aArgs); -} - -// Verifies that all the expected events for all add-ons were seen -function ensure_test_completed() { - for (let i in gExpectedEvents) { - if (gExpectedEvents[i].length > 0) - do_throw("Didn't see all the expected events for " + i); - } - gExpectedEvents = {}; - if (gExpectedInstalls) - do_check_eq(gExpectedInstalls.length, 0); -} - -/** - * A helper method to install an array of AddonInstall to completion and then - * call a provided callback. - * - * @param aInstalls - * The array of AddonInstalls to install - * @param aCallback - * The callback to call when all installs have finished - */ -function completeAllInstalls(aInstalls, aCallback) { - promiseCompleteAllInstalls(aInstalls).then(aCallback); -} - -/** - * A helper method to install an array of files and call a callback after the - * installs are completed. - * - * @param aFiles - * The array of files to install - * @param aCallback - * The callback to call when all installs have finished - * @param aIgnoreIncompatible - * Optional parameter to ignore add-ons that are incompatible in - * aome way with the application - */ -function installAllFiles(aFiles, aCallback, aIgnoreIncompatible) { - promiseInstallAllFiles(aFiles, aIgnoreIncompatible).then(aCallback); -} - -const EXTENSIONS_DB = "extensions.json"; -var gExtensionsJSON = gProfD.clone(); -gExtensionsJSON.append(EXTENSIONS_DB); - - -// By default use strict compatibility -Services.prefs.setBoolPref("extensions.strictCompatibility", true); - -// By default, set min compatible versions to 0 -Services.prefs.setCharPref(PREF_EM_MIN_COMPAT_APP_VERSION, "0"); -Services.prefs.setCharPref(PREF_EM_MIN_COMPAT_PLATFORM_VERSION, "0"); - -// Ensure signature checks are enabled by default -Services.prefs.setBoolPref(PREF_XPI_SIGNATURES_REQUIRED, true); - - -// Copies blocklistFile (an nsIFile) to gProfD/blocklist.xml. -function copyBlocklistToProfile(blocklistFile) { - var dest = gProfD.clone(); - dest.append("blocklist.xml"); - if (dest.exists()) - dest.remove(false); - blocklistFile.copyTo(gProfD, "blocklist.xml"); - dest.lastModifiedTime = Date.now(); -} - -// Throw a failure and attempt to abandon the test if it looks like it is going -// to timeout -function timeout() { - timer = null; - do_throw("Test ran longer than " + TIMEOUT_MS + "ms"); - - // Attempt to bail out of the test - do_test_finished(); -} - -var timer = AM_Cc["@mozilla.org/timer;1"].createInstance(AM_Ci.nsITimer); -timer.init(timeout, TIMEOUT_MS, AM_Ci.nsITimer.TYPE_ONE_SHOT); - -// Make sure that a given path does not exist -function pathShouldntExist(file) { - if (file.exists()) { - do_throw(`Test cleanup: path ${file.path} exists when it should not`); - } -} - -do_register_cleanup(function addon_cleanup() { - if (timer) - timer.cancel(); -}); - -/** - * Creates a new HttpServer for testing, and begins listening on the - * specified port. Automatically shuts down the server when the test - * unit ends. - * - * @param port - * The port to listen on. If omitted, listen on a random - * port. The latter is the preferred behavior. - * - * @return HttpServer - */ -function createHttpServer(port = -1) { - let server = new HttpServer(); - server.start(port); - - do_register_cleanup(() => { - return new Promise(resolve => { - server.stop(resolve); - }); - }); - - return server; -} - -/** - * Handler function that responds with the interpolated - * static file associated to the URL specified by request.path. - * This replaces the %PORT% entries in the file with the actual - * value of the running server's port (stored in gPort). - */ -function interpolateAndServeFile(request, response) { - try { - let file = gUrlToFileMap[request.path]; - var data = ""; - var fstream = Components.classes["@mozilla.org/network/file-input-stream;1"]. - createInstance(Components.interfaces.nsIFileInputStream); - var cstream = Components.classes["@mozilla.org/intl/converter-input-stream;1"]. - createInstance(Components.interfaces.nsIConverterInputStream); - fstream.init(file, -1, 0, 0); - cstream.init(fstream, "UTF-8", 0, 0); - - let str = {}; - let read = 0; - do { - // read as much as we can and put it in str.value - read = cstream.readString(0xffffffff, str); - data += str.value; - } while (read != 0); - data = data.replace(/%PORT%/g, gPort); - - response.write(data); - } catch (e) { - do_throw(`Exception while serving interpolated file: ${e}\n${e.stack}`); - } finally { - cstream.close(); // this closes fstream as well - } -} - -/** - * Sets up a path handler for the given URL and saves the - * corresponding file in the global url -> file map. - * - * @param url - * the actual URL - * @param file - * nsILocalFile representing a static file - */ -function mapUrlToFile(url, file, server) { - server.registerPathHandler(url, interpolateAndServeFile); - gUrlToFileMap[url] = file; -} - -function mapFile(path, server) { - mapUrlToFile(path, do_get_file(path), server); -} - -/** - * Take out the port number in an URL - * - * @param url - * String that represents an URL with a port number in it - */ -function remove_port(url) { - if (typeof url === "string") - return url.replace(/:\d+/, ""); - return url; -} -// Wrap a function (typically a callback) to catch and report exceptions -function do_exception_wrap(func) { - return function() { - try { - func.apply(null, arguments); - } - catch (e) { - do_report_unexpected_exception(e); - } - }; -} - -/** - * Change the schema version of the JSON extensions database - */ -function changeXPIDBVersion(aNewVersion, aMutator = undefined) { - let jData = loadJSON(gExtensionsJSON); - jData.schemaVersion = aNewVersion; - if (aMutator) - aMutator(jData); - saveJSON(jData, gExtensionsJSON); -} - -/** - * Load a file into a string - */ -function loadFile(aFile) { - let data = ""; - let fstream = Components.classes["@mozilla.org/network/file-input-stream;1"]. - createInstance(Components.interfaces.nsIFileInputStream); - let cstream = Components.classes["@mozilla.org/intl/converter-input-stream;1"]. - createInstance(Components.interfaces.nsIConverterInputStream); - fstream.init(aFile, -1, 0, 0); - cstream.init(fstream, "UTF-8", 0, 0); - let str = {}; - let read = 0; - do { - read = cstream.readString(0xffffffff, str); // read as much as we can and put it in str.value - data += str.value; - } while (read != 0); - cstream.close(); - return data; -} - -/** - * Raw load of a JSON file - */ -function loadJSON(aFile) { - let data = loadFile(aFile); - do_print("Loaded JSON file " + aFile.path); - return (JSON.parse(data)); -} - -/** - * Raw save of a JSON blob to file - */ -function saveJSON(aData, aFile) { - do_print("Starting to save JSON file " + aFile.path); - let stream = FileUtils.openSafeFileOutputStream(aFile); - let converter = AM_Cc["@mozilla.org/intl/converter-output-stream;1"]. - createInstance(AM_Ci.nsIConverterOutputStream); - converter.init(stream, "UTF-8", 0, 0x0000); - // XXX pretty print the JSON while debugging - converter.writeString(JSON.stringify(aData, null, 2)); - converter.flush(); - // nsConverterOutputStream doesn't finish() safe output streams on close() - FileUtils.closeSafeFileOutputStream(stream); - converter.close(); - do_print("Done saving JSON file " + aFile.path); -} - -/** - * Create a callback function that calls do_execute_soon on an actual callback and arguments - */ -function callback_soon(aFunction) { - return function(...args) { - do_execute_soon(function() { - aFunction.apply(null, args); - }, aFunction.name ? "delayed callback " + aFunction.name : "delayed callback"); - } -} - -function writeProxyFileToDir(aDir, aAddon, aId) { - awaitPromise(promiseWriteProxyFileToDir(aDir, aAddon, aId)); - - let file = aDir.clone(); - file.append(aId); - return file -} - -function* serveSystemUpdate(xml, perform_update, testserver) { - testserver.registerPathHandler("/data/update.xml", (request, response) => { - response.write(xml); - }); - - try { - yield perform_update(); - } - finally { - testserver.registerPathHandler("/data/update.xml", null); - } -} - -// Runs an update check making it use the passed in xml string. Uses the direct -// call to the update function so we get rejections on failure. -function* installSystemAddons(xml, testserver) { - do_print("Triggering system add-on update check."); - - yield serveSystemUpdate(xml, function*() { - let { XPIProvider } = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {}); - yield XPIProvider.updateSystemAddons(); - }, testserver); -} - -// Runs a full add-on update check which will in some cases do a system add-on -// update check. Always succeeds. -function* updateAllSystemAddons(xml, testserver) { - do_print("Triggering full add-on update check."); - - yield serveSystemUpdate(xml, function() { - return new Promise(resolve => { - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "addons-background-update-complete"); - - resolve(); - }, "addons-background-update-complete", false); - - // Trigger the background update timer handler - gInternalManager.notify(null); - }); - }, testserver); -} - -// Builds an update.xml file for an update check based on the data passed. -function* buildSystemAddonUpdates(addons, root) { - let xml = `<?xml version="1.0" encoding="UTF-8"?>\n\n<updates>\n`; - if (addons) { - xml += ` <addons>\n`; - for (let addon of addons) { - xml += ` <addon id="${addon.id}" URL="${root + addon.path}" version="${addon.version}"`; - if (addon.size) - xml += ` size="${addon.size}"`; - if (addon.hashFunction) - xml += ` hashFunction="${addon.hashFunction}"`; - if (addon.hashValue) - xml += ` hashValue="${addon.hashValue}"`; - xml += `/>\n`; - } - xml += ` </addons>\n`; - } - xml += `</updates>\n`; - - return xml; -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/head_unpack.js b/toolkit/mozapps/webextensions/test/xpcshell/head_unpack.js deleted file mode 100644 index 6310bbc60..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/head_unpack.js +++ /dev/null @@ -1,3 +0,0 @@ -/* globals Services, TEST_UNPACKED: true*/ -Services.prefs.setBoolPref("extensions.alwaysUnpack", true); -TEST_UNPACKED = true; diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_AddonRepository.js b/toolkit/mozapps/webextensions/test/xpcshell/test_AddonRepository.js deleted file mode 100644 index dd0dc1981..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_AddonRepository.js +++ /dev/null @@ -1,625 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests AddonRepository.jsm - -Components.utils.import("resource://gre/modules/addons/AddonRepository.jsm"); - -Components.utils.import("resource://testing-common/httpd.js"); -var gServer = new HttpServer(); -gServer.start(-1); - -const PREF_GETADDONS_BROWSEADDONS = "extensions.getAddons.browseAddons"; -const PREF_GETADDONS_BROWSERECOMMENDED = "extensions.getAddons.recommended.browseURL"; -const PREF_GETADDONS_GETRECOMMENDED = "extensions.getAddons.recommended.url"; -const PREF_GETADDONS_BROWSESEARCHRESULTS = "extensions.getAddons.search.browseURL"; -const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url"; - -const PORT = gServer.identity.primaryPort; -const BASE_URL = "http://localhost:" + PORT; -const DEFAULT_URL = "about:blank"; - -gPort = PORT; - -// Path to source URI of installed add-on -const INSTALL_URL1 = "/addons/test_AddonRepository_1.xpi"; -// Path to source URI of installing add-on -const INSTALL_URL2 = "/addons/test_AddonRepository_2.xpi"; -// Path to source URI of non-active add-on (state = STATE_AVAILABLE) -const INSTALL_URL3 = "/addons/test_AddonRepository_3.xpi"; - -// Properties of an individual add-on that should be checked -// Note: name is checked separately -var ADDON_PROPERTIES = ["id", "type", "version", "creator", "developers", - "description", "fullDescription", "developerComments", - "eula", "iconURL", "icons", "screenshots", "homepageURL", - "supportURL", "contributionURL", "contributionAmount", - "averageRating", "reviewCount", "reviewURL", - "totalDownloads", "weeklyDownloads", "dailyUsers", - "sourceURI", "repositoryStatus", "size", "updateDate", - "purchaseURL", "purchaseAmount", "purchaseDisplayAmount", - "compatibilityOverrides"]; - -// Results of getAddonsByIDs -var GET_RESULTS = [{ - id: "test1@tests.mozilla.org", - type: "extension", - version: "1.1", - creator: { - name: "Test Creator 1", - url: BASE_URL + "/creator1.html" - }, - developers: [{ - name: "Test Developer 1", - url: BASE_URL + "/developer1.html" - }], - description: "Test Summary 1", - fullDescription: "Test Description 1", - developerComments: "Test Developer Comments 1", - eula: "Test EULA 1", - iconURL: BASE_URL + "/icon1.png", - icons: { "32": BASE_URL + "/icon1.png" }, - screenshots: [{ - url: BASE_URL + "/full1-1.png", - width: 400, - height: 300, - thumbnailURL: BASE_URL + "/thumbnail1-1.png", - thumbnailWidth: 200, - thumbnailHeight: 150, - caption: "Caption 1 - 1" - }, { - url: BASE_URL + "/full2-1.png", - thumbnailURL: BASE_URL + "/thumbnail2-1.png", - caption: "Caption 2 - 1" - }], - homepageURL: BASE_URL + "/learnmore1.html", - learnmoreURL: BASE_URL + "/learnmore1.html", - supportURL: BASE_URL + "/support1.html", - contributionURL: BASE_URL + "/meetDevelopers1.html", - contributionAmount: "$11.11", - averageRating: 4, - reviewCount: 1111, - reviewURL: BASE_URL + "/review1.html", - totalDownloads: 2222, - weeklyDownloads: 3333, - dailyUsers: 4444, - sourceURI: BASE_URL + INSTALL_URL2, - repositoryStatus: 8, - size: 5555, - updateDate: new Date(1265033045000), - compatibilityOverrides: [{ - type: "incompatible", - minVersion: 0.1, - maxVersion: 0.2, - appID: "xpcshell@tests.mozilla.org", - appMinVersion: 3.0, - appMaxVersion: 4.0 - }, { - type: "incompatible", - minVersion: 0.2, - maxVersion: 0.3, - appID: "xpcshell@tests.mozilla.org", - appMinVersion: 5.0, - appMaxVersion: 6.0 - }] -}, { - id: "test_AddonRepository_1@tests.mozilla.org", - type: "theme", - version: "1.4", - repositoryStatus: 9999, - icons: {} -}]; - -// Results of retrieveRecommendedAddons and searchAddons -var SEARCH_RESULTS = [{ - id: "test1@tests.mozilla.org", - type: "extension", - version: "1.1", - creator: { - name: "Test Creator 1", - url: BASE_URL + "/creator1.html" - }, - repositoryStatus: 8, - sourceURI: BASE_URL + "/test1.xpi", - icons: {} -}, { - id: "test2@tests.mozilla.org", - type: "extension", - version: "1.2", - creator: { - name: "Test Creator 2", - url: BASE_URL + "/creator2.html" - }, - developers: [{ - name: "Test Developer 2", - url: BASE_URL + "/developer2.html" - }], - description: "Test Summary 2\n\nparagraph", - fullDescription: "Test Description 2\nnewline", - developerComments: "Test Developer\nComments 2", - eula: "Test EULA 2", - iconURL: BASE_URL + "/icon2-32.png", - icons: { - "32": BASE_URL + "/icon2-32.png", - "48": BASE_URL + "/icon2-48.png", - "64": BASE_URL + "/icon2-64.png" - }, - screenshots: [{ - url: BASE_URL + "/full1-2.png", - thumbnailURL: BASE_URL + "/thumbnail1-2.png" - }, { - url: BASE_URL + "/full2-2.png", - thumbnailURL: BASE_URL + "/thumbnail2-2.png", - caption: "Caption 2" - }], - homepageURL: BASE_URL + "/learnmore2.html", - supportURL: BASE_URL + "/support2.html", - learnmoreURL: BASE_URL + "/learnmore2.html", - contributionURL: BASE_URL + "/meetDevelopers2.html", - contributionAmount: null, - repositoryStatus: 4, - sourceURI: BASE_URL + "/test2.xpi" -}, { - id: "test3@tests.mozilla.org", - type: "theme", - version: "1.3", - creator: { - name: "Test Creator 3", - url: BASE_URL + "/creator3.html" - }, - developers: [{ - name: "First Test Developer 3", - url: BASE_URL + "/developer1-3.html" - }, { - name: "Second Test Developer 3", - url: BASE_URL + "/developer2-3.html" - }], - description: "Test Summary 3", - fullDescription: "Test Description 3\n\n List item 1\n List item 2", - developerComments: "Test Developer Comments 3", - eula: "Test EULA 3", - iconURL: BASE_URL + "/icon3.png", - icons: { "32": BASE_URL + "/icon3.png" }, - screenshots: [{ - url: BASE_URL + "/full1-3.png", - thumbnailURL: BASE_URL + "/thumbnail1-3.png", - caption: "Caption 1 - 3" - }, { - url: BASE_URL + "/full2-3.png", - caption: "Caption 2 - 3" - }, { - url: BASE_URL + "/full3-3.png", - thumbnailURL: BASE_URL + "/thumbnail3-3.png", - caption: "Caption 3 - 3" - }], - homepageURL: BASE_URL + "/homepage3.html", - supportURL: BASE_URL + "/support3.html", - learnmoreURL: BASE_URL + "/learnmore3.html", - contributionURL: BASE_URL + "/meetDevelopers3.html", - contributionAmount: "$11.11", - averageRating: 2, - reviewCount: 1111, - reviewURL: BASE_URL + "/review3.html", - totalDownloads: 2222, - weeklyDownloads: 3333, - dailyUsers: 4444, - sourceURI: BASE_URL + "/test3.xpi", - repositoryStatus: 8, - size: 5555, - updateDate: new Date(1265033045000), - -}, { - id: "purchase1@tests.mozilla.org", - type: "extension", - version: "2.0", - creator: { - name: "Test Creator - Last Passing", - url: BASE_URL + "/creatorLastPassing.html" - }, - averageRating: 5, - repositoryStatus: 4, - purchaseURL: "http://localhost:" + PORT + "/purchaseURL1", - purchaseAmount: 5, - purchaseDisplayAmount: "$5", - icons: {} -}, { - id: "purchase2@tests.mozilla.org", - type: "extension", - version: "2.0", - creator: { - name: "Test Creator - Last Passing", - url: BASE_URL + "/creatorLastPassing.html" - }, - averageRating: 5, - repositoryStatus: 4, - purchaseURL: "http://localhost:" + PORT + "/purchaseURL2", - purchaseAmount: 10, - purchaseDisplayAmount: "$10", - icons: {} -}, { - id: "test-lastPassing@tests.mozilla.org", - type: "extension", - version: "2.0", - creator: { - name: "Test Creator - Last Passing", - url: BASE_URL + "/creatorLastPassing.html" - }, - averageRating: 5, - repositoryStatus: 4, - sourceURI: BASE_URL + "/addons/test_AddonRepository_3.xpi", - icons: {} -}]; - -const TOTAL_RESULTS = 1111; -const MAX_RESULTS = SEARCH_RESULTS.length; - -// Used to differentiate between testing that a search success -// or a search failure for retrieveRecommendedAddons and searchAddons -const FAILED_MAX_RESULTS = 9999; - -// Values for testing AddonRepository.getAddonsByIDs() -var GET_TEST = { - preference: PREF_GETADDONS_BYIDS, - preferenceValue: BASE_URL + "/%OS%/%VERSION%/%API_VERSION%/" + - "%API_VERSION%/%IDS%", - failedIDs: ["test1@tests.mozilla.org"], - failedURL: "/XPCShell/1/1.5/1.5/test1%40tests.mozilla.org", - successfulIDs: ["test1@tests.mozilla.org", - "{00000000-1111-2222-3333-444444444444}", - "test_AddonRepository_1@tests.mozilla.org"], - successfulURL: "/XPCShell/1/1.5/1.5/test1%40tests.mozilla.org," + - "%7B00000000-1111-2222-3333-444444444444%7D," + - "test_AddonRepository_1%40tests.mozilla.org" -}; - -// Values for testing AddonRepository.retrieveRecommendedAddons() -var RECOMMENDED_TEST = { - preference: PREF_GETADDONS_GETRECOMMENDED, - preferenceValue: BASE_URL + "/%OS%/%VERSION%/%API_VERSION%/" + - "%API_VERSION%/%MAX_RESULTS%", - failedURL: "/XPCShell/1/1.5/1.5/" + (2 * FAILED_MAX_RESULTS), - successfulURL: "/XPCShell/1/1.5/1.5/" + (2 * MAX_RESULTS) -}; - -// Values for testing AddonRepository.searchAddons() -var SEARCH_TEST = { - searchTerms: "odd=search:with&weird\"characters", - preference: PREF_GETADDONS_GETSEARCHRESULTS, - preferenceValue: BASE_URL + "/%OS%/%VERSION%/%API_VERSION%/" + - "%API_VERSION%/%MAX_RESULTS%/%TERMS%", - failedURL: "/XPCShell/1/1.5/1.5/" + (2 * FAILED_MAX_RESULTS) + - "/odd%3Dsearch%3Awith%26weird%22characters", - successfulURL: "/XPCShell/1/1.5/1.5/" + (2 * MAX_RESULTS) + - "/odd%3Dsearch%3Awith%26weird%22characters" -}; - -// Test that actual results and expected results are equal -function check_results(aActualAddons, aExpectedAddons, aAddonCount, aInstallNull) { - do_check_false(AddonRepository.isSearching); - - do_check_eq(aActualAddons.length, aAddonCount); - do_check_addons(aActualAddons, aExpectedAddons, ADDON_PROPERTIES); - - // Additional tests - aActualAddons.forEach(function check_each_addon(aActualAddon) { - // Separately check name so better messages are output when test fails - if (aActualAddon.name == "FAIL") - do_throw(aActualAddon.id + " - " + aActualAddon.description); - if (aActualAddon.name != "PASS") - do_throw(aActualAddon.id + " - " + "invalid add-on name " + aActualAddon.name); - - do_check_eq(aActualAddon.install == null, !!aInstallNull || !aActualAddon.sourceURI); - - // Check that sourceURI property consistent within actual addon - if (aActualAddon.install) - do_check_eq(aActualAddon.install.sourceURI.spec, aActualAddon.sourceURI.spec); - }); -} - -// Complete a search, also testing cancelSearch() and isSearching -function complete_search(aSearch, aSearchCallback) { - var failCallback = { - searchSucceeded: function(addons, length, total) { - do_throw("failCallback.searchSucceeded should not be called"); - end_test(); - }, - - searchFailed: function() { - do_throw("failCallback.searchFailed should not be called"); - end_test(); - } - }; - - var callbackCalled = false; - var testCallback = { - searchSucceeded: function(addons, length, total) { - do_throw("testCallback.searchSucceeded should not be called"); - end_test(); - }, - - searchFailed: function() { - callbackCalled = true; - } - }; - - // Should fail because cancelled it immediately - aSearch(failCallback); - do_check_true(AddonRepository.isSearching); - AddonRepository.cancelSearch(); - do_check_false(AddonRepository.isSearching); - - aSearch(aSearchCallback); - do_check_true(AddonRepository.isSearching); - - // searchFailed should be called immediately because already searching - aSearch(testCallback); - do_check_true(callbackCalled); - do_check_true(AddonRepository.isSearching); -} - - -function run_test() { - // Setup for test - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - startupManager(); - - // Install an add-on so can check that it isn't returned in the results - installAllFiles([do_get_addon("test_AddonRepository_1")], function addon_1_install_callback() { - restartManager(); - - // Register other add-on XPI files - gServer.registerFile(INSTALL_URL2, - do_get_addon("test_AddonRepository_2")); - gServer.registerFile(INSTALL_URL3, - do_get_addon("test_AddonRepository_3")); - - // Register files used to test search failure - mapUrlToFile(GET_TEST.failedURL, - do_get_file("data/test_AddonRepository_failed.xml"), - gServer); - mapUrlToFile(RECOMMENDED_TEST.failedURL, - do_get_file("data/test_AddonRepository_failed.xml"), - gServer); - mapUrlToFile(SEARCH_TEST.failedURL, - do_get_file("data/test_AddonRepository_failed.xml"), - gServer); - - // Register files used to test search success - mapUrlToFile(GET_TEST.successfulURL, - do_get_file("data/test_AddonRepository_getAddonsByIDs.xml"), - gServer); - mapUrlToFile(RECOMMENDED_TEST.successfulURL, - do_get_file("data/test_AddonRepository.xml"), - gServer); - mapUrlToFile(SEARCH_TEST.successfulURL, - do_get_file("data/test_AddonRepository.xml"), - gServer); - - // Create an active AddonInstall so can check that it isn't returned in the results - AddonManager.getInstallForURL(BASE_URL + INSTALL_URL2, function addon_2_get(aInstall) { - try { - aInstall.install(); - } - catch (e) { - do_print("Failed to install add-on " + aInstall.sourceURI.spec); - do_report_unexpected_exception(e); - } - - // Create a non-active AddonInstall so can check that it is returned in the results - AddonManager.getInstallForURL(BASE_URL + INSTALL_URL3, - run_test_1, "application/x-xpinstall"); - }, "application/x-xpinstall"); - }); -} - -function end_test() { - let testDir = gProfD.clone(); - testDir.append("extensions"); - testDir.append("staged"); - gServer.stop(function() { - function loop() { - if (!testDir.exists()) { - do_print("Staged directory has been cleaned up"); - do_test_finished(); - } - do_print("Waiting 1 second until cleanup is complete"); - do_timeout(1000, loop); - } - loop(); - }); -} - -// Tests homepageURL, getRecommendedURL() and getSearchURL() -function run_test_1() { - function check_urls(aPreference, aGetURL, aTests) { - aTests.forEach(function(aTest) { - Services.prefs.setCharPref(aPreference, aTest.preferenceValue); - do_check_eq(aGetURL(aTest), aTest.expectedURL); - }); - } - - var urlTests = [{ - preferenceValue: BASE_URL, - expectedURL: BASE_URL - }, { - preferenceValue: BASE_URL + "/%OS%/%VERSION%", - expectedURL: BASE_URL + "/XPCShell/1" - }]; - - // Extra tests for AddonRepository.getSearchURL(); - var searchURLTests = [{ - searchTerms: "test", - preferenceValue: BASE_URL + "/search?q=%TERMS%", - expectedURL: BASE_URL + "/search?q=test" - }, { - searchTerms: "test search", - preferenceValue: BASE_URL + "/%TERMS%", - expectedURL: BASE_URL + "/test%20search" - }, { - searchTerms: "odd=search:with&weird\"characters", - preferenceValue: BASE_URL + "/%TERMS%", - expectedURL: BASE_URL + "/odd%3Dsearch%3Awith%26weird%22characters" - }]; - - // Setup tests for homepageURL, getRecommendedURL() and getSearchURL() - var tests = [{ - initiallyUndefined: true, - preference: PREF_GETADDONS_BROWSEADDONS, - urlTests: urlTests, - getURL: () => AddonRepository.homepageURL - }, { - initiallyUndefined: true, - preference: PREF_GETADDONS_BROWSERECOMMENDED, - urlTests: urlTests, - getURL: () => AddonRepository.getRecommendedURL() - }, { - initiallyUndefined: false, - preference: PREF_GETADDONS_BROWSESEARCHRESULTS, - urlTests: urlTests.concat(searchURLTests), - getURL: function getSearchURL(aTest) { - var searchTerms = aTest && aTest.searchTerms ? aTest.searchTerms - : "unused terms"; - return AddonRepository.getSearchURL(searchTerms); - } - }]; - - tests.forEach(function url_test(aTest) { - if (aTest.initiallyUndefined) { - // Preference is not defined by default - do_check_eq(Services.prefs.getPrefType(aTest.preference), - Services.prefs.PREF_INVALID); - do_check_eq(aTest.getURL(), DEFAULT_URL); - } - - check_urls(aTest.preference, aTest.getURL, aTest.urlTests); - }); - - run_test_getAddonsByID_fails(); -} - -// Tests failure of AddonRepository.getAddonsByIDs() -function run_test_getAddonsByID_fails() { - Services.prefs.setCharPref(GET_TEST.preference, GET_TEST.preferenceValue); - var callback = { - searchSucceeded: function(aAddonsList, aAddonCount, aTotalResults) { - do_throw("searchAddons should not have succeeded"); - end_test(); - }, - - searchFailed: function() { - do_check_false(AddonRepository.isSearching); - run_test_getAddonsByID_succeeds(); - } - }; - - complete_search(function complete_search_fail_callback(aCallback) { - AddonRepository.getAddonsByIDs(GET_TEST.failedIDs, aCallback); - }, callback); -} - -// Tests success of AddonRepository.getAddonsByIDs() -function run_test_getAddonsByID_succeeds() { - var callback = { - searchSucceeded: function(aAddonsList, aAddonCount, aTotalResults) { - do_check_eq(aTotalResults, -1); - check_results(aAddonsList, GET_RESULTS, aAddonCount, true); - run_test_retrieveRecommended_fails(); - }, - - searchFailed: function() { - do_throw("searchAddons should not have failed"); - end_test(); - } - }; - - complete_search(function complete_search_succeed_callback(aCallback) { - AddonRepository.getAddonsByIDs(GET_TEST.successfulIDs, aCallback); - }, callback); -} - -// Tests failure of AddonRepository.retrieveRecommendedAddons() -function run_test_retrieveRecommended_fails() { - Services.prefs.setCharPref(RECOMMENDED_TEST.preference, - RECOMMENDED_TEST.preferenceValue); - var callback = { - searchSucceeded: function(aAddonsList, aAddonCount, aTotalResults) { - do_throw("retrieveRecommendedAddons should not have succeeded"); - end_test(); - }, - - searchFailed: function() { - do_check_false(AddonRepository.isSearching); - run_test_retrieveRecommended_succeed(); - } - }; - - complete_search(function retrieveRecommended_failing_callback(aCallback) { - AddonRepository.retrieveRecommendedAddons(FAILED_MAX_RESULTS, aCallback); - }, callback); -} - -// Tests success of AddonRepository.retrieveRecommendedAddons() -function run_test_retrieveRecommended_succeed() { - var callback = { - searchSucceeded: function(aAddonsList, aAddonCount, aTotalResults) { - do_check_eq(aTotalResults, -1); - check_results(aAddonsList, SEARCH_RESULTS, aAddonCount); - run_test_searchAddons_fails(); - }, - - searchFailed: function() { - do_throw("retrieveRecommendedAddons should not have failed"); - end_test(); - } - }; - - complete_search(function retrieveRecommended_succeed_callback(aCallback) { - AddonRepository.retrieveRecommendedAddons(MAX_RESULTS, aCallback); - }, callback); -} - -// Tests failure of AddonRepository.searchAddons() -function run_test_searchAddons_fails() { - Services.prefs.setCharPref(SEARCH_TEST.preference, SEARCH_TEST.preferenceValue); - var callback = { - searchSucceeded: function(aAddonsList, aAddonCount, aTotalResults) { - do_throw("searchAddons should not have succeeded"); - end_test(); - }, - - searchFailed: function() { - do_check_false(AddonRepository.isSearching); - run_test_searchAddons_succeeds(); - } - }; - - complete_search(function(aCallback) { - var searchTerms = SEARCH_TEST.searchTerms; - AddonRepository.searchAddons(searchTerms, FAILED_MAX_RESULTS, aCallback); - }, callback); -} - -// Tests success of AddonRepository.searchAddons() -function run_test_searchAddons_succeeds() { - var callback = { - searchSucceeded: function(aAddonsList, aAddonCount, aTotalResults) { - do_check_eq(aTotalResults, TOTAL_RESULTS); - check_results(aAddonsList, SEARCH_RESULTS, aAddonCount); - end_test(); - }, - - searchFailed: function() { - do_throw("searchAddons should not have failed"); - end_test(); - } - }; - - complete_search(function(aCallback) { - var searchTerms = SEARCH_TEST.searchTerms; - AddonRepository.searchAddons(searchTerms, MAX_RESULTS, aCallback); - }, callback); -} - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_AddonRepository_cache.js b/toolkit/mozapps/webextensions/test/xpcshell/test_AddonRepository_cache.js deleted file mode 100644 index 203235940..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_AddonRepository_cache.js +++ /dev/null @@ -1,704 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests caching in AddonRepository.jsm - -Components.utils.import("resource://gre/modules/addons/AddonRepository.jsm"); - -var gServer; - -const PORT = 4444; -const BASE_URL = "http://localhost:" + PORT; - -const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled"; -const PREF_GETADDONS_CACHE_TYPES = "extensions.getAddons.cache.types"; -const GETADDONS_RESULTS = BASE_URL + "/data/test_AddonRepository_cache.xml"; -const GETADDONS_EMPTY = BASE_URL + "/data/test_AddonRepository_empty.xml"; -const GETADDONS_FAILED = BASE_URL + "/data/test_AddonRepository_failed.xml"; - -const FILE_DATABASE = "addons.json"; -const ADDON_NAMES = ["test_AddonRepository_1", - "test_AddonRepository_2", - "test_AddonRepository_3"]; -const ADDON_IDS = ADDON_NAMES.map(aName => aName + "@tests.mozilla.org"); -const ADDON_FILES = ADDON_NAMES.map(do_get_addon); - -const PREF_ADDON0_CACHE_ENABLED = "extensions." + ADDON_IDS[0] + ".getAddons.cache.enabled"; -const PREF_ADDON1_CACHE_ENABLED = "extensions." + ADDON_IDS[1] + ".getAddons.cache.enabled"; - -// Properties of an individual add-on that should be checked -// Note: size and updateDate are checked separately -const ADDON_PROPERTIES = ["id", "type", "name", "version", "creator", - "developers", "translators", "contributors", - "description", "fullDescription", - "developerComments", "eula", "iconURL", "icons", - "screenshots", "homepageURL", "supportURL", - "optionsURL", "aboutURL", "contributionURL", - "contributionAmount", "averageRating", "reviewCount", - "reviewURL", "totalDownloads", "weeklyDownloads", - "dailyUsers", "sourceURI", "repositoryStatus", - "compatibilityOverrides"]; - -// The size and updateDate properties are annoying to test for XPI add-ons. -// However, since we only care about whether the repository value vs. the -// XPI value is used, we can just test if the property value matches -// the repository value -const REPOSITORY_SIZE = 9; -const REPOSITORY_UPDATEDATE = 9; - -// Get the URI of a subfile locating directly in the folder of -// the add-on corresponding to the specified id -function get_subfile_uri(aId, aFilename) { - let file = gProfD.clone(); - file.append("extensions"); - return do_get_addon_root_uri(file, aId) + aFilename; -} - - -// Expected repository add-ons -const REPOSITORY_ADDONS = [{ - id: ADDON_IDS[0], - type: "extension", - name: "Repo Add-on 1", - version: "2.1", - creator: { - name: "Repo Add-on 1 - Creator", - url: BASE_URL + "/repo/1/creator.html" - }, - developers: [{ - name: "Repo Add-on 1 - First Developer", - url: BASE_URL + "/repo/1/firstDeveloper.html" - }, { - name: "Repo Add-on 1 - Second Developer", - url: BASE_URL + "/repo/1/secondDeveloper.html" - }], - description: "Repo Add-on 1 - Description\nSecond line", - fullDescription: "Repo Add-on 1 - Full Description & some extra", - developerComments: "Repo Add-on 1\nDeveloper Comments", - eula: "Repo Add-on 1 - EULA", - iconURL: BASE_URL + "/repo/1/icon.png", - icons: { "32": BASE_URL + "/repo/1/icon.png" }, - homepageURL: BASE_URL + "/repo/1/homepage.html", - supportURL: BASE_URL + "/repo/1/support.html", - contributionURL: BASE_URL + "/repo/1/meetDevelopers.html", - contributionAmount: "$11.11", - averageRating: 1, - reviewCount: 1111, - reviewURL: BASE_URL + "/repo/1/review.html", - totalDownloads: 2221, - weeklyDownloads: 3331, - dailyUsers: 4441, - sourceURI: BASE_URL + "/repo/1/install.xpi", - repositoryStatus: 4, - compatibilityOverrides: [{ - type: "incompatible", - minVersion: 0.1, - maxVersion: 0.2, - appID: "xpcshell@tests.mozilla.org", - appMinVersion: 3.0, - appMaxVersion: 4.0 - }, { - type: "incompatible", - minVersion: 0.2, - maxVersion: 0.3, - appID: "xpcshell@tests.mozilla.org", - appMinVersion: 5.0, - appMaxVersion: 6.0 - }] -}, { - id: ADDON_IDS[1], - type: "theme", - name: "Repo Add-on 2", - version: "2.2", - creator: { - name: "Repo Add-on 2 - Creator", - url: BASE_URL + "/repo/2/creator.html" - }, - developers: [{ - name: "Repo Add-on 2 - First Developer", - url: BASE_URL + "/repo/2/firstDeveloper.html" - }, { - name: "Repo Add-on 2 - Second Developer", - url: BASE_URL + "/repo/2/secondDeveloper.html" - }], - description: "Repo Add-on 2 - Description", - fullDescription: "Repo Add-on 2 - Full Description", - developerComments: "Repo Add-on 2 - Developer Comments", - eula: "Repo Add-on 2 - EULA", - iconURL: BASE_URL + "/repo/2/icon.png", - icons: { "32": BASE_URL + "/repo/2/icon.png" }, - screenshots: [{ - url: BASE_URL + "/repo/2/firstFull.png", - thumbnailURL: BASE_URL + "/repo/2/firstThumbnail.png", - caption: "Repo Add-on 2 - First Caption" - }, { - url: BASE_URL + "/repo/2/secondFull.png", - thumbnailURL: BASE_URL + "/repo/2/secondThumbnail.png", - caption: "Repo Add-on 2 - Second Caption" - }], - homepageURL: BASE_URL + "/repo/2/homepage.html", - supportURL: BASE_URL + "/repo/2/support.html", - contributionURL: BASE_URL + "/repo/2/meetDevelopers.html", - contributionAmount: null, - averageRating: 2, - reviewCount: 1112, - reviewURL: BASE_URL + "/repo/2/review.html", - totalDownloads: 2222, - weeklyDownloads: 3332, - dailyUsers: 4442, - sourceURI: BASE_URL + "/repo/2/install.xpi", - repositoryStatus: 9 -}, { - id: ADDON_IDS[2], - type: "theme", - name: "Repo Add-on 3", - version: "2.3", - iconURL: BASE_URL + "/repo/3/icon.png", - icons: { "32": BASE_URL + "/repo/3/icon.png" }, - screenshots: [{ - url: BASE_URL + "/repo/3/firstFull.png", - thumbnailURL: BASE_URL + "/repo/3/firstThumbnail.png", - caption: "Repo Add-on 3 - First Caption" - }, { - url: BASE_URL + "/repo/3/secondFull.png", - thumbnailURL: BASE_URL + "/repo/3/secondThumbnail.png", - caption: "Repo Add-on 3 - Second Caption" - }] -}]; - - -// Expected add-ons when not using cache -const WITHOUT_CACHE = [{ - id: ADDON_IDS[0], - type: "extension", - name: "XPI Add-on 1", - version: "1.1", - creator: { name: "XPI Add-on 1 - Creator" }, - developers: [{ name: "XPI Add-on 1 - First Developer" }, - { name: "XPI Add-on 1 - Second Developer" }], - translators: [{ name: "XPI Add-on 1 - First Translator" }, - { name: "XPI Add-on 1 - Second Translator" }], - contributors: [{ name: "XPI Add-on 1 - First Contributor" }, - { name: "XPI Add-on 1 - Second Contributor" }], - description: "XPI Add-on 1 - Description", - iconURL: BASE_URL + "/xpi/1/icon.png", - icons: { "32": BASE_URL + "/xpi/1/icon.png" }, - homepageURL: BASE_URL + "/xpi/1/homepage.html", - optionsURL: BASE_URL + "/xpi/1/options.html", - aboutURL: BASE_URL + "/xpi/1/about.html", - sourceURI: NetUtil.newURI(ADDON_FILES[0]).spec -}, { - id: ADDON_IDS[1], - type: "theme", - name: "XPI Add-on 2", - version: "1.2", - sourceURI: NetUtil.newURI(ADDON_FILES[1]).spec, - icons: {} -}, { - id: ADDON_IDS[2], - type: "theme", - name: "XPI Add-on 3", - version: "1.3", - get iconURL () { - return get_subfile_uri(ADDON_IDS[2], "icon.png"); - }, - get icons () { - return { "32": get_subfile_uri(ADDON_IDS[2], "icon.png") }; - }, - screenshots: [{ get url () { return get_subfile_uri(ADDON_IDS[2], "preview.png"); } }], - sourceURI: NetUtil.newURI(ADDON_FILES[2]).spec -}]; - - -// Expected add-ons when using cache -const WITH_CACHE = [{ - id: ADDON_IDS[0], - type: "extension", - name: "XPI Add-on 1", - version: "1.1", - creator: { - name: "Repo Add-on 1 - Creator", - url: BASE_URL + "/repo/1/creator.html" - }, - developers: [{ name: "XPI Add-on 1 - First Developer" }, - { name: "XPI Add-on 1 - Second Developer" }], - translators: [{ name: "XPI Add-on 1 - First Translator" }, - { name: "XPI Add-on 1 - Second Translator" }], - contributors: [{ name: "XPI Add-on 1 - First Contributor" }, - { name: "XPI Add-on 1 - Second Contributor" }], - description: "XPI Add-on 1 - Description", - fullDescription: "Repo Add-on 1 - Full Description & some extra", - developerComments: "Repo Add-on 1\nDeveloper Comments", - eula: "Repo Add-on 1 - EULA", - iconURL: BASE_URL + "/xpi/1/icon.png", - icons: { "32": BASE_URL + "/xpi/1/icon.png" }, - homepageURL: BASE_URL + "/xpi/1/homepage.html", - supportURL: BASE_URL + "/repo/1/support.html", - optionsURL: BASE_URL + "/xpi/1/options.html", - aboutURL: BASE_URL + "/xpi/1/about.html", - contributionURL: BASE_URL + "/repo/1/meetDevelopers.html", - contributionAmount: "$11.11", - averageRating: 1, - reviewCount: 1111, - reviewURL: BASE_URL + "/repo/1/review.html", - totalDownloads: 2221, - weeklyDownloads: 3331, - dailyUsers: 4441, - sourceURI: NetUtil.newURI(ADDON_FILES[0]).spec, - repositoryStatus: 4, - compatibilityOverrides: [{ - type: "incompatible", - minVersion: 0.1, - maxVersion: 0.2, - appID: "xpcshell@tests.mozilla.org", - appMinVersion: 3.0, - appMaxVersion: 4.0 - }, { - type: "incompatible", - minVersion: 0.2, - maxVersion: 0.3, - appID: "xpcshell@tests.mozilla.org", - appMinVersion: 5.0, - appMaxVersion: 6.0 - }] -}, { - id: ADDON_IDS[1], - type: "theme", - name: "XPI Add-on 2", - version: "1.2", - creator: { - name: "Repo Add-on 2 - Creator", - url: BASE_URL + "/repo/2/creator.html" - }, - developers: [{ - name: "Repo Add-on 2 - First Developer", - url: BASE_URL + "/repo/2/firstDeveloper.html" - }, { - name: "Repo Add-on 2 - Second Developer", - url: BASE_URL + "/repo/2/secondDeveloper.html" - }], - description: "Repo Add-on 2 - Description", - fullDescription: "Repo Add-on 2 - Full Description", - developerComments: "Repo Add-on 2 - Developer Comments", - eula: "Repo Add-on 2 - EULA", - iconURL: BASE_URL + "/repo/2/icon.png", - icons: { "32": BASE_URL + "/repo/2/icon.png" }, - screenshots: [{ - url: BASE_URL + "/repo/2/firstFull.png", - thumbnailURL: BASE_URL + "/repo/2/firstThumbnail.png", - caption: "Repo Add-on 2 - First Caption" - }, { - url: BASE_URL + "/repo/2/secondFull.png", - thumbnailURL: BASE_URL + "/repo/2/secondThumbnail.png", - caption: "Repo Add-on 2 - Second Caption" - }], - homepageURL: BASE_URL + "/repo/2/homepage.html", - supportURL: BASE_URL + "/repo/2/support.html", - contributionURL: BASE_URL + "/repo/2/meetDevelopers.html", - contributionAmount: null, - averageRating: 2, - reviewCount: 1112, - reviewURL: BASE_URL + "/repo/2/review.html", - totalDownloads: 2222, - weeklyDownloads: 3332, - dailyUsers: 4442, - sourceURI: NetUtil.newURI(ADDON_FILES[1]).spec, - repositoryStatus: 9 -}, { - id: ADDON_IDS[2], - type: "theme", - name: "XPI Add-on 3", - version: "1.3", - get iconURL () { - return get_subfile_uri(ADDON_IDS[2], "icon.png"); - }, - get icons () { - return { "32": get_subfile_uri(ADDON_IDS[2], "icon.png") }; - }, - screenshots: [{ - url: BASE_URL + "/repo/3/firstFull.png", - thumbnailURL: BASE_URL + "/repo/3/firstThumbnail.png", - caption: "Repo Add-on 3 - First Caption" - }, { - url: BASE_URL + "/repo/3/secondFull.png", - thumbnailURL: BASE_URL + "/repo/3/secondThumbnail.png", - caption: "Repo Add-on 3 - Second Caption" - }], - sourceURI: NetUtil.newURI(ADDON_FILES[2]).spec -}]; - -// Expected add-ons when using cache -const WITH_EXTENSION_CACHE = [{ - id: ADDON_IDS[0], - type: "extension", - name: "XPI Add-on 1", - version: "1.1", - creator: { - name: "Repo Add-on 1 - Creator", - url: BASE_URL + "/repo/1/creator.html" - }, - developers: [{ name: "XPI Add-on 1 - First Developer" }, - { name: "XPI Add-on 1 - Second Developer" }], - translators: [{ name: "XPI Add-on 1 - First Translator" }, - { name: "XPI Add-on 1 - Second Translator" }], - contributors: [{ name: "XPI Add-on 1 - First Contributor" }, - { name: "XPI Add-on 1 - Second Contributor" }], - description: "XPI Add-on 1 - Description", - fullDescription: "Repo Add-on 1 - Full Description & some extra", - developerComments: "Repo Add-on 1\nDeveloper Comments", - eula: "Repo Add-on 1 - EULA", - iconURL: BASE_URL + "/xpi/1/icon.png", - icons: { "32": BASE_URL + "/xpi/1/icon.png" }, - homepageURL: BASE_URL + "/xpi/1/homepage.html", - supportURL: BASE_URL + "/repo/1/support.html", - optionsURL: BASE_URL + "/xpi/1/options.html", - aboutURL: BASE_URL + "/xpi/1/about.html", - contributionURL: BASE_URL + "/repo/1/meetDevelopers.html", - contributionAmount: "$11.11", - averageRating: 1, - reviewCount: 1111, - reviewURL: BASE_URL + "/repo/1/review.html", - totalDownloads: 2221, - weeklyDownloads: 3331, - dailyUsers: 4441, - sourceURI: NetUtil.newURI(ADDON_FILES[0]).spec, - repositoryStatus: 4, - compatibilityOverrides: [{ - type: "incompatible", - minVersion: 0.1, - maxVersion: 0.2, - appID: "xpcshell@tests.mozilla.org", - appMinVersion: 3.0, - appMaxVersion: 4.0 - }, { - type: "incompatible", - minVersion: 0.2, - maxVersion: 0.3, - appID: "xpcshell@tests.mozilla.org", - appMinVersion: 5.0, - appMaxVersion: 6.0 - }] -}, { - id: ADDON_IDS[1], - type: "theme", - name: "XPI Add-on 2", - version: "1.2", - sourceURI: NetUtil.newURI(ADDON_FILES[1]).spec, - icons: {} -}, { - id: ADDON_IDS[2], - type: "theme", - name: "XPI Add-on 3", - version: "1.3", - get iconURL () { - return get_subfile_uri(ADDON_IDS[2], "icon.png"); - }, - get icons () { - return { "32": get_subfile_uri(ADDON_IDS[2], "icon.png") }; - }, - screenshots: [{ get url () { return get_subfile_uri(ADDON_IDS[2], "preview.png"); } }], - sourceURI: NetUtil.newURI(ADDON_FILES[2]).spec -}]; - -var gDBFile = gProfD.clone(); -gDBFile.append(FILE_DATABASE); - -/* - * Check the actual add-on results against the expected add-on results - * - * @param aActualAddons - * The array of actual add-ons to check - * @param aExpectedAddons - * The array of expected add-ons to check against - * @param aFromRepository - * An optional boolean representing if the add-ons are from - * the repository - */ -function check_results(aActualAddons, aExpectedAddons, aFromRepository) { - aFromRepository = !!aFromRepository; - - do_check_addons(aActualAddons, aExpectedAddons, ADDON_PROPERTIES); - - // Separately test size and updateDate (they should only be equal to the - // REPOSITORY values if they are from the repository) - aActualAddons.forEach(function(aActualAddon) { - if (aActualAddon.size) - do_check_eq(aActualAddon.size === REPOSITORY_SIZE, aFromRepository); - - if (aActualAddon.updateDate) { - let time = aActualAddon.updateDate.getTime(); - do_check_eq(time === 1000 * REPOSITORY_UPDATEDATE, aFromRepository); - } - }); -} - -/* - * Check the add-ons in the cache. This function also tests - * AddonRepository.getCachedAddonByID() - * - * @param aExpectedToFind - * An array of booleans representing which REPOSITORY_ADDONS are - * expected to be found in the cache - * @param aExpectedImmediately - * A boolean representing if results from the cache are expected - * immediately. Results are not immediate if the cache has not been - * initialized yet. - * @return Promise{null} - * Resolves once the checks are complete - */ -function check_cache(aExpectedToFind, aExpectedImmediately) { - do_check_eq(aExpectedToFind.length, REPOSITORY_ADDONS.length); - - let lookups = []; - - for (let i = 0 ; i < REPOSITORY_ADDONS.length ; i++) { - lookups.push(new Promise((resolve, reject) => { - let immediatelyFound = true; - let expected = aExpectedToFind[i] ? REPOSITORY_ADDONS[i] : null; - // can't Promise-wrap this because we're also testing whether the callback is - // sync or async - AddonRepository.getCachedAddonByID(REPOSITORY_ADDONS[i].id, function(aAddon) { - do_check_eq(immediatelyFound, aExpectedImmediately); - if (expected == null) - do_check_eq(aAddon, null); - else - check_results([aAddon], [expected], true); - resolve(); - }); - immediatelyFound = false; - })); - } - return Promise.all(lookups); -} - -/* - * Task to check an initialized cache by checking the cache, then restarting the - * manager, and checking the cache. This checks that the cache is consistent - * across manager restarts. - * - * @param aExpectedToFind - * An array of booleans representing which REPOSITORY_ADDONS are - * expected to be found in the cache - */ -function* check_initialized_cache(aExpectedToFind) { - yield check_cache(aExpectedToFind, true); - yield promiseRestartManager(); - - // If cache is disabled, then expect results immediately - let cacheEnabled = Services.prefs.getBoolPref(PREF_GETADDONS_CACHE_ENABLED); - yield check_cache(aExpectedToFind, !cacheEnabled); -} - -function run_test() { - run_next_test(); -} - -add_task(function* setup() { - // Setup for test - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - startupManager(); - - // Install XPI add-ons - yield promiseInstallAllFiles(ADDON_FILES); - yield promiseRestartManager(); - - gServer = createHttpServer(PORT); - gServer.registerDirectory("/data/", do_get_file("data")); -}); - -// Tests AddonRepository.cacheEnabled -add_task(function* run_test_1() { - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, false); - do_check_false(AddonRepository.cacheEnabled); - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - do_check_true(AddonRepository.cacheEnabled); -}); - -// Tests that the cache and database begin as empty -add_task(function* run_test_2() { - do_check_false(gDBFile.exists()); - yield check_cache([false, false, false], false); - yield AddonRepository.flush(); -}); - -// Tests repopulateCache when the search fails -add_task(function* run_test_3() { - do_check_true(gDBFile.exists()); - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_FAILED); - - yield AddonRepository.repopulateCache(); - yield check_initialized_cache([false, false, false]); -}); - -// Tests repopulateCache when search returns no results -add_task(function* run_test_4() { - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_EMPTY); - - yield AddonRepository.repopulateCache(); - yield check_initialized_cache([false, false, false]); -}); - -// Tests repopulateCache when search returns results -add_task(function* run_test_5() { - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_RESULTS); - - yield AddonRepository.repopulateCache(); - yield check_initialized_cache([true, true, true]); -}); - -// Tests repopulateCache when caching is disabled for a single add-on -add_task(function* run_test_5_1() { - Services.prefs.setBoolPref(PREF_ADDON0_CACHE_ENABLED, false); - - yield AddonRepository.repopulateCache(); - - // Reset pref for next test - Services.prefs.setBoolPref(PREF_ADDON0_CACHE_ENABLED, true); - - yield check_initialized_cache([false, true, true]); -}); - -// Tests repopulateCache when caching is disabled -add_task(function* run_test_6() { - do_check_true(gDBFile.exists()); - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, false); - - yield AddonRepository.repopulateCache(); - // Database should have been deleted - do_check_false(gDBFile.exists()); - - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - yield check_cache([false, false, false], false); - yield AddonRepository.flush(); -}); - -// Tests cacheAddons when the search fails -add_task(function* run_test_7() { - do_check_true(gDBFile.exists()); - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_FAILED); - - yield new Promise((resolve, reject) => - AddonRepository.cacheAddons(ADDON_IDS, resolve)); - yield check_initialized_cache([false, false, false]); -}); - -// Tests cacheAddons when the search returns no results -add_task(function* run_test_8() { - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_EMPTY); - - yield new Promise((resolve, reject) => - AddonRepository.cacheAddons(ADDON_IDS, resolve)); - yield check_initialized_cache([false, false, false]); -}); - -// Tests cacheAddons for a single add-on when search returns results -add_task(function* run_test_9() { - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_RESULTS); - - yield new Promise((resolve, reject) => - AddonRepository.cacheAddons([ADDON_IDS[0]], resolve)); - yield check_initialized_cache([true, false, false]); -}); - -// Tests cacheAddons when caching is disabled for a single add-on -add_task(function* run_test_9_1() { - Services.prefs.setBoolPref(PREF_ADDON1_CACHE_ENABLED, false); - - yield new Promise((resolve, reject) => - AddonRepository.cacheAddons(ADDON_IDS, resolve)); - - // Reset pref for next test - Services.prefs.setBoolPref(PREF_ADDON1_CACHE_ENABLED, true); - - yield check_initialized_cache([true, false, true]); -}); - -// Tests cacheAddons for multiple add-ons, some already in the cache, -add_task(function* run_test_10() { - yield new Promise((resolve, reject) => - AddonRepository.cacheAddons(ADDON_IDS, resolve)); - yield check_initialized_cache([true, true, true]); -}); - -// Tests cacheAddons when caching is disabled -add_task(function* run_test_11() { - do_check_true(gDBFile.exists()); - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, false); - - yield new Promise((resolve, reject) => - AddonRepository.cacheAddons(ADDON_IDS, resolve)); - do_check_true(gDBFile.exists()); - - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - yield check_initialized_cache([true, true, true]); -}); - -// Tests that XPI add-ons do not use any of the repository properties if -// caching is disabled, even if there are repository properties available -add_task(function* run_test_12() { - do_check_true(gDBFile.exists()); - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, false); - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_RESULTS); - - let aAddons = yield promiseAddonsByIDs(ADDON_IDS); - check_results(aAddons, WITHOUT_CACHE); -}); - -// Tests that a background update with caching disabled deletes the add-ons -// database, and that XPI add-ons still do not use any of repository properties -add_task(function* run_test_13() { - do_check_true(gDBFile.exists()); - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS_PERFORMANCE, GETADDONS_EMPTY); - - yield AddonManagerInternal.backgroundUpdateCheck(); - // Database should have been deleted - do_check_false(gDBFile.exists()); - - let aAddons = yield promiseAddonsByIDs(ADDON_IDS); - check_results(aAddons, WITHOUT_CACHE); -}); - -// Tests that the XPI add-ons have the correct properties if caching is -// enabled but has no information -add_task(function* run_test_14() { - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - - yield AddonManagerInternal.backgroundUpdateCheck(); - yield AddonRepository.flush(); - do_check_true(gDBFile.exists()); - - let aAddons = yield promiseAddonsByIDs(ADDON_IDS); - check_results(aAddons, WITHOUT_CACHE); -}); - -// Tests that the XPI add-ons correctly use the repository properties when -// caching is enabled and the repository information is available -add_task(function* run_test_15() { - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS_PERFORMANCE, GETADDONS_RESULTS); - - yield AddonManagerInternal.backgroundUpdateCheck(); - let aAddons = yield promiseAddonsByIDs(ADDON_IDS); - check_results(aAddons, WITH_CACHE); -}); - -// Tests that restarting the manager does not change the checked properties -// on the XPI add-ons (repository properties still exist and are still properly -// used) -add_task(function* run_test_16() { - yield promiseRestartManager(); - - let aAddons = yield promiseAddonsByIDs(ADDON_IDS); - check_results(aAddons, WITH_CACHE); -}); - -// Tests that setting a list of types to cache works -add_task(function* run_test_17() { - Services.prefs.setCharPref(PREF_GETADDONS_CACHE_TYPES, "foo,bar,extension,baz"); - - yield AddonManagerInternal.backgroundUpdateCheck(); - let aAddons = yield promiseAddonsByIDs(ADDON_IDS); - check_results(aAddons, WITH_EXTENSION_CACHE); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_AddonRepository_compatmode.js b/toolkit/mozapps/webextensions/test/xpcshell/test_AddonRepository_compatmode.js deleted file mode 100644 index 6aec96ea1..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_AddonRepository_compatmode.js +++ /dev/null @@ -1,90 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that AddonRepository correctly fills in the -// %COMPATIBILITY_MODE% token in the Search API URL. - -const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url"; - -Components.utils.import("resource://testing-common/httpd.js"); -var gServer = new HttpServer(); -gServer.start(-1); -gPort = gServer.identity.primaryPort; -var COMPATIBILITY_PREF; - -// register static files with server and interpolate port numbers in them -mapFile("/data/test_AddonRepository_compatmode_ignore.xml", gServer); -mapFile("/data/test_AddonRepository_compatmode_normal.xml", gServer); -mapFile("/data/test_AddonRepository_compatmode_strict.xml", gServer); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, - "http://localhost:" + gPort + "/data/test_AddonRepository_compatmode_%COMPATIBILITY_MODE%.xml"); - startupManager(); - run_test_1(); -} - -function end_test() { - gServer.stop(do_test_finished); -} - -// Strict compatibility checking disabled. -function run_test_1() { - do_print("Testing with strict compatibility checking disabled"); - Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); - - AddonRepository.searchAddons("test", 6, { - searchSucceeded: function(aAddons) { - do_check_neq(aAddons, null); - do_check_eq(aAddons.length, 1); - do_check_eq(aAddons[0].id, "compatmode-normal@tests.mozilla.org"); - - run_test_2(); - }, - searchFailed: function() { - do_throw("Search should not have failed"); - } - }); -} - -// Strict compatibility checking enabled. -function run_test_2() { - do_print("Testing with strict compatibility checking enabled"); - Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true); - - AddonRepository.searchAddons("test", 6, { - searchSucceeded: function(aAddons) { - do_check_neq(aAddons, null); - do_check_eq(aAddons.length, 1); - do_check_eq(aAddons[0].id, "compatmode-strict@tests.mozilla.org"); - - run_test_3(); - }, - searchFailed: function() { - do_throw("Search should not have failed"); - } - }); -} - -// Compatibility checking disabled. -function run_test_3() { - do_print("Testing with all compatibility checking disabled"); - AddonManager.checkCompatibility = false; - - AddonRepository.searchAddons("test", 6, { - searchSucceeded: function(aAddons) { - do_check_neq(aAddons, null); - do_check_eq(aAddons.length, 1); - do_check_eq(aAddons[0].id, "compatmode-ignore@tests.mozilla.org"); - - end_test(); - }, - searchFailed: function() { - do_throw("Search should not have failed"); - } - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_ChromeManifestParser.js b/toolkit/mozapps/webextensions/test/xpcshell/test_ChromeManifestParser.js deleted file mode 100644 index 605c4224b..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_ChromeManifestParser.js +++ /dev/null @@ -1,108 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests ChromeManifestParser.js - -Components.utils.import("resource://gre/modules/ChromeManifestParser.jsm"); - - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - startupManager(); - - installAllFiles([do_get_addon("test_chromemanifest_1"), - do_get_addon("test_chromemanifest_2"), - do_get_addon("test_chromemanifest_3"), - do_get_addon("test_chromemanifest_4")], - function() { - - restartManager(); - run_test_1(); - }); -} - -function run_test_1() { - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org"], - function([a1, a2, a3, a4]) { - // addon1 - let a1Uri = a1.getResourceURI("/").spec; - let expected = [ - {type: "content", baseURI: a1Uri, args: ["test-addon-1", "chrome/content"]}, - {type: "locale", baseURI: a1Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, - {type: "locale", baseURI: a1Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, - {type: "overlay", baseURI: a1Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]} - ]; - let manifestURI = a1.getResourceURI("chrome.manifest"); - let manifest = ChromeManifestParser.parseSync(manifestURI); - - do_check_true(Array.isArray(manifest)); - do_check_eq(manifest.length, expected.length); - for (let i = 0; i < manifest.length; i++) { - do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); - } - - // addon2 - let a2Uri = a2.getResourceURI("/").spec; - expected = [ - {type: "content", baseURI: a2Uri, args: ["test-addon-1", "chrome/content"]}, - {type: "locale", baseURI: a2Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, - {type: "locale", baseURI: a2Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, - {type: "overlay", baseURI: a2Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]}, - {type: "binary-component", baseURI: a2Uri, args: ["components/something.so"]} - ]; - manifestURI = a2.getResourceURI("chrome.manifest"); - manifest = ChromeManifestParser.parseSync(manifestURI); - - do_check_true(Array.isArray(manifest)); - do_check_eq(manifest.length, expected.length); - for (let i = 0; i < manifest.length; i++) { - do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); - } - - // addon3 - let a3Uri = a3.getResourceURI("/").spec; - expected = [ - {type: "content", baseURI: a3Uri, args: ["test-addon-1", "chrome/content"]}, - {type: "locale", baseURI: a3Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, - {type: "locale", baseURI: a3Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, - {type: "overlay", baseURI: a3Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]}, - {type: "binary-component", baseURI: a3Uri, args: ["components/something.so"]}, - {type: "locale", baseURI: "jar:" + a3.getResourceURI("/inner.jar").spec + "!/", args: ["test-addon-1", "en-NZ", "locale/en-NZ"]}, - ]; - manifestURI = a3.getResourceURI("chrome.manifest"); - manifest = ChromeManifestParser.parseSync(manifestURI); - - do_check_true(Array.isArray(manifest)); - do_check_eq(manifest.length, expected.length); - for (let i = 0; i < manifest.length; i++) { - do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); - } - - // addon4 - let a4Uri = a4.getResourceURI("/").spec; - expected = [ - {type: "content", baseURI: a4Uri, args: ["test-addon-1", "chrome/content"]}, - {type: "locale", baseURI: a4Uri, args: ["test-addon-1", "en-US", "locale/en-US"]}, - {type: "locale", baseURI: a4Uri, args: ["test-addon-1", "fr-FR", "locale/fr-FR"]}, - {type: "overlay", baseURI: a4Uri, args: ["chrome://browser/content/browser.xul", "chrome://test-addon-1/content/overlay.xul"]}, - {type: "binary-component", baseURI: a4.getResourceURI("components/").spec, args: ["mycomponent.dll"]}, - {type: "binary-component", baseURI: a4.getResourceURI("components/other/").spec, args: ["thermalnuclearwar.dll"]} - ]; - manifestURI = a4.getResourceURI("chrome.manifest"); - manifest = ChromeManifestParser.parseSync(manifestURI); - - do_check_true(Array.isArray(manifest)); - do_check_eq(manifest.length, expected.length); - for (let i = 0; i < manifest.length; i++) { - do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); - } - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_DeferredSave.js b/toolkit/mozapps/webextensions/test/xpcshell/test_DeferredSave.js deleted file mode 100644 index 2a6ff291e..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_DeferredSave.js +++ /dev/null @@ -1,549 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Test behaviour of module to perform deferred save of data -// files to disk - -"use strict"; - -const testFile = gProfD.clone(); -testFile.append("DeferredSaveTest"); - -Components.utils.import("resource://gre/modules/Promise.jsm"); - -var DSContext = Components.utils.import("resource://gre/modules/DeferredSave.jsm", {}); -var DeferredSave = DSContext.DeferredSave; - -// Test wrapper to let us do promise/task based testing of DeferredSave -function DeferredSaveTester(aDataProvider) { - let tester = { - // Deferred for the promise returned by the mock writeAtomic - waDeferred: null, - - // The most recent data "written" by the mock OS.File.writeAtomic - writtenData: undefined, - - dataToSave: "Data to save", - - save: (aData, aWriteHandler) => { - tester.writeHandler = aWriteHandler || writer; - tester.dataToSave = aData; - return tester.saver.saveChanges(); - }, - - flush: (aWriteHandler) => { - tester.writeHandler = aWriteHandler || writer; - return tester.saver.flush(); - }, - - get lastError() { - return tester.saver.lastError; - } - }; - - // Default write handler for most cases where the test case doesn't need - // to do anything while the write is in progress; just completes the write - // on the next event loop - function writer(aTester) { - do_print("default write callback"); - let length = aTester.writtenData.length; - do_execute_soon(() => aTester.waDeferred.resolve(length)); - } - - if (!aDataProvider) - aDataProvider = () => tester.dataToSave; - - tester.saver = new DeferredSave(testFile.path, aDataProvider); - - // Install a mock for OS.File.writeAtomic to let us control the async - // behaviour of the promise - DSContext.OS.File.writeAtomic = function mock_writeAtomic(aFile, aData, aOptions) { - do_print("writeAtomic: " + aFile + " data: '" + aData + "', " + aOptions.toSource()); - tester.writtenData = aData; - tester.waDeferred = Promise.defer(); - tester.writeHandler(tester); - return tester.waDeferred.promise; - }; - - return tester; -} - -/** - * Install a mock nsITimer factory that triggers on the next spin of - * the event loop after it is scheduled - */ -function setQuickMockTimer() { - let quickTimer = { - initWithCallback: function(aFunction, aDelay, aType) { - do_print("Starting quick timer, delay = " + aDelay); - do_execute_soon(aFunction); - }, - cancel: function() { - do_throw("Attempted to cancel a quickMockTimer"); - } - }; - DSContext.MakeTimer = () => { - do_print("Creating quick timer"); - return quickTimer; - }; -} - -/** - * Install a mock nsITimer factory in DeferredSave.jsm, returning a promise that resolves - * when the client code sets the timer. Test cases can use this to wait for client code to - * be ready for a timer event, and then signal the event by calling mockTimer.callback(). - * This could use some enhancement; clients can re-use the returned timer, - * but with this implementation it's not possible for the test to wait for - * a second call to initWithCallback() on the re-used timer. - * @return Promise{mockTimer} that resolves when initWithCallback() - * is called - */ -function setPromiseMockTimer() { - let waiter = Promise.defer(); - let mockTimer = { - callback: null, - delay: null, - type: null, - isCancelled: false, - - initWithCallback: function(aFunction, aDelay, aType) { - do_print("Starting timer, delay = " + aDelay); - this.callback = aFunction; - this.delay = aDelay; - this.type = aType; - // cancelled timers can be re-used - this.isCancelled = false; - waiter.resolve(this); - }, - cancel: function() { - do_print("Cancelled mock timer"); - this.callback = null; - this.delay = null; - this.type = null; - this.isCancelled = true; - // If initWithCallback was never called, resolve to let tests check for cancel - waiter.resolve(this); - } - }; - DSContext.MakeTimer = () => { - do_print("Creating mock timer"); - return mockTimer; - }; - return waiter.promise; -} - -/** - * Return a Promise<null> that resolves after the specified number of milliseconds - */ -function delay(aDelayMS) { - let deferred = Promise.defer(); - do_timeout(aDelayMS, () => deferred.resolve(null)); - return deferred.promise; -} - -function run_test() { - run_next_test(); -} - -// Modify set data once, ask for save, make sure it saves cleanly -add_task(function* test_basic_save_succeeds() { - setQuickMockTimer(); - let tester = DeferredSaveTester(); - let data = "Test 1 Data"; - - yield tester.save(data); - do_check_eq(tester.writtenData, data); - do_check_eq(1, tester.saver.totalSaves); -}); - -// Two saves called during the same event loop, both with callbacks -// Make sure we save only the second version of the data -add_task(function* test_two_saves() { - setQuickMockTimer(); - let tester = DeferredSaveTester(); - let firstCallback_happened = false; - let firstData = "Test first save"; - let secondData = "Test second save"; - - // first save should not resolve until after the second one is called, - // so we can't just yield this promise - tester.save(firstData).then(count => { - do_check_eq(secondData, tester.writtenData); - do_check_false(firstCallback_happened); - firstCallback_happened = true; - }, do_report_unexpected_exception); - - yield tester.save(secondData); - do_check_true(firstCallback_happened); - do_check_eq(secondData, tester.writtenData); - do_check_eq(1, tester.saver.totalSaves); -}); - -// Two saves called with a delay in between, both with callbacks -// Make sure we save the second version of the data -add_task(function* test_two_saves_delay() { - let timerPromise = setPromiseMockTimer(); - let tester = DeferredSaveTester(); - let firstCallback_happened = false; - let delayDone = false; - - let firstData = "First data to save with delay"; - let secondData = "Modified data to save with delay"; - - tester.save(firstData).then(count => { - do_check_false(firstCallback_happened); - do_check_true(delayDone); - do_check_eq(secondData, tester.writtenData); - firstCallback_happened = true; - }, do_report_unexpected_exception); - - // Wait a short time to let async events possibly spawned by the - // first tester.save() to run - yield delay(2); - delayDone = true; - // request to save modified data - let saving = tester.save(secondData); - // Yield to wait for client code to set the timer - let activeTimer = yield timerPromise; - // and then trigger it - activeTimer.callback(); - // now wait for the DeferredSave to finish saving - yield saving; - do_check_true(firstCallback_happened); - do_check_eq(secondData, tester.writtenData); - do_check_eq(1, tester.saver.totalSaves); - do_check_eq(0, tester.saver.overlappedSaves); -}); - -// Test case where OS.File immediately reports an error when the write begins -// Also check that the "error" getter correctly returns the error -// Then do a write that succeeds, and make sure the error is cleared -add_task(function* test_error_immediate() { - let tester = DeferredSaveTester(); - let testError = new Error("Forced failure"); - function writeFail(aTester) { - aTester.waDeferred.reject(testError); - } - - setQuickMockTimer(); - yield tester.save("test_error_immediate", writeFail).then( - count => do_throw("Did not get expected error"), - error => do_check_eq(testError.message, error.message) - ); - do_check_eq(testError, tester.lastError); - - // This write should succeed and clear the error - yield tester.save("test_error_immediate succeeds"); - do_check_eq(null, tester.lastError); - // The failed save attempt counts in our total - do_check_eq(2, tester.saver.totalSaves); -}); - -// Save one set of changes, then while the write is in progress, modify the -// data two more times. Test that we re-write the dirty data exactly once -// after the first write succeeds -add_task(function* dirty_while_writing() { - let tester = DeferredSaveTester(); - let firstData = "First data"; - let secondData = "Second data"; - let thirdData = "Third data"; - let firstCallback_happened = false; - let secondCallback_happened = false; - let writeStarted = Promise.defer(); - - function writeCallback(aTester) { - writeStarted.resolve(aTester.waDeferred); - } - - setQuickMockTimer(); - do_print("First save"); - tester.save(firstData, writeCallback).then( - count => { - do_check_false(firstCallback_happened); - do_check_false(secondCallback_happened); - do_check_eq(tester.writtenData, firstData); - firstCallback_happened = true; - }, do_report_unexpected_exception); - - do_print("waiting for writer"); - let writer = yield writeStarted.promise; - do_print("Write started"); - - // Delay a bit, modify the data and call saveChanges, delay a bit more, - // modify the data and call saveChanges again, another delay, - // then complete the in-progress write - yield delay(1); - - tester.save(secondData).then( - count => { - do_check_true(firstCallback_happened); - do_check_false(secondCallback_happened); - do_check_eq(tester.writtenData, thirdData); - secondCallback_happened = true; - }, do_report_unexpected_exception); - - // wait and then do the third change - yield delay(1); - let thirdWrite = tester.save(thirdData); - - // wait a bit more and then finally finish the first write - yield delay(1); - writer.resolve(firstData.length); - - // Now let everything else finish - yield thirdWrite; - do_check_true(firstCallback_happened); - do_check_true(secondCallback_happened); - do_check_eq(tester.writtenData, thirdData); - do_check_eq(2, tester.saver.totalSaves); - do_check_eq(1, tester.saver.overlappedSaves); -}); - -// A write callback for the OS.File.writeAtomic mock that rejects write attempts -function disabled_write_callback(aTester) { - do_throw("Should not have written during clean flush"); -} - -// special write callback that disables itself to make sure -// we don't try to write twice -function write_then_disable(aTester) { - do_print("write_then_disable"); - let length = aTester.writtenData.length; - aTester.writeHandler = disabled_write_callback; - do_execute_soon(() => aTester.waDeferred.resolve(length)); -} - -// Flush tests. First, do an ordinary clean save and then call flush; -// there should not be another save -add_task(function* flush_after_save() { - setQuickMockTimer(); - let tester = DeferredSaveTester(); - let dataToSave = "Flush after save"; - - yield tester.save(dataToSave); - yield tester.flush(disabled_write_callback); - do_check_eq(1, tester.saver.totalSaves); -}); - -// Flush while a write is in progress, but the in-memory data is clean -add_task(function* flush_during_write() { - let tester = DeferredSaveTester(); - let dataToSave = "Flush during write"; - let firstCallback_happened = false; - let writeStarted = Promise.defer(); - - function writeCallback(aTester) { - writeStarted.resolve(aTester.waDeferred); - } - - setQuickMockTimer(); - tester.save(dataToSave, writeCallback).then( - count => { - do_check_false(firstCallback_happened); - firstCallback_happened = true; - }, do_report_unexpected_exception); - - let writer = yield writeStarted.promise; - - // call flush with the write callback disabled, delay a bit more, complete in-progress write - let flushing = tester.flush(disabled_write_callback); - yield delay(2); - writer.resolve(dataToSave.length); - - // now wait for the flush to finish - yield flushing; - do_check_true(firstCallback_happened); - do_check_eq(1, tester.saver.totalSaves); -}); - -// Flush while dirty but write not in progress -// The data written should be the value at the time -// flush() is called, even if it is changed later -add_task(function* flush_while_dirty() { - let timerPromise = setPromiseMockTimer(); - let tester = DeferredSaveTester(); - let firstData = "Flush while dirty, valid data"; - let firstCallback_happened = false; - - tester.save(firstData, write_then_disable).then( - count => { - do_check_false(firstCallback_happened); - firstCallback_happened = true; - do_check_eq(tester.writtenData, firstData); - }, do_report_unexpected_exception); - - // Wait for the timer to be set, but don't trigger it so the write won't start - let activeTimer = yield timerPromise; - - let flushing = tester.flush(); - - // Make sure the timer was cancelled - do_check_true(activeTimer.isCancelled); - - // Also make sure that data changed after the flush call - // (even without a saveChanges() call) doesn't get written - tester.dataToSave = "Flush while dirty, invalid data"; - - yield flushing; - do_check_true(firstCallback_happened); - do_check_eq(tester.writtenData, firstData); - do_check_eq(1, tester.saver.totalSaves); -}); - -// And the grand finale - modify the data, start writing, -// modify the data again so we're in progress and dirty, -// then flush, then modify the data again -// Data for the second write should be taken at the time -// flush() is called, even if it is modified later -add_task(function* flush_writing_dirty() { - let timerPromise = setPromiseMockTimer(); - let tester = DeferredSaveTester(); - let firstData = "Flush first pass data"; - let secondData = "Flush second pass data"; - let firstCallback_happened = false; - let secondCallback_happened = false; - let writeStarted = Promise.defer(); - - function writeCallback(aTester) { - writeStarted.resolve(aTester.waDeferred); - } - - tester.save(firstData, writeCallback).then( - count => { - do_check_false(firstCallback_happened); - do_check_eq(tester.writtenData, firstData); - firstCallback_happened = true; - }, do_report_unexpected_exception); - - // Trigger the timer callback as soon as the DeferredSave sets it - let activeTimer = yield timerPromise; - activeTimer.callback(); - let writer = yield writeStarted.promise; - // the first write has started - - // dirty the data and request another save - // after the second save completes, there should not be another write - tester.save(secondData, write_then_disable).then( - count => { - do_check_true(firstCallback_happened); - do_check_false(secondCallback_happened); - do_check_eq(tester.writtenData, secondData); - secondCallback_happened = true; - }, do_report_unexpected_exception); - - let flushing = tester.flush(write_then_disable); - // Flush should have cancelled our timer - do_check_true(activeTimer.isCancelled); - tester.dataToSave = "Flush, invalid data: changed late"; - // complete the first write - writer.resolve(firstData.length); - // now wait for the second write / flush to complete - yield flushing; - do_check_true(firstCallback_happened); - do_check_true(secondCallback_happened); - do_check_eq(tester.writtenData, secondData); - do_check_eq(2, tester.saver.totalSaves); - do_check_eq(1, tester.saver.overlappedSaves); -}); - -// A data provider callback that throws an error the first -// time it is called, and a different error the second time -// so that tests can (a) make sure the promise is rejected -// with the error and (b) make sure the provider is only -// called once in case of error -const expectedDataError = "Failed to serialize data"; -var badDataError = null; -function badDataProvider() { - let err = new Error(badDataError); - badDataError = "badDataProvider called twice"; - throw err; -} - -// Handle cases where data provider throws -// First, throws during a normal save -add_task(function* data_throw() { - setQuickMockTimer(); - badDataError = expectedDataError; - let tester = DeferredSaveTester(badDataProvider); - yield tester.save("data_throw").then( - count => do_throw("Expected serialization failure"), - error => do_check_eq(error.message, expectedDataError)); -}); - -// Now, throws during flush -add_task(function* data_throw_during_flush() { - badDataError = expectedDataError; - let tester = DeferredSaveTester(badDataProvider); - let firstCallback_happened = false; - - setPromiseMockTimer(); - // Write callback should never be called - tester.save("data_throw_during_flush", disabled_write_callback).then( - count => do_throw("Expected serialization failure"), - error => { - do_check_false(firstCallback_happened); - do_check_eq(error.message, expectedDataError); - firstCallback_happened = true; - }); - - // flush() will cancel the timer - yield tester.flush(disabled_write_callback).then( - count => do_throw("Expected serialization failure"), - error => do_check_eq(error.message, expectedDataError) - ); - - do_check_true(firstCallback_happened); -}); - -// Try to reproduce race condition. The observed sequence of events: -// saveChanges -// start writing -// saveChanges -// finish writing (need to restart delayed timer) -// saveChanges -// flush -// write starts -// actually restart timer for delayed write -// write completes -// delayed timer goes off, throws error because DeferredSave has been torn down -add_task(function* delay_flush_race() { - let timerPromise = setPromiseMockTimer(); - let tester = DeferredSaveTester(); - let firstData = "First save"; - let secondData = "Second save"; - let thirdData = "Third save"; - let writeStarted = Promise.defer(); - - function writeCallback(aTester) { - writeStarted.resolve(aTester.waDeferred); - } - - // This promise won't resolve until after writeStarted - let firstSave = tester.save(firstData, writeCallback); - (yield timerPromise).callback(); - - let writer = yield writeStarted.promise; - // the first write has started - - // dirty the data and request another save - let secondSave = tester.save(secondData); - - // complete the first write - writer.resolve(firstData.length); - yield firstSave; - do_check_eq(tester.writtenData, firstData); - - tester.save(thirdData); - let flushing = tester.flush(); - - yield secondSave; - do_check_eq(tester.writtenData, thirdData); - - yield flushing; - do_check_eq(tester.writtenData, thirdData); - - // Our DeferredSave should not have a _timer here; if it - // does, the bug caused a reschedule - do_check_eq(null, tester.saver._timer); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_LightweightThemeManager.js b/toolkit/mozapps/webextensions/test/xpcshell/test_LightweightThemeManager.js deleted file mode 100644 index 61a46b251..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_LightweightThemeManager.js +++ /dev/null @@ -1,598 +0,0 @@ -var Cc = Components.classes; -var Ci = Components.interfaces; - -const MANDATORY = ["id", "name", "headerURL"]; -const OPTIONAL = ["footerURL", "textcolor", "accentcolor", "iconURL", - "previewURL", "author", "description", "homepageURL", - "updateURL", "version"]; - -Components.utils.import("resource://gre/modules/Services.jsm"); - -function dummy(id) { - return { - id: id || Math.random().toString(), - name: Math.random().toString(), - headerURL: "http://lwttest.invalid/a.png", - footerURL: "http://lwttest.invalid/b.png", - textcolor: Math.random().toString(), - accentcolor: Math.random().toString() - }; -} - -function hasPermission(aAddon, aPerm) { - var perm = AddonManager["PERM_CAN_" + aPerm.toUpperCase()]; - return !!(aAddon.permissions & perm); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - startupManager(); - - Services.prefs.setIntPref("lightweightThemes.maxUsedThemes", 8); - - let {LightweightThemeManager: ltm} = Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", {}); - - do_check_eq(typeof ltm, "object"); - do_check_eq(typeof ltm.usedThemes, "object"); - do_check_eq(ltm.usedThemes.length, 0); - do_check_eq(ltm.currentTheme, null); - - ltm.previewTheme(dummy("preview0")); - do_check_eq(ltm.usedThemes.length, 0); - do_check_eq(ltm.currentTheme, null); - - ltm.previewTheme(dummy("preview1")); - do_check_eq(ltm.usedThemes.length, 0); - do_check_eq(ltm.currentTheme, null); - ltm.resetPreview(); - - ltm.currentTheme = dummy("x0"); - do_check_eq(ltm.usedThemes.length, 1); - do_check_eq(ltm.currentTheme.id, "x0"); - do_check_eq(ltm.usedThemes[0].id, "x0"); - do_check_eq(ltm.getUsedTheme("x0").id, "x0"); - - ltm.previewTheme(dummy("preview0")); - do_check_eq(ltm.usedThemes.length, 1); - do_check_eq(ltm.currentTheme.id, "x0"); - - ltm.resetPreview(); - do_check_eq(ltm.usedThemes.length, 1); - do_check_eq(ltm.currentTheme.id, "x0"); - - ltm.currentTheme = dummy("x1"); - do_check_eq(ltm.usedThemes.length, 2); - do_check_eq(ltm.currentTheme.id, "x1"); - do_check_eq(ltm.usedThemes[1].id, "x0"); - - ltm.currentTheme = dummy("x2"); - do_check_eq(ltm.usedThemes.length, 3); - do_check_eq(ltm.currentTheme.id, "x2"); - do_check_eq(ltm.usedThemes[1].id, "x1"); - do_check_eq(ltm.usedThemes[2].id, "x0"); - - ltm.currentTheme = dummy("x3"); - ltm.currentTheme = dummy("x4"); - ltm.currentTheme = dummy("x5"); - ltm.currentTheme = dummy("x6"); - ltm.currentTheme = dummy("x7"); - do_check_eq(ltm.usedThemes.length, 8); - do_check_eq(ltm.currentTheme.id, "x7"); - do_check_eq(ltm.usedThemes[1].id, "x6"); - do_check_eq(ltm.usedThemes[7].id, "x0"); - - ltm.currentTheme = dummy("x8"); - do_check_eq(ltm.usedThemes.length, 8); - do_check_eq(ltm.currentTheme.id, "x8"); - do_check_eq(ltm.usedThemes[1].id, "x7"); - do_check_eq(ltm.usedThemes[7].id, "x1"); - do_check_eq(ltm.getUsedTheme("x0"), null); - - ltm.forgetUsedTheme("nonexistent"); - do_check_eq(ltm.usedThemes.length, 8); - do_check_neq(ltm.currentTheme, null); - - ltm.forgetUsedTheme("x8"); - do_check_eq(ltm.usedThemes.length, 7); - do_check_eq(ltm.currentTheme, null); - do_check_eq(ltm.usedThemes[0].id, "x7"); - do_check_eq(ltm.usedThemes[6].id, "x1"); - - ltm.forgetUsedTheme("x7"); - ltm.forgetUsedTheme("x6"); - ltm.forgetUsedTheme("x5"); - ltm.forgetUsedTheme("x4"); - ltm.forgetUsedTheme("x3"); - do_check_eq(ltm.usedThemes.length, 2); - do_check_eq(ltm.currentTheme, null); - do_check_eq(ltm.usedThemes[0].id, "x2"); - do_check_eq(ltm.usedThemes[1].id, "x1"); - - ltm.currentTheme = dummy("x1"); - do_check_eq(ltm.usedThemes.length, 2); - do_check_eq(ltm.currentTheme.id, "x1"); - do_check_eq(ltm.usedThemes[0].id, "x1"); - do_check_eq(ltm.usedThemes[1].id, "x2"); - - ltm.currentTheme = dummy("x2"); - do_check_eq(ltm.usedThemes.length, 2); - do_check_eq(ltm.currentTheme.id, "x2"); - do_check_eq(ltm.usedThemes[0].id, "x2"); - do_check_eq(ltm.usedThemes[1].id, "x1"); - - ltm.currentTheme = ltm.getUsedTheme("x1"); - do_check_eq(ltm.usedThemes.length, 2); - do_check_eq(ltm.currentTheme.id, "x1"); - do_check_eq(ltm.usedThemes[0].id, "x1"); - do_check_eq(ltm.usedThemes[1].id, "x2"); - - ltm.forgetUsedTheme("x1"); - ltm.forgetUsedTheme("x2"); - do_check_eq(ltm.usedThemes.length, 0); - do_check_eq(ltm.currentTheme, null); - - // Use chinese name to test utf-8, for bug #541943 - var chineseTheme = dummy("chinese0"); - chineseTheme.name = "笢恅0"; - chineseTheme.description = "笢恅1"; - ltm.currentTheme = chineseTheme; - do_check_eq(ltm.usedThemes.length, 1); - do_check_eq(ltm.currentTheme.name, "笢恅0"); - do_check_eq(ltm.currentTheme.description, "笢恅1"); - do_check_eq(ltm.usedThemes[0].name, "笢恅0"); - do_check_eq(ltm.usedThemes[0].description, "笢恅1"); - do_check_eq(ltm.getUsedTheme("chinese0").name, "笢恅0"); - do_check_eq(ltm.getUsedTheme("chinese0").description, "笢恅1"); - - // This name used to break the usedTheme JSON causing all LWTs to be lost - var chineseTheme1 = dummy("chinese1"); - chineseTheme1.name = "眵昜湮桵蔗坌~郔乾"; - chineseTheme1.description = "眵昜湮桵蔗坌~郔乾"; - ltm.currentTheme = chineseTheme1; - do_check_neq(ltm.currentTheme, null); - do_check_eq(ltm.usedThemes.length, 2); - do_check_eq(ltm.currentTheme.name, "眵昜湮桵蔗坌~郔乾"); - do_check_eq(ltm.currentTheme.description, "眵昜湮桵蔗坌~郔乾"); - do_check_eq(ltm.usedThemes[1].name, "笢恅0"); - do_check_eq(ltm.usedThemes[1].description, "笢恅1"); - do_check_eq(ltm.usedThemes[0].name, "眵昜湮桵蔗坌~郔乾"); - do_check_eq(ltm.usedThemes[0].description, "眵昜湮桵蔗坌~郔乾"); - - ltm.forgetUsedTheme("chinese0"); - do_check_eq(ltm.usedThemes.length, 1); - do_check_neq(ltm.currentTheme, null); - - ltm.forgetUsedTheme("chinese1"); - do_check_eq(ltm.usedThemes.length, 0); - do_check_eq(ltm.currentTheme, null); - - do_check_eq(ltm.parseTheme("invalid json"), null); - do_check_eq(ltm.parseTheme('"json string"'), null); - - function roundtrip(data, secure) { - return ltm.parseTheme(JSON.stringify(data), - "http" + (secure ? "s" : "") + "://lwttest.invalid/"); - } - - var data = dummy(); - do_check_neq(roundtrip(data), null); - data.id = null; - do_check_eq(roundtrip(data), null); - data.id = 1; - do_check_eq(roundtrip(data), null); - data.id = 1.5; - do_check_eq(roundtrip(data), null); - data.id = true; - do_check_eq(roundtrip(data), null); - data.id = {}; - do_check_eq(roundtrip(data), null); - data.id = []; - do_check_eq(roundtrip(data), null); - - // Check whether parseTheme handles international characters right - var chineseTheme2 = dummy(); - chineseTheme2.name = "眵昜湮桵蔗坌~郔乾"; - chineseTheme2.description = "眵昜湮桵蔗坌~郔乾"; - do_check_neq(roundtrip(chineseTheme2), null); - do_check_eq(roundtrip(chineseTheme2).name, "眵昜湮桵蔗坌~郔乾"); - do_check_eq(roundtrip(chineseTheme2).description, "眵昜湮桵蔗坌~郔乾"); - - data = dummy(); - data.unknownProperty = "Foo"; - do_check_eq(typeof roundtrip(data).unknownProperty, "undefined"); - - data = dummy(); - data.unknownURL = "http://lwttest.invalid/"; - do_check_eq(typeof roundtrip(data).unknownURL, "undefined"); - - function roundtripSet(props, modify, test, secure) { - props.forEach(function (prop) { - var theme = dummy(); - modify(theme, prop); - test(roundtrip(theme, secure), prop, theme); - }); - } - - roundtripSet(MANDATORY, function (theme, prop) { - delete theme[prop]; - }, function (after) { - do_check_eq(after, null); - }); - - roundtripSet(OPTIONAL, function (theme, prop) { - delete theme[prop]; - }, function (after) { - do_check_neq(after, null); - }); - - roundtripSet(MANDATORY, function (theme, prop) { - theme[prop] = ""; - }, function (after) { - do_check_eq(after, null); - }); - - roundtripSet(OPTIONAL, function (theme, prop) { - theme[prop] = ""; - }, function (after, prop) { - do_check_eq(typeof after[prop], "undefined"); - }); - - roundtripSet(MANDATORY, function (theme, prop) { - theme[prop] = " "; - }, function (after) { - do_check_eq(after, null); - }); - - roundtripSet(OPTIONAL, function (theme, prop) { - theme[prop] = " "; - }, function (after, prop) { - do_check_neq(after, null); - do_check_eq(typeof after[prop], "undefined"); - }); - - function non_urls(props) { - return props.filter(prop => !/URL$/.test(prop)); - } - - function urls(props) { - return props.filter(prop => /URL$/.test(prop)); - } - - roundtripSet(non_urls(MANDATORY.concat(OPTIONAL)), function (theme, prop) { - theme[prop] = prop; - }, function (after, prop, before) { - do_check_eq(after[prop], before[prop]); - }); - - roundtripSet(non_urls(MANDATORY.concat(OPTIONAL)), function (theme, prop) { - theme[prop] = " " + prop + " "; - }, function (after, prop, before) { - do_check_eq(after[prop], before[prop].trim()); - }); - - roundtripSet(urls(MANDATORY.concat(OPTIONAL)), function (theme, prop) { - theme[prop] = Math.random().toString(); - }, function (after, prop, before) { - if (prop == "updateURL") - do_check_eq(typeof after[prop], "undefined"); - else - do_check_eq(after[prop], "http://lwttest.invalid/" + before[prop]); - }); - - roundtripSet(urls(MANDATORY.concat(OPTIONAL)), function (theme, prop) { - theme[prop] = Math.random().toString(); - }, function (after, prop, before) { - do_check_eq(after[prop], "https://lwttest.invalid/" + before[prop]); - }, true); - - roundtripSet(urls(MANDATORY.concat(OPTIONAL)), function (theme, prop) { - theme[prop] = "https://sub.lwttest.invalid/" + Math.random().toString(); - }, function (after, prop, before) { - do_check_eq(after[prop], before[prop]); - }); - - roundtripSet(urls(MANDATORY), function (theme, prop) { - theme[prop] = "ftp://lwttest.invalid/" + Math.random().toString(); - }, function (after) { - do_check_eq(after, null); - }); - - roundtripSet(urls(OPTIONAL), function (theme, prop) { - theme[prop] = "ftp://lwttest.invalid/" + Math.random().toString(); - }, function (after, prop) { - do_check_eq(typeof after[prop], "undefined"); - }); - - do_check_eq(ltm.usedThemes.length, 0); - do_check_eq(ltm.currentTheme, null); - - data = dummy(); - delete data.name; - try { - ltm.currentTheme = data; - do_throw("Should have rejected a theme with no name"); - } - catch (e) { - // Expected exception - } - - data = dummy(); - data.headerURL = "foo"; - try { - ltm.currentTheme = data; - do_throw("Should have rejected a theme with a bad headerURL"); - } - catch (e) { - // Expected exception - } - - data = dummy(); - data.headerURL = "ftp://lwtest.invalid/test.png"; - try { - ltm.currentTheme = data; - do_throw("Should have rejected a theme with a non-http(s) headerURL"); - } - catch (e) { - // Expected exception - } - - data = dummy(); - data.headerURL = "file:///test.png"; - try { - ltm.currentTheme = data; - do_throw("Should have rejected a theme with a non-http(s) headerURL"); - } - catch (e) { - // Expected exception - } - - data = dummy(); - data.updateURL = "file:///test.json"; - ltm.setLocalTheme(data); - do_check_eq(ltm.usedThemes.length, 1); - do_check_eq(ltm.currentTheme.updateURL, undefined); - ltm.forgetUsedTheme(ltm.currentTheme.id); - do_check_eq(ltm.usedThemes.length, 0); - - data = dummy(); - data.headerURL = "file:///test.png"; - ltm.setLocalTheme(data); - do_check_eq(ltm.usedThemes.length, 1); - do_check_eq(ltm.currentTheme.headerURL, "file:///test.png"); - ltm.forgetUsedTheme(ltm.currentTheme.id); - do_check_eq(ltm.usedThemes.length, 0); - - data = dummy(); - data.headerURL = "ftp://lwtest.invalid/test.png"; - try { - ltm.setLocalTheme(data); - do_throw("Should have rejected a theme with a non-http(s), non-file headerURL"); - } - catch (e) { - // Expected exception - } - - data = dummy(); - delete data.id; - try { - ltm.currentTheme = data; - do_throw("Should have rejected a theme with no ID"); - } - catch (e) { - // Expected exception - } - - do_check_eq(ltm.usedThemes.length, 0); - do_check_eq(ltm.currentTheme, null); - - // Force the theme into the prefs anyway - let prefs = Cc["@mozilla.org/preferences-service;1"]. - getService(Ci.nsIPrefBranch); - let themes = [data]; - prefs.setCharPref("lightweightThemes.usedThemes", JSON.stringify(themes)); - do_check_eq(ltm.usedThemes.length, 1); - - // This should silently drop the bad theme. - ltm.currentTheme = dummy(); - do_check_eq(ltm.usedThemes.length, 1); - ltm.forgetUsedTheme(ltm.currentTheme.id); - do_check_eq(ltm.usedThemes.length, 0); - do_check_eq(ltm.currentTheme, null); - - // Add one broken and some working. - themes = [data, dummy("x1"), dummy("x2")]; - prefs.setCharPref("lightweightThemes.usedThemes", JSON.stringify(themes)); - do_check_eq(ltm.usedThemes.length, 3); - - // Switching to an existing theme should drop the bad theme. - ltm.currentTheme = ltm.getUsedTheme("x1"); - do_check_eq(ltm.usedThemes.length, 2); - ltm.forgetUsedTheme("x1"); - ltm.forgetUsedTheme("x2"); - do_check_eq(ltm.usedThemes.length, 0); - do_check_eq(ltm.currentTheme, null); - - prefs.setCharPref("lightweightThemes.usedThemes", JSON.stringify(themes)); - do_check_eq(ltm.usedThemes.length, 3); - - // Forgetting an existing theme should drop the bad theme. - ltm.forgetUsedTheme("x1"); - do_check_eq(ltm.usedThemes.length, 1); - ltm.forgetUsedTheme("x2"); - do_check_eq(ltm.usedThemes.length, 0); - do_check_eq(ltm.currentTheme, null); - - // Test whether a JSON set with setCharPref can be retrieved with usedThemes - ltm.currentTheme = dummy("x0"); - ltm.currentTheme = dummy("x1"); - prefs.setCharPref("lightweightThemes.usedThemes", JSON.stringify(ltm.usedThemes)); - do_check_eq(ltm.usedThemes.length, 2); - do_check_eq(ltm.currentTheme.id, "x1"); - do_check_eq(ltm.usedThemes[1].id, "x0"); - do_check_eq(ltm.usedThemes[0].id, "x1"); - - ltm.forgetUsedTheme("x0"); - do_check_eq(ltm.usedThemes.length, 1); - do_check_neq(ltm.currentTheme, null); - - ltm.forgetUsedTheme("x1"); - do_check_eq(ltm.usedThemes.length, 0); - do_check_eq(ltm.currentTheme, null); - - Services.prefs.clearUserPref("lightweightThemes.maxUsedThemes"); - - ltm.currentTheme = dummy("x1"); - ltm.currentTheme = dummy("x2"); - ltm.currentTheme = dummy("x3"); - ltm.currentTheme = dummy("x4"); - ltm.currentTheme = dummy("x5"); - ltm.currentTheme = dummy("x6"); - ltm.currentTheme = dummy("x7"); - ltm.currentTheme = dummy("x8"); - ltm.currentTheme = dummy("x9"); - ltm.currentTheme = dummy("x10"); - ltm.currentTheme = dummy("x11"); - ltm.currentTheme = dummy("x12"); - ltm.currentTheme = dummy("x13"); - ltm.currentTheme = dummy("x14"); - ltm.currentTheme = dummy("x15"); - ltm.currentTheme = dummy("x16"); - ltm.currentTheme = dummy("x17"); - ltm.currentTheme = dummy("x18"); - ltm.currentTheme = dummy("x19"); - ltm.currentTheme = dummy("x20"); - ltm.currentTheme = dummy("x21"); - ltm.currentTheme = dummy("x22"); - ltm.currentTheme = dummy("x23"); - ltm.currentTheme = dummy("x24"); - ltm.currentTheme = dummy("x25"); - ltm.currentTheme = dummy("x26"); - ltm.currentTheme = dummy("x27"); - ltm.currentTheme = dummy("x28"); - ltm.currentTheme = dummy("x29"); - ltm.currentTheme = dummy("x30"); - - do_check_eq(ltm.usedThemes.length, 30); - - ltm.currentTheme = dummy("x31"); - - do_check_eq(ltm.usedThemes.length, 30); - do_check_eq(ltm.getUsedTheme("x1"), null); - - Services.prefs.setIntPref("lightweightThemes.maxUsedThemes", 15); - - do_check_eq(ltm.usedThemes.length, 15); - - Services.prefs.setIntPref("lightweightThemes.maxUsedThemes", 32); - - ltm.currentTheme = dummy("x1"); - ltm.currentTheme = dummy("x2"); - ltm.currentTheme = dummy("x3"); - ltm.currentTheme = dummy("x4"); - ltm.currentTheme = dummy("x5"); - ltm.currentTheme = dummy("x6"); - ltm.currentTheme = dummy("x7"); - ltm.currentTheme = dummy("x8"); - ltm.currentTheme = dummy("x9"); - ltm.currentTheme = dummy("x10"); - ltm.currentTheme = dummy("x11"); - ltm.currentTheme = dummy("x12"); - ltm.currentTheme = dummy("x13"); - ltm.currentTheme = dummy("x14"); - ltm.currentTheme = dummy("x15"); - ltm.currentTheme = dummy("x16"); - - ltm.currentTheme = dummy("x32"); - - do_check_eq(ltm.usedThemes.length, 32); - - ltm.currentTheme = dummy("x33"); - - do_check_eq(ltm.usedThemes.length, 32); - - Services.prefs.clearUserPref("lightweightThemes.maxUsedThemes"); - - do_check_eq(ltm.usedThemes.length, 30); - - let usedThemes = ltm.usedThemes; - for (let theme of usedThemes) { - ltm.forgetUsedTheme(theme.id); - } - - // Check builtInTheme functionality for Bug 1094821 - do_check_eq(ltm._builtInThemes.toString(), "[object Map]"); - do_check_eq([...ltm._builtInThemes.entries()].length, 0); - do_check_eq(ltm.usedThemes.length, 0); - - ltm.addBuiltInTheme(dummy("builtInTheme0")); - do_check_eq([...ltm._builtInThemes].length, 1); - do_check_eq(ltm.usedThemes.length, 1); - do_check_eq(ltm.usedThemes[0].id, "builtInTheme0"); - - ltm.addBuiltInTheme(dummy("builtInTheme1")); - do_check_eq([...ltm._builtInThemes].length, 2); - do_check_eq(ltm.usedThemes.length, 2); - do_check_eq(ltm.usedThemes[1].id, "builtInTheme1"); - - // Clear all and then re-add - ltm.clearBuiltInThemes(); - do_check_eq([...ltm._builtInThemes].length, 0); - do_check_eq(ltm.usedThemes.length, 0); - - ltm.addBuiltInTheme(dummy("builtInTheme0")); - ltm.addBuiltInTheme(dummy("builtInTheme1")); - do_check_eq([...ltm._builtInThemes].length, 2); - do_check_eq(ltm.usedThemes.length, 2); - - do_test_pending(); - - AddonManager.getAddonByID("builtInTheme0@personas.mozilla.org", builtInThemeAddon => { - // App specific theme can't be uninstalled or disabled, - // but can be enabled (since it isn't already applied). - do_check_eq(hasPermission(builtInThemeAddon, "uninstall"), false); - do_check_eq(hasPermission(builtInThemeAddon, "disable"), false); - do_check_eq(hasPermission(builtInThemeAddon, "enable"), true); - - ltm.currentTheme = dummy("x0"); - do_check_eq([...ltm._builtInThemes].length, 2); - do_check_eq(ltm.usedThemes.length, 3); - do_check_eq(ltm.usedThemes[0].id, "x0"); - do_check_eq(ltm.currentTheme.id, "x0"); - do_check_eq(ltm.usedThemes[1].id, "builtInTheme0"); - do_check_eq(ltm.usedThemes[2].id, "builtInTheme1"); - - Assert.throws(() => { ltm.addBuiltInTheme(dummy("builtInTheme0")) }, - "Exception is thrown adding a duplicate theme"); - Assert.throws(() => { ltm.addBuiltInTheme("not a theme object") }, - "Exception is thrown adding an invalid theme"); - - AddonManager.getAddonByID("x0@personas.mozilla.org", x0Addon => { - // Currently applied (non-app-specific) can be uninstalled or disabled, - // but can't be enabled (since it's already applied). - do_check_eq(hasPermission(x0Addon, "uninstall"), true); - do_check_eq(hasPermission(x0Addon, "disable"), true); - do_check_eq(hasPermission(x0Addon, "enable"), false); - - ltm.forgetUsedTheme("x0"); - do_check_eq(ltm.currentTheme, null); - - // Removing the currently applied app specific theme should unapply it - ltm.currentTheme = ltm.getUsedTheme("builtInTheme0"); - do_check_eq(ltm.currentTheme.id, "builtInTheme0"); - do_check_true(ltm.forgetBuiltInTheme("builtInTheme0")); - do_check_eq(ltm.currentTheme, null); - - do_check_eq([...ltm._builtInThemes].length, 1); - do_check_eq(ltm.usedThemes.length, 1); - - do_check_true(ltm.forgetBuiltInTheme("builtInTheme1")); - do_check_false(ltm.forgetBuiltInTheme("not-an-existing-theme-id")); - - do_check_eq([...ltm._builtInThemes].length, 0); - do_check_eq(ltm.usedThemes.length, 0); - do_check_eq(ltm.currentTheme, null); - - do_test_finished(); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_ProductAddonChecker.js b/toolkit/mozapps/webextensions/test/xpcshell/test_ProductAddonChecker.js deleted file mode 100644 index 6c562db65..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_ProductAddonChecker.js +++ /dev/null @@ -1,244 +0,0 @@ -"use strict"; - -Components.utils.import("resource://gre/modules/addons/ProductAddonChecker.jsm"); -Components.utils.import("resource://testing-common/httpd.js"); -Components.utils.import("resource://gre/modules/osfile.jsm"); - -const LocalFile = new Components.Constructor("@mozilla.org/file/local;1", AM_Ci.nsIFile, "initWithPath"); - -var testserver = new HttpServer(); -testserver.registerDirectory("/data/", do_get_file("data/productaddons")); -testserver.start(); -var root = testserver.identity.primaryScheme + "://" + - testserver.identity.primaryHost + ":" + - testserver.identity.primaryPort + "/data/" - -/** - * Compares binary data of 2 arrays and returns true if they are the same - * - * @param arr1 The first array to compare - * @param arr2 The second array to compare -*/ -function compareBinaryData(arr1, arr2) { - do_check_eq(arr1.length, arr2.length); - for (let i = 0; i < arr1.length; i++) { - if (arr1[i] != arr2[i]) { - do_print("Data differs at index " + i + - ", arr1: " + arr1[i] + ", arr2: " + arr2[i]); - return false; - } - } - return true; -} - -/** - * Reads a file's data and returns it - * - * @param file The file to read the data from - * @return array of bytes for the data in the file. -*/ -function getBinaryFileData(file) { - let fileStream = AM_Cc["@mozilla.org/network/file-input-stream;1"]. - createInstance(AM_Ci.nsIFileInputStream); - // Open as RD_ONLY with default permissions. - fileStream.init(file, FileUtils.MODE_RDONLY, FileUtils.PERMS_FILE, 0); - - let stream = AM_Cc["@mozilla.org/binaryinputstream;1"]. - createInstance(AM_Ci.nsIBinaryInputStream); - stream.setInputStream(fileStream); - let bytes = stream.readByteArray(stream.available()); - fileStream.close(); - return bytes; -} - -/** - * Compares binary data of 2 files and returns true if they are the same - * - * @param file1 The first file to compare - * @param file2 The second file to compare -*/ -function compareFiles(file1, file2) { - return compareBinaryData(getBinaryFileData(file1), getBinaryFileData(file2)); -} - -add_task(function* test_404() { - let res = yield ProductAddonChecker.getProductAddonList(root + "404.xml"); - do_check_true(res.usedFallback); -}); - -add_task(function* test_not_xml() { - let res = yield ProductAddonChecker.getProductAddonList(root + "bad.txt"); - do_check_true(res.usedFallback); -}); - -add_task(function* test_invalid_xml() { - let res = yield ProductAddonChecker.getProductAddonList(root + "bad.xml"); - do_check_true(res.usedFallback); -}); - -add_task(function* test_wrong_xml() { - let res = yield ProductAddonChecker.getProductAddonList(root + "bad2.xml"); - do_check_true(res.usedFallback); -}); - -add_task(function* test_missing() { - let addons = yield ProductAddonChecker.getProductAddonList(root + "missing.xml"); - do_check_eq(addons, null); -}); - -add_task(function* test_empty() { - let res = yield ProductAddonChecker.getProductAddonList(root + "empty.xml"); - do_check_true(Array.isArray(res.gmpAddons)); - do_check_eq(res.gmpAddons.length, 0); -}); - -add_task(function* test_good_xml() { - let res = yield ProductAddonChecker.getProductAddonList(root + "good.xml"); - do_check_true(Array.isArray(res.gmpAddons)); - - // There are three valid entries in the XML - do_check_eq(res.gmpAddons.length, 5); - - let addon = res.gmpAddons[0]; - do_check_eq(addon.id, "test1"); - do_check_eq(addon.URL, "http://example.com/test1.xpi"); - do_check_eq(addon.hashFunction, undefined); - do_check_eq(addon.hashValue, undefined); - do_check_eq(addon.version, undefined); - do_check_eq(addon.size, undefined); - - addon = res.gmpAddons[1]; - do_check_eq(addon.id, "test2"); - do_check_eq(addon.URL, "http://example.com/test2.xpi"); - do_check_eq(addon.hashFunction, "md5"); - do_check_eq(addon.hashValue, "djhfgsjdhf"); - do_check_eq(addon.version, undefined); - do_check_eq(addon.size, undefined); - - addon = res.gmpAddons[2]; - do_check_eq(addon.id, "test3"); - do_check_eq(addon.URL, "http://example.com/test3.xpi"); - do_check_eq(addon.hashFunction, undefined); - do_check_eq(addon.hashValue, undefined); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.size, 45); - - addon = res.gmpAddons[3]; - do_check_eq(addon.id, "test4"); - do_check_eq(addon.URL, undefined); - do_check_eq(addon.hashFunction, undefined); - do_check_eq(addon.hashValue, undefined); - do_check_eq(addon.version, undefined); - do_check_eq(addon.size, undefined); - - addon = res.gmpAddons[4]; - do_check_eq(addon.id, undefined); - do_check_eq(addon.URL, "http://example.com/test5.xpi"); - do_check_eq(addon.hashFunction, undefined); - do_check_eq(addon.hashValue, undefined); - do_check_eq(addon.version, undefined); - do_check_eq(addon.size, undefined); -}); - -add_task(function* test_download_nourl() { - try { - let path = yield ProductAddonChecker.downloadAddon({}); - - yield OS.File.remove(path); - do_throw("Should not have downloaded a file with a missing url"); - } - catch (e) { - do_check_true(true, "Should have thrown when downloading a file with a missing url."); - } -}); - -add_task(function* test_download_missing() { - try { - let path = yield ProductAddonChecker.downloadAddon({ - URL: root + "nofile.xpi", - }); - - yield OS.File.remove(path); - do_throw("Should not have downloaded a missing file"); - } - catch (e) { - do_check_true(true, "Should have thrown when downloading a missing file."); - } -}); - -add_task(function* test_download_noverify() { - let path = yield ProductAddonChecker.downloadAddon({ - URL: root + "unsigned.xpi", - }); - - let stat = yield OS.File.stat(path); - do_check_false(stat.isDir); - do_check_eq(stat.size, 452) - - do_check_true(compareFiles(do_get_file("data/productaddons/unsigned.xpi"), new LocalFile(path))); - - yield OS.File.remove(path); -}); - -add_task(function* test_download_badsize() { - try { - let path = yield ProductAddonChecker.downloadAddon({ - URL: root + "unsigned.xpi", - size: 400, - }); - - yield OS.File.remove(path); - do_throw("Should not have downloaded a file with a bad size"); - } - catch (e) { - do_check_true(true, "Should have thrown when downloading a file with a bad size."); - } -}); - -add_task(function* test_download_badhashfn() { - try { - let path = yield ProductAddonChecker.downloadAddon({ - URL: root + "unsigned.xpi", - hashFunction: "sha2567", - hashValue: "9b9abf7ddfc1a6d7ffc7e0247481dcc202363e4445ad3494fb22036f1698c7f3", - }); - - yield OS.File.remove(path); - do_throw("Should not have downloaded a file with a bad hash function"); - } - catch (e) { - do_check_true(true, "Should have thrown when downloading a file with a bad hash function."); - } -}); - -add_task(function* test_download_badhash() { - try { - let path = yield ProductAddonChecker.downloadAddon({ - URL: root + "unsigned.xpi", - hashFunction: "sha256", - hashValue: "8b9abf7ddfc1a6d7ffc7e0247481dcc202363e4445ad3494fb22036f1698c7f3", - }); - - yield OS.File.remove(path); - do_throw("Should not have downloaded a file with a bad hash"); - } - catch (e) { - do_check_true(true, "Should have thrown when downloading a file with a bad hash."); - } -}); - -add_task(function* test_download_works() { - let path = yield ProductAddonChecker.downloadAddon({ - URL: root + "unsigned.xpi", - size: 452, - hashFunction: "sha256", - hashValue: "9b9abf7ddfc1a6d7ffc7e0247481dcc202363e4445ad3494fb22036f1698c7f3", - }); - - let stat = yield OS.File.stat(path); - do_check_false(stat.isDir); - - do_check_true(compareFiles(do_get_file("data/productaddons/unsigned.xpi"), new LocalFile(path))); - - yield OS.File.remove(path); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_XPIStates.js b/toolkit/mozapps/webextensions/test/xpcshell/test_XPIStates.js deleted file mode 100644 index 99ab8ab13..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_XPIStates.js +++ /dev/null @@ -1,299 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Test that we only check manifest age for disabled extensions - -Components.utils.import("resource://gre/modules/Promise.jsm"); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -/* We want one add-on installed packed, and one installed unpacked - */ - -function run_test() { - // Shut down the add-on manager after all tests run. - do_register_cleanup(promiseShutdownManager); - // Kick off the task-based tests... - run_next_test(); -} - -// Use bootstrap extensions so the changes will be immediate. -// A packed extension, to be enabled -writeInstallRDFToXPI({ - id: "packed-enabled@tests.mozilla.org", - version: "1.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Packed, Enabled", -}, profileDir); - -// Packed, will be disabled -writeInstallRDFToXPI({ - id: "packed-disabled@tests.mozilla.org", - version: "1.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Packed, Disabled", -}, profileDir); - -// Unpacked, enabled -writeInstallRDFToDir({ - id: "unpacked-enabled@tests.mozilla.org", - version: "1.0", - bootstrap: true, - unpack: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Unpacked, Enabled", -}, profileDir, undefined, "extraFile.js"); - - -// Unpacked, disabled -writeInstallRDFToDir({ - id: "unpacked-disabled@tests.mozilla.org", - version: "1.0", - bootstrap: true, - unpack: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Unpacked, disabled", -}, profileDir, undefined, "extraFile.js"); - -// Keep track of the last time stamp we've used, so that we can keep moving -// it forward (if we touch two different files in the same add-on with the same -// timestamp we may not consider the change significant) -var lastTimestamp = Date.now(); - -/* - * Helper function to touch a file and then test whether we detect the change. - * @param XS The XPIState object. - * @param aPath File path to touch. - * @param aChange True if we should notice the change, False if we shouldn't. - */ -function checkChange(XS, aPath, aChange) { - do_check_true(aPath.exists()); - lastTimestamp += 10000; - do_print("Touching file " + aPath.path + " with " + lastTimestamp); - aPath.lastModifiedTime = lastTimestamp; - do_check_eq(XS.getInstallState(), aChange); - // Save the pref so we don't detect this change again - XS.save(); -} - -// Get a reference to the XPIState (loaded by startupManager) so we can unit test it. -function getXS() { - let XPI = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm"); - return XPI.XPIStates; -} - -add_task(function* detect_touches() { - startupManager(); - let [pe, pd, ue, ud] = yield promiseAddonsByIDs([ - "packed-enabled@tests.mozilla.org", - "packed-disabled@tests.mozilla.org", - "unpacked-enabled@tests.mozilla.org", - "unpacked-disabled@tests.mozilla.org" - ]); - - do_print("Disable test add-ons"); - pd.userDisabled = true; - ud.userDisabled = true; - - let XS = getXS(); - - // Should be no changes detected here, because everything should start out up-to-date. - do_check_false(XS.getInstallState()); - - let states = XS.getLocation("app-profile"); - - // State should correctly reflect enabled/disabled - do_check_true(states.get("packed-enabled@tests.mozilla.org").enabled); - do_check_false(states.get("packed-disabled@tests.mozilla.org").enabled); - do_check_true(states.get("unpacked-enabled@tests.mozilla.org").enabled); - do_check_false(states.get("unpacked-disabled@tests.mozilla.org").enabled); - - // Touch various files and make sure the change is detected. - - // We notice that a packed XPI is touched for an enabled add-on. - let peFile = profileDir.clone(); - peFile.append("packed-enabled@tests.mozilla.org.xpi"); - checkChange(XS, peFile, true); - - // We should notice the packed XPI change for a disabled add-on too. - let pdFile = profileDir.clone(); - pdFile.append("packed-disabled@tests.mozilla.org.xpi"); - checkChange(XS, pdFile, true); - - // We notice changing install.rdf for an enabled unpacked add-on. - let ueDir = profileDir.clone(); - ueDir.append("unpacked-enabled@tests.mozilla.org"); - let manifest = ueDir.clone(); - manifest.append("install.rdf"); - checkChange(XS, manifest, true); - // We also notice changing another file for enabled unpacked add-on. - let otherFile = ueDir.clone(); - otherFile.append("extraFile.js"); - checkChange(XS, otherFile, true); - - // We notice changing install.rdf for a *disabled* unpacked add-on. - let udDir = profileDir.clone(); - udDir.append("unpacked-disabled@tests.mozilla.org"); - manifest = udDir.clone(); - manifest.append("install.rdf"); - checkChange(XS, manifest, true); - // Finally, the case we actually care about... - // We *don't* notice changing another file for disabled unpacked add-on. - otherFile = udDir.clone(); - otherFile.append("extraFile.js"); - checkChange(XS, otherFile, false); - - /* - * When we enable an unpacked add-on that was modified while it was - * disabled, we reflect the new timestamp in the add-on DB (otherwise, we'll - * think it changed on next restart). - */ - ud.userDisabled = false; - let xState = XS.getAddon("app-profile", ud.id); - do_check_true(xState.enabled); - do_check_eq(xState.scanTime, ud.updateDate.getTime()); -}); - -/* - * Uninstalling bootstrap add-ons should immediately remove them from the - * extensions.xpiState preference. - */ -add_task(function* uninstall_bootstrap() { - let [pe, pd, ue, ud] = yield promiseAddonsByIDs([ - "packed-enabled@tests.mozilla.org", - "packed-disabled@tests.mozilla.org", - "unpacked-enabled@tests.mozilla.org", - "unpacked-disabled@tests.mozilla.org" - ]); - pe.uninstall(); - let xpiState = Services.prefs.getCharPref("extensions.xpiState"); - do_check_false(xpiState.includes("\"packed-enabled@tests.mozilla.org\"")); -}); - -/* - * Installing a restartless add-on should immediately add it to XPIState - */ -add_task(function* install_bootstrap() { - let XS = getXS(); - - let installer = yield new Promise((resolve, reject) => - AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_1"), resolve)); - - let promiseInstalled = new Promise((resolve, reject) => { - AddonManager.addInstallListener({ - onInstallFailed: reject, - onInstallEnded: (install, newAddon) => resolve(newAddon) - }); - }); - - installer.install(); - - let newAddon = yield promiseInstalled; - let xState = XS.getAddon("app-profile", newAddon.id); - do_check_true(!!xState); - do_check_true(xState.enabled); - do_check_eq(xState.scanTime, newAddon.updateDate.getTime()); - newAddon.uninstall(); -}); - -/* - * Installing an add-on that requires restart doesn't add to XPIState - * until after the restart; disable and enable happen immediately so that - * the next restart won't / will scan as necessary on the next restart, - * uninstalling it marks XPIState as disabled immediately - * and removes XPIState after restart. - */ -add_task(function* install_restart() { - let XS = getXS(); - - let installer = yield new Promise((resolve, reject) => - AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_4"), resolve)); - - let promiseInstalled = new Promise((resolve, reject) => { - AddonManager.addInstallListener({ - onInstallFailed: reject, - onInstallEnded: (install, newAddon) => resolve(newAddon) - }); - }); - - installer.install(); - - let newAddon = yield promiseInstalled; - let newID = newAddon.id; - let xState = XS.getAddon("app-profile", newID); - do_check_false(xState); - - // Now we restart the add-on manager, and we need to get the XPIState again - // because the add-on manager reloads it. - XS = null; - newAddon = null; - yield promiseRestartManager(); - XS = getXS(); - - newAddon = yield promiseAddonByID(newID); - xState = XS.getAddon("app-profile", newID); - do_check_true(xState); - do_check_true(xState.enabled); - do_check_eq(xState.scanTime, newAddon.updateDate.getTime()); - - // Check that XPIState enabled flag is updated immediately, - // and doesn't change over restart. - newAddon.userDisabled = true; - do_check_false(xState.enabled); - XS = null; - newAddon = null; - yield promiseRestartManager(); - XS = getXS(); - xState = XS.getAddon("app-profile", newID); - do_check_true(xState); - do_check_false(xState.enabled); - - newAddon = yield promiseAddonByID(newID); - newAddon.userDisabled = false; - do_check_true(xState.enabled); - XS = null; - newAddon = null; - yield promiseRestartManager(); - XS = getXS(); - xState = XS.getAddon("app-profile", newID); - do_check_true(xState); - do_check_true(xState.enabled); - - // Uninstalling immediately marks XPIState disabled, - // removes state after restart. - newAddon = yield promiseAddonByID(newID); - newAddon.uninstall(); - xState = XS.getAddon("app-profile", newID); - do_check_true(xState); - do_check_false(xState.enabled); - - // Restart to finish uninstall. - XS = null; - newAddon = null; - yield promiseRestartManager(); - XS = getXS(); - xState = XS.getAddon("app-profile", newID); - do_check_false(xState); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_XPIcancel.js b/toolkit/mozapps/webextensions/test/xpcshell/test_XPIcancel.js deleted file mode 100644 index d733778a5..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_XPIcancel.js +++ /dev/null @@ -1,66 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Test the cancellable doing/done/cancelAll API in XPIProvider - -var scope = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm"); -var XPIProvider = scope.XPIProvider; - -function run_test() { - // Check that cancelling with nothing in progress doesn't blow up - XPIProvider.cancelAll(); - - // Check that a basic object gets cancelled - let getsCancelled = { - isCancelled: false, - cancel: function () { - if (this.isCancelled) - do_throw("Already cancelled"); - this.isCancelled = true; - } - }; - XPIProvider.doing(getsCancelled); - XPIProvider.cancelAll(); - do_check_true(getsCancelled.isCancelled); - - // Check that if we complete a cancellable, it doesn't get cancelled - let doesntGetCancelled = { - cancel: () => do_throw("This should not have been cancelled") - }; - XPIProvider.doing(doesntGetCancelled); - do_check_true(XPIProvider.done(doesntGetCancelled)); - XPIProvider.cancelAll(); - - // A cancellable that adds a cancellable - getsCancelled.isCancelled = false; - let addsAnother = { - isCancelled: false, - cancel: function () { - if (this.isCancelled) - do_throw("Already cancelled"); - this.isCancelled = true; - XPIProvider.doing(getsCancelled); - } - } - XPIProvider.doing(addsAnother); - XPIProvider.cancelAll(); - do_check_true(addsAnother.isCancelled); - do_check_true(getsCancelled.isCancelled); - - // A cancellable that removes another. This assumes that Set() iterates in the - // order that members were added - let removesAnother = { - isCancelled: false, - cancel: function () { - if (this.isCancelled) - do_throw("Already cancelled"); - this.isCancelled = true; - XPIProvider.done(doesntGetCancelled); - } - } - XPIProvider.doing(removesAnother); - XPIProvider.doing(doesntGetCancelled); - XPIProvider.cancelAll(); - do_check_true(removesAnother.isCancelled); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_addon_path_service.js b/toolkit/mozapps/webextensions/test/xpcshell/test_addon_path_service.js deleted file mode 100644 index 56ce3c614..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_addon_path_service.js +++ /dev/null @@ -1,38 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -var service = Components.classes["@mozilla.org/addon-path-service;1"].getService(Components.interfaces.amIAddonPathService); - -function insert(path, value) -{ - service.insertPath("/test/" + path, value); -} - -function find(path) -{ - return service.findAddonId("/test/" + path); -} - -function run_test() -{ - insert("abc", "10"); - insert("def", "11"); - insert("axy", "12"); - insert("defghij", "13"); - insert("defghi", "14"); - - do_check_eq(find("abc"), "10"); - do_check_eq(find("abc123"), "10"); - do_check_eq(find("def"), "11"); - do_check_eq(find("axy"), "12"); - do_check_eq(find("axy1"), "12"); - do_check_eq(find("defghij"), "13"); - do_check_eq(find("abd"), ""); - do_check_eq(find("x"), ""); - - insert("file:///home/billm/mozilla/in4/objdir-ff-dbg/dist/bin/browser/extensions/%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D/", "{972ce4c6-7e08-4474-a285-3208198ce6fd}"); - insert("file:///home/billm/mozilla/addons/dl-helper-workspace/addon/", "{b9db16a4-6edc-47ec-a1f4-b86292ed211d}"); - - do_check_eq(find("file:///home/billm/mozilla/addons/dl-helper-workspace/addon/local/modules/medialist-manager.jsm"), "{b9db16a4-6edc-47ec-a1f4-b86292ed211d}"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_asyncBlocklistLoad.js b/toolkit/mozapps/webextensions/test/xpcshell/test_asyncBlocklistLoad.js deleted file mode 100644 index 38e563979..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_asyncBlocklistLoad.js +++ /dev/null @@ -1,44 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -function run_test() { - run_next_test(); -} - -add_task(function* () { - let blocklist = AM_Cc["@mozilla.org/extensions/blocklist;1"]. - getService().wrappedJSObject; - let scope = Components.utils.import("resource://gre/modules/osfile.jsm"); - - // sync -> async - blocklist._loadBlocklist(); - do_check_true(blocklist._isBlocklistLoaded()); - yield blocklist._preloadBlocklist(); - do_check_false(blocklist._isBlocklistPreloaded()); - blocklist._clear(); - - // async -> sync - yield blocklist._preloadBlocklist(); - do_check_false(blocklist._isBlocklistLoaded()); - do_check_true(blocklist._isBlocklistPreloaded()); - blocklist._loadBlocklist(); - do_check_true(blocklist._isBlocklistLoaded()); - do_check_false(blocklist._isBlocklistPreloaded()); - blocklist._clear(); - - // async -> sync -> async - let read = scope.OS.File.read; - scope.OS.File.read = function(...args) { - return new Promise((resolve, reject) => { - do_execute_soon(() => { - blocklist._loadBlocklist(); - resolve(read(...args)); - }); - }); - } - - yield blocklist._preloadBlocklist(); - do_check_true(blocklist._isBlocklistLoaded()); - do_check_false(blocklist._isBlocklistPreloaded()); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_backgroundupdate.js b/toolkit/mozapps/webextensions/test/xpcshell/test_backgroundupdate.js deleted file mode 100644 index 3890b76e1..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_backgroundupdate.js +++ /dev/null @@ -1,126 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that background updates & notifications work as expected - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); - -Components.utils.import("resource://testing-common/httpd.js"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// register static files with server and interpolate port numbers in them -mapFile("/data/test_backgroundupdate.rdf", testserver); - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - testserver.registerDirectory("/addons/", do_get_file("addons")); - - startupManager(); - - do_test_pending(); - run_test_1(); -} - -function end_test() { - testserver.stop(do_test_finished); -} - -// Verify that with no add-ons installed the background update notifications get -// called -function run_test_1() { - AddonManager.getAddonsByTypes(["extension", "theme", "locale"], function(aAddons) { - do_check_eq(aAddons.length, 0); - - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "addons-background-update-complete"); - - do_execute_soon(run_test_2); - }, "addons-background-update-complete", false); - - // Trigger the background update timer handler - gInternalManager.notify(null); - }); -} - -// Verify that with two add-ons installed both of which claim to have updates -// available we get the notification after both updates attempted to start -function run_test_2() { - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/test_backgroundupdate.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon2@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/test_backgroundupdate.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 2", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon3@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 3", - }, profileDir); - - // Background update uses a different pref, if set - Services.prefs.setCharPref("extensions.update.background.url", - "http://localhost:" + gPort +"/data/test_backgroundupdate.rdf"); - restartManager(); - - // Do hotfix checks - Services.prefs.setCharPref("extensions.hotfix.id", "hotfix@tests.mozilla.org"); - Services.prefs.setCharPref("extensions.hotfix.url", "http://localhost:" + gPort + "/missing.rdf"); - - let installCount = 0; - let completeCount = 0; - let sawCompleteNotification = false; - - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "addons-background-update-complete"); - - do_check_eq(installCount, 3); - sawCompleteNotification = true; - }, "addons-background-update-complete", false); - - AddonManager.addInstallListener({ - onNewInstall: function(aInstall) { - installCount++; - }, - - onDownloadFailed: function(aInstall) { - completeCount++; - if (completeCount == 3) { - do_check_true(sawCompleteNotification); - end_test(); - } - } - }); - - // Trigger the background update timer handler - gInternalManager.notify(null); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bad_json.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bad_json.js deleted file mode 100644 index d3ccf68f3..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bad_json.js +++ /dev/null @@ -1,54 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that we rebuild the database correctly if it contains -// JSON data that parses correctly but doesn't contain required fields - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "2.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending("Bad JSON"); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - // This addon will be auto-installed at startup - writeInstallRDFForExtension(addon1, profileDir); - - startupManager(); - - shutdownManager(); - - // First startup/shutdown finished - // Replace the JSON store with something bogus - saveJSON({not: "what we expect to find"}, gExtensionsJSON); - - startupManager(false); - // Retrieve an addon to force the database to rebuild - AddonManager.getAddonsByIDs([addon1.id], callback_soon(after_db_rebuild)); -} - -function after_db_rebuild([a1]) { - do_check_eq(a1.id, addon1.id); - - shutdownManager(); - - // Make sure our JSON database has schemaVersion and our installed extension - let data = loadJSON(gExtensionsJSON); - do_check_true("schemaVersion" in data); - do_check_eq(data.addons[0].id, addon1.id); - - do_test_finished("Bad JSON"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_badschema.js b/toolkit/mozapps/webextensions/test/xpcshell/test_badschema.js deleted file mode 100644 index 6ebf088d6..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_badschema.js +++ /dev/null @@ -1,404 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that we rebuild something sensible from a database with a bad schema - - -Components.utils.import("resource://testing-common/httpd.js"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; - -// register static files with server and interpolate port numbers in them -mapFile("/data/test_corrupt.rdf", testserver); - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -// Will be enabled -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Will be disabled -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "1.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Will get a compatibility update and be enabled -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "1.0", - name: "Test 3", - updateURL: "http://localhost:" + gPort + "/data/test_corrupt.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Will get a compatibility update and be disabled -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "1.0", - name: "Test 4", - updateURL: "http://localhost:" + gPort + "/data/test_corrupt.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Stays incompatible -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "1.0", - name: "Test 5", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Enabled bootstrapped -var addon6 = { - id: "addon6@tests.mozilla.org", - version: "1.0", - name: "Test 6", - bootstrap: "true", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Disabled bootstrapped -var addon7 = { - id: "addon7@tests.mozilla.org", - version: "1.0", - name: "Test 7", - bootstrap: "true", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// The default theme -var theme1 = { - id: "theme1@tests.mozilla.org", - version: "1.0", - name: "Theme 1", - internalName: "classic/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// The selected theme -var theme2 = { - id: "theme2@tests.mozilla.org", - version: "1.0", - name: "Theme 2", - internalName: "test/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - writeInstallRDFForExtension(addon6, profileDir); - writeInstallRDFForExtension(addon7, profileDir); - writeInstallRDFForExtension(theme1, profileDir); - writeInstallRDFForExtension(theme2, profileDir); - - // Create and configure the HTTP server. - testserver.registerDirectory("/addons/", do_get_file("addons")); - - // Startup the profile and setup the initial state - startupManager(); - - AddonManager.getAddonsByIDs(["addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([a2, a3, a4, - a7, t2]) { - // Set up the initial state - a2.userDisabled = true; - a4.userDisabled = true; - a7.userDisabled = true; - t2.userDisabled = false; - a3.findUpdates({ - onUpdateFinished: function() { - a4.findUpdates({ - onUpdateFinished: function() { - do_execute_soon(run_test_1); - } - }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - } - }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - }); -} - -function end_test() { - testserver.stop(do_test_finished); -} - -function run_test_1() { - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([a1, a2, a3, - a4, a5, a6, - a7, t1, t2]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_false(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a5, null); - do_check_false(a5.isActive); - do_check_false(a5.userDisabled); - do_check_true(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - - do_execute_soon(run_test_1_modified_db); - }); -} - - -function run_test_1_modified_db() { - // After restarting the database won't be open so we can alter - // the schema - shutdownManager(); - changeXPIDBVersion(100); - startupManager(); - - // Accessing the add-ons should open and recover the database. Since - // migration occurs everything should be recovered correctly - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([a1, a2, a3, - a4, a5, a6, - a7, t1, t2]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_false(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a5, null); - do_check_false(a5.isActive); - do_check_false(a5.userDisabled); - do_check_true(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - - do_execute_soon(run_test_1_after_rebuild); - }); -} - -function run_test_1_after_rebuild() { - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([a1, a2, a3, - a4, a5, a6, - a7, t1, t2]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_false(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a5, null); - do_check_false(a5.isActive); - do_check_false(a5.userDisabled); - do_check_true(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - - end_test(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_blocklist_gfx.js b/toolkit/mozapps/webextensions/test/xpcshell/test_blocklist_gfx.js deleted file mode 100644 index cbcd5cb7e..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_blocklist_gfx.js +++ /dev/null @@ -1,157 +0,0 @@ -const { classes: Cc, interfaces: Ci, utils: Cu } = Components; - -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -const TEST_APP_ID = "xpcshell@tests.mozilla.org"; - - -const EVENT_NAME = "blocklist-data-gfxItems"; - -const SAMPLE_GFX_RECORD = { - "driverVersionComparator": "LESS_THAN_OR_EQUAL", - "driverVersion": "8.17.12.5896", - "vendor": "0x10de", - "blockID": "g36", - "feature": "DIRECT3D_9_LAYERS", - "devices": ["0x0a6c", "geforce"], - "featureStatus": "BLOCKED_DRIVER_VERSION", - "last_modified": 1458035931837, - "os": "WINNT 6.1", - "id": "3f947f16-37c2-4e96-d356-78b26363729b", - "versionRange": {"minVersion": 0, "maxVersion": "*"} -}; - - -function Blocklist() { - let blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService().wrappedJSObject; - blocklist._clear(); - return blocklist; -} - - -function run_test() { - run_next_test(); -} - - -add_task(function* test_sends_serialized_data() { - const blocklist = Blocklist(); - blocklist._gfxEntries = [SAMPLE_GFX_RECORD]; - - const expected = "blockID:g36\tdevices:0x0a6c,geforce\tdriverVersion:8.17.12.5896\t" + - "driverVersionComparator:LESS_THAN_OR_EQUAL\tfeature:DIRECT3D_9_LAYERS\t" + - "featureStatus:BLOCKED_DRIVER_VERSION\tos:WINNT 6.1\tvendor:0x10de\t" + - "versionRange:0,*"; - let received; - const observe = (subject, topic, data) => { received = data }; - Services.obs.addObserver(observe, EVENT_NAME, false); - blocklist._notifyObserversBlocklistGFX(); - equal(received, expected); - Services.obs.removeObserver(observe, EVENT_NAME); -}); - - -add_task(function* test_parsing_fails_if_devices_contains_comma() { - const input = "<blocklist xmlns=\"http://www.mozilla.org/2006/addons-blocklist\">" + - "<gfxItems>" + - " <gfxBlacklistEntry>" + - " <devices>" + - " <device>0x2,582</device>" + - " <device>0x2782</device>" + - " </devices>" + - " </gfxBlacklistEntry>" + - "</gfxItems>" + - "</blocklist>"; - const blocklist = Blocklist(); - blocklist._loadBlocklistFromString(input); - equal(blocklist._gfxEntries[0].devices.length, 1); - equal(blocklist._gfxEntries[0].devices[0], "0x2782"); -}); - - -add_task(function* test_empty_values_are_ignored() { - const input = "<blocklist xmlns=\"http://www.mozilla.org/2006/addons-blocklist\">" + - "<gfxItems>" + - " <gfxBlacklistEntry>" + - " <os></os>" + - " </gfxBlacklistEntry>" + - "</gfxItems>" + - "</blocklist>"; - const blocklist = Blocklist(); - let received; - const observe = (subject, topic, data) => { received = data }; - Services.obs.addObserver(observe, EVENT_NAME, false); - blocklist._loadBlocklistFromString(input); - ok(received.indexOf("os" < 0)); - Services.obs.removeObserver(observe, EVENT_NAME); -}); - -add_task(function* test_empty_devices_are_ignored() { - const input = "<blocklist xmlns=\"http://www.mozilla.org/2006/addons-blocklist\">" + - "<gfxItems>" + - " <gfxBlacklistEntry>" + - " <devices></devices>" + - " </gfxBlacklistEntry>" + - "</gfxItems>" + - "</blocklist>"; - const blocklist = Blocklist(); - let received; - const observe = (subject, topic, data) => { received = data }; - Services.obs.addObserver(observe, EVENT_NAME, false); - blocklist._loadBlocklistFromString(input); - ok(received.indexOf("devices" < 0)); - Services.obs.removeObserver(observe, EVENT_NAME); -}); - -add_task(function* test_version_range_default_values() { - const input = "<blocklist xmlns=\"http://www.mozilla.org/2006/addons-blocklist\">" + - "<gfxItems>" + - " <gfxBlacklistEntry>" + - " <versionRange minVersion=\"13.0b2\" maxVersion=\"42.0\"/>" + - " </gfxBlacklistEntry>" + - " <gfxBlacklistEntry>" + - " <versionRange maxVersion=\"2.0\"/>" + - " </gfxBlacklistEntry>" + - " <gfxBlacklistEntry>" + - " <versionRange minVersion=\"1.0\"/>" + - " </gfxBlacklistEntry>" + - " <gfxBlacklistEntry>" + - " <versionRange minVersion=\" \"/>" + - " </gfxBlacklistEntry>" + - " <gfxBlacklistEntry>" + - " <versionRange/>" + - " </gfxBlacklistEntry>" + - "</gfxItems>" + - "</blocklist>"; - const blocklist = Blocklist(); - blocklist._loadBlocklistFromString(input); - equal(blocklist._gfxEntries[0].versionRange.minVersion, "13.0b2"); - equal(blocklist._gfxEntries[0].versionRange.maxVersion, "42.0"); - equal(blocklist._gfxEntries[1].versionRange.minVersion, "0"); - equal(blocklist._gfxEntries[1].versionRange.maxVersion, "2.0"); - equal(blocklist._gfxEntries[2].versionRange.minVersion, "1.0"); - equal(blocklist._gfxEntries[2].versionRange.maxVersion, "*"); - equal(blocklist._gfxEntries[3].versionRange.minVersion, "0"); - equal(blocklist._gfxEntries[3].versionRange.maxVersion, "*"); - equal(blocklist._gfxEntries[4].versionRange.minVersion, "0"); - equal(blocklist._gfxEntries[4].versionRange.maxVersion, "*"); -}); - -add_task(function* test_blockid_attribute() { - const input = "<blocklist xmlns=\"http://www.mozilla.org/2006/addons-blocklist\">" + - "<gfxItems>" + - " <gfxBlacklistEntry blockID=\"g60\">" + - " <vendor> 0x10de </vendor>" + - " </gfxBlacklistEntry>" + - " <gfxBlacklistEntry>" + - " <feature> DIRECT3D_9_LAYERS </feature>" + - " </gfxBlacklistEntry>" + - "</gfxItems>" + - "</blocklist>"; - const blocklist = Blocklist(); - blocklist._loadBlocklistFromString(input); - equal(blocklist._gfxEntries[0].blockID, "g60"); - ok(!blocklist._gfxEntries[1].hasOwnProperty("blockID")); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_blocklist_metadata_filters.js b/toolkit/mozapps/webextensions/test/xpcshell/test_blocklist_metadata_filters.js deleted file mode 100644 index 5befa6fa0..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_blocklist_metadata_filters.js +++ /dev/null @@ -1,147 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests blocking of extensions by ID, name, creator, homepageURL, updateURL -// and RegExps for each. See bug 897735. - -var {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; - -const URI_EXTENSION_BLOCKLIST_DIALOG = "chrome://mozapps/content/extensions/blocklist.xul"; - -Cu.import("resource://testing-common/httpd.js"); -Cu.import("resource://testing-common/MockRegistrar.jsm"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; - -// register static files with server and interpolate port numbers in them -mapFile("/data/test_blocklist_metadata_filters_1.xml", testserver); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// Don't need the full interface, attempts to call other methods will just -// throw which is just fine -var WindowWatcher = { - openWindow: function(parent, url, name, features, args) { - // Should be called to list the newly blocklisted items - do_check_eq(url, URI_EXTENSION_BLOCKLIST_DIALOG); - - // Simulate auto-disabling any softblocks - var list = args.wrappedJSObject.list; - list.forEach(function(aItem) { - if (!aItem.blocked) - aItem.disable = true; - }); - - // run the code after the blocklist is closed - Services.obs.notifyObservers(null, "addon-blocklist-closed", null); - - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -}; - -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - -function load_blocklist(aFile, aCallback) { - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "blocklist-updated"); - - do_execute_soon(aCallback); - }, "blocklist-updated", false); - - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + aFile); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - - -function end_test() { - testserver.stop(do_test_finished); -} - -function run_test() { - do_test_pending(); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - // Should get blocked by name - writeInstallRDFForExtension({ - id: "block1@tests.mozilla.org", - version: "1.0", - name: "Mozilla Corp.", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - // Should get blocked by all the attributes. - writeInstallRDFForExtension({ - id: "block2@tests.mozilla.org", - version: "1.0", - name: "Moz-addon", - creator: "Dangerous", - homepageURL: "www.extension.dangerous.com", - updateURL: "www.extension.dangerous.com/update.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - // Fails to get blocked because of a different ID even though other - // attributes match against a blocklist entry. - writeInstallRDFForExtension({ - id: "block3@tests.mozilla.org", - version: "1.0", - name: "Moz-addon", - creator: "Dangerous", - homepageURL: "www.extensions.dangerous.com", - updateURL: "www.extension.dangerous.com/update.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - startupManager(); - - AddonManager.getAddonsByIDs(["block1@tests.mozilla.org", - "block2@tests.mozilla.org", - "block3@tests.mozilla.org"], function([a1, a2, a3]) { - do_check_eq(a1.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(a2.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(a3.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - - run_test_1(); - }); -} - -function run_test_1() { - load_blocklist("test_blocklist_metadata_filters_1.xml", function() { - restartManager(); - - AddonManager.getAddonsByIDs(["block1@tests.mozilla.org", - "block2@tests.mozilla.org", - "block3@tests.mozilla.org"], function([a1, a2, a3]) { - do_check_eq(a1.blocklistState, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - do_check_eq(a2.blocklistState, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(a3.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - end_test(); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_blocklist_prefs.js b/toolkit/mozapps/webextensions/test/xpcshell/test_blocklist_prefs.js deleted file mode 100644 index 41ef62f98..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_blocklist_prefs.js +++ /dev/null @@ -1,148 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests resetting of preferences in blocklist entry when an add-on is blocked. -// See bug 802434. - -var {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; - -const URI_EXTENSION_BLOCKLIST_DIALOG = "chrome://mozapps/content/extensions/blocklist.xul"; - -XPCOMUtils.defineLazyGetter(this, "gPref", function bls_gPref() { - return Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService). - QueryInterface(Ci.nsIPrefBranch); -}); - -Cu.import("resource://testing-common/httpd.js"); -Cu.import("resource://testing-common/MockRegistrar.jsm"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; - -// register static files with server and interpolate port numbers in them -mapFile("/data/test_blocklist_prefs_1.xml", testserver); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// A window watcher to handle the blocklist UI. -// Don't need the full interface, attempts to call other methods will just -// throw which is just fine -var WindowWatcher = { - openWindow: function(parent, url, name, features, args) { - // Should be called to list the newly blocklisted items - do_check_eq(url, URI_EXTENSION_BLOCKLIST_DIALOG); - - // Simulate auto-disabling any softblocks - var list = args.wrappedJSObject.list; - list.forEach(function(aItem) { - if (!aItem.blocked) - aItem.disable = true; - }); - - // run the code after the blocklist is closed - Services.obs.notifyObservers(null, "addon-blocklist-closed", null); - - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -}; - -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - -function load_blocklist(aFile, aCallback) { - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "blocklist-updated"); - - do_execute_soon(aCallback); - }, "blocklist-updated", false); - - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + aFile); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -function end_test() { - testserver.stop(do_test_finished); -} - -function run_test() { - do_test_pending(); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - // Add 2 extensions - writeInstallRDFForExtension({ - id: "block1@tests.mozilla.org", - version: "1.0", - name: "Blocked add-on-1 with to-be-reset prefs", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "block2@tests.mozilla.org", - version: "1.0", - name: "Blocked add-on-2 with to-be-reset prefs", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - // Pre-set the preferences that we expect to get reset. - gPref.setIntPref("test.blocklist.pref1", 15); - gPref.setIntPref("test.blocklist.pref2", 15); - gPref.setBoolPref("test.blocklist.pref3", true); - gPref.setBoolPref("test.blocklist.pref4", true); - - startupManager(); - - // Before blocklist is loaded. - AddonManager.getAddonsByIDs(["block1@tests.mozilla.org", - "block2@tests.mozilla.org"], function([a1, a2]) { - do_check_eq(a1.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(a2.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - - do_check_eq(gPref.getIntPref("test.blocklist.pref1"), 15); - do_check_eq(gPref.getIntPref("test.blocklist.pref2"), 15); - do_check_eq(gPref.getBoolPref("test.blocklist.pref3"), true); - do_check_eq(gPref.getBoolPref("test.blocklist.pref4"), true); - run_test_1(); - }); -} - -function run_test_1() { - load_blocklist("test_blocklist_prefs_1.xml", function() { - restartManager(); - - // Blocklist changes should have applied and the prefs must be reset. - AddonManager.getAddonsByIDs(["block1@tests.mozilla.org", - "block2@tests.mozilla.org"], function([a1, a2]) { - do_check_neq(a1, null); - do_check_eq(a1.blocklistState, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - do_check_neq(a2, null); - do_check_eq(a2.blocklistState, Ci.nsIBlocklistService.STATE_BLOCKED); - - // All these prefs must be reset to defaults. - do_check_eq(gPref.prefHasUserValue("test.blocklist.pref1"), false); - do_check_eq(gPref.prefHasUserValue("test.blocklist.pref2"), false); - do_check_eq(gPref.prefHasUserValue("test.blocklist.pref3"), false); - do_check_eq(gPref.prefHasUserValue("test.blocklist.pref4"), false); - end_test(); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_blocklist_regexp.js b/toolkit/mozapps/webextensions/test/xpcshell/test_blocklist_regexp.js deleted file mode 100644 index c89ccdef8..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_blocklist_regexp.js +++ /dev/null @@ -1,114 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that blocklist entries using RegExp work as expected. This only covers -// behavior specific to RegExp entries - general behavior is already tested -// in test_blocklistchange.js. - -var {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; - -const URI_EXTENSION_BLOCKLIST_DIALOG = "chrome://mozapps/content/extensions/blocklist.xul"; - -Cu.import("resource://testing-common/httpd.js"); -Cu.import("resource://testing-common/MockRegistrar.jsm"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; - -// register static files with server and interpolate port numbers in them -mapFile("/data/test_blocklist_regexp_1.xml", testserver); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// Don't need the full interface, attempts to call other methods will just -// throw which is just fine -var WindowWatcher = { - openWindow: function(parent, url, name, features, args) { - // Should be called to list the newly blocklisted items - do_check_eq(url, URI_EXTENSION_BLOCKLIST_DIALOG); - - // Simulate auto-disabling any softblocks - var list = args.wrappedJSObject.list; - list.forEach(function(aItem) { - if (!aItem.blocked) - aItem.disable = true; - }); - - // run the code after the blocklist is closed - Services.obs.notifyObservers(null, "addon-blocklist-closed", null); - - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -}; - -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - - -function load_blocklist(aFile, aCallback) { - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "blocklist-updated"); - - do_execute_soon(aCallback); - }, "blocklist-updated", false); - - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + aFile); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - - -function end_test() { - testserver.stop(do_test_finished); -} - - -function run_test() { - do_test_pending(); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - writeInstallRDFForExtension({ - id: "block1@tests.mozilla.org", - version: "1.0", - name: "RegExp blocked add-on", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - startupManager(); - - AddonManager.getAddonsByIDs(["block1@tests.mozilla.org"], function([a1]) { - do_check_eq(a1.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - - run_test_1(); - }); -} - -function run_test_1() { - load_blocklist("test_blocklist_regexp_1.xml", function() { - restartManager(); - - AddonManager.getAddonsByIDs(["block1@tests.mozilla.org"], function([a1]) { - // Blocklist contains two entries that will match this addon - ensure - // that the first one is applied. - do_check_neq(a1, null); - do_check_eq(a1.blocklistState, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - - end_test(); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_blocklistchange.js b/toolkit/mozapps/webextensions/test/xpcshell/test_blocklistchange.js deleted file mode 100644 index d065f700d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_blocklistchange.js +++ /dev/null @@ -1,1305 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that changes that cause an add-on to become unblocked or blocked have -// the right effect - -// The tests follow a mostly common pattern. First they start with the add-ons -// unblocked, then they make a change that causes the add-ons to become blocked -// then they make a similar change that keeps the add-ons blocked then they make -// a change that unblocks the add-ons. Some tests skip the initial part and -// start with add-ons detected as blocked. - -// softblock1 is enabled/disabled by the blocklist changes so its softDisabled -// property should always match its userDisabled property - -// softblock2 gets manually enabled then disabled after it becomes blocked so -// its softDisabled property should never become true after that - -// softblock3 does the same as softblock2 however it remains disabled - -// softblock4 is disabled while unblocked and so should never have softDisabled -// set to true and stay userDisabled. This add-on is not used in tests that -// start with add-ons blocked as it would be identical to softblock3 - -// softblock5 is a theme. Currently themes just get disabled when they become -// softblocked and have to be manually re-enabled if they become completely -// unblocked (bug 657520) - -var Cc = Components.classes; -var Ci = Components.interfaces; -var Cu = Components.utils; -var Cr = Components.results; - -const URI_EXTENSION_BLOCKLIST_DIALOG = "chrome://mozapps/content/extensions/blocklist.xul"; - -Cu.import("resource://gre/modules/NetUtil.jsm"); -Cu.import("resource://testing-common/MockRegistrar.jsm"); - -// Allow insecure updates -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false) - -var testserver = createHttpServer(); -gPort = testserver.identity.primaryPort; - -// register static files with server and interpolate port numbers in them -mapFile("/data/blocklistchange/addon_update1.rdf", testserver); -mapFile("/data/blocklistchange/addon_update2.rdf", testserver); -mapFile("/data/blocklistchange/addon_update3.rdf", testserver); -mapFile("/data/blocklistchange/addon_change.xml", testserver); -mapFile("/data/blocklistchange/app_update.xml", testserver); -mapFile("/data/blocklistchange/blocklist_update1.xml", testserver); -mapFile("/data/blocklistchange/blocklist_update2.xml", testserver); -mapFile("/data/blocklistchange/manual_update.xml", testserver); - -testserver.registerDirectory("/addons/", do_get_file("addons")); - - -var default_theme = { - id: "default@tests.mozilla.org", - version: "1.0", - name: "Softblocked add-on", - internalName: "classic/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock1_1 = { - id: "softblock1@tests.mozilla.org", - version: "1.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock1_2 = { - id: "softblock1@tests.mozilla.org", - version: "2.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock1_3 = { - id: "softblock1@tests.mozilla.org", - version: "3.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock2_1 = { - id: "softblock2@tests.mozilla.org", - version: "1.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock2_2 = { - id: "softblock2@tests.mozilla.org", - version: "2.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock2_3 = { - id: "softblock2@tests.mozilla.org", - version: "3.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock3_1 = { - id: "softblock3@tests.mozilla.org", - version: "1.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock3_2 = { - id: "softblock3@tests.mozilla.org", - version: "2.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock3_3 = { - id: "softblock3@tests.mozilla.org", - version: "3.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock4_1 = { - id: "softblock4@tests.mozilla.org", - version: "1.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock4_2 = { - id: "softblock4@tests.mozilla.org", - version: "2.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock4_3 = { - id: "softblock4@tests.mozilla.org", - version: "3.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock5_1 = { - id: "softblock5@tests.mozilla.org", - version: "1.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - internalName: "test/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock5_2 = { - id: "softblock5@tests.mozilla.org", - version: "2.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - internalName: "test/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock5_3 = { - id: "softblock5@tests.mozilla.org", - version: "3.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - internalName: "test/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var hardblock_1 = { - id: "hardblock@tests.mozilla.org", - version: "1.0", - name: "Hardblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var hardblock_2 = { - id: "hardblock@tests.mozilla.org", - version: "2.0", - name: "Hardblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var hardblock_3 = { - id: "hardblock@tests.mozilla.org", - version: "3.0", - name: "Hardblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var regexpblock_1 = { - id: "regexpblock@tests.mozilla.org", - version: "1.0", - name: "RegExp-blocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var regexpblock_2 = { - id: "regexpblock@tests.mozilla.org", - version: "2.0", - name: "RegExp-blocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var regexpblock_3 = { - id: "regexpblock@tests.mozilla.org", - version: "3.0", - name: "RegExp-blocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -const ADDON_IDS = ["softblock1@tests.mozilla.org", - "softblock2@tests.mozilla.org", - "softblock3@tests.mozilla.org", - "softblock4@tests.mozilla.org", - "softblock5@tests.mozilla.org", - "hardblock@tests.mozilla.org", - "regexpblock@tests.mozilla.org"]; - -// Don't need the full interface, attempts to call other methods will just -// throw which is just fine -var WindowWatcher = { - openWindow: function(parent, url, name, features, openArgs) { - // Should be called to list the newly blocklisted items - do_check_eq(url, URI_EXTENSION_BLOCKLIST_DIALOG); - - // Simulate auto-disabling any softblocks - var list = openArgs.wrappedJSObject.list; - list.forEach(function(aItem) { - if (!aItem.blocked) - aItem.disable = true; - }); - - // run the code after the blocklist is closed - Services.obs.notifyObservers(null, "addon-blocklist-closed", null); - - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -}; - -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - -var InstallConfirm = { - confirm: function(aWindow, aUrl, aInstalls, aInstallCount) { - aInstalls.forEach(function(aInstall) { - aInstall.install(); - }); - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.amIWebInstallPrompt) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -}; - -var InstallConfirmFactory = { - createInstance: function createInstance(outer, iid) { - if (outer != null) - throw Components.results.NS_ERROR_NO_AGGREGATION; - return InstallConfirm.QueryInterface(iid); - } -}; - -var registrar = Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar); -registrar.registerFactory(Components.ID("{f0863905-4dde-42e2-991c-2dc8209bc9ca}"), - "Fake Install Prompt", - "@mozilla.org/addons/web-install-prompt;1", InstallConfirmFactory); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function Pload_blocklist(aFile) { - let blocklist_updated = new Promise((resolve, reject) => { - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "blocklist-updated"); - - resolve(); - }, "blocklist-updated", false); - }); - - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + gPort + "/data/blocklistchange/" + aFile); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); - return blocklist_updated; -} - -// Does a background update check for add-ons and returns a promise that -// resolves when any started installs complete -function Pbackground_update() { - var installCount = 0; - var backgroundCheckCompleted = false; - - let updated = new Promise((resolve, reject) => { - AddonManager.addInstallListener({ - onNewInstall: function(aInstall) { - installCount++; - }, - - onInstallEnded: function(aInstall) { - installCount--; - // Wait until all started installs have completed - if (installCount) - return; - - AddonManager.removeInstallListener(this); - - // If the background check hasn't yet completed then let that call the - // callback when it is done - if (!backgroundCheckCompleted) - return; - - resolve(); - } - }) - - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "addons-background-update-complete"); - backgroundCheckCompleted = true; - - // If any new installs have started then we'll call the callback once they - // are completed - if (installCount) - return; - - resolve(); - }, "addons-background-update-complete", false); - }); - - AddonManagerPrivate.backgroundUpdateCheck(); - return updated; -} - -// Manually updates the test add-ons to the given version -function Pmanual_update(aVersion) { - let Pinstalls = []; - for (let name of ["soft1", "soft2", "soft3", "soft4", "soft5", "hard1", "regexp1"]) { - Pinstalls.push(new Promise((resolve, reject) => { - AddonManager.getInstallForURL("http://localhost:" + gPort + "/addons/blocklist_" - + name + "_" + aVersion + ".xpi", - resolve, "application/x-xpinstall"); - })); - } - - return Promise.all(Pinstalls).then(installs => { - let completePromises = []; - for (let install of installs) { - completePromises.push(new Promise(resolve => { - install.addListener({ - onDownloadCancelled: resolve, - onInstallEnded: resolve - }) - })); - } - - // Use the default web installer to cancel/allow installs based on whether - // the add-on is valid or not. - let webInstaller = Cc["@mozilla.org/addons/web-install-listener;1"] - .getService(Ci.amIWebInstallListener); - webInstaller.onWebInstallRequested(null, null, installs); - - return Promise.all(completePromises); - }); -} - -// Checks that an add-ons properties match expected values -function check_addon(aAddon, aExpectedVersion, aExpectedUserDisabled, - aExpectedSoftDisabled, aExpectedState) { - do_check_neq(aAddon, null); - do_print("Testing " + aAddon.id + " version " + aAddon.version + " user " - + aAddon.userDisabled + " soft " + aAddon.softDisabled - + " perms " + aAddon.permissions); - - do_check_eq(aAddon.version, aExpectedVersion); - do_check_eq(aAddon.blocklistState, aExpectedState); - do_check_eq(aAddon.userDisabled, aExpectedUserDisabled); - do_check_eq(aAddon.softDisabled, aExpectedSoftDisabled); - if (aAddon.softDisabled) - do_check_true(aAddon.userDisabled); - - if (aExpectedState == Ci.nsIBlocklistService.STATE_BLOCKED) { - do_print("blocked, PERM_CAN_ENABLE " + aAddon.id); - do_check_false(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_ENABLE)); - do_print("blocked, PERM_CAN_DISABLE " + aAddon.id); - do_check_false(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_DISABLE)); - } - else if (aAddon.userDisabled) { - do_print("userDisabled, PERM_CAN_ENABLE " + aAddon.id); - do_check_true(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_ENABLE)); - do_print("userDisabled, PERM_CAN_DISABLE " + aAddon.id); - do_check_false(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_DISABLE)); - } - else { - do_print("other, PERM_CAN_ENABLE " + aAddon.id); - do_check_false(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_ENABLE)); - if (aAddon.type != "theme") { - do_print("other, PERM_CAN_DISABLE " + aAddon.id); - do_check_true(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_DISABLE)); - } - } - do_check_eq(aAddon.appDisabled, aExpectedState == Ci.nsIBlocklistService.STATE_BLOCKED); - - let willBeActive = aAddon.isActive; - if (hasFlag(aAddon.pendingOperations, AddonManager.PENDING_DISABLE)) - willBeActive = false; - else if (hasFlag(aAddon.pendingOperations, AddonManager.PENDING_ENABLE)) - willBeActive = true; - - if (aExpectedUserDisabled || aExpectedState == Ci.nsIBlocklistService.STATE_BLOCKED) { - do_check_false(willBeActive); - } - else { - do_check_true(willBeActive); - } -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - run_next_test(); -} - -add_task(function* init() { - writeInstallRDFForExtension(default_theme, profileDir); - writeInstallRDFForExtension(softblock1_1, profileDir); - writeInstallRDFForExtension(softblock2_1, profileDir); - writeInstallRDFForExtension(softblock3_1, profileDir); - writeInstallRDFForExtension(softblock4_1, profileDir); - writeInstallRDFForExtension(softblock5_1, profileDir); - writeInstallRDFForExtension(hardblock_1, profileDir); - writeInstallRDFForExtension(regexpblock_1, profileDir); - startupManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - s4.userDisabled = true; - s5.userDisabled = false; -}); - -// Starts with add-ons unblocked and then switches application versions to -// change add-ons to blocked and back -add_task(function* run_app_update_test() { - do_print("Test: " + arguments.callee.name); - yield promiseRestartManager(); - yield Pload_blocklist("app_update.xml"); - yield promiseRestartManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "test/1.0"); -}); - -add_task(function* app_update_step_2() { - yield promiseRestartManager("2"); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); -}); - -add_task(function* app_update_step_3() { - yield promiseRestartManager(); - - yield promiseRestartManager("2.5"); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); -}); - -add_task(function* app_update_step_4() { - yield promiseRestartManager("1"); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s1.userDisabled = false; - s2.userDisabled = false; - s5.userDisabled = false; -}); - -// Starts with add-ons unblocked and then switches application versions to -// change add-ons to blocked and back. A DB schema change is faked to force a -// rebuild when the application version changes -add_task(function* run_app_update_schema_test() { - do_print("Test: " + arguments.callee.name); - yield promiseRestartManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "test/1.0"); -}); - -add_task(function* update_schema_2() { - yield promiseShutdownManager(); - - changeXPIDBVersion(100); - gAppInfo.version = "2"; - startupManager(true); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); -}); - -add_task(function* update_schema_3() { - yield promiseRestartManager(); - - yield promiseShutdownManager(); - changeXPIDBVersion(100); - gAppInfo.version = "2.5"; - startupManager(true); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); -}); - -add_task(function* update_schema_4() { - yield promiseShutdownManager(); - - changeXPIDBVersion(100); - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); -}); - -add_task(function* update_schema_5() { - yield promiseShutdownManager(); - - changeXPIDBVersion(100); - gAppInfo.version = "1"; - startupManager(true); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s1.userDisabled = false; - s2.userDisabled = false; - s5.userDisabled = false; -}); - -// Starts with add-ons unblocked and then loads new blocklists to change add-ons -// to blocked and back again. -add_task(function* run_blocklist_update_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield Pload_blocklist("blocklist_update1.xml"); - yield promiseRestartManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "test/1.0"); - - yield Pload_blocklist("blocklist_update2.xml"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - - yield promiseRestartManager(); - - yield Pload_blocklist("blocklist_update2.xml"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - yield Pload_blocklist("blocklist_update1.xml"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s1.userDisabled = false; - s2.userDisabled = false; - s5.userDisabled = false; -}); - -// Starts with add-ons unblocked and then new versions are installed outside of -// the app to change them to blocked and back again. -add_task(function* run_addon_change_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield Pload_blocklist("addon_change.xml"); - yield promiseRestartManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "test/1.0"); -}); - -add_task(function* run_addon_change_2() { - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock1_2.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock2_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock2_2.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock3_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock3_2.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock4_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock4_2.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock5_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock5_2.id), Date.now() + 10000); - writeInstallRDFForExtension(hardblock_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, hardblock_2.id), Date.now() + 10000); - writeInstallRDFForExtension(regexpblock_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, regexpblock_2.id), Date.now() + 10000); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "2.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "2.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "2.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); -}); - -add_task(function* run_addon_change_3() { - yield promiseRestartManager(); - - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock1_3.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock2_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock2_3.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock3_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock3_3.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock4_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock4_3.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock5_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock5_3.id), Date.now() + 20000); - writeInstallRDFForExtension(hardblock_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, hardblock_3.id), Date.now() + 20000); - writeInstallRDFForExtension(regexpblock_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, regexpblock_3.id), Date.now() + 20000); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "3.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "3.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "3.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "3.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "3.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "3.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "3.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); -}); - -add_task(function* run_addon_change_4() { - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock1_1.id), Date.now() + 30000); - writeInstallRDFForExtension(softblock2_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock2_1.id), Date.now() + 30000); - writeInstallRDFForExtension(softblock3_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock3_1.id), Date.now() + 30000); - writeInstallRDFForExtension(softblock4_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock4_1.id), Date.now() + 30000); - writeInstallRDFForExtension(softblock5_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock5_1.id), Date.now() + 30000); - writeInstallRDFForExtension(hardblock_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, hardblock_1.id), Date.now() + 30000); - writeInstallRDFForExtension(regexpblock_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, regexpblock_1.id), Date.now() + 30000); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s1.userDisabled = false; - s2.userDisabled = false; - s5.userDisabled = false; -}); - -// Starts with add-ons blocked and then new versions are installed outside of -// the app to change them to unblocked. -add_task(function* run_addon_change_2_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield promiseShutdownManager(); - - getFileForAddon(profileDir, softblock1_1.id).remove(true); - getFileForAddon(profileDir, softblock2_1.id).remove(true); - getFileForAddon(profileDir, softblock3_1.id).remove(true); - getFileForAddon(profileDir, softblock4_1.id).remove(true); - getFileForAddon(profileDir, softblock5_1.id).remove(true); - getFileForAddon(profileDir, hardblock_1.id).remove(true); - getFileForAddon(profileDir, regexpblock_1.id).remove(true); - - startupManager(false); - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_2, profileDir); - writeInstallRDFForExtension(softblock2_2, profileDir); - writeInstallRDFForExtension(softblock3_2, profileDir); - writeInstallRDFForExtension(softblock4_2, profileDir); - writeInstallRDFForExtension(softblock5_2, profileDir); - writeInstallRDFForExtension(hardblock_2, profileDir); - writeInstallRDFForExtension(regexpblock_2, profileDir); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "2.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "2.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "2.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); -}); - -add_task(function* addon_change_2_test_2() { - yield promiseRestartManager(); - - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock1_3.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock2_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock2_3.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock3_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock3_3.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock4_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock4_3.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock5_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock5_3.id), Date.now() + 10000); - writeInstallRDFForExtension(hardblock_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, hardblock_3.id), Date.now() + 10000); - writeInstallRDFForExtension(regexpblock_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, regexpblock_3.id), Date.now() + 10000); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "3.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "3.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "3.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "3.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "3.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); -}); - -add_task(function* addon_change_2_test_3() { - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock1_1.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock2_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock2_1.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock3_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock3_1.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock4_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock4_1.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock5_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock5_1.id), Date.now() + 20000); - writeInstallRDFForExtension(hardblock_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, hardblock_1.id), Date.now() + 20000); - writeInstallRDFForExtension(regexpblock_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, regexpblock_1.id), Date.now() + 20000); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - - s1.userDisabled = false; - s2.userDisabled = false; - s4.userDisabled = true; - s5.userDisabled = false; -}); - -// Add-ons are initially unblocked then attempts to upgrade to blocked versions -// in the background which should fail -add_task(function* run_background_update_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield promiseRestartManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - - yield Pbackground_update(); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); -}); - -// Starts with add-ons blocked and then new versions are detected and installed -// automatically for unblocked versions. -add_task(function* run_background_update_2_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield promiseShutdownManager(); - - getFileForAddon(profileDir, softblock1_1.id).remove(true); - getFileForAddon(profileDir, softblock2_1.id).remove(true); - getFileForAddon(profileDir, softblock3_1.id).remove(true); - getFileForAddon(profileDir, softblock4_1.id).remove(true); - getFileForAddon(profileDir, softblock5_1.id).remove(true); - getFileForAddon(profileDir, hardblock_1.id).remove(true); - getFileForAddon(profileDir, regexpblock_1.id).remove(true); - - startupManager(false); - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_3, profileDir); - writeInstallRDFForExtension(softblock2_3, profileDir); - writeInstallRDFForExtension(softblock3_3, profileDir); - writeInstallRDFForExtension(softblock4_3, profileDir); - writeInstallRDFForExtension(softblock5_3, profileDir); - writeInstallRDFForExtension(hardblock_3, profileDir); - writeInstallRDFForExtension(regexpblock_3, profileDir); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "3.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "3.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "3.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "3.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "3.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "3.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "3.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - - yield promiseRestartManager(); - - yield Pbackground_update(); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - - s1.userDisabled = false; - s2.userDisabled = false; - s4.userDisabled = true; - s5.userDisabled = true; -}); - -// Starts with add-ons blocked and then simulates the user upgrading them to -// unblocked versions. -add_task(function* run_manual_update_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield promiseRestartManager(); - yield Pload_blocklist("manual_update.xml"); - yield promiseRestartManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - - yield promiseRestartManager(); - - yield Pmanual_update("2"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "2.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "2.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - // Can't manually update to a hardblocked add-on - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - - yield Pmanual_update("3"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "3.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "3.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); -}); - -// Starts with add-ons blocked and then new versions are installed outside of -// the app to change them to unblocked. -add_task(function* run_manual_update_2_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield promiseShutdownManager(); - - getFileForAddon(profileDir, softblock1_1.id).remove(true); - getFileForAddon(profileDir, softblock2_1.id).remove(true); - getFileForAddon(profileDir, softblock3_1.id).remove(true); - getFileForAddon(profileDir, softblock4_1.id).remove(true); - getFileForAddon(profileDir, softblock5_1.id).remove(true); - getFileForAddon(profileDir, hardblock_1.id).remove(true); - getFileForAddon(profileDir, regexpblock_1.id).remove(true); - - startupManager(false); - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_1, profileDir); - writeInstallRDFForExtension(softblock2_1, profileDir); - writeInstallRDFForExtension(softblock3_1, profileDir); - writeInstallRDFForExtension(softblock4_1, profileDir); - writeInstallRDFForExtension(softblock5_1, profileDir); - writeInstallRDFForExtension(hardblock_1, profileDir); - writeInstallRDFForExtension(regexpblock_1, profileDir); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - yield promiseRestartManager(); - - yield Pmanual_update("2"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "2.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - // Can't manually update to a hardblocked add-on - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - - yield promiseRestartManager(); - - yield Pmanual_update("3"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "3.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - - s1.userDisabled = false; - s2.userDisabled = false; - s4.userDisabled = true; -}); - -// Uses the API to install blocked add-ons from the local filesystem -add_task(function* run_local_install_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield promiseShutdownManager(); - - getFileForAddon(profileDir, softblock1_1.id).remove(true); - getFileForAddon(profileDir, softblock2_1.id).remove(true); - getFileForAddon(profileDir, softblock3_1.id).remove(true); - getFileForAddon(profileDir, softblock4_1.id).remove(true); - getFileForAddon(profileDir, softblock5_1.id).remove(true); - getFileForAddon(profileDir, hardblock_1.id).remove(true); - getFileForAddon(profileDir, regexpblock_1.id).remove(true); - - startupManager(false); - - yield promiseInstallAllFiles([ - do_get_file("addons/blocklist_soft1_1.xpi"), - do_get_file("addons/blocklist_soft2_1.xpi"), - do_get_file("addons/blocklist_soft3_1.xpi"), - do_get_file("addons/blocklist_soft4_1.xpi"), - do_get_file("addons/blocklist_soft5_1.xpi"), - do_get_file("addons/blocklist_hard1_1.xpi"), - do_get_file("addons/blocklist_regexp1_1.xpi") - ]); - - let aInstalls = yield new Promise((resolve, reject) => { - AddonManager.getAllInstalls(resolve) - }); - // Should have finished all installs without needing to restart - do_check_eq(aInstalls.length, 0); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bootstrap.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bootstrap.js deleted file mode 100644 index ff58599bc..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bootstrap.js +++ /dev/null @@ -1,1403 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const APP_STARTUP = 1; -const APP_SHUTDOWN = 2; -const ADDON_ENABLE = 3; -const ADDON_DISABLE = 4; -const ADDON_INSTALL = 5; -const ADDON_UNINSTALL = 6; -const ADDON_UPGRADE = 7; -const ADDON_DOWNGRADE = 8; - -const ID1 = "bootstrap1@tests.mozilla.org"; -const ID2 = "bootstrap2@tests.mozilla.org"; - -// This verifies that bootstrappable add-ons can be used without restarts. -Components.utils.import("resource://gre/modules/Services.jsm"); -Components.utils.import("resource://gre/modules/Promise.jsm"); - -// Enable loading extensions from the user scopes -Services.prefs.setIntPref("extensions.enabledScopes", - AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER); - -BootstrapMonitor.init(); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); -const userExtDir = gProfD.clone(); -userExtDir.append("extensions2"); -userExtDir.append(gAppInfo.ID); -registerDirectory("XREUSysExt", userExtDir.parent); - -Components.utils.import("resource://testing-common/httpd.js"); -var testserver = new HttpServer(); -testserver.start(undefined); -gPort = testserver.identity.primaryPort; - -testserver.registerDirectory("/addons/", do_get_file("addons")); - -function getStartupReason() { - let info = BootstrapMonitor.started.get(ID1); - return info ? info.reason : undefined; -} - -function getShutdownReason() { - let info = BootstrapMonitor.stopped.get(ID1); - return info ? info.reason : undefined; -} - -function getInstallReason() { - let info = BootstrapMonitor.installed.get(ID1); - return info ? info.reason : undefined; -} - -function getUninstallReason() { - let info = BootstrapMonitor.uninstalled.get(ID1); - return info ? info.reason : undefined; -} - -function getStartupOldVersion() { - let info = BootstrapMonitor.started.get(ID1); - return info ? info.data.oldVersion : undefined; -} - -function getShutdownNewVersion() { - let info = BootstrapMonitor.stopped.get(ID1); - return info ? info.data.newVersion : undefined; -} - -function getInstallOldVersion() { - let info = BootstrapMonitor.installed.get(ID1); - return info ? info.data.oldVersion : undefined; -} - -function getUninstallNewVersion() { - let info = BootstrapMonitor.uninstalled.get(ID1); - return info ? info.data.newVersion : undefined; -} - -function do_check_bootstrappedPref(aCallback) { - let data = Services.prefs.getCharPref("extensions.bootstrappedAddons"); - data = JSON.parse(data); - - AddonManager.getAddonsByTypes(["extension"], function(aAddons) { - for (let addon of aAddons) { - if (!addon.id.endsWith("@tests.mozilla.org")) - continue; - if (!addon.isActive) - continue; - if (addon.operationsRequiringRestart != AddonManager.OP_NEEDS_RESTART_NONE) - continue; - - do_check_true(addon.id in data); - let addonData = data[addon.id]; - delete data[addon.id]; - - do_check_eq(addonData.version, addon.version); - do_check_eq(addonData.type, addon.type); - let file = addon.getResourceURI().QueryInterface(Components.interfaces.nsIFileURL).file; - do_check_eq(addonData.descriptor, file.persistentDescriptor); - } - do_check_eq(Object.keys(data).length, 0); - - do_execute_soon(aCallback); - }); -} - - -function run_test() { - do_test_pending(); - - startupManager(); - - do_check_false(gExtensionsJSON.exists()); - - do_check_false(gExtensionsINI.exists()); - - run_test_1(); -} - -// Tests that installing doesn't require a restart -function run_test_1() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_1"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.type, "extension"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test Bootstrap 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_neq(install.addon.syncGUID, null); - do_check_true(install.addon.hasResource("install.rdf")); - do_check_true(install.addon.hasResource("bootstrap.js")); - do_check_false(install.addon.hasResource("foo.bar")); - do_check_eq(install.addon.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_INSTALL, 0); - do_check_not_in_crash_annotation(ID1, "1.0"); - - let addon = install.addon; - - BootstrapMonitor.promiseAddonStartup(ID1).then(function() { - do_check_bootstrappedPref(function() { - check_test_1(addon.syncGUID); - }); - }); - - prepare_test({ - [ID1]: [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], function() { - do_check_true(addon.hasResource("install.rdf")); - - // startup should not have been called yet. - BootstrapMonitor.checkAddonNotStarted(ID1); - }); - install.install(); - }); -} - -function check_test_1(installSyncGUID) { - do_check_false(gExtensionsINI.exists()); - - AddonManager.getAllInstalls(function(installs) { - // There should be no active installs now since the install completed and - // doesn't require a restart. - do_check_eq(installs.length, 0); - - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_neq(b1.syncGUID, null); - do_check_eq(b1.syncGUID, installSyncGUID); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - do_check_eq(getStartupReason(), ADDON_INSTALL); - do_check_eq(getStartupOldVersion(), undefined); - do_check_true(b1.hasResource("install.rdf")); - do_check_true(b1.hasResource("bootstrap.js")); - do_check_false(b1.hasResource("foo.bar")); - do_check_in_crash_annotation(ID1, "1.0"); - - let dir = do_get_addon_root_uri(profileDir, ID1); - do_check_eq(b1.getResourceURI("bootstrap.js").spec, dir + "bootstrap.js"); - - AddonManager.getAddonsWithOperationsByTypes(null, function(list) { - do_check_eq(list.length, 0); - - do_execute_soon(run_test_2); - }); - }); - }); -} - -// Tests that disabling doesn't require a restart -function run_test_2() { - AddonManager.getAddonByID(ID1, function(b1) { - prepare_test({ - [ID1]: [ - ["onDisabling", false], - "onDisabled" - ] - }); - - do_check_eq(b1.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_DISABLE, 0); - b1.userDisabled = true; - ensure_test_completed(); - - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_true(b1.userDisabled); - do_check_false(b1.isActive); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - do_check_eq(getShutdownReason(), ADDON_DISABLE); - do_check_eq(getShutdownNewVersion(), undefined); - do_check_not_in_crash_annotation(ID1, "1.0"); - - AddonManager.getAddonByID(ID1, function(newb1) { - do_check_neq(newb1, null); - do_check_eq(newb1.version, "1.0"); - do_check_false(newb1.appDisabled); - do_check_true(newb1.userDisabled); - do_check_false(newb1.isActive); - - do_check_bootstrappedPref(run_test_3); - }); - }); -} - -// Test that restarting doesn't accidentally re-enable -function run_test_3() { - shutdownManager(); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - do_check_eq(getShutdownReason(), ADDON_DISABLE); - do_check_eq(getShutdownNewVersion(), undefined); - startupManager(false); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - do_check_eq(getShutdownReason(), ADDON_DISABLE); - do_check_eq(getShutdownNewVersion(), undefined); - do_check_not_in_crash_annotation(ID1, "1.0"); - - do_check_false(gExtensionsINI.exists()); - - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_true(b1.userDisabled); - do_check_false(b1.isActive); - - do_check_bootstrappedPref(run_test_4); - }); -} - -// Tests that enabling doesn't require a restart -function run_test_4() { - AddonManager.getAddonByID(ID1, function(b1) { - prepare_test({ - [ID1]: [ - ["onEnabling", false], - "onEnabled" - ] - }); - - do_check_eq(b1.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_ENABLE, 0); - b1.userDisabled = false; - ensure_test_completed(); - - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - do_check_eq(getStartupReason(), ADDON_ENABLE); - do_check_eq(getStartupOldVersion(), undefined); - do_check_in_crash_annotation(ID1, "1.0"); - - AddonManager.getAddonByID(ID1, function(newb1) { - do_check_neq(newb1, null); - do_check_eq(newb1.version, "1.0"); - do_check_false(newb1.appDisabled); - do_check_false(newb1.userDisabled); - do_check_true(newb1.isActive); - - do_check_bootstrappedPref(run_test_5); - }); - }); -} - -// Tests that a restart shuts down and restarts the add-on -function run_test_5() { - shutdownManager(); - // By the time we've shut down, the database must have been written - do_check_true(gExtensionsJSON.exists()); - - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - do_check_eq(getShutdownReason(), APP_SHUTDOWN); - do_check_eq(getShutdownNewVersion(), undefined); - do_check_not_in_crash_annotation(ID1, "1.0"); - startupManager(false); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - do_check_eq(getStartupReason(), APP_STARTUP); - do_check_eq(getStartupOldVersion(), undefined); - do_check_in_crash_annotation(ID1, "1.0"); - - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - do_check_false(isExtensionInAddonsList(profileDir, b1.id)); - - do_check_bootstrappedPref(run_test_6); - }); -} - -// Tests that installing an upgrade doesn't require a restart -function run_test_6() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_2"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.type, "extension"); - do_check_eq(install.version, "2.0"); - do_check_eq(install.name, "Test Bootstrap 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - - BootstrapMonitor.promiseAddonStartup(ID1).then(check_test_6); - prepare_test({ - [ID1]: [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], function() { - }); - install.install(); - }); -} - -function check_test_6() { - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "2.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonStarted(ID1, "2.0"); - do_check_eq(getStartupReason(), ADDON_UPGRADE); - do_check_eq(getInstallOldVersion(), 1); - do_check_eq(getStartupOldVersion(), 1); - do_check_eq(getShutdownReason(), ADDON_UPGRADE); - do_check_eq(getShutdownNewVersion(), 2); - do_check_eq(getUninstallNewVersion(), 2); - do_check_not_in_crash_annotation(ID1, "1.0"); - do_check_in_crash_annotation(ID1, "2.0"); - - do_check_bootstrappedPref(run_test_7); - }); -} - -// Tests that uninstalling doesn't require a restart -function run_test_7() { - AddonManager.getAddonByID(ID1, function(b1) { - prepare_test({ - [ID1]: [ - ["onUninstalling", false], - "onUninstalled" - ] - }); - - do_check_eq(b1.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_UNINSTALL, 0); - b1.uninstall(); - - do_check_bootstrappedPref(check_test_7); - }); -} - -function check_test_7() { - ensure_test_completed(); - BootstrapMonitor.checkAddonNotInstalled(ID1); - BootstrapMonitor.checkAddonNotStarted(ID1); - do_check_eq(getShutdownReason(), ADDON_UNINSTALL); - do_check_eq(getShutdownNewVersion(), undefined); - do_check_not_in_crash_annotation(ID1, "2.0"); - - AddonManager.getAddonByID(ID1, callback_soon(function(b1) { - do_check_eq(b1, null); - - restartManager(); - - AddonManager.getAddonByID(ID1, function(newb1) { - do_check_eq(newb1, null); - - do_check_bootstrappedPref(run_test_8); - }); - })); -} - -// Test that a bootstrapped extension dropped into the profile loads properly -// on startup and doesn't cause an EM restart -function run_test_8() { - shutdownManager(); - - manuallyInstall(do_get_addon("test_bootstrap1_1"), profileDir, - ID1); - - startupManager(false); - - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - do_check_eq(getStartupReason(), ADDON_INSTALL); - do_check_eq(getStartupOldVersion(), undefined); - do_check_in_crash_annotation(ID1, "1.0"); - - do_check_bootstrappedPref(run_test_9); - }); -} - -// Test that items detected as removed during startup get removed properly -function run_test_9() { - shutdownManager(); - - manuallyUninstall(profileDir, ID1); - BootstrapMonitor.clear(ID1); - - startupManager(false); - - AddonManager.getAddonByID(ID1, function(b1) { - do_check_eq(b1, null); - do_check_not_in_crash_annotation(ID1, "1.0"); - - do_check_bootstrappedPref(run_test_10); - }); -} - - -// Tests that installing a downgrade sends the right reason -function run_test_10() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_2"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.type, "extension"); - do_check_eq(install.version, "2.0"); - do_check_eq(install.name, "Test Bootstrap 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_true(install.addon.hasResource("install.rdf")); - do_check_true(install.addon.hasResource("bootstrap.js")); - do_check_false(install.addon.hasResource("foo.bar")); - do_check_not_in_crash_annotation(ID1, "2.0"); - - BootstrapMonitor.promiseAddonStartup(ID1).then(check_test_10_pt1); - prepare_test({ - [ID1]: [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], function() { - do_print("Waiting for startup of bootstrap1_2"); - }); - install.install(); - }); -} - -function check_test_10_pt1() { - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "2.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonStarted(ID1, "2.0"); - do_check_eq(getStartupReason(), ADDON_INSTALL); - do_check_eq(getStartupOldVersion(), undefined); - do_check_true(b1.hasResource("install.rdf")); - do_check_true(b1.hasResource("bootstrap.js")); - do_check_false(b1.hasResource("foo.bar")); - do_check_in_crash_annotation(ID1, "2.0"); - - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_1"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.type, "extension"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test Bootstrap 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - - BootstrapMonitor.promiseAddonStartup(ID1).then(check_test_10_pt2); - prepare_test({ - [ID1]: [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], function() { }); - install.install(); - }); - }); -} - -function check_test_10_pt2() { - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - do_check_eq(getStartupReason(), ADDON_DOWNGRADE); - do_check_eq(getInstallOldVersion(), 2); - do_check_eq(getStartupOldVersion(), 2); - do_check_eq(getShutdownReason(), ADDON_DOWNGRADE); - do_check_eq(getShutdownNewVersion(), 1); - do_check_eq(getUninstallNewVersion(), 1); - do_check_in_crash_annotation(ID1, "1.0"); - do_check_not_in_crash_annotation(ID1, "2.0"); - - do_check_bootstrappedPref(run_test_11); - }); -} - -// Tests that uninstalling a disabled add-on still calls the uninstall method -function run_test_11() { - AddonManager.getAddonByID(ID1, function(b1) { - prepare_test({ - [ID1]: [ - ["onDisabling", false], - "onDisabled", - ["onUninstalling", false], - "onUninstalled" - ] - }); - - b1.userDisabled = true; - - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - do_check_eq(getShutdownReason(), ADDON_DISABLE); - do_check_eq(getShutdownNewVersion(), undefined); - do_check_not_in_crash_annotation(ID1, "1.0"); - - b1.uninstall(); - - check_test_11(); - }); -} - -function check_test_11() { - ensure_test_completed(); - BootstrapMonitor.checkAddonNotInstalled(ID1); - BootstrapMonitor.checkAddonNotStarted(ID1); - do_check_not_in_crash_annotation(ID1, "1.0"); - - do_check_bootstrappedPref(run_test_12); -} - -// Tests that bootstrapped extensions are correctly loaded even if the app is -// upgraded at the same time -function run_test_12() { - shutdownManager(); - - manuallyInstall(do_get_addon("test_bootstrap1_1"), profileDir, - ID1); - - startupManager(true); - - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - do_check_eq(getStartupReason(), ADDON_INSTALL); - do_check_eq(getStartupOldVersion(), undefined); - do_check_in_crash_annotation(ID1, "1.0"); - - b1.uninstall(); - do_execute_soon(test_12_restart); - }); -} - -function test_12_restart() { - restartManager(); - do_check_bootstrappedPref(run_test_13); -} - - -// Tests that installing a bootstrapped extension with an invalid application -// entry doesn't call it's startup method -function run_test_13() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_3"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.type, "extension"); - do_check_eq(install.version, "3.0"); - do_check_eq(install.name, "Test Bootstrap 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_not_in_crash_annotation(ID1, "3.0"); - - prepare_test({ - [ID1]: [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test_13)); - install.install(); - }); -} - -function check_test_13() { - AddonManager.getAllInstalls(function(installs) { - // There should be no active installs now since the install completed and - // doesn't require a restart. - do_check_eq(installs.length, 0); - - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "3.0"); - do_check_true(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_false(b1.isActive); - BootstrapMonitor.checkAddonInstalled(ID1, "3.0"); // We call install even for disabled add-ons - BootstrapMonitor.checkAddonNotStarted(ID1); // Should not have called startup though - do_check_not_in_crash_annotation(ID1, "3.0"); - - do_execute_soon(test_13_restart); - }); - }); -} - -function test_13_restart() { - restartManager(); - - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "3.0"); - do_check_true(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_false(b1.isActive); - BootstrapMonitor.checkAddonInstalled(ID1, "3.0"); // We call install even for disabled add-ons - BootstrapMonitor.checkAddonNotStarted(ID1); // Should not have called startup though - do_check_not_in_crash_annotation(ID1, "3.0"); - - do_check_bootstrappedPref(function() { - b1.uninstall(); - do_execute_soon(run_test_14); - }); - }); -} - -// Tests that a bootstrapped extension with an invalid target application entry -// does not get loaded when detected during startup -function run_test_14() { - restartManager(); - - shutdownManager(); - - manuallyInstall(do_get_addon("test_bootstrap1_3"), profileDir, - ID1); - - startupManager(false); - - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "3.0"); - do_check_true(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_false(b1.isActive); - BootstrapMonitor.checkAddonInstalled(ID1, "3.0"); // We call install even for disabled add-ons - BootstrapMonitor.checkAddonNotStarted(ID1); // Should not have called startup though - do_check_not_in_crash_annotation(ID1, "3.0"); - - do_check_bootstrappedPref(function() { - b1.uninstall(); - - run_test_15(); - }); - }); -} - -// Tests that upgrading a disabled bootstrapped extension still calls uninstall -// and install but doesn't startup the new version -function run_test_15() { - BootstrapMonitor.promiseAddonStartup(ID1).then(function test_15_after_startup() { - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - - b1.userDisabled = true; - do_check_false(b1.isActive); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_2"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_true(install.addon.userDisabled); - - prepare_test({ - [ID1]: [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test_15)); - install.install(); - }); - }); - }); - installAllFiles([do_get_addon("test_bootstrap1_1")], function test_15_addon_installed() { }); -} - -function check_test_15() { - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "2.0"); - do_check_false(b1.appDisabled); - do_check_true(b1.userDisabled); - do_check_false(b1.isActive); - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - - do_check_bootstrappedPref(function() { - restartManager(); - - AddonManager.getAddonByID(ID1, callback_soon(function(b1_2) { - do_check_neq(b1_2, null); - do_check_eq(b1_2.version, "2.0"); - do_check_false(b1_2.appDisabled); - do_check_true(b1_2.userDisabled); - do_check_false(b1_2.isActive); - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - - b1_2.uninstall(); - - run_test_16(); - })); - }); - }); -} - -// Tests that bootstrapped extensions don't get loaded when in safe mode -function run_test_16() { - BootstrapMonitor.promiseAddonStartup(ID1).then(function test_16_after_startup() { - AddonManager.getAddonByID(ID1, callback_soon(function(b1) { - // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - do_check_eq(b1.iconURL, "chrome://foo/skin/icon.png"); - do_check_eq(b1.aboutURL, "chrome://foo/content/about.xul"); - do_check_eq(b1.optionsURL, "chrome://foo/content/options.xul"); - - shutdownManager(); - - // Should have stopped - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - - gAppInfo.inSafeMode = true; - startupManager(false); - - AddonManager.getAddonByID(ID1, callback_soon(function(b1_2) { - // Should still be stopped - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - do_check_false(b1_2.isActive); - do_check_eq(b1_2.iconURL, null); - do_check_eq(b1_2.aboutURL, null); - do_check_eq(b1_2.optionsURL, null); - - shutdownManager(); - gAppInfo.inSafeMode = false; - startupManager(false); - - // Should have started - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - - AddonManager.getAddonByID(ID1, function(b1_3) { - b1_3.uninstall(); - - do_execute_soon(run_test_17); - }); - })); - })); - }); - installAllFiles([do_get_addon("test_bootstrap1_1")], function() { }); -} - -// Check that a bootstrapped extension in a non-profile location is loaded -function run_test_17() { - shutdownManager(); - - manuallyInstall(do_get_addon("test_bootstrap1_1"), userExtDir, - ID1); - - startupManager(); - - AddonManager.getAddonByID(ID1, function(b1) { - // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - - do_check_bootstrappedPref(run_test_18); - }); -} - -// Check that installing a new bootstrapped extension in the profile replaces -// the existing one -function run_test_18() { - BootstrapMonitor.promiseAddonStartup(ID1).then(function test_18_after_startup() { - AddonManager.getAddonByID(ID1, function(b1) { - // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonStarted(ID1, "2.0"); - do_check_neq(b1, null); - do_check_eq(b1.version, "2.0"); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - - do_check_eq(getShutdownReason(), ADDON_UPGRADE); - do_check_eq(getUninstallReason(), ADDON_UPGRADE); - do_check_eq(getInstallReason(), ADDON_UPGRADE); - do_check_eq(getStartupReason(), ADDON_UPGRADE); - - do_check_eq(getShutdownNewVersion(), 2); - do_check_eq(getUninstallNewVersion(), 2); - do_check_eq(getInstallOldVersion(), 1); - do_check_eq(getStartupOldVersion(), 1); - - do_check_bootstrappedPref(run_test_19); - }); - }); - installAllFiles([do_get_addon("test_bootstrap1_2")], function() { }); -} - -// Check that uninstalling the profile version reveals the non-profile one -function run_test_19() { - AddonManager.getAddonByID(ID1, function(b1) { - // The revealed add-on gets activated asynchronously - prepare_test({ - [ID1]: [ - ["onUninstalling", false], - "onUninstalled", - ["onInstalling", false], - "onInstalled" - ] - }, [], check_test_19); - - b1.uninstall(); - }); -} - -function check_test_19() { - AddonManager.getAddonByID(ID1, function(b1) { - // Should have reverted to the older version - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - - // TODO these reasons really should be ADDON_DOWNGRADE (bug 607818) - do_check_eq(getShutdownReason(), ADDON_UNINSTALL); - do_check_eq(getUninstallReason(), ADDON_UNINSTALL); - do_check_eq(getInstallReason(), ADDON_INSTALL); - do_check_eq(getStartupReason(), ADDON_INSTALL); - - do_check_eq(getShutdownNewVersion(), undefined); - do_check_eq(getUninstallNewVersion(), undefined); - do_check_eq(getInstallOldVersion(), undefined); - do_check_eq(getStartupOldVersion(), undefined); - - do_check_bootstrappedPref(run_test_20); - }); -} - -// Check that a new profile extension detected at startup replaces the non-profile -// one -function run_test_20() { - shutdownManager(); - - manuallyInstall(do_get_addon("test_bootstrap1_2"), profileDir, - ID1); - - startupManager(); - - AddonManager.getAddonByID(ID1, function(b1) { - // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonStarted(ID1, "2.0"); - do_check_neq(b1, null); - do_check_eq(b1.version, "2.0"); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - - do_check_eq(getShutdownReason(), APP_SHUTDOWN); - do_check_eq(getUninstallReason(), ADDON_UPGRADE); - do_check_eq(getInstallReason(), ADDON_UPGRADE); - do_check_eq(getStartupReason(), APP_STARTUP); - - do_check_eq(getShutdownNewVersion(), undefined); - do_check_eq(getUninstallNewVersion(), 2); - do_check_eq(getInstallOldVersion(), 1); - do_check_eq(getStartupOldVersion(), undefined); - - do_execute_soon(run_test_21); - }); -} - -// Check that a detected removal reveals the non-profile one -function run_test_21() { - shutdownManager(); - - do_check_eq(getShutdownReason(), APP_SHUTDOWN); - do_check_eq(getShutdownNewVersion(), undefined); - - manuallyUninstall(profileDir, ID1); - BootstrapMonitor.clear(ID1); - - startupManager(); - - AddonManager.getAddonByID(ID1, function(b1) { - // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - - // This won't be set as the bootstrap script was gone so we couldn't - // uninstall it properly - do_check_eq(getUninstallReason(), undefined); - do_check_eq(getUninstallNewVersion(), undefined); - - do_check_eq(getInstallReason(), ADDON_DOWNGRADE); - do_check_eq(getInstallOldVersion(), 2); - - do_check_eq(getStartupReason(), APP_STARTUP); - do_check_eq(getStartupOldVersion(), undefined); - - do_check_bootstrappedPref(function() { - shutdownManager(); - - manuallyUninstall(userExtDir, ID1); - BootstrapMonitor.clear(ID1); - - startupManager(false); - run_test_22(); - }); - }); -} - -// Check that an upgrade from the filesystem is detected and applied correctly -function run_test_22() { - shutdownManager(); - - let file = manuallyInstall(do_get_addon("test_bootstrap1_1"), profileDir, - ID1); - - // Make it look old so changes are detected - setExtensionModifiedTime(file, file.lastModifiedTime - 5000); - - startupManager(); - - AddonManager.getAddonByID(ID1, callback_soon(function(b1) { - // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - - shutdownManager(); - - do_check_eq(getShutdownReason(), APP_SHUTDOWN); - do_check_eq(getShutdownNewVersion(), undefined); - - manuallyUninstall(profileDir, ID1); - BootstrapMonitor.clear(ID1); - manuallyInstall(do_get_addon("test_bootstrap1_2"), profileDir, - ID1); - - startupManager(); - - AddonManager.getAddonByID(ID1, function(b1_2) { - // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonStarted(ID1, "2.0"); - do_check_neq(b1_2, null); - do_check_eq(b1_2.version, "2.0"); - do_check_true(b1_2.isActive); - do_check_false(b1_2.isSystem); - - // This won't be set as the bootstrap script was gone so we couldn't - // uninstall it properly - do_check_eq(getUninstallReason(), undefined); - do_check_eq(getUninstallNewVersion(), undefined); - - do_check_eq(getInstallReason(), ADDON_UPGRADE); - do_check_eq(getInstallOldVersion(), 1); - do_check_eq(getStartupReason(), APP_STARTUP); - do_check_eq(getStartupOldVersion(), undefined); - - do_check_bootstrappedPref(function() { - b1_2.uninstall(); - - run_test_23(); - }); - }); - })); -} - - -// Tests that installing from a URL doesn't require a restart -function run_test_23() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_bootstrap1_1.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - - prepare_test({ }, [ - "onDownloadStarted", - "onDownloadEnded" - ], function() { - do_check_eq(install.type, "extension"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test Bootstrap 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_true(install.addon.hasResource("install.rdf")); - do_check_true(install.addon.hasResource("bootstrap.js")); - do_check_false(install.addon.hasResource("foo.bar")); - do_check_eq(install.addon.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_INSTALL, 0); - do_check_not_in_crash_annotation(ID1, "1.0"); - - let addon = install.addon; - prepare_test({ - [ID1]: [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], function() { - do_check_true(addon.hasResource("install.rdf")); - do_check_bootstrappedPref(check_test_23); - }); - }); - install.install(); - }, "application/x-xpinstall"); -} - -function check_test_23() { - AddonManager.getAllInstalls(function(installs) { - // There should be no active installs now since the install completed and - // doesn't require a restart. - do_check_eq(installs.length, 0); - - AddonManager.getAddonByID(ID1, function(b1) { - do_execute_soon(function test_23_after_startup() { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - do_check_eq(getStartupReason(), ADDON_INSTALL); - do_check_eq(getStartupOldVersion(), undefined); - do_check_true(b1.hasResource("install.rdf")); - do_check_true(b1.hasResource("bootstrap.js")); - do_check_false(b1.hasResource("foo.bar")); - do_check_in_crash_annotation(ID1, "1.0"); - - let dir = do_get_addon_root_uri(profileDir, ID1); - do_check_eq(b1.getResourceURI("bootstrap.js").spec, dir + "bootstrap.js"); - - AddonManager.getAddonsWithOperationsByTypes(null, callback_soon(function(list) { - do_check_eq(list.length, 0); - - restartManager(); - AddonManager.getAddonByID(ID1, callback_soon(function(b1_2) { - b1_2.uninstall(); - restartManager(); - - testserver.stop(run_test_24); - })); - })); - }); - }); - }); -} - -// Tests that we recover from a broken preference -function run_test_24() { - do_print("starting 24"); - - Promise.all([BootstrapMonitor.promiseAddonStartup(ID2), - promiseInstallAllFiles([do_get_addon("test_bootstrap1_1"), do_get_addon("test_bootstrap2_1")])]) - .then(function test_24_pref() { - do_print("test 24 got prefs"); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - BootstrapMonitor.checkAddonInstalled(ID2, "1.0"); - BootstrapMonitor.checkAddonStarted(ID2, "1.0"); - - restartManager(); - - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - BootstrapMonitor.checkAddonInstalled(ID2, "1.0"); - BootstrapMonitor.checkAddonStarted(ID2, "1.0"); - - shutdownManager(); - - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - BootstrapMonitor.checkAddonInstalled(ID2, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID2); - - // Break the preference - let bootstrappedAddons = JSON.parse(Services.prefs.getCharPref("extensions.bootstrappedAddons")); - bootstrappedAddons[ID1].descriptor += "foo"; - Services.prefs.setCharPref("extensions.bootstrappedAddons", JSON.stringify(bootstrappedAddons)); - - startupManager(false); - - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - BootstrapMonitor.checkAddonInstalled(ID2, "1.0"); - BootstrapMonitor.checkAddonStarted(ID2, "1.0"); - - run_test_25(); - }); -} - -// Tests that updating from a bootstrappable add-on to a normal add-on calls -// the uninstall method -function run_test_25() { - BootstrapMonitor.promiseAddonStartup(ID1).then(function test_25_after_pref() { - do_print("test 25 pref change detected"); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - - installAllFiles([do_get_addon("test_bootstrap1_4")], function() { - // Needs a restart to complete this so the old version stays running - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - - AddonManager.getAddonByID(ID1, callback_soon(function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - do_check_true(hasFlag(b1.pendingOperations, AddonManager.PENDING_UPGRADE)); - - restartManager(); - - BootstrapMonitor.checkAddonNotInstalled(ID1); - do_check_eq(getUninstallReason(), ADDON_UPGRADE); - do_check_eq(getUninstallNewVersion(), 4); - BootstrapMonitor.checkAddonNotStarted(ID1); - - AddonManager.getAddonByID(ID1, function(b1_2) { - do_check_neq(b1_2, null); - do_check_eq(b1_2.version, "4.0"); - do_check_true(b1_2.isActive); - do_check_false(b1_2.isSystem); - do_check_eq(b1_2.pendingOperations, AddonManager.PENDING_NONE); - - do_check_bootstrappedPref(run_test_26); - }); - })); - }); - }); - installAllFiles([do_get_addon("test_bootstrap1_1")], function test_25_installed() { - do_print("test 25 install done"); - }); -} - -// Tests that updating from a normal add-on to a bootstrappable add-on calls -// the install method -function run_test_26() { - installAllFiles([do_get_addon("test_bootstrap1_1")], function() { - // Needs a restart to complete this - BootstrapMonitor.checkAddonNotInstalled(ID1); - BootstrapMonitor.checkAddonNotStarted(ID1); - - AddonManager.getAddonByID(ID1, callback_soon(function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "4.0"); - do_check_true(b1.isActive); - do_check_false(b1.isSystem); - do_check_true(hasFlag(b1.pendingOperations, AddonManager.PENDING_UPGRADE)); - - restartManager(); - - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - do_check_eq(getInstallReason(), ADDON_DOWNGRADE); - do_check_eq(getInstallOldVersion(), 4); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - - AddonManager.getAddonByID(ID1, function(b1_2) { - do_check_neq(b1_2, null); - do_check_eq(b1_2.version, "1.0"); - do_check_true(b1_2.isActive); - do_check_false(b1_2.isSystem); - do_check_eq(b1_2.pendingOperations, AddonManager.PENDING_NONE); - - do_check_bootstrappedPref(run_test_27); - }); - })); - }); -} - -// Tests that updating from a bootstrappable add-on to a normal add-on while -// disabled calls the uninstall method -function run_test_27() { - AddonManager.getAddonByID(ID1, function(b1) { - do_check_neq(b1, null); - b1.userDisabled = true; - do_check_eq(b1.version, "1.0"); - do_check_false(b1.isActive); - do_check_eq(b1.pendingOperations, AddonManager.PENDING_NONE); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - - installAllFiles([do_get_addon("test_bootstrap1_4")], function() { - // Updating disabled things happens immediately - BootstrapMonitor.checkAddonNotInstalled(ID1); - do_check_eq(getUninstallReason(), ADDON_UPGRADE); - do_check_eq(getUninstallNewVersion(), 4); - BootstrapMonitor.checkAddonNotStarted(ID1); - - AddonManager.getAddonByID(ID1, callback_soon(function(b1_2) { - do_check_neq(b1_2, null); - do_check_eq(b1_2.version, "4.0"); - do_check_false(b1_2.isActive); - do_check_eq(b1_2.pendingOperations, AddonManager.PENDING_NONE); - - restartManager(); - - BootstrapMonitor.checkAddonNotInstalled(ID1); - BootstrapMonitor.checkAddonNotStarted(ID1); - - AddonManager.getAddonByID(ID1, function(b1_3) { - do_check_neq(b1_3, null); - do_check_eq(b1_3.version, "4.0"); - do_check_false(b1_3.isActive); - do_check_eq(b1_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_bootstrappedPref(run_test_28); - }); - })); - }); - }); -} - -// Tests that updating from a normal add-on to a bootstrappable add-on when -// disabled calls the install method but not the startup method -function run_test_28() { - installAllFiles([do_get_addon("test_bootstrap1_1")], function() { - do_execute_soon(function bootstrap_disabled_downgrade_check() { - // Doesn't need a restart to complete this - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - do_check_eq(getInstallReason(), ADDON_DOWNGRADE); - do_check_eq(getInstallOldVersion(), 4); - BootstrapMonitor.checkAddonNotStarted(ID1); - - AddonManager.getAddonByID(ID1, callback_soon(function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.isActive); - do_check_true(b1.userDisabled); - do_check_eq(b1.pendingOperations, AddonManager.PENDING_NONE); - - restartManager(); - - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - - AddonManager.getAddonByID(ID1, function(b1_2) { - do_check_neq(b1_2, null); - do_check_true(b1_2.userDisabled); - b1_2.userDisabled = false; - do_check_eq(b1_2.version, "1.0"); - do_check_true(b1_2.isActive); - do_check_false(b1_2.isSystem); - do_check_eq(b1_2.pendingOperations, AddonManager.PENDING_NONE); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - - do_check_bootstrappedPref(do_test_finished); - }); - })); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bootstrap_const.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bootstrap_const.js deleted file mode 100644 index 101d49510..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bootstrap_const.js +++ /dev/null @@ -1,17 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); -startupManager(); - -add_task(function*() { - let sawInstall = false; - Services.obs.addObserver(function() { - sawInstall = true; - }, "addon-install", false); - - yield promiseInstallAllFiles([do_get_addon("test_bootstrap_const")]); - - ok(sawInstall); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bootstrap_globals.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bootstrap_globals.js deleted file mode 100644 index 29b538d21..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bootstrap_globals.js +++ /dev/null @@ -1,37 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that bootstrap.js has the expected globals defined -Components.utils.import("resource://gre/modules/Services.jsm"); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - -const EXPECTED_GLOBALS = [ - ["Worker", "function"], - ["ChromeWorker", "function"], - ["console", "object"] -]; - -function run_test() { - do_test_pending(); - startupManager(); - let sawGlobals = false; - - Services.obs.addObserver(function(subject) { - subject.wrappedJSObject.expectedGlobals = EXPECTED_GLOBALS; - }, "bootstrap-request-globals", false); - - Services.obs.addObserver(function({ wrappedJSObject: seenGlobals }) { - for (let [name, ] of EXPECTED_GLOBALS) - do_check_true(seenGlobals.has(name)); - - sawGlobals = true; - }, "bootstrap-seen-globals", false); - - installAllFiles([do_get_addon("bootstrap_globals")], function() { - do_check_true(sawGlobals); - shutdownManager(); - do_test_finished(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bootstrap_resource.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bootstrap_resource.js deleted file mode 100644 index 7b7883225..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bootstrap_resource.js +++ /dev/null @@ -1,56 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that resource protocol substitutions are set and unset for bootstrapped add-ons. - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - let resourceProtocol = Services.io.getProtocolHandler("resource") - .QueryInterface(Components.interfaces.nsIResProtocolHandler); - startupManager(); - - installAllFiles([do_get_addon("test_chromemanifest_6")], - function() { - - AddonManager.getAddonByID("addon6@tests.mozilla.org", function(addon) { - do_check_neq(addon, null); - do_check_true(addon.isActive); - do_check_true(resourceProtocol.hasSubstitution("test-addon-1")); - - prepare_test({ - "addon6@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ] - }); - - do_check_eq(addon.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_DISABLE, 0); - addon.userDisabled = true; - ensure_test_completed(); - do_check_false(resourceProtocol.hasSubstitution("test-addon-1")) - - prepare_test({ - "addon6@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - do_check_eq(addon.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_ENABLE, 0); - addon.userDisabled = false; - ensure_test_completed(); - do_check_true(resourceProtocol.hasSubstitution("test-addon-1")); - - do_execute_soon(do_test_finished); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug1180901.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug1180901.js deleted file mode 100644 index c13531dff..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug1180901.js +++ /dev/null @@ -1,35 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - startupManager(); - run_next_test(); -} - -add_task(function* () { - let profileDir = OS.Constants.Path.profileDir; - let trashDir = OS.Path.join(profileDir, "extensions", "trash"); - let testFile = OS.Path.join(trashDir, "test.txt"); - - yield OS.File.makeDir(trashDir, { - from: profileDir, - ignoreExisting: true - }); - - let trashDirExists = yield OS.File.exists(trashDir); - ok(trashDirExists, "trash directory should have been created"); - - let file = yield OS.File.open(testFile, {create: true}, {winShare: 0}); - let fileExists = yield OS.File.exists(testFile); - ok(fileExists, "test.txt should have been created in " + trashDir); - - yield promiseInstallAllFiles([do_get_addon("test_install1")]); - yield promiseRestartManager(); - fileExists = yield OS.File.exists(testFile); - ok(fileExists, "test.txt still exists"); - yield file.close(); - yield OS.File.removeDir(OS.Path.join(OS.Constants.Path.profileDir, "extensions")); - yield promiseShutdownManager(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug1180901_2.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug1180901_2.js deleted file mode 100644 index 8e9f30ef2..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug1180901_2.js +++ /dev/null @@ -1,60 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - startupManager(); - run_next_test(); -} - -add_task(function* () { - let profileDir = OS.Constants.Path.profileDir; - let trashDir = OS.Path.join(profileDir, "extensions", "trash"); - let testFile = OS.Path.join(trashDir, "test.txt"); - - yield OS.File.makeDir(trashDir, { - from: profileDir, - ignoreExisting: true - }); - - let trashDirExists = yield OS.File.exists(trashDir); - ok(trashDirExists, "trash directory should have been created"); - - let file = yield OS.File.open(testFile, {create: true}, {winShare: 0}); - let fileExists = yield OS.File.exists(testFile); - ok(fileExists, "test.txt should have been created in " + trashDir); - - let promiseInstallStatus = new Promise((resolve, reject) => { - let listener = { - onInstallFailed: function() { - AddonManager.removeInstallListener(listener); - reject("extension installation should not have failed"); - }, - onInstallEnded: function() { - AddonManager.removeInstallListener(listener); - ok(true, "extension installation should not have failed"); - resolve(); - } - }; - - AddonManager.addInstallListener(listener); - }); - - yield promiseInstallAllFiles([do_get_addon("test_bootstrap1_1")]); - - // The testFile should still exist at this point because we have not - // yet closed the file handle and as a result, Windows cannot remove it. - fileExists = yield OS.File.exists(testFile); - ok(fileExists, "test.txt should still exist"); - - // Wait for the AddonManager to tell us if the installation of the extension - // succeeded or not. - yield promiseInstallStatus; - - // Cleanup - yield promiseShutdownManager(); - yield file.close(); - yield OS.File.remove(testFile); - yield OS.File.removeDir(trashDir); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug299716.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug299716.js deleted file mode 100644 index 66656abe6..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug299716.js +++ /dev/null @@ -1,208 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -// Disables security checking our updates which haven't been signed -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -// Update check listener. -const checkListener = { - pendingCount: 0, - - onUpdateAvailable: function onUpdateAvailable(aAddon, aInstall) { - for (let currentAddon of ADDONS) { - if (currentAddon.id == aAddon.id) { - currentAddon.newInstall = aInstall; - return; - } - } - }, - - onUpdateFinished: function onUpdateFinished() { - if (--this.pendingCount == 0) - next_test(); - } -} - -// Get the HTTP server. -Components.utils.import("resource://testing-common/httpd.js"); -var testserver; - -var ADDONS = [ - // XPCShell - { - id: "bug299716-a@tests.mozilla.org", - addon: "test_bug299716_a_1", - installed: true, - item: null, - newInstall: null - }, - - // Toolkit - { - id: "bug299716-b@tests.mozilla.org", - addon: "test_bug299716_b_1", - installed: true, - item: null, - newInstall: null - }, - - // XPCShell + Toolkit - { - id: "bug299716-c@tests.mozilla.org", - addon: "test_bug299716_c_1", - installed: true, - item: null, - newInstall: null - }, - - // XPCShell (Toolkit invalid) - { - id: "bug299716-d@tests.mozilla.org", - addon: "test_bug299716_d_1", - installed: true, - item: null, - newInstall: null - }, - - // Toolkit (XPCShell invalid) - { - id: "bug299716-e@tests.mozilla.org", - addon: "test_bug299716_e_1", - installed: false, - item: null, - newInstall: null, - failedAppName: "XPCShell" - }, - - // None (XPCShell, Toolkit invalid) - { - id: "bug299716-f@tests.mozilla.org", - addon: "test_bug299716_f_1", - installed: false, - item: null, - newInstall: null, - failedAppName: "XPCShell" - }, - - // None (Toolkit invalid) - { - id: "bug299716-g@tests.mozilla.org", - addon: "test_bug299716_g_1", - installed: false, - item: null, - newInstall: null, - failedAppName: "Toolkit" - }, -]; - -var next_test = function() {}; - -function do_check_item(aItem, aVersion, aAddonsEntry) { - if (aAddonsEntry.installed) { - if (aItem == null) - do_throw("Addon " + aAddonsEntry.id + " wasn't detected"); - if (aItem.version != aVersion) - do_throw("Addon " + aAddonsEntry.id + " was version " + aItem.version + " instead of " + aVersion); - } else if (aItem != null) { - do_throw("Addon " + aAddonsEntry.id + " was detected"); - } -} - -/** - * Start the test by installing extensions. - */ -function run_test() { - do_test_pending(); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "5", "1.9"); - - const dataDir = do_get_file("data"); - const addonsDir = do_get_addon(ADDONS[0].addon).parent; - - // Make sure we can actually get our data files. - const xpiFile = addonsDir.clone(); - xpiFile.append("test_bug299716_a_2.xpi"); - do_check_true(xpiFile.exists()); - - // Create and configure the HTTP server. - testserver = new HttpServer(); - testserver.registerDirectory("/addons/", addonsDir); - testserver.registerDirectory("/data/", dataDir); - testserver.start(4444); - - // Make sure we can fetch the files over HTTP. - const Ci = Components.interfaces; - const xhr = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"] - .createInstance(Ci.nsIXMLHttpRequest) - xhr.open("GET", "http://localhost:4444/addons/test_bug299716_a_2.xpi", false); - xhr.send(null); - do_check_true(xhr.status == 200); - - xhr.open("GET", "http://localhost:4444/data/test_bug299716.rdf", false); - xhr.send(null); - do_check_true(xhr.status == 200); - - // Start the real test. - startupManager(); - dump("\n\n*** INSTALLING NEW ITEMS\n\n"); - - installAllFiles(ADDONS.map(a => do_get_addon(a.addon)), run_test_pt2, - true); -} - -/** - * Check the versions of all items, and ask the extension manager to find updates. - */ -function run_test_pt2() { - dump("\n\n*** DONE INSTALLING NEW ITEMS\n\n"); - dump("\n\n*** RESTARTING EXTENSION MANAGER\n\n"); - restartManager(); - - AddonManager.getAddonsByIDs(ADDONS.map(a => a.id), function(items) { - dump("\n\n*** REQUESTING UPDATE\n\n"); - // checkListener will call run_test_pt3(). - next_test = run_test_pt3; - - // Try to update the items. - for (var i = 0; i < ADDONS.length; i++) { - var item = items[i]; - do_check_item(item, "0.1", ADDONS[i]); - - if (item) { - checkListener.pendingCount++; - ADDONS[i].item = item; - item.findUpdates(checkListener, AddonManager.UPDATE_WHEN_USER_REQUESTED); - } - } - }); -} - -/** - * Install new items for each enabled extension. - */ -function run_test_pt3() { - // Install the new items. - dump("\n\n*** UPDATING ITEMS\n\n"); - completeAllInstalls(ADDONS.filter(a => a.newInstall).map(a => a.newInstall), - run_test_pt4); -} - -/** - * Check the final version of each extension. - */ -function run_test_pt4() { - dump("\n\n*** RESTARTING EXTENSION MANAGER\n\n"); - restartManager(); - - dump("\n\n*** FINAL CHECKS\n\n"); - AddonManager.getAddonsByIDs(ADDONS.map(a => a.id), function(items) { - for (var i = 0; i < ADDONS.length; i++) { - var item = items[i]; - do_check_item(item, "0.2", ADDONS[i]); - } - - testserver.stop(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug299716_2.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug299716_2.js deleted file mode 100644 index c183edad4..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug299716_2.js +++ /dev/null @@ -1,50 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -// Disables security checking our updates which haven't been signed -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -// Get the HTTP server. -Components.utils.import("resource://testing-common/httpd.js"); -var testserver; - -var ADDON = { - id: "bug299716-2@tests.mozilla.org", - addon: "test_bug299716_2" -}; - -function run_test() { - do_test_pending(); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "1.9"); - - const dataDir = do_get_file("data"); - const addonsDir = do_get_addon(ADDON.addon).parent; - - // Create and configure the HTTP server. - testserver = new HttpServer(); - testserver.registerDirectory("/addons/", addonsDir); - testserver.registerDirectory("/data/", dataDir); - testserver.start(4444); - - startupManager(); - - installAllFiles([do_get_addon(ADDON.addon)], function() { - restartManager(); - - AddonManager.getAddonByID(ADDON.id, function(item) { - do_check_eq(item.version, 0.1); - do_check_false(item.isCompatible); - - item.findUpdates({ - onUpdateFinished: function(addon) { - do_check_false(item.isCompatible); - - testserver.stop(do_test_finished); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug324121.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug324121.js deleted file mode 100644 index 84b6c6189..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug324121.js +++ /dev/null @@ -1,178 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -// Disables security checking our updates which haven't been signed -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -// Get the HTTP server. -Components.utils.import("resource://testing-common/httpd.js"); -var testserver; - -var next_test = null; -var gItemsNotChecked =[]; - -var ADDONS = [ {id: "bug324121_1@tests.mozilla.org", - addon: "test_bug324121_1", - shouldCheck: false }, - {id: "bug324121_2@tests.mozilla.org", - addon: "test_bug324121_2", - shouldCheck: true }, - {id: "bug324121_3@tests.mozilla.org", - addon: "test_bug324121_3", - shouldCheck: true }, - {id: "bug324121_4@tests.mozilla.org", - addon: "test_bug324121_4", - shouldCheck: true }, - {id: "bug324121_5@tests.mozilla.org", - addon: "test_bug324121_5", - shouldCheck: false }, - {id: "bug324121_6@tests.mozilla.org", - addon: "test_bug324121_6", - shouldCheck: true }, - {id: "bug324121_7@tests.mozilla.org", - addon: "test_bug324121_7", - shouldCheck: true }, - {id: "bug324121_8@tests.mozilla.org", - addon: "test_bug324121_8", - shouldCheck: true }, - {id: "bug324121_9@tests.mozilla.org", - addon: "test_bug324121_9", - shouldCheck: false } ]; - -// nsIAddonUpdateCheckListener -var updateListener = { - pendingCount: 0, - - onUpdateAvailable: function onAddonUpdateEnded(aAddon) { - switch (aAddon.id) { - // add-on disabled - should not happen - case "bug324121_1@tests.mozilla.org": - // app id already compatible - should not happen - case "bug324121_5@tests.mozilla.org": - // toolkit id already compatible - should not happen - case "bug324121_9@tests.mozilla.org": - do_throw("Should not have seen an update check for " + aAddon.id); - break; - - // app id incompatible update available - case "bug324121_3@tests.mozilla.org": - // update rdf not found - case "bug324121_4@tests.mozilla.org": - // toolkit id incompatible update available - case "bug324121_7@tests.mozilla.org": - // update rdf not found - case "bug324121_8@tests.mozilla.org": - do_throw("Should be no update available for " + aAddon.id); - break; - - // Updates available - case "bug324121_2@tests.mozilla.org": - case "bug324121_6@tests.mozilla.org": - break; - - default: - do_throw("Update check for unknown " + aAddon.id); - } - - // pos should always be >= 0 so just let this throw if this fails - var pos = gItemsNotChecked.indexOf(aAddon.id); - gItemsNotChecked.splice(pos, 1); - }, - - onNoUpdateAvailable: function onNoUpdateAvailable(aAddon) { - switch (aAddon.id) { - // add-on disabled - should not happen - case "bug324121_1@tests.mozilla.org": - // app id already compatible - should not happen - case "bug324121_5@tests.mozilla.org": - // toolkit id already compatible - should not happen - case "bug324121_9@tests.mozilla.org": - do_throw("Should not have seen an update check for " + aAddon.id); - break; - - // app id incompatible update available - case "bug324121_3@tests.mozilla.org": - // update rdf not found - case "bug324121_4@tests.mozilla.org": - // toolkit id incompatible update available - case "bug324121_7@tests.mozilla.org": - // update rdf not found - case "bug324121_8@tests.mozilla.org": - break; - - // Updates available - case "bug324121_2@tests.mozilla.org": - case "bug324121_6@tests.mozilla.org": - do_throw("Should be an update available for " + aAddon.id); - break; - - default: - do_throw("Update check for unknown " + aAddon.id); - } - - // pos should always be >= 0 so just let this throw if this fails - var pos = gItemsNotChecked.indexOf(aAddon.id); - gItemsNotChecked.splice(pos, 1); - }, - - onUpdateFinished: function onUpdateFinished(aAddon) { - if (--this.pendingCount == 0) - test_complete(); - } -}; - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - const dataDir = do_get_file("data"); - - // Create and configure the HTTP server. - testserver = new HttpServer(); - testserver.registerDirectory("/data/", dataDir); - testserver.start(4444); - - startupManager(); - - installAllFiles(ADDONS.map(a => do_get_addon(a.addon)), function() { - restartManager(); - AddonManager.getAddonByID(ADDONS[0].id, callback_soon(function(firstAddon) { - do_check_true(firstAddon); - firstAddon.userDisabled = true; - restartManager(); - - AddonManager.getAddonsByTypes(["extension"], function(installedItems) { - var items = []; - - for (let addon of ADDONS) { - for (let installedItem of installedItems) { - if (addon.id != installedItem.id) - continue; - if (installedItem.userDisabled) - continue; - - if (addon.shouldCheck == installedItem.isCompatibleWith("3", "3")) { - do_throw(installedItem.id + " had the wrong compatibility: " + - installedItem.isCompatibleWith("3", "3")); - } - - if (addon.shouldCheck) { - gItemsNotChecked.push(addon.id); - updateListener.pendingCount++; - installedItem.findUpdates(updateListener, - AddonManager.UPDATE_WHEN_USER_REQUESTED, - "3", "3"); - } - } - } - }); - })); - }); -} - -function test_complete() { - do_check_eq(gItemsNotChecked.length, 0); - testserver.stop(do_test_finished); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug335238.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug335238.js deleted file mode 100644 index 251bdca70..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug335238.js +++ /dev/null @@ -1,173 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -const PREF_MATCH_OS_LOCALE = "intl.locale.matchOS"; -const PREF_SELECTED_LOCALE = "general.useragent.locale"; - -// Disables security checking our updates which haven't been signed -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -var Ci = Components.interfaces; -var Cu = Components.utils; - -Cu.import("resource://testing-common/httpd.js"); -Cu.import("resource://testing-common/MockRegistrar.jsm"); - -// This is the data we expect to see sent as part of the update url. -var EXPECTED = [ - { - id: "bug335238_1@tests.mozilla.org", - version: "1.3.4", - maxAppVersion: "5", - status: "userEnabled", - appId: "xpcshell@tests.mozilla.org", - appVersion: "1", - appOs: "XPCShell", - appAbi: "noarch-spidermonkey", - locale: "en-US", - reqVersion: "2" - }, - { - id: "bug335238_2@tests.mozilla.org", - version: "28at", - maxAppVersion: "7", - status: "userDisabled", - appId: "xpcshell@tests.mozilla.org", - appVersion: "1", - appOs: "XPCShell", - appAbi: "noarch-spidermonkey", - locale: "en-US", - reqVersion: "2" - }, - { - id: "bug335238_3@tests.mozilla.org", - version: "58", - maxAppVersion: "*", - status: "userDisabled,softblocked", - appId: "xpcshell@tests.mozilla.org", - appVersion: "1", - appOs: "XPCShell", - appAbi: "noarch-spidermonkey", - locale: "en-US", - reqVersion: "2" - }, - { - id: "bug335238_4@tests.mozilla.org", - version: "4", - maxAppVersion: "2+", - status: "userEnabled,blocklisted", - appId: "xpcshell@tests.mozilla.org", - appVersion: "1", - appOs: "XPCShell", - appAbi: "noarch-spidermonkey", - locale: "en-US", - reqVersion: "2" - } -]; - -var ADDONS = [ - {id: "bug335238_1@tests.mozilla.org", - addon: "test_bug335238_1"}, - {id: "bug335238_2@tests.mozilla.org", - addon: "test_bug335238_2"}, - {id: "bug335238_3@tests.mozilla.org", - addon: "test_bug335238_3"}, - {id: "bug335238_4@tests.mozilla.org", - addon: "test_bug335238_4"} -]; - -// This is a replacement for the blocklist service -var BlocklistService = { - getAddonBlocklistState: function(aAddon, aAppVersion, aToolkitVersion) { - if (aAddon.id == "bug335238_3@tests.mozilla.org") - return Ci.nsIBlocklistService.STATE_SOFTBLOCKED; - if (aAddon.id == "bug335238_4@tests.mozilla.org") - return Ci.nsIBlocklistService.STATE_BLOCKED; - return Ci.nsIBlocklistService.STATE_NOT_BLOCKED; - }, - - getPluginBlocklistState: function(aPlugin, aVersion, aAppVersion, aToolkitVersion) { - return Ci.nsIBlocklistService.STATE_NOT_BLOCKED; - }, - - isAddonBlocklisted: function(aAddon, aAppVersion, aToolkitVersion) { - return this.getAddonBlocklistState(aAddon, aAppVersion, aToolkitVersion) == - Ci.nsIBlocklistService.STATE_BLOCKED; - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIBlocklistService) - || iid.equals(Ci.nsISupports)) - return this; - - throw Components.results.NS_ERROR_NO_INTERFACE; - } -}; - -MockRegistrar.register("@mozilla.org/extensions/blocklist;1", BlocklistService); - -var server; - -var updateListener = { - pendingCount: 0, - - onUpdateAvailable: function(aAddon) { - do_throw("Should not have seen an update for " + aAddon.id); - }, - - onUpdateFinished: function() { - if (--this.pendingCount == 0) - server.stop(do_test_finished); - } -} - -var requestHandler = { - handle: function(metadata, response) - { - var expected = EXPECTED[metadata.path.substring(1)]; - var params = metadata.queryString.split("&"); - do_check_eq(params.length, 10); - for (var k in params) { - var pair = params[k].split("="); - var name = decodeURIComponent(pair[0]); - var value = decodeURIComponent(pair[1]); - do_check_eq(expected[name], value); - } - response.setStatusLine(metadata.httpVersion, 404, "Not Found"); - } -} - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - server = new HttpServer(); - server.registerPathHandler("/0", requestHandler); - server.registerPathHandler("/1", requestHandler); - server.registerPathHandler("/2", requestHandler); - server.registerPathHandler("/3", requestHandler); - server.start(4444); - - Services.prefs.setBoolPref(PREF_MATCH_OS_LOCALE, false); - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "en-US"); - - startupManager(); - installAllFiles(ADDONS.map(a => do_get_addon(a.addon)), function() { - - restartManager(); - AddonManager.getAddonByID(ADDONS[1].id, callback_soon(function(addon) { - do_check_true(!(!addon)); - addon.userDisabled = true; - restartManager(); - - AddonManager.getAddonsByIDs(ADDONS.map(a => a.id), function(installedItems) { - installedItems.forEach(function(item) { - updateListener.pendingCount++; - item.findUpdates(updateListener, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); - })); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug371495.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug371495.js deleted file mode 100644 index 43656f126..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug371495.js +++ /dev/null @@ -1,35 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -const PREF_MATCH_OS_LOCALE = "intl.locale.matchOS"; -const PREF_SELECTED_LOCALE = "general.useragent.locale"; - -const ADDON = "test_bug371495"; -const ID = "bug371495@tests.mozilla.org"; - -function run_test() -{ - // Setup for test - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1"); - - // Install test add-on - startupManager(); - installAllFiles([do_get_addon(ADDON)], function() { - AddonManager.getAddonByID(ID, callback_soon(function(addon) { - do_check_neq(addon, null); - do_check_eq(addon.name, "Test theme"); - restartManager(); - - AddonManager.getAddonByID(ID, callback_soon(function(addon2) { - do_check_neq(addon2, null); - do_check_eq(addon2.optionsURL, null); - do_check_eq(addon2.aboutURL, null); - - do_execute_soon(do_test_finished); - })); - })); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug384052.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug384052.js deleted file mode 100644 index aeaaf3d8f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug384052.js +++ /dev/null @@ -1,103 +0,0 @@ -const CLASS_ID = Components.ID("{12345678-1234-1234-1234-123456789abc}"); -const CONTRACT_ID = "@mozilla.org/test-parameter-source;1"; - -// Get and create the HTTP server. -Components.utils.import("resource://testing-common/httpd.js"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; - -var gTestURL = "http://127.0.0.1:" + gPort + "/update.rdf?itemID=%ITEM_ID%&custom1=%CUSTOM1%&custom2=%CUSTOM2%"; -var gExpectedQuery = "itemID=test@mozilla.org&custom1=custom_parameter_1&custom2=custom_parameter_2"; -var gSeenExpectedURL = false; - -var gComponentRegistrar = Components.manager.QueryInterface(AM_Ci.nsIComponentRegistrar); -var gCategoryManager = AM_Cc["@mozilla.org/categorymanager;1"].getService(AM_Ci.nsICategoryManager); - -// Factory for our parameter handler -var paramHandlerFactory = { - QueryInterface: function(iid) { - if (iid.equals(AM_Ci.nsIFactory) || iid.equals(AM_Ci.nsISupports)) - return this; - - throw Components.results.NS_ERROR_NO_INTERFACE; - }, - - createInstance: function(outer, iid) { - var bag = AM_Cc["@mozilla.org/hash-property-bag;1"]. - createInstance(AM_Ci.nsIWritablePropertyBag); - bag.setProperty("CUSTOM1", "custom_parameter_1"); - bag.setProperty("CUSTOM2", "custom_parameter_2"); - return bag.QueryInterface(iid); - } -}; - -function initTest() -{ - do_test_pending(); - // Setup extension manager - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - // Configure the HTTP server. - testserver.registerPathHandler("/update.rdf", function(aRequest, aResponse) { - gSeenExpectedURL = aRequest.queryString == gExpectedQuery; - aResponse.setStatusLine(null, 404, "Not Found"); - }); - - // Register our parameter handlers - gComponentRegistrar.registerFactory(CLASS_ID, "Test component", CONTRACT_ID, paramHandlerFactory); - gCategoryManager.addCategoryEntry("extension-update-params", "CUSTOM1", CONTRACT_ID, false, false); - gCategoryManager.addCategoryEntry("extension-update-params", "CUSTOM2", CONTRACT_ID, false, false); - - // Install a test extension into the profile - let dir = gProfD.clone(); - dir.append("extensions"); - writeInstallRDFForExtension({ - id: "test@mozilla.org", - version: "1.0", - name: "Test extension", - updateURL: gTestURL, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - }, dir); - - startupManager(); -} - -function shutdownTest() -{ - shutdownManager(); - - gComponentRegistrar.unregisterFactory(CLASS_ID, paramHandlerFactory); - gCategoryManager.deleteCategoryEntry("extension-update-params", "CUSTOM1", false); - gCategoryManager.deleteCategoryEntry("extension-update-params", "CUSTOM2", false); - - do_test_finished(); -} - -function run_test() -{ - initTest(); - - AddonManager.getAddonByID("test@mozilla.org", function(item) { - // Initiate update - item.findUpdates({ - onCompatibilityUpdateAvailable: function(addon) { - do_throw("Should not have seen a compatibility update"); - }, - - onUpdateAvailable: function(addon, install) { - do_throw("Should not have seen an available update"); - }, - - onUpdateFinished: function(addon, error) { - do_check_eq(error, AddonManager.UPDATE_STATUS_DOWNLOAD_ERROR); - do_check_true(gSeenExpectedURL); - do_execute_soon(shutdownTest); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug393285.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug393285.js deleted file mode 100644 index ebc330cdd..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug393285.js +++ /dev/null @@ -1,316 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -var {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; - -const URI_EXTENSION_BLOCKLIST_DIALOG = "chrome://mozapps/content/extensions/blocklist.xul"; - -Cu.import("resource://testing-common/httpd.js"); -Cu.import("resource://testing-common/MockRegistrar.jsm"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; - -// register static files with server and interpolate port numbers in them -mapFile("/data/test_bug393285.xml", testserver); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -var addonIDs = ["test_bug393285_1@tests.mozilla.org", - "test_bug393285_2@tests.mozilla.org", - "test_bug393285_3a@tests.mozilla.org", - "test_bug393285_3b@tests.mozilla.org", - "test_bug393285_4@tests.mozilla.org", - "test_bug393285_5@tests.mozilla.org", - "test_bug393285_6@tests.mozilla.org", - "test_bug393285_7@tests.mozilla.org", - "test_bug393285_8@tests.mozilla.org", - "test_bug393285_9@tests.mozilla.org", - "test_bug393285_10@tests.mozilla.org", - "test_bug393285_11@tests.mozilla.org", - "test_bug393285_12@tests.mozilla.org", - "test_bug393285_13@tests.mozilla.org", - "test_bug393285_14@tests.mozilla.org"]; - -// A window watcher to deal with the blocklist UI dialog. -var WindowWatcher = { - openWindow: function(parent, url, name, features, args) { - // Should be called to list the newly blocklisted items - do_check_eq(url, URI_EXTENSION_BLOCKLIST_DIALOG); - - // Simulate auto-disabling any softblocks - var list = args.wrappedJSObject.list; - list.forEach(function(aItem) { - if (!aItem.blocked) - aItem.disable = true; - }); - - // run the code after the blocklist is closed - Services.obs.notifyObservers(null, "addon-blocklist-closed", null); - - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -}; - -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - - -function load_blocklist(aFile, aCallback) { - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "blocklist-updated"); - - do_execute_soon(aCallback); - }, "blocklist-updated", false); - - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + aFile); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - - -function end_test() { - testserver.stop(do_test_finished); -} - -function run_test() { - do_test_pending(); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - writeInstallRDFForExtension({ - id: "test_bug393285_1@tests.mozilla.org", - name: "extension 1", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - - writeInstallRDFForExtension({ - id: "test_bug393285_2@tests.mozilla.org", - name: "extension 2", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_3a@tests.mozilla.org", - name: "extension 3a", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_3b@tests.mozilla.org", - name: "extension 3b", - version: "2.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_4@tests.mozilla.org", - name: "extension 4", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_5@tests.mozilla.org", - name: "extension 5", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_6@tests.mozilla.org", - name: "extension 6", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_7@tests.mozilla.org", - name: "extension 7", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_8@tests.mozilla.org", - name: "extension 8", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_9@tests.mozilla.org", - name: "extension 9", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_10@tests.mozilla.org", - name: "extension 10", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_11@tests.mozilla.org", - name: "extension 11", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_12@tests.mozilla.org", - name: "extension 12", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_13@tests.mozilla.org", - name: "extension 13", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_14@tests.mozilla.org", - name: "extension 14", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - startupManager(); - - AddonManager.getAddonsByIDs(addonIDs, function(addons) { - for (let addon of addons) { - do_check_eq(addon.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - } - run_test_1(); - }); -} - -function run_test_1() { - load_blocklist("test_bug393285.xml", function() { - restartManager(); - - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"] - .getService(Ci.nsIBlocklistService); - - AddonManager.getAddonsByIDs(addonIDs, - function([a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - a11, a12, a13, a14, a15]) { - // No info in blocklist, shouldn't be blocked - do_check_false(blocklist.isAddonBlocklisted(a1, "1", "1.9")); - - // Should always be blocked - do_check_true(blocklist.isAddonBlocklisted(a2, "1", "1.9")); - - // Only version 1 should be blocked - do_check_true(blocklist.isAddonBlocklisted(a3, "1", "1.9")); - do_check_false(blocklist.isAddonBlocklisted(a4, "1", "1.9")); - - // Should be blocked for app version 1 - do_check_true(blocklist.isAddonBlocklisted(a5, "1", "1.9")); - do_check_false(blocklist.isAddonBlocklisted(a5, "2", "1.9")); - - // Not blocklisted because we are a different OS - do_check_false(blocklist.isAddonBlocklisted(a6, "2", "1.9")); - - // Blocklisted based on OS - do_check_true(blocklist.isAddonBlocklisted(a7, "2", "1.9")); - do_check_true(blocklist.isAddonBlocklisted(a8, "2", "1.9")); - - // Not blocklisted because we are a different ABI - do_check_false(blocklist.isAddonBlocklisted(a9, "2", "1.9")); - - // Blocklisted based on ABI - do_check_true(blocklist.isAddonBlocklisted(a10, "2", "1.9")); - do_check_true(blocklist.isAddonBlocklisted(a11, "2", "1.9")); - - // Doesnt match both os and abi so not blocked - do_check_false(blocklist.isAddonBlocklisted(a12, "2", "1.9")); - do_check_false(blocklist.isAddonBlocklisted(a13, "2", "1.9")); - do_check_false(blocklist.isAddonBlocklisted(a14, "2", "1.9")); - - // Matches both os and abi so blocked - do_check_true(blocklist.isAddonBlocklisted(a15, "2", "1.9")); - end_test(); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug394300.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug394300.js deleted file mode 100644 index bd393b91c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug394300.js +++ /dev/null @@ -1,56 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -// Disables security checking our updates which haven't been signed -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -Components.utils.import("resource://testing-common/httpd.js"); -var server; - -// nsIAddonUpdateCheckListener implementation -var updateListener = { - _count: 0, - - onUpdateAvailable: function onAddonUpdateEnded(aAddon, aInstall) { - do_check_eq(aInstall.version, 10); - }, - - onNoUpdateAvailable: function onNoUpdateAvailable(aAddon) { - do_throw("Expected an available update for " + aAddon.id); - }, - - onUpdateFinished: function onUpdateFinished() { - if (++this._count == 2) - server.stop(do_test_finished); - }, -} - -function run_test() -{ - // Setup for test - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - startupManager(); - - installAllFiles([do_get_addon("test_bug394300_1"), - do_get_addon("test_bug394300_2")], function() { - - restartManager(); - - AddonManager.getAddonsByIDs(["bug394300_1@tests.mozilla.org", - "bug394300_2@tests.mozilla.org"], function(updates) { - - do_check_neq(updates[0], null); - do_check_neq(updates[1], null); - - server = new HttpServer(); - server.registerDirectory("/", do_get_file("data")); - server.start(4444); - - updates[0].findUpdates(updateListener, AddonManager.UPDATE_WHEN_USER_REQUESTED); - updates[1].findUpdates(updateListener, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug397778.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug397778.js deleted file mode 100644 index aa18a6946..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug397778.js +++ /dev/null @@ -1,117 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -const PREF_MATCH_OS_LOCALE = "intl.locale.matchOS"; -const PREF_SELECTED_LOCALE = "general.useragent.locale"; - -const ADDON = "test_bug397778"; -const ID = "bug397778@tests.mozilla.org"; - -function run_test() -{ - // Setup for test - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1"); - Services.prefs.setBoolPref(PREF_MATCH_OS_LOCALE, false); - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "fr-FR"); - - // Install test add-on - startupManager(); - installAllFiles([do_get_addon(ADDON)], function() { - restartManager(); - - run_test_1(); - }); -} - -function run_test_1() { - AddonManager.getAddonByID(ID, callback_soon(function(addon) { - do_check_neq(addon, null); - do_check_eq(addon.name, "fr Name"); - do_check_eq(addon.description, "fr Description"); - - // Disable item - addon.userDisabled = true; - restartManager(); - - AddonManager.getAddonByID(ID, function(newAddon) { - do_check_neq(newAddon, null); - do_check_eq(newAddon.name, "fr Name"); - - do_execute_soon(run_test_2); - }); - })); -} - -function run_test_2() { - // Change locale. The more specific de-DE is the best match - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "de"); - restartManager(); - - AddonManager.getAddonByID(ID, function(addon) { - do_check_neq(addon, null); - do_check_eq(addon.name, "de-DE Name"); - do_check_eq(addon.description, null); - - do_execute_soon(run_test_3); - }); -} - -function run_test_3() { - // Change locale. Locale case should have no effect - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "DE-de"); - restartManager(); - - AddonManager.getAddonByID(ID, function(addon) { - do_check_neq(addon, null); - do_check_eq(addon.name, "de-DE Name"); - do_check_eq(addon.description, null); - - do_execute_soon(run_test_4); - }); -} - -function run_test_4() { - // Change locale. es-ES should closely match - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "es-AR"); - restartManager(); - - AddonManager.getAddonByID(ID, function(addon) { - do_check_neq(addon, null); - do_check_eq(addon.name, "es-ES Name"); - do_check_eq(addon.description, "es-ES Description"); - - do_execute_soon(run_test_5); - }); -} - -function run_test_5() { - // Change locale. Either zh-CN or zh-TW could match - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "zh"); - restartManager(); - - AddonManager.getAddonByID(ID, function(addon) { - do_check_neq(addon, null); - if (addon.name != "zh-TW Name" && addon.name != "zh-CN Name") - do_throw("zh matched to " + addon.name); - - do_execute_soon(run_test_6); - }); -} - -function run_test_6() { - // Unknown locale should try to match against en-US as well. Of en,en-GB - // en should match as being less specific - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "nl-NL"); - restartManager(); - - AddonManager.getAddonByID(ID, function(addon) { - do_check_neq(addon, null); - do_check_eq(addon.name, "en Name"); - do_check_eq(addon.description, "en Description"); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug406118.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug406118.js deleted file mode 100644 index e22ab87c9..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug406118.js +++ /dev/null @@ -1,155 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -var addonIDs = ["test_bug393285_1@tests.mozilla.org", - "test_bug393285_2@tests.mozilla.org", - "test_bug393285_3a@tests.mozilla.org", - "test_bug393285_4@tests.mozilla.org"]; - -var {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; - -const URI_EXTENSION_BLOCKLIST_DIALOG = "chrome://mozapps/content/extensions/blocklist.xul"; - -Cu.import("resource://testing-common/httpd.js"); -Cu.import("resource://testing-common/MockRegistrar.jsm"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; - -// register static files with server and interpolate port numbers in them -mapFile("/data/test_bug393285.xml", testserver); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// A window watcher to deal with the blocklist UI dialog. -var WindowWatcher = { - openWindow: function(parent, url, name, features, args) { - // Should be called to list the newly blocklisted items - do_check_eq(url, URI_EXTENSION_BLOCKLIST_DIALOG); - - // Simulate auto-disabling any softblocks - var list = args.wrappedJSObject.list; - list.forEach(function(aItem) { - if (!aItem.blocked) - aItem.disable = true; - }); - - // run the code after the blocklist is closed - Services.obs.notifyObservers(null, "addon-blocklist-closed", null); - - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -}; - -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - -function load_blocklist(aFile, aCallback) { - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "blocklist-updated"); - - do_execute_soon(aCallback); - }, "blocklist-updated", false); - - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + aFile); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - - -function end_test() { - testserver.stop(do_test_finished); -} - -function run_test() { - do_test_pending(); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - writeInstallRDFForExtension({ - id: "test_bug393285_1@tests.mozilla.org", - name: "extension 1", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - - writeInstallRDFForExtension({ - id: "test_bug393285_2@tests.mozilla.org", - name: "extension 2", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_3a@tests.mozilla.org", - name: "extension 3a", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "test_bug393285_4@tests.mozilla.org", - name: "extension 4", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }, profileDir); - - startupManager(); - - AddonManager.getAddonsByIDs(addonIDs, function(addons) { - for (let addon of addons) { - do_check_eq(addon.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - } - run_test_1(); - }); -} - -function run_test_1() { - load_blocklist("test_bug393285.xml", function() { - restartManager(); - - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"] - .getService(Ci.nsIBlocklistService); - - AddonManager.getAddonsByIDs(addonIDs, - function([a1, a2, a3, a4]) { - // No info in blocklist, shouldn't be blocked - do_check_false(blocklist.isAddonBlocklisted(a1, null, null)); - - // All these should be blocklisted for the current app. - do_check_true(blocklist.isAddonBlocklisted(a2, null, null)); - do_check_true(blocklist.isAddonBlocklisted(a3, null, null)); - do_check_true(blocklist.isAddonBlocklisted(a4, null, null)); - - end_test(); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug424262.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug424262.js deleted file mode 100644 index 8b29e15a5..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug424262.js +++ /dev/null @@ -1,62 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -Components.utils.import("resource://gre/modules/addons/AddonRepository.jsm"); - -const PREF_GETADDONS_GETRECOMMENDED = "extensions.getAddons.recommended.url"; - -Components.utils.import("resource://testing-common/httpd.js"); -var server; -var RESULTS = [ - null, - null, - 0, - 2, - 4, - 5, - 5, - 5 -]; - -var RecommendedCallback = { - searchSucceeded: function(addons, length, total) { - dump("loaded"); - // Search is complete - do_check_eq(length, RESULTS.length); - - for (var i = 0; i < length; i++) { - if (addons[i].averageRating != RESULTS[i]) - do_throw("Rating for " + addons[i].id + " was " + addons[i].averageRating + ", should have been " + RESULTS[i]); - } - server.stop(do_test_finished); - }, - - searchFailed: function() { - server.stop(do_test_finished); - do_throw("Recommended results failed"); - } -}; - -function run_test() -{ - // EM needs to be running. - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - startupManager(); - - server = new HttpServer(); - server.start(-1); - gPort = server.identity.primaryPort; - mapFile("/data/test_bug424262.xml", server); - - // Point the addons repository to the test server - Services.prefs.setCharPref(PREF_GETADDONS_GETRECOMMENDED, "http://localhost:" + - gPort + "/data/test_bug424262.xml"); - - do_check_neq(AddonRepository, null); - - do_test_pending(); - // Pull some results. - AddonRepository.retrieveRecommendedAddons(RESULTS.length, RecommendedCallback); -} - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug425657.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug425657.js deleted file mode 100644 index f11a942fb..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug425657.js +++ /dev/null @@ -1,27 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -const ADDON = "test_bug425657"; -const ID = "bug425657@tests.mozilla.org"; - -function run_test() -{ - // Setup for test - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1"); - - // Install test add-on - startupManager(); - installAllFiles([do_get_addon(ADDON)], function() { - restartManager(); - AddonManager.getAddonByID(ID, function(addon) { - do_check_neq(addon, null); - do_check_eq(addon.name, "Deutsches W\u00f6rterbuch"); - do_check_eq(addon.name.length, 20); - - do_execute_soon(do_test_finished); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug430120.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug430120.js deleted file mode 100644 index e13f36a7c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug430120.js +++ /dev/null @@ -1,135 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -const BLOCKLIST_TIMER = "blocklist-background-update-timer"; -const PREF_BLOCKLIST_URL = "extensions.blocklist.url"; -const PREF_BLOCKLIST_ENABLED = "extensions.blocklist.enabled"; -const PREF_APP_DISTRIBUTION = "distribution.id"; -const PREF_APP_DISTRIBUTION_VERSION = "distribution.version"; -const PREF_APP_UPDATE_CHANNEL = "app.update.channel"; -const PREF_GENERAL_USERAGENT_LOCALE = "general.useragent.locale"; -const CATEGORY_UPDATE_TIMER = "update-timer"; - -// Get the HTTP server. -Components.utils.import("resource://testing-common/httpd.js"); -Components.utils.import("resource://testing-common/MockRegistrar.jsm"); -var testserver; -var gOSVersion; -var gBlocklist; - -// This is a replacement for the timer service so we can trigger timers -var timerService = { - - hasTimer: function(id) { - var catMan = Components.classes["@mozilla.org/categorymanager;1"] - .getService(Components.interfaces.nsICategoryManager); - var entries = catMan.enumerateCategory(CATEGORY_UPDATE_TIMER); - while (entries.hasMoreElements()) { - var entry = entries.getNext().QueryInterface(Components.interfaces.nsISupportsCString).data; - var value = catMan.getCategoryEntry(CATEGORY_UPDATE_TIMER, entry); - var timerID = value.split(",")[2]; - if (id == timerID) { - return true; - } - } - return false; - }, - - fireTimer: function(id) { - gBlocklist.QueryInterface(Components.interfaces.nsITimerCallback).notify(null); - }, - - QueryInterface: function(iid) { - if (iid.equals(Components.interfaces.nsIUpdateTimerManager) - || iid.equals(Components.interfaces.nsISupports)) - return this; - - throw Components.results.NS_ERROR_NO_INTERFACE; - } -}; - -MockRegistrar.register("@mozilla.org/updates/timer-manager;1", timerService); - -function failHandler(metadata, response) { - do_throw("Should not have attempted to retrieve the blocklist when it is disabled"); -} - -function pathHandler(metadata, response) { - var ABI = "noarch-spidermonkey"; - // the blacklist service special-cases ABI for Universal binaries, - // so do the same here. - if ("@mozilla.org/xpcom/mac-utils;1" in Components.classes) { - var macutils = Components.classes["@mozilla.org/xpcom/mac-utils;1"] - .getService(Components.interfaces.nsIMacUtils); - if (macutils.isUniversalBinary) - ABI += "-u-" + macutils.architecturesInBinary; - } - do_check_eq(metadata.queryString, - "xpcshell@tests.mozilla.org&1&XPCShell&1&" + - gAppInfo.appBuildID + "&" + - "XPCShell_" + ABI + "&locale&updatechannel&" + - gOSVersion + "&1.9&distribution&distribution-version"); - gBlocklist.observe(null, "quit-application", ""); - gBlocklist.observe(null, "xpcom-shutdown", ""); - testserver.stop(do_test_finished); -} - -function run_test() { - var osVersion; - var sysInfo = Components.classes["@mozilla.org/system-info;1"] - .getService(Components.interfaces.nsIPropertyBag2); - try { - osVersion = sysInfo.getProperty("name") + " " + sysInfo.getProperty("version"); - if (osVersion) { - try { - osVersion += " (" + sysInfo.getProperty("secondaryLibrary") + ")"; - } - catch (e) { - } - gOSVersion = encodeURIComponent(osVersion); - } - } - catch (e) { - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - testserver = new HttpServer(); - testserver.registerPathHandler("/1", failHandler); - testserver.registerPathHandler("/2", pathHandler); - testserver.start(-1); - gPort = testserver.identity.primaryPort; - - // Initialise the blocklist service - gBlocklist = Components.classes["@mozilla.org/extensions/blocklist;1"] - .getService(Components.interfaces.nsIBlocklistService) - .QueryInterface(Components.interfaces.nsIObserver); - gBlocklist.observe(null, "profile-after-change", ""); - - do_check_true(timerService.hasTimer(BLOCKLIST_TIMER)); - - do_test_pending(); - - // This should have no effect as the blocklist is disabled - Services.prefs.setCharPref(PREF_BLOCKLIST_URL, "http://localhost:" + gPort + "/1"); - Services.prefs.setBoolPref(PREF_BLOCKLIST_ENABLED, false); - timerService.fireTimer(BLOCKLIST_TIMER); - - // Some values have to be on the default branch to work - var defaults = Services.prefs.QueryInterface(Components.interfaces.nsIPrefService) - .getDefaultBranch(null); - defaults.setCharPref(PREF_APP_UPDATE_CHANNEL, "updatechannel"); - defaults.setCharPref(PREF_APP_DISTRIBUTION, "distribution"); - defaults.setCharPref(PREF_APP_DISTRIBUTION_VERSION, "distribution-version"); - defaults.setCharPref(PREF_GENERAL_USERAGENT_LOCALE, "locale"); - - // This should correctly escape everything - Services.prefs.setCharPref(PREF_BLOCKLIST_URL, "http://localhost:" + gPort + "/2?" + - "%APP_ID%&%APP_VERSION%&%PRODUCT%&%VERSION%&%BUILD_ID%&" + - "%BUILD_TARGET%&%LOCALE%&%CHANNEL%&" + - "%OS_VERSION%&%PLATFORM_VERSION%&%DISTRIBUTION%&%DISTRIBUTION_VERSION%"); - Services.prefs.setBoolPref(PREF_BLOCKLIST_ENABLED, true); - timerService.fireTimer(BLOCKLIST_TIMER); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug449027.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug449027.js deleted file mode 100644 index 1512a7f92..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug449027.js +++ /dev/null @@ -1,429 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -const URI_EXTENSION_BLOCKLIST_DIALOG = "chrome://mozapps/content/extensions/blocklist.xul"; - -var Ci = Components.interfaces; -var Cu = Components.utils; - -Cu.import("resource://testing-common/httpd.js"); -Cu.import("resource://testing-common/MockRegistrar.jsm"); - -var ADDONS = [{ - id: "test_bug449027_1@tests.mozilla.org", - name: "Bug 449027 Addon Test 1", - version: "5", - start: false, - appBlocks: false, - toolkitBlocks: false -}, { - id: "test_bug449027_2@tests.mozilla.org", - name: "Bug 449027 Addon Test 2", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: false -}, { - id: "test_bug449027_3@tests.mozilla.org", - name: "Bug 449027 Addon Test 3", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: false -}, { - id: "test_bug449027_4@tests.mozilla.org", - name: "Bug 449027 Addon Test 4", - version: "5", - start: false, - appBlocks: false, - toolkitBlocks: false -}, { - id: "test_bug449027_5@tests.mozilla.org", - name: "Bug 449027 Addon Test 5", - version: "5", - start: false, - appBlocks: false, - toolkitBlocks: false -}, { - id: "test_bug449027_6@tests.mozilla.org", - name: "Bug 449027 Addon Test 6", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: false -}, { - id: "test_bug449027_7@tests.mozilla.org", - name: "Bug 449027 Addon Test 7", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: false -}, { - id: "test_bug449027_8@tests.mozilla.org", - name: "Bug 449027 Addon Test 8", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: false -}, { - id: "test_bug449027_9@tests.mozilla.org", - name: "Bug 449027 Addon Test 9", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: false -}, { - id: "test_bug449027_10@tests.mozilla.org", - name: "Bug 449027 Addon Test 10", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: false -}, { - id: "test_bug449027_11@tests.mozilla.org", - name: "Bug 449027 Addon Test 11", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: false -}, { - id: "test_bug449027_12@tests.mozilla.org", - name: "Bug 449027 Addon Test 12", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: false -}, { - id: "test_bug449027_13@tests.mozilla.org", - name: "Bug 449027 Addon Test 13", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: false -}, { - id: "test_bug449027_14@tests.mozilla.org", - name: "Bug 449027 Addon Test 14", - version: "5", - start: false, - appBlocks: false, - toolkitBlocks: false -}, { - id: "test_bug449027_15@tests.mozilla.org", - name: "Bug 449027 Addon Test 15", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: true -}, { - id: "test_bug449027_16@tests.mozilla.org", - name: "Bug 449027 Addon Test 16", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: true -}, { - id: "test_bug449027_17@tests.mozilla.org", - name: "Bug 449027 Addon Test 17", - version: "5", - start: false, - appBlocks: false, - toolkitBlocks: false -}, { - id: "test_bug449027_18@tests.mozilla.org", - name: "Bug 449027 Addon Test 18", - version: "5", - start: false, - appBlocks: false, - toolkitBlocks: false -}, { - id: "test_bug449027_19@tests.mozilla.org", - name: "Bug 449027 Addon Test 19", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: true -}, { - id: "test_bug449027_20@tests.mozilla.org", - name: "Bug 449027 Addon Test 20", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: true -}, { - id: "test_bug449027_21@tests.mozilla.org", - name: "Bug 449027 Addon Test 21", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: true -}, { - id: "test_bug449027_22@tests.mozilla.org", - name: "Bug 449027 Addon Test 22", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: true -}, { - id: "test_bug449027_23@tests.mozilla.org", - name: "Bug 449027 Addon Test 23", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: true -}, { - id: "test_bug449027_24@tests.mozilla.org", - name: "Bug 449027 Addon Test 24", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: true -}, { - id: "test_bug449027_25@tests.mozilla.org", - name: "Bug 449027 Addon Test 25", - version: "5", - start: false, - appBlocks: true, - toolkitBlocks: true -}]; - -function MockPluginTag(name, version, start, appBlocks, toolkitBlocks) -{ - this.name = name; - this.version = version; - this.start = start; - this.appBlocks = appBlocks; - this.toolkitBlocks = toolkitBlocks; -} -Object.defineProperty(MockPluginTag.prototype, "blocklisted", { - get: function MockPluginTag_getBlocklisted() { - let bls = AM_Cc["@mozilla.org/extensions/blocklist;1"].getService(Ci.nsIBlocklistService); - return bls.getPluginBlocklistState(this) == bls.STATE_BLOCKED; - } -}); - -var PLUGINS = [ - new MockPluginTag("test_bug449027_1", "5", false, false, false), - new MockPluginTag("test_bug449027_2", "5", false, true, false), - new MockPluginTag("test_bug449027_3", "5", false, true, false), - new MockPluginTag("test_bug449027_4", "5", false, false, false), - new MockPluginTag("test_bug449027_5", "5", false, false, false), - new MockPluginTag("test_bug449027_6", "5", false, true, false), - new MockPluginTag("test_bug449027_7", "5", false, true, false), - new MockPluginTag("test_bug449027_8", "5", false, true, false), - new MockPluginTag("test_bug449027_9", "5", false, true, false), - new MockPluginTag("test_bug449027_10", "5", false, true, false), - new MockPluginTag("test_bug449027_11", "5", false, true, false), - new MockPluginTag("test_bug449027_12", "5", false, true, false), - new MockPluginTag("test_bug449027_13", "5", false, true, false), - new MockPluginTag("test_bug449027_14", "5", false, false, false), - new MockPluginTag("test_bug449027_15", "5", false, true, true), - new MockPluginTag("test_bug449027_16", "5", false, true, true), - new MockPluginTag("test_bug449027_17", "5", false, false, false), - new MockPluginTag("test_bug449027_18", "5", false, false, false), - new MockPluginTag("test_bug449027_19", "5", false, true, true), - new MockPluginTag("test_bug449027_20", "5", false, true, true), - new MockPluginTag("test_bug449027_21", "5", false, true, true), - new MockPluginTag("test_bug449027_22", "5", false, true, true), - new MockPluginTag("test_bug449027_23", "5", false, true, true), - new MockPluginTag("test_bug449027_24", "5", false, true, true), - new MockPluginTag("test_bug449027_25", "5", false, true, true) -]; - -var gCallback = null; -var gTestserver = null; -var gNewBlocks = []; - -// A fake plugin host for the blocklist service to use -var PluginHost = { - getPluginTags: function(countRef) { - countRef.value = PLUGINS.length; - return PLUGINS; - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIPluginHost) - || iid.equals(Ci.nsISupports)) - return this; - - throw Components.results.NS_ERROR_NO_INTERFACE; - } -} - -// Don't need the full interface, attempts to call other methods will just -// throw which is just fine -var WindowWatcher = { - openWindow: function(parent, url, name, features, args) { - // Should be called to list the newly blocklisted items - do_check_eq(url, URI_EXTENSION_BLOCKLIST_DIALOG); - do_check_neq(gCallback, null); - - args = args.wrappedJSObject; - - gNewBlocks = []; - var list = args.list; - for (let listItem of list) - gNewBlocks.push(listItem.name + " " + listItem.version); - - // Call the callback after the blocklist has finished up - do_timeout(0, gCallback); - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Components.results.NS_ERROR_NO_INTERFACE; - } -} - -MockRegistrar.register("@mozilla.org/plugin/host;1", PluginHost); -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - -function create_addon(addon) { - var installrdf = "<?xml version=\"1.0\"?>\n" + - "\n" + - "<RDF xmlns=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n" + - " xmlns:em=\"http://www.mozilla.org/2004/em-rdf#\">\n" + - " <Description about=\"urn:mozilla:install-manifest\">\n" + - " <em:id>" + addon.id + "</em:id>\n" + - " <em:version>" + addon.version + "</em:version>\n" + - " <em:targetApplication>\n" + - " <Description>\n" + - " <em:id>xpcshell@tests.mozilla.org</em:id>\n" + - " <em:minVersion>3</em:minVersion>\n" + - " <em:maxVersion>3</em:maxVersion>\n" + - " </Description>\n" + - " </em:targetApplication>\n" + - " <em:name>" + addon.name + "</em:name>\n" + - " </Description>\n" + - "</RDF>\n"; - var target = gProfD.clone(); - target.append("extensions"); - target.append(addon.id); - target.append("install.rdf"); - target.create(target.NORMAL_FILE_TYPE, 0o644); - var stream = Components.classes["@mozilla.org/network/file-output-stream;1"] - .createInstance(Ci.nsIFileOutputStream); - stream.init(target, 0x04 | 0x08 | 0x20, 0o664, 0); // write, create, truncate - stream.write(installrdf, installrdf.length); - stream.close(); -} - -/** - * Checks that items are blocklisted correctly according to the current test. - * If a lastTest is provided checks that the notification dialog got passed - * the newly blocked items compared to the previous test. - */ -function check_state(test, lastTest, callback) { - AddonManager.getAddonsByIDs(ADDONS.map(a => a.id), function(addons) { - for (var i = 0; i < ADDONS.length; i++) { - var blocked = addons[i].blocklistState == Ci.nsIBlocklistService.STATE_BLOCKED; - if (blocked != ADDONS[i][test]) - do_throw("Blocklist state did not match expected for extension " + (i + 1) + ", test " + test); - } - - for (i = 0; i < PLUGINS.length; i++) { - if (PLUGINS[i].blocklisted != PLUGINS[i][test]) - do_throw("Blocklist state did not match expected for plugin " + (i + 1) + ", test " + test); - } - - if (lastTest) { - var expected = 0; - for (i = 0; i < ADDONS.length; i++) { - if (ADDONS[i][test] && !ADDONS[i][lastTest]) { - if (gNewBlocks.indexOf(ADDONS[i].name + " " + ADDONS[i].version) < 0) - do_throw("Addon " + (i + 1) + " should have been listed in the blocklist notification for test " + test); - expected++; - } - } - - for (i = 0; i < PLUGINS.length; i++) { - if (PLUGINS[i][test] && !PLUGINS[i][lastTest]) { - if (gNewBlocks.indexOf(PLUGINS[i].name + " " + PLUGINS[i].version) < 0) - do_throw("Plugin " + (i + 1) + " should have been listed in the blocklist notification for test " + test); - expected++; - } - } - - do_check_eq(expected, gNewBlocks.length); - } - do_execute_soon(callback); - }); -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + gPort + "/data/" + file); - var blocklist = Components.classes["@mozilla.org/extensions/blocklist;1"] - .getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -function run_test() { - // Setup for test - dump("Setting up tests\n"); - // Rather than keeping lots of identical add-ons in version control, just - // write them into the profile. - for (let addon of ADDONS) - create_addon(addon); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - gTestserver = new HttpServer(); - gTestserver.registerDirectory("/data/", do_get_file("data")); - gTestserver.start(-1); - gPort = gTestserver.identity.primaryPort; - - do_test_pending(); - check_test_pt1(); -} - -/** - * Checks the initial state is correct - */ -function check_test_pt1() { - dump("Checking pt 1\n"); - - AddonManager.getAddonsByIDs(ADDONS.map(a => a.id), function(addons) { - for (var i = 0; i < ADDONS.length; i++) { - if (!addons[i]) - do_throw("Addon " + (i + 1) + " did not get installed correctly"); - } - - do_execute_soon(function checkstate1() { check_state("start", null, run_test_pt2); }); - }); -} - -/** - * Load the toolkit based blocks - */ -function run_test_pt2() { - dump("Running test pt 2\n"); - gCallback = check_test_pt2; - load_blocklist("test_bug449027_toolkit.xml"); -} - -function check_test_pt2() { - dump("Checking pt 2\n"); - check_state("toolkitBlocks", "start", run_test_pt3); -} - -/** - * Load the application based blocks - */ -function run_test_pt3() { - dump("Running test pt 3\n"); - gCallback = check_test_pt3; - load_blocklist("test_bug449027_app.xml"); -} - -function check_test_pt3() { - dump("Checking pt 3\n"); - check_state("appBlocks", "toolkitBlocks", end_test); -} - -function end_test() { - gTestserver.stop(do_test_finished); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug455906.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug455906.js deleted file mode 100644 index 06e29b376..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug455906.js +++ /dev/null @@ -1,517 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -var Cc = Components.classes; -var Ci = Components.interfaces; -var Cu = Components.utils; -var Cr = Components.results; - -const URI_EXTENSION_BLOCKLIST_DIALOG = "chrome://mozapps/content/extensions/blocklist.xul"; - -Cu.import("resource://testing-common/httpd.js"); -Cu.import("resource://testing-common/MockRegistrar.jsm"); -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; - -// register static files with server and interpolate port numbers in them -mapFile("/data/bug455906_warn.xml", gTestserver); -mapFile("/data/bug455906_start.xml", gTestserver); -mapFile("/data/bug455906_block.xml", gTestserver); -mapFile("/data/bug455906_empty.xml", gTestserver); - -// Workaround for Bug 658720 - URL formatter can leak during xpcshell tests -const PREF_BLOCKLIST_ITEM_URL = "extensions.blocklist.itemURL"; -Services.prefs.setCharPref(PREF_BLOCKLIST_ITEM_URL, "http://localhost:" + gPort + "/blocklist/%blockID%"); - -var ADDONS = [{ - // Tests how the blocklist affects a disabled add-on - id: "test_bug455906_1@tests.mozilla.org", - name: "Bug 455906 Addon Test 1", - version: "5", - appVersion: "3" -}, { - // Tests how the blocklist affects an enabled add-on - id: "test_bug455906_2@tests.mozilla.org", - name: "Bug 455906 Addon Test 2", - version: "5", - appVersion: "3" -}, { - // Tests how the blocklist affects an enabled add-on, to be disabled by the notification - id: "test_bug455906_3@tests.mozilla.org", - name: "Bug 455906 Addon Test 3", - version: "5", - appVersion: "3" -}, { - // Tests how the blocklist affects a disabled add-on that was already warned about - id: "test_bug455906_4@tests.mozilla.org", - name: "Bug 455906 Addon Test 4", - version: "5", - appVersion: "3" -}, { - // Tests how the blocklist affects an enabled add-on that was already warned about - id: "test_bug455906_5@tests.mozilla.org", - name: "Bug 455906 Addon Test 5", - version: "5", - appVersion: "3" -}, { - // Tests how the blocklist affects an already blocked add-on - id: "test_bug455906_6@tests.mozilla.org", - name: "Bug 455906 Addon Test 6", - version: "5", - appVersion: "3" -}, { - // Tests how the blocklist affects an incompatible add-on - id: "test_bug455906_7@tests.mozilla.org", - name: "Bug 455906 Addon Test 7", - version: "5", - appVersion: "2" -}, { - // Spare add-on used to ensure we get a notification when switching lists - id: "dummy_bug455906_1@tests.mozilla.org", - name: "Dummy Addon 1", - version: "5", - appVersion: "3" -}, { - // Spare add-on used to ensure we get a notification when switching lists - id: "dummy_bug455906_2@tests.mozilla.org", - name: "Dummy Addon 2", - version: "5", - appVersion: "3" -}]; - -function MockPlugin(name, version, enabledState) { - this.name = name; - this.version = version; - this.enabledState = enabledState; -} -Object.defineProperty(MockPlugin.prototype, "blocklisted", { - get: function MockPlugin_getBlocklisted() { - let bls = Cc["@mozilla.org/extensions/blocklist;1"].getService(Ci.nsIBlocklistService); - return bls.getPluginBlocklistState(this) == bls.STATE_BLOCKED; - } -}); -Object.defineProperty(MockPlugin.prototype, "disabled", { - get: function MockPlugin_getDisabled() { - return this.enabledState == Ci.nsIPluginTag.STATE_DISABLED; - } -}); - -var PLUGINS = [ - // Tests how the blocklist affects a disabled plugin - new MockPlugin("test_bug455906_1", "5", Ci.nsIPluginTag.STATE_DISABLED), - // Tests how the blocklist affects an enabled plugin - new MockPlugin("test_bug455906_2", "5", Ci.nsIPluginTag.STATE_ENABLED), - // Tests how the blocklist affects an enabled plugin, to be disabled by the notification - new MockPlugin("test_bug455906_3", "5", Ci.nsIPluginTag.STATE_ENABLED), - // Tests how the blocklist affects a disabled plugin that was already warned about - new MockPlugin("test_bug455906_4", "5", Ci.nsIPluginTag.STATE_DISABLED), - // Tests how the blocklist affects an enabled plugin that was already warned about - new MockPlugin("test_bug455906_5", "5", Ci.nsIPluginTag.STATE_ENABLED), - // Tests how the blocklist affects an already blocked plugin - new MockPlugin("test_bug455906_6", "5", Ci.nsIPluginTag.STATE_ENABLED) -]; - -var gNotificationCheck = null; -var gTestCheck = null; - -// A fake plugin host for the blocklist service to use -var PluginHost = { - getPluginTags: function(countRef) { - countRef.value = PLUGINS.length; - return PLUGINS; - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIPluginHost) - || iid.equals(Ci.nsISupports)) - return this; - - throw Components.results.NS_ERROR_NO_INTERFACE; - } -} - -// Don't need the full interface, attempts to call other methods will just -// throw which is just fine -var WindowWatcher = { - openWindow: function(parent, url, name, features, windowArguments) { - // Should be called to list the newly blocklisted items - do_check_eq(url, URI_EXTENSION_BLOCKLIST_DIALOG); - - if (gNotificationCheck) { - var args = windowArguments.wrappedJSObject; - gNotificationCheck(args); - } - - // run the code after the blocklist is closed - Services.obs.notifyObservers(null, "addon-blocklist-closed", null); - - // Call the next test after the blocklist has finished up - do_timeout(0, gTestCheck); - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -} - -MockRegistrar.register("@mozilla.org/plugin/host;1", PluginHost); -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - -function create_addon(addon) { - var installrdf = "<?xml version=\"1.0\"?>\n" + - "\n" + - "<RDF xmlns=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n" + - " xmlns:em=\"http://www.mozilla.org/2004/em-rdf#\">\n" + - " <Description about=\"urn:mozilla:install-manifest\">\n" + - " <em:id>" + addon.id + "</em:id>\n" + - " <em:version>" + addon.version + "</em:version>\n" + - " <em:targetApplication>\n" + - " <Description>\n" + - " <em:id>xpcshell@tests.mozilla.org</em:id>\n" + - " <em:minVersion>" + addon.appVersion + "</em:minVersion>\n" + - " <em:maxVersion>" + addon.appVersion + "</em:maxVersion>\n" + - " </Description>\n" + - " </em:targetApplication>\n" + - " <em:name>" + addon.name + "</em:name>\n" + - " </Description>\n" + - "</RDF>\n"; - var target = gProfD.clone(); - target.append("extensions"); - target.append(addon.id); - target.append("install.rdf"); - target.create(target.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); - var stream = Cc["@mozilla.org/network/file-output-stream;1"]. - createInstance(Ci.nsIFileOutputStream); - stream.init(target, - FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_TRUNCATE, - FileUtils.PERMS_FILE, 0); - stream.write(installrdf, installrdf.length); - stream.close(); -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -function check_addon_state(addon) { - return addon.userDisabled + "," + addon.softDisabled + "," + addon.appDisabled; -} - -function check_plugin_state(plugin) { - return plugin.disabled + "," + plugin.blocklisted; -} - -function create_blocklistURL(blockID) { - let url = Services.urlFormatter.formatURLPref(PREF_BLOCKLIST_ITEM_URL); - url = url.replace(/%blockID%/g, blockID); - return url; -} - -// Performs the initial setup -function run_test() { - // Setup for test - dump("Setting up tests\n"); - // Rather than keeping lots of identical add-ons in version control, just - // write them into the profile. - for (let addon of ADDONS) - create_addon(addon); - - // Copy the initial blocklist into the profile to check add-ons start in the - // right state. - copyBlocklistToProfile(do_get_file("data/bug455906_start.xml")); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - check_test_pt1(); -} - -// Before every main test this is the state the add-ons are meant to be in -function check_initial_state(callback) { - AddonManager.getAddonsByIDs(ADDONS.map(a => a.id), function(addons) { - do_check_eq(check_addon_state(addons[0]), "true,false,false"); - do_check_eq(check_addon_state(addons[1]), "false,false,false"); - do_check_eq(check_addon_state(addons[2]), "false,false,false"); - do_check_eq(check_addon_state(addons[3]), "true,true,false"); - do_check_eq(check_addon_state(addons[4]), "false,false,false"); - do_check_eq(check_addon_state(addons[5]), "false,false,true"); - do_check_eq(check_addon_state(addons[6]), "false,false,true"); - - do_check_eq(check_plugin_state(PLUGINS[0]), "true,false"); - do_check_eq(check_plugin_state(PLUGINS[1]), "false,false"); - do_check_eq(check_plugin_state(PLUGINS[2]), "false,false"); - do_check_eq(check_plugin_state(PLUGINS[3]), "true,false"); - do_check_eq(check_plugin_state(PLUGINS[4]), "false,false"); - do_check_eq(check_plugin_state(PLUGINS[5]), "false,true"); - - callback(); - }); -} - -// Tests the add-ons were installed and the initial blocklist applied as expected -function check_test_pt1() { - dump("Checking pt 1\n"); - - AddonManager.getAddonsByIDs(ADDONS.map(a => a.id), callback_soon(function(addons) { - for (var i = 0; i < ADDONS.length; i++) { - if (!addons[i]) - do_throw("Addon " + (i + 1) + " did not get installed correctly"); - } - - do_check_eq(check_addon_state(addons[0]), "false,false,false"); - do_check_eq(check_addon_state(addons[1]), "false,false,false"); - do_check_eq(check_addon_state(addons[2]), "false,false,false"); - - // Warn add-ons should be soft disabled automatically - do_check_eq(check_addon_state(addons[3]), "true,true,false"); - do_check_eq(check_addon_state(addons[4]), "true,true,false"); - - // Blocked and incompatible should be app disabled only - do_check_eq(check_addon_state(addons[5]), "false,false,true"); - do_check_eq(check_addon_state(addons[6]), "false,false,true"); - - // We've overridden the plugin host so we cannot tell what that would have - // initialised the plugins as - - // Put the add-ons into the base state - addons[0].userDisabled = true; - addons[4].userDisabled = false; - - restartManager(); - check_initial_state(function() { - gNotificationCheck = check_notification_pt2; - gTestCheck = check_test_pt2; - load_blocklist("bug455906_warn.xml"); - }); - })); -} - -function check_notification_pt2(args) { - dump("Checking notification pt 2\n"); - do_check_eq(args.list.length, 4); - - for (let addon of args.list) { - if (addon.item instanceof Ci.nsIPluginTag) { - switch (addon.item.name) { - case "test_bug455906_2": - do_check_false(addon.blocked); - break; - case "test_bug455906_3": - do_check_false(addon.blocked); - addon.disable = true; - break; - default: - do_throw("Unknown addon: " + addon.item.name); - } - } - else { - switch (addon.item.id) { - case "test_bug455906_2@tests.mozilla.org": - do_check_false(addon.blocked); - break; - case "test_bug455906_3@tests.mozilla.org": - do_check_false(addon.blocked); - addon.disable = true; - break; - default: - do_throw("Unknown addon: " + addon.item.id); - } - } - } -} - -function check_test_pt2() { - restartManager(); - dump("Checking results pt 2\n"); - - AddonManager.getAddonsByIDs(ADDONS.map(a => a.id), callback_soon(function(addons) { - // Should have disabled this add-on as requested - do_check_eq(check_addon_state(addons[2]), "true,true,false"); - do_check_eq(check_plugin_state(PLUGINS[2]), "true,false"); - - // The blocked add-on should have changed to soft disabled - do_check_eq(check_addon_state(addons[5]), "true,true,false"); - do_check_eq(check_addon_state(addons[6]), "true,true,true"); - do_check_eq(check_plugin_state(PLUGINS[5]), "true,false"); - - // These should have been unchanged - do_check_eq(check_addon_state(addons[0]), "true,false,false"); - do_check_eq(check_addon_state(addons[1]), "false,false,false"); - do_check_eq(check_addon_state(addons[3]), "true,true,false"); - do_check_eq(check_addon_state(addons[4]), "false,false,false"); - do_check_eq(check_plugin_state(PLUGINS[0]), "true,false"); - do_check_eq(check_plugin_state(PLUGINS[1]), "false,false"); - do_check_eq(check_plugin_state(PLUGINS[3]), "true,false"); - do_check_eq(check_plugin_state(PLUGINS[4]), "false,false"); - - // Back to starting state - addons[2].userDisabled = false; - addons[5].userDisabled = false; - PLUGINS[2].enabledState = Ci.nsIPluginTag.STATE_ENABLED; - PLUGINS[5].enabledState = Ci.nsIPluginTag.STATE_ENABLED; - restartManager(); - gNotificationCheck = null; - gTestCheck = run_test_pt3; - load_blocklist("bug455906_start.xml"); - })); -} - -function run_test_pt3() { - restartManager(); - check_initial_state(function() { - gNotificationCheck = check_notification_pt3; - gTestCheck = check_test_pt3; - load_blocklist("bug455906_block.xml"); - }); -} - -function check_notification_pt3(args) { - dump("Checking notification pt 3\n"); - do_check_eq(args.list.length, 6); - - for (let addon of args.list) { - if (addon.item instanceof Ci.nsIPluginTag) { - switch (addon.item.name) { - case "test_bug455906_2": - do_check_true(addon.blocked); - break; - case "test_bug455906_3": - do_check_true(addon.blocked); - break; - case "test_bug455906_5": - do_check_true(addon.blocked); - break; - default: - do_throw("Unknown addon: " + addon.item.name); - } - } - else { - switch (addon.item.id) { - case "test_bug455906_2@tests.mozilla.org": - do_check_true(addon.blocked); - break; - case "test_bug455906_3@tests.mozilla.org": - do_check_true(addon.blocked); - break; - case "test_bug455906_5@tests.mozilla.org": - do_check_true(addon.blocked); - break; - default: - do_throw("Unknown addon: " + addon.item.id); - } - } - } -} - -function check_test_pt3() { - restartManager(); - dump("Checking results pt 3\n"); - - let blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsIBlocklistService); - - AddonManager.getAddonsByIDs(ADDONS.map(a => a.id), function(addons) { - // All should have gained the blocklist state, user disabled as previously - do_check_eq(check_addon_state(addons[0]), "true,false,true"); - do_check_eq(check_addon_state(addons[1]), "false,false,true"); - do_check_eq(check_addon_state(addons[2]), "false,false,true"); - do_check_eq(check_addon_state(addons[4]), "false,false,true"); - do_check_eq(check_plugin_state(PLUGINS[0]), "true,true"); - do_check_eq(check_plugin_state(PLUGINS[1]), "false,true"); - do_check_eq(check_plugin_state(PLUGINS[2]), "false,true"); - do_check_eq(check_plugin_state(PLUGINS[3]), "true,true"); - do_check_eq(check_plugin_state(PLUGINS[4]), "false,true"); - - // Should have gained the blocklist state but no longer be soft disabled - do_check_eq(check_addon_state(addons[3]), "false,false,true"); - - // Check blockIDs are correct - do_check_eq(blocklist.getAddonBlocklistURL(addons[0]), create_blocklistURL(addons[0].id)); - do_check_eq(blocklist.getAddonBlocklistURL(addons[1]), create_blocklistURL(addons[1].id)); - do_check_eq(blocklist.getAddonBlocklistURL(addons[2]), create_blocklistURL(addons[2].id)); - do_check_eq(blocklist.getAddonBlocklistURL(addons[3]), create_blocklistURL(addons[3].id)); - do_check_eq(blocklist.getAddonBlocklistURL(addons[4]), create_blocklistURL(addons[4].id)); - - // All plugins have the same blockID on the test - do_check_eq(blocklist.getPluginBlocklistURL(PLUGINS[0]), create_blocklistURL('test_bug455906_plugin')); - do_check_eq(blocklist.getPluginBlocklistURL(PLUGINS[1]), create_blocklistURL('test_bug455906_plugin')); - do_check_eq(blocklist.getPluginBlocklistURL(PLUGINS[2]), create_blocklistURL('test_bug455906_plugin')); - do_check_eq(blocklist.getPluginBlocklistURL(PLUGINS[3]), create_blocklistURL('test_bug455906_plugin')); - do_check_eq(blocklist.getPluginBlocklistURL(PLUGINS[4]), create_blocklistURL('test_bug455906_plugin')); - - // Shouldn't be changed - do_check_eq(check_addon_state(addons[5]), "false,false,true"); - do_check_eq(check_addon_state(addons[6]), "false,false,true"); - do_check_eq(check_plugin_state(PLUGINS[5]), "false,true"); - - // Back to starting state - gNotificationCheck = null; - gTestCheck = run_test_pt4; - load_blocklist("bug455906_start.xml"); - }); -} - -function run_test_pt4() { - AddonManager.getAddonByID(ADDONS[4].id, callback_soon(function(addon) { - addon.userDisabled = false; - PLUGINS[4].enabledState = Ci.nsIPluginTag.STATE_ENABLED; - restartManager(); - check_initial_state(function() { - gNotificationCheck = check_notification_pt4; - gTestCheck = check_test_pt4; - load_blocklist("bug455906_empty.xml"); - }); - })); -} - -function check_notification_pt4(args) { - dump("Checking notification pt 4\n"); - - // Should be just the dummy add-on to force this notification - do_check_eq(args.list.length, 1); - do_check_false(args.list[0].item instanceof Ci.nsIPluginTag); - do_check_eq(args.list[0].item.id, "dummy_bug455906_2@tests.mozilla.org"); -} - -function check_test_pt4() { - restartManager(); - dump("Checking results pt 4\n"); - - AddonManager.getAddonsByIDs(ADDONS.map(a => a.id), function(addons) { - // This should have become unblocked - do_check_eq(check_addon_state(addons[5]), "false,false,false"); - do_check_eq(check_plugin_state(PLUGINS[5]), "false,false"); - - // Should get re-enabled - do_check_eq(check_addon_state(addons[3]), "false,false,false"); - - // No change for anything else - do_check_eq(check_addon_state(addons[0]), "true,false,false"); - do_check_eq(check_addon_state(addons[1]), "false,false,false"); - do_check_eq(check_addon_state(addons[2]), "false,false,false"); - do_check_eq(check_addon_state(addons[4]), "false,false,false"); - do_check_eq(check_addon_state(addons[6]), "false,false,true"); - do_check_eq(check_plugin_state(PLUGINS[0]), "true,false"); - do_check_eq(check_plugin_state(PLUGINS[1]), "false,false"); - do_check_eq(check_plugin_state(PLUGINS[2]), "false,false"); - do_check_eq(check_plugin_state(PLUGINS[3]), "true,false"); - do_check_eq(check_plugin_state(PLUGINS[4]), "false,false"); - - finish(); - }); -} - -function finish() { - gTestserver.stop(do_test_finished); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug465190.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug465190.js deleted file mode 100644 index e8e2353e2..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug465190.js +++ /dev/null @@ -1,39 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -var installLocation = gProfD.clone(); -installLocation.append("baddir"); -installLocation.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0o664); - -var dirProvider2 = { - getFile: function(prop, persistent) { - persistent.value = true; - if (prop == "XREUSysExt") - return installLocation.clone(); - return null; - }, - QueryInterface: function(iid) { - if (iid.equals(Components.interfaces.nsIDirectoryServiceProvider) || - iid.equals(Components.interfaces.nsISupports)) { - return this; - } - throw Components.results.NS_ERROR_NO_INTERFACE; - } -}; -Services.dirsvc.QueryInterface(Components.interfaces.nsIDirectoryService) - .registerProvider(dirProvider2); - -function run_test() -{ - var log = gProfD.clone(); - log.append("extensions.log"); - do_check_false(log.exists()); - - // Setup for test - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1"); - - startupManager(); - do_check_false(log.exists()); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug468528.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug468528.js deleted file mode 100644 index 01c976a17..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug468528.js +++ /dev/null @@ -1,58 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -const nsIBLS = Components.interfaces.nsIBlocklistService; - -var PLUGINS = [{ - // Normal blacklisted plugin, before an invalid regexp - name: "test_bug468528_1", - version: "5", - disabled: false, - blocklisted: false -}, -{ - // Normal blacklisted plugin, with an invalid regexp - name: "test_bug468528_2", - version: "5", - disabled: false, - blocklisted: false -}, -{ - // Normal blacklisted plugin, after an invalid regexp - name: "test_bug468528_3", - version: "5", - disabled: false, - blocklisted: false -}, -{ - // Non-blocklisted plugin - name: "test_bug468528_4", - version: "5", - disabled: false, - blocklisted: false -}]; - - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - // We cannot force the blocklist to update so just copy our test list to the profile - copyBlocklistToProfile(do_get_file("data/test_bug468528.xml")); - - var blocklist = Components.classes["@mozilla.org/extensions/blocklist;1"] - .getService(nsIBLS); - - // blocked (sanity check) - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[0], "1", "1.9") == nsIBLS.STATE_BLOCKED); - - // not blocked - won't match due to invalid regexp - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[1], "1", "1.9") == nsIBLS.STATE_NOT_BLOCKED); - - // blocked - the invalid regexp for the previous item shouldn't affect this one - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[2], "1", "1.9") == nsIBLS.STATE_BLOCKED); - - // not blocked - the previous invalid regexp shouldn't act as a wildcard - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[3], "1", "1.9") == nsIBLS.STATE_NOT_BLOCKED); - -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_1.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_1.js deleted file mode 100644 index 920c3731a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_1.js +++ /dev/null @@ -1,49 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -// Disables security checking our updates which haven't been signed -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); - -var ADDONS = [ - "test_bug470377_1", - "test_bug470377_2", - "test_bug470377_3", - "test_bug470377_4", - "test_bug470377_5", -]; - -Components.utils.import("resource://testing-common/httpd.js"); -var server; - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - server = new HttpServer(); - server.registerDirectory("/", do_get_file("data/test_bug470377")); - server.start(-1); - - startupManager(); - - installAllFiles(ADDONS.map(a => do_get_addon(a)), function() { - restartManager(); - - AddonManager.getAddonsByIDs(["bug470377_1@tests.mozilla.org", - "bug470377_2@tests.mozilla.org", - "bug470377_3@tests.mozilla.org", - "bug470377_4@tests.mozilla.org", - "bug470377_5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - do_check_eq(a1, null); - do_check_neq(a2, null); - do_check_neq(a3, null); - do_check_neq(a4, null); - do_check_neq(a5, null); - - server.stop(do_test_finished); - }); - }, true); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_1_strictcompat.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_1_strictcompat.js deleted file mode 100644 index 6fa11eb39..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_1_strictcompat.js +++ /dev/null @@ -1,49 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -// Disables security checking our updates which haven't been signed -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true); - -var ADDONS = [ - "test_bug470377_1", - "test_bug470377_2", - "test_bug470377_3", - "test_bug470377_4", - "test_bug470377_5", -]; - -Components.utils.import("resource://testing-common/httpd.js"); -var server; - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - server = new HttpServer(); - server.registerDirectory("/", do_get_file("data/test_bug470377")); - server.start(-1); - - startupManager(); - - installAllFiles(ADDONS.map(a => do_get_addon(a)), function() { - restartManager(); - - AddonManager.getAddonsByIDs(["bug470377_1@tests.mozilla.org", - "bug470377_2@tests.mozilla.org", - "bug470377_3@tests.mozilla.org", - "bug470377_4@tests.mozilla.org", - "bug470377_5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - do_check_eq(a1, null); - do_check_eq(a2, null); - do_check_eq(a3, null); - do_check_neq(a4, null); - do_check_neq(a5, null); - - server.stop(do_test_finished); - }); - }, true); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_2.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_2.js deleted file mode 100644 index 0c912ceff..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_2.js +++ /dev/null @@ -1,49 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -// Disables security checking our updates which haven't been signed -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -var ADDONS = [ - "test_bug470377_1", - "test_bug470377_2", - "test_bug470377_3", - "test_bug470377_4", - "test_bug470377_5", -]; - -Components.utils.import("resource://testing-common/httpd.js"); -var server; - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - server = new HttpServer(); - server.registerDirectory("/", do_get_file("data/test_bug470377")); - server.start(-1); - - startupManager(); - AddonManager.checkCompatibility = false; - - installAllFiles(ADDONS.map(a => do_get_addon(a)), function() { - restartManager(); - - AddonManager.getAddonsByIDs(["bug470377_1@tests.mozilla.org", - "bug470377_2@tests.mozilla.org", - "bug470377_3@tests.mozilla.org", - "bug470377_4@tests.mozilla.org", - "bug470377_5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - do_check_eq(a1, null); - do_check_neq(a2, null); - do_check_neq(a3, null); - do_check_neq(a4, null); - do_check_neq(a5, null); - - server.stop(do_test_finished); - }); - }, true); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_3.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_3.js deleted file mode 100644 index 0d1d30f3b..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_3.js +++ /dev/null @@ -1,95 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2.2.3", "2"); - - // inject the add-ons into the profile - var dest = gProfD.clone(); - dest.append("extensions"); - dest.append("bug470377_1@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - var source = do_get_file("data/test_bug470377/install_1.rdf"); - source.copyTo(dest, "install.rdf"); - dest = gProfD.clone(); - dest.append("extensions"); - dest.append("bug470377_2@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - source = do_get_file("data/test_bug470377/install_2.rdf"); - source.copyTo(dest, "install.rdf"); - dest = gProfD.clone(); - dest.append("extensions"); - dest.append("bug470377_3@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - source = do_get_file("data/test_bug470377/install_3.rdf"); - source.copyTo(dest, "install.rdf"); - dest = gProfD.clone(); - dest.append("extensions"); - dest.append("bug470377_4@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - source = do_get_file("data/test_bug470377/install_4.rdf"); - source.copyTo(dest, "install.rdf"); - dest = gProfD.clone(); - dest.append("extensions"); - dest.append("bug470377_5@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - source = do_get_file("data/test_bug470377/install_5.rdf"); - source.copyTo(dest, "install.rdf"); - - startupManager(); - - run_test_1(); -} - -function run_test_1() { - AddonManager.getAddonsByIDs(["bug470377_1@tests.mozilla.org", - "bug470377_2@tests.mozilla.org", - "bug470377_3@tests.mozilla.org", - "bug470377_4@tests.mozilla.org", - "bug470377_5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - do_check_neq(a1, null); - do_check_false(a1.isActive); - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_neq(a4, null); - do_check_true(a4.isActive); - do_check_neq(a5, null); - do_check_true(a5.isActive); - - do_execute_soon(run_test_2); - }); -} - -function run_test_2() { - AddonManager.checkCompatibility = false; - - restartManager(); - - AddonManager.getAddonsByIDs(["bug470377_1@tests.mozilla.org", - "bug470377_2@tests.mozilla.org", - "bug470377_3@tests.mozilla.org", - "bug470377_4@tests.mozilla.org", - "bug470377_5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - do_check_neq(a1, null); - do_check_false(a1.isActive); - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_neq(a4, null); - do_check_true(a4.isActive); - do_check_neq(a5, null); - do_check_true(a5.isActive); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_3_strictcompat.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_3_strictcompat.js deleted file mode 100644 index 100ea99d7..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_3_strictcompat.js +++ /dev/null @@ -1,94 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2.2.3", "2"); - Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true); - - // inject the add-ons into the profile - var dest = gProfD.clone(); - dest.append("extensions"); - dest.append("bug470377_1@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - var source = do_get_file("data/test_bug470377/install_1.rdf"); - source.copyTo(dest, "install.rdf"); - dest = gProfD.clone(); - dest.append("extensions"); - dest.append("bug470377_2@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - source = do_get_file("data/test_bug470377/install_2.rdf"); - source.copyTo(dest, "install.rdf"); - dest = gProfD.clone(); - dest.append("extensions"); - dest.append("bug470377_3@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - source = do_get_file("data/test_bug470377/install_3.rdf"); - source.copyTo(dest, "install.rdf"); - dest = gProfD.clone(); - dest.append("extensions"); - dest.append("bug470377_4@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - source = do_get_file("data/test_bug470377/install_4.rdf"); - source.copyTo(dest, "install.rdf"); - dest = gProfD.clone(); - dest.append("extensions"); - dest.append("bug470377_5@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - source = do_get_file("data/test_bug470377/install_5.rdf"); - source.copyTo(dest, "install.rdf"); - - startupManager(); - - run_test_1(); -} - -function run_test_1() { - AddonManager.getAddonsByIDs(["bug470377_1@tests.mozilla.org", - "bug470377_2@tests.mozilla.org", - "bug470377_3@tests.mozilla.org", - "bug470377_4@tests.mozilla.org", - "bug470377_5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - do_check_neq(a1, null); - do_check_false(a1.isActive); - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_neq(a4, null); - do_check_true(a4.isActive); - do_check_neq(a5, null); - do_check_true(a5.isActive); - - do_execute_soon(run_test_2); - }); -} - -function run_test_2() { - AddonManager.checkCompatibility = false; - - restartManager(); - - AddonManager.getAddonsByIDs(["bug470377_1@tests.mozilla.org", - "bug470377_2@tests.mozilla.org", - "bug470377_3@tests.mozilla.org", - "bug470377_4@tests.mozilla.org", - "bug470377_5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - do_check_neq(a1, null); - do_check_false(a1.isActive); - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_neq(a4, null); - do_check_true(a4.isActive); - do_check_neq(a5, null); - do_check_true(a5.isActive); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_4.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_4.js deleted file mode 100644 index c51c38b0c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug470377_4.js +++ /dev/null @@ -1,92 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2.1a4", "2"); - - // inject the add-ons into the profile - var profileDir = gProfD.clone(); - profileDir.append("extensions"); - var dest = profileDir.clone(); - dest.append("bug470377_1@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - var source = do_get_file("data/test_bug470377/install_1.rdf"); - source.copyTo(dest, "install.rdf"); - dest = profileDir.clone(); - dest.append("bug470377_2@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - source = do_get_file("data/test_bug470377/install_2.rdf"); - source.copyTo(dest, "install.rdf"); - dest = profileDir.clone(); - dest.append("bug470377_3@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - source = do_get_file("data/test_bug470377/install_3.rdf"); - source.copyTo(dest, "install.rdf"); - dest = profileDir.clone(); - dest.append("bug470377_4@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - source = do_get_file("data/test_bug470377/install_4.rdf"); - source.copyTo(dest, "install.rdf"); - dest = profileDir.clone(); - dest.append("bug470377_5@tests.mozilla.org"); - dest.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o755); - source = do_get_file("data/test_bug470377/install_5.rdf"); - source.copyTo(dest, "install.rdf"); - - run_test_1(); -} - -function run_test_1() { - startupManager(); - AddonManager.checkCompatibility = false; - restartManager(); - - AddonManager.getAddonsByIDs(["bug470377_1@tests.mozilla.org", - "bug470377_2@tests.mozilla.org", - "bug470377_3@tests.mozilla.org", - "bug470377_4@tests.mozilla.org", - "bug470377_5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - do_check_neq(a1, null); - do_check_false(a1.isActive); - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_neq(a4, null); - do_check_true(a4.isActive); - do_check_neq(a5, null); - do_check_true(a5.isActive); - - do_execute_soon(run_test_2); - }); -} - -function run_test_2() { - AddonManager.checkCompatibility = true; - - restartManager(); - - AddonManager.getAddonsByIDs(["bug470377_1@tests.mozilla.org", - "bug470377_2@tests.mozilla.org", - "bug470377_3@tests.mozilla.org", - "bug470377_4@tests.mozilla.org", - "bug470377_5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - do_check_neq(a1, null); - do_check_false(a1.isActive); - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_neq(a4, null); - do_check_true(a4.isActive); - do_check_neq(a5, null); - do_check_true(a5.isActive); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug514327_1.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug514327_1.js deleted file mode 100644 index 46b65ffff..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug514327_1.js +++ /dev/null @@ -1,59 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -var Cc = Components.classes; -var Ci = Components.interfaces; - -const nsIBLS = Ci.nsIBlocklistService; - -var PLUGINS = [{ - // blocklisted - default severity - name: "test_bug514327_1", - version: "5", - disabled: false, - blocklisted: false -}, -{ - // outdated - severity of "0" - name: "test_bug514327_2", - version: "5", - disabled: false, - blocklisted: false -}, -{ - // outdated - severity of "0" - name: "test_bug514327_3", - version: "5", - disabled: false, - blocklisted: false -}, -{ - // not blocklisted, not outdated - name: "test_bug514327_4", - version: "5", - disabled: false, - blocklisted: false, - outdated: false -}]; - - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - copyBlocklistToProfile(do_get_file("data/test_bug514327_1.xml")); - - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"].getService(nsIBLS); - - // blocked (sanity check) - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[0], "1", "1.9") == nsIBLS.STATE_BLOCKED); - - // outdated - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[1], "1", "1.9") == nsIBLS.STATE_OUTDATED); - - // outdated - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[2], "1", "1.9") == nsIBLS.STATE_OUTDATED); - - // not blocked - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[3], "1", "1.9") == nsIBLS.STATE_NOT_BLOCKED); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug514327_2.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug514327_2.js deleted file mode 100644 index 261739da4..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug514327_2.js +++ /dev/null @@ -1,41 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -var Cc = Components.classes; -var Ci = Components.interfaces; - -const nsIBLS = Ci.nsIBlocklistService; - -// Finds the test nsIPluginTag -function get_test_plugintag() { - var host = Cc["@mozilla.org/plugin/host;1"].getService(Ci.nsIPluginHost); - var tags = host.getPluginTags(); - for (let tag of tags) { - if (tag.name == "Test Plug-in") - return tag; - } - return null; -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - copyBlocklistToProfile(do_get_file("data/test_bug514327_2.xml")); - - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"].getService(nsIBLS); - var prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch); - - prefs.setBoolPref("plugin.load_flash_only", false); - - var plugin = get_test_plugintag(); - if (!plugin) - do_throw("Plugin tag not found"); - - // run the code after the blocklist is closed - Services.obs.notifyObservers(null, "addon-blocklist-closed", null); - do_execute_soon(function() { - // should be marked as outdated by the blocklist - do_check_true(blocklist.getPluginBlocklistState(plugin, "1", "1.9") == nsIBLS.STATE_OUTDATED); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug514327_3.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug514327_3.js deleted file mode 100644 index 634361991..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug514327_3.js +++ /dev/null @@ -1,139 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -var Cc = Components.classes; -var Ci = Components.interfaces; -var Cu = Components.utils; -var Cr = Components.results; - -Cu.import("resource://testing-common/httpd.js"); -Cu.import("resource://testing-common/MockRegistrar.jsm"); - -const nsIBLS = Ci.nsIBlocklistService; -const URI_EXTENSION_BLOCKLIST_DIALOG = "chrome://mozapps/content/extensions/blocklist.xul"; - -var gBlocklist = null; -var gPrefs = null; -var gTestserver = null; - -var gNextTestPart = null; - - -var PLUGINS = [{ - // Tests a plugin whose state goes from not-blocked, to outdated - name: "test_bug514327_outdated", - version: "5", - disabled: false, - blocklisted: false -}, { - // Used to trigger the blocklist dialog, which indicates the blocklist has updated - name: "test_bug514327_1", - version: "5", - disabled: false, - blocklisted: false -}, { - // Used to trigger the blocklist dialog, which indicates the blocklist has updated - name: "test_bug514327_2", - version: "5", - disabled: false, - blocklisted: false -} ]; - - -// A fake plugin host for the blocklist service to use -var PluginHost = { - getPluginTags: function(countRef) { - countRef.value = PLUGINS.length; - return PLUGINS; - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIPluginHost) - || iid.equals(Ci.nsISupports)) - return this; - - throw Components.results.NS_ERROR_NO_INTERFACE; - } -} - -// Don't need the full interface, attempts to call other methods will just -// throw which is just fine -var WindowWatcher = { - openWindow: function(parent, url, name, features, args) { - // Should be called to list the newly blocklisted items - do_check_eq(url, URI_EXTENSION_BLOCKLIST_DIALOG); - // Should only include one item - do_check_eq(args.wrappedJSObject.list.length, 1); - // And that item should be the blocked plugin, not the outdated one - var item = args.wrappedJSObject.list[0]; - do_check_true(item.item instanceof Ci.nsIPluginTag); - do_check_neq(item.name, "test_bug514327_outdated"); - - // Call the next test after the blocklist has finished up - do_timeout(0, gNextTestPart); - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -} - -MockRegistrar.register("@mozilla.org/plugin/host;1", PluginHost); -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - - -function do_update_blocklist(aDatafile, aNextPart) { - gNextTestPart = aNextPart; - - gPrefs.setCharPref("extensions.blocklist.url", "http://localhost:" + gPort + "/data/" + aDatafile); - gBlocklist.QueryInterface(Ci.nsITimerCallback).notify(null); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - gTestserver = new HttpServer(); - gTestserver.registerDirectory("/data/", do_get_file("data")); - gTestserver.start(-1); - gPort = gTestserver.identity.primaryPort; - - startupManager(); - - // initialize the blocklist with no entries - copyBlocklistToProfile(do_get_file("data/test_bug514327_3_empty.xml")); - - gPrefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch); - gBlocklist = Cc["@mozilla.org/extensions/blocklist;1"].getService(nsIBLS); - - // should NOT be marked as outdated by the blocklist - do_check_true(gBlocklist.getPluginBlocklistState(PLUGINS[0], "1", "1.9") == nsIBLS.STATE_NOT_BLOCKED); - - do_test_pending(); - - // update blocklist with data that marks the plugin as outdated - do_update_blocklist("test_bug514327_3_outdated_1.xml", test_part_1); -} - -function test_part_1() { - // plugin should now be marked as outdated - do_check_true(gBlocklist.getPluginBlocklistState(PLUGINS[0], "1", "1.9") == nsIBLS.STATE_OUTDATED); - - // update blocklist with data that marks the plugin as outdated - do_update_blocklist("test_bug514327_3_outdated_2.xml", test_part_2); -} - -function test_part_2() { - // plugin should still be marked as outdated - do_check_true(gBlocklist.getPluginBlocklistState(PLUGINS[0], "1", "1.9") == nsIBLS.STATE_OUTDATED); - - finish(); -} - -function finish() { - gTestserver.stop(do_test_finished); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug521905.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug521905.js deleted file mode 100644 index b507fc100..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug521905.js +++ /dev/null @@ -1,59 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -const ADDON = "test_bug521905"; -const ID = "bug521905@tests.mozilla.org"; - -// Disables security checking our updates which haven't been signed -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -function run_test() { - // This test is only relevant on builds where the version is included in the - // checkCompatibility preference name - if (isNightlyChannel()) { - return; - } - - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2.0pre", "2"); - - startupManager(); - AddonManager.checkCompatibility = false; - - installAllFiles([do_get_addon(ADDON)], function() { - restartManager(); - - AddonManager.getAddonByID(ID, function(addon) { - do_check_neq(addon, null); - do_check_true(addon.isActive); - - do_execute_soon(run_test_1); - }); - }); -} - -function run_test_1() { - Services.prefs.setBoolPref("extensions.checkCompatibility.2.0pre", true); - - restartManager(); - AddonManager.getAddonByID(ID, function(addon) { - do_check_neq(addon, null); - do_check_false(addon.isActive); - - do_execute_soon(run_test_2); - }); -} - -function run_test_2() { - Services.prefs.setBoolPref("extensions.checkCompatibility.2.0p", false); - - restartManager(); - AddonManager.getAddonByID(ID, function(addon) { - do_check_neq(addon, null); - do_check_false(addon.isActive); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug526598.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug526598.js deleted file mode 100644 index debf59172..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug526598.js +++ /dev/null @@ -1,54 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - startupManager(); - - installAllFiles([do_get_file("data/test_bug526598_1.xpi"), - do_get_file("data/test_bug526598_2.xpi")], function() { - - restartManager(); - - AddonManager.getAddonsByIDs(["bug526598_1@tests.mozilla.org", - "bug526598_2@tests.mozilla.org"], - callback_soon(function([a1, a2]) { - - do_check_neq(a1, null); - do_check_true(a1.hasResource("install.rdf")); - let uri = a1.getResourceURI("install.rdf"); - do_check_true(uri instanceof AM_Ci.nsIFileURL); - let file = uri.file; - do_check_true(file.exists()); - do_check_true(file.isReadable()); - do_check_true(file.isWritable()); - - do_check_neq(a2, null); - do_check_true(a2.hasResource("install.rdf")); - uri = a2.getResourceURI("install.rdf"); - do_check_true(uri instanceof AM_Ci.nsIFileURL); - file = uri.file; - do_check_true(file.exists()); - do_check_true(file.isReadable()); - do_check_true(file.isWritable()); - - a1.uninstall(); - a2.uninstall(); - - restartManager(); - - AddonManager.getAddonsByIDs(["bug526598_1@tests.mozilla.org", - "bug526598_2@tests.mozilla.org"], - function([newa1, newa2]) { - do_check_eq(newa1, null); - do_check_eq(newa2, null); - - do_execute_soon(do_test_finished); - }); - })); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug541420.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug541420.js deleted file mode 100644 index b7af5453f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug541420.js +++ /dev/null @@ -1,37 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - startupManager(); - - installAllFiles([do_get_file("data/test_bug541420.xpi")], function() { - - restartManager(); - - AddonManager.getAddonByID("bug541420@tests.mozilla.org", function(addon) { - - do_check_neq(addon, null); - do_check_true(addon.hasResource("binary")); - let uri = addon.getResourceURI("binary"); - do_check_true(uri instanceof AM_Ci.nsIFileURL); - let file = uri.file; - do_check_true(file.exists()); - do_check_true(file.isReadable()); - do_check_true(file.isWritable()); - - // We don't understand executable permissions on Windows since we don't - // support NTFS permissions so we don't need to test there. OSX's isExecutable - // only tests if the file is an application so it is better to just check the - // raw permission bits - if (!("nsIWindowsRegKey" in Components.interfaces)) - do_check_true((file.permissions & 0o100) == 0o100); - - do_execute_soon(do_test_finished); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug542391.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug542391.js deleted file mode 100644 index aa1bbd53f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug542391.js +++ /dev/null @@ -1,464 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -const URI_EXTENSION_UPDATE_DIALOG = "chrome://mozapps/content/extensions/update.xul"; -const PREF_EM_SHOW_MISMATCH_UI = "extensions.showMismatchUI"; - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -var Cc = Components.classes; -var Ci = Components.interfaces; -var Cu = Components.utils; -var Cr = Components.results; - -Cu.import("resource://testing-common/MockRegistrar.jsm"); -var testserver; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -var gInstallUpdate = false; -var gCheckUpdates = false; - -// This will be called to show the compatibility update dialog. -var WindowWatcher = { - expected: false, - args: null, - - openWindow: function(parent, url, name, features, args) { - do_check_true(Services.startup.interrupted); - do_check_eq(url, URI_EXTENSION_UPDATE_DIALOG); - do_check_true(this.expected); - this.expected = false; - this.args = args.QueryInterface(AM_Ci.nsIVariant); - - var updated = !gCheckUpdates; - if (gCheckUpdates) { - AddonManager.getAddonByID("override1x2-1x3@tests.mozilla.org", function(a6) { - a6.findUpdates({ - onUpdateFinished: function() { - AddonManagerPrivate.removeStartupChange("disabled", "override1x2-1x3@tests.mozilla.org"); - updated = true; - } - }, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); - }); - } - - var installed = !gInstallUpdate; - if (gInstallUpdate) { - // Simulate installing an update while in the dialog - installAllFiles([do_get_addon("upgradeable1x2-3_2")], function() { - AddonManagerPrivate.removeStartupChange("disabled", "upgradeable1x2-3@tests.mozilla.org"); - AddonManagerPrivate.addStartupChange("updated", "upgradeable1x2-3@tests.mozilla.org"); - installed = true; - }); - } - - // The dialog is meant to be opened modally and the install operation can be - // asynchronous, so we must spin an event loop (like the modal window does) - // until the install is complete - let thr = AM_Cc["@mozilla.org/thread-manager;1"]. - getService(AM_Ci.nsIThreadManager). - mainThread; - - while (!installed || !updated) - thr.processNextEvent(false); - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -} - -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - -function check_state_v1([a1, a2, a3, a4, a5, a6]) { - do_check_neq(a1, null); - do_check_false(a1.appDisabled); - do_check_false(a1.userDisabled); - do_check_true(a1.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.appDisabled); - do_check_true(a2.userDisabled); - do_check_false(a2.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_false(a3.appDisabled); - do_check_false(a3.userDisabled); - do_check_true(a3.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - do_check_eq(a3.version, "1.0"); - - do_check_neq(a4, null); - do_check_false(a4.appDisabled); - do_check_true(a4.userDisabled); - do_check_false(a4.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_false(a5.appDisabled); - do_check_false(a5.userDisabled); - do_check_true(a5.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_false(a6.appDisabled); - do_check_false(a6.userDisabled); - do_check_true(a6.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a6.id)); -} - -function check_state_v1_2([a1, a2, a3, a4, a5, a6]) { - do_check_neq(a1, null); - do_check_false(a1.appDisabled); - do_check_false(a1.userDisabled); - do_check_true(a1.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.appDisabled); - do_check_true(a2.userDisabled); - do_check_false(a2.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(a3.appDisabled); - do_check_false(a3.userDisabled); - do_check_false(a3.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - do_check_eq(a3.version, "2.0"); - - do_check_neq(a4, null); - do_check_false(a4.appDisabled); - do_check_true(a4.userDisabled); - do_check_false(a4.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_false(a5.appDisabled); - do_check_false(a5.userDisabled); - do_check_true(a5.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_false(a6.appDisabled); - do_check_false(a6.userDisabled); - do_check_true(a6.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a6.id)); -} - -function check_state_v2([a1, a2, a3, a4, a5, a6]) { - do_check_neq(a1, null); - do_check_true(a1.appDisabled); - do_check_false(a1.userDisabled); - do_check_false(a1.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.appDisabled); - do_check_true(a2.userDisabled); - do_check_false(a2.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_false(a3.appDisabled); - do_check_false(a3.userDisabled); - do_check_true(a3.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - do_check_eq(a3.version, "1.0"); - - do_check_neq(a4, null); - do_check_false(a4.appDisabled); - do_check_true(a4.userDisabled); - do_check_false(a4.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_false(a5.appDisabled); - do_check_false(a5.userDisabled); - do_check_true(a5.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_false(a6.appDisabled); - do_check_false(a6.userDisabled); - do_check_true(a6.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a6.id)); -} - -function check_state_v3([a1, a2, a3, a4, a5, a6]) { - do_check_neq(a1, null); - do_check_true(a1.appDisabled); - do_check_false(a1.userDisabled); - do_check_false(a1.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_true(a2.appDisabled); - do_check_true(a2.userDisabled); - do_check_false(a2.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(a3.appDisabled); - do_check_false(a3.userDisabled); - do_check_false(a3.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - do_check_eq(a3.version, "1.0"); - - do_check_neq(a4, null); - do_check_false(a4.appDisabled); - do_check_true(a4.userDisabled); - do_check_false(a4.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_false(a5.appDisabled); - do_check_false(a5.userDisabled); - do_check_true(a5.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_false(a6.appDisabled); - do_check_false(a6.userDisabled); - do_check_true(a6.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a6.id)); -} - -function check_state_v3_2([a1, a2, a3, a4, a5, a6]) { - do_check_neq(a1, null); - do_check_true(a1.appDisabled); - do_check_false(a1.userDisabled); - do_check_false(a1.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_true(a2.appDisabled); - do_check_true(a2.userDisabled); - do_check_false(a2.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_false(a3.appDisabled); - do_check_false(a3.userDisabled); - do_check_true(a3.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - do_check_eq(a3.version, "2.0"); - - do_check_neq(a4, null); - do_check_false(a4.appDisabled); - do_check_true(a4.userDisabled); - do_check_false(a4.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_false(a5.appDisabled); - do_check_false(a5.userDisabled); - do_check_true(a5.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_false(a6.appDisabled); - do_check_false(a6.userDisabled); - do_check_true(a6.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a6.id)); -} - -// Install all the test add-ons, disable two of them and "upgrade" the app to -// version 2 which will appDisable one. -add_task(function* init() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - Services.prefs.setBoolPref(PREF_EM_SHOW_MISMATCH_UI, true); - - // Add an extension to the profile to make sure the dialog doesn't show up - // on new profiles - var dest = writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - }, profileDir); - - // Create and configure the HTTP server. - testserver = createHttpServer(4444); - testserver.registerDirectory("/data/", do_get_file("data")); - testserver.registerDirectory("/addons/", do_get_file("addons")); - - startupManager(); - - // Remove the add-on we installed directly in the profile directory; - // this should show as uninstalled on next restart - dest.remove(true); - - // Load up an initial set of add-ons - yield promiseInstallAllFiles([do_get_addon("min1max1"), - do_get_addon("min1max2"), - do_get_addon("upgradeable1x2-3_1"), - do_get_addon("min1max3"), - do_get_addon("min1max3b"), - do_get_addon("override1x2-1x3")]); - yield promiseRestartManager(); - - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", ["addon1@tests.mozilla.org"]); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); - - // user-disable two add-ons - let [a2, a4] = yield promiseAddonsByIDs(["min1max2@tests.mozilla.org", - "min1max3@tests.mozilla.org"]); - do_check_true(a2 != null && a4 != null); - a2.userDisabled = true; - a4.userDisabled = true; - yield promiseRestartManager(); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); - - let addons = yield promiseAddonsByIDs(["min1max1@tests.mozilla.org", - "min1max2@tests.mozilla.org", - "upgradeable1x2-3@tests.mozilla.org", - "min1max3@tests.mozilla.org", - "min1max3b@tests.mozilla.org", - "override1x2-1x3@tests.mozilla.org"]); - check_state_v1(addons); - - // Restart as version 2, add-on _1 should become app-disabled - WindowWatcher.expected = true; - yield promiseRestartManager("2"); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", ["min1max1@tests.mozilla.org"]); - check_startup_changes("enabled", []); - do_check_false(WindowWatcher.expected); - - addons = yield promiseAddonsByIDs(["min1max1@tests.mozilla.org", - "min1max2@tests.mozilla.org", - "upgradeable1x2-3@tests.mozilla.org", - "min1max3@tests.mozilla.org", - "min1max3b@tests.mozilla.org", - "override1x2-1x3@tests.mozilla.org"]); - check_state_v2(addons); -}); - -// Upgrade to version 3 which will appDisable addons -// upgradeable1x2-3 and override1x2-1x3 -// Only the newly disabled add-ons should be passed to the -// upgrade window -add_task(function* run_test_1() { - gCheckUpdates = true; - WindowWatcher.expected = true; - - yield promiseRestartManager("3"); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", ["upgradeable1x2-3@tests.mozilla.org"]); - check_startup_changes("enabled", []); - do_check_false(WindowWatcher.expected); - gCheckUpdates = false; - - let addons = yield promiseAddonsByIDs(["min1max1@tests.mozilla.org", - "min1max2@tests.mozilla.org", - "upgradeable1x2-3@tests.mozilla.org", - "min1max3@tests.mozilla.org", - "min1max3b@tests.mozilla.org", - "override1x2-1x3@tests.mozilla.org"]); - check_state_v3(addons); - - do_check_eq(WindowWatcher.args.length, 2); - do_check_true(WindowWatcher.args.indexOf("upgradeable1x2-3@tests.mozilla.org") >= 0); - do_check_true(WindowWatcher.args.indexOf("override1x2-1x3@tests.mozilla.org") >= 0); -}); - -// Downgrade to version 2 which will remove appDisable from two add-ons -// Still displays the compat window, because metadata is not recently updated -add_task(function* run_test_2() { - WindowWatcher.expected = true; - yield promiseRestartManager("2"); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", ["upgradeable1x2-3@tests.mozilla.org"]); - do_check_false(WindowWatcher.expected); - - let addons = yield promiseAddonsByIDs(["min1max1@tests.mozilla.org", - "min1max2@tests.mozilla.org", - "upgradeable1x2-3@tests.mozilla.org", - "min1max3@tests.mozilla.org", - "min1max3b@tests.mozilla.org", - "override1x2-1x3@tests.mozilla.org"]); - check_state_v2(addons); -}); - -// Upgrade back to version 3 which should only appDisable -// upgradeable1x2-3, because we already have the override -// stored in our DB for override1x2-1x3. Ensure that when -// the upgrade dialog updates an add-on no restart is necessary -add_task(function* run_test_5() { - Services.prefs.setBoolPref(PREF_EM_SHOW_MISMATCH_UI, true); - // tell the mock compatibility window to install the available upgrade - gInstallUpdate = true; - - WindowWatcher.expected = true; - yield promiseRestartManager("3"); - check_startup_changes("installed", []); - check_startup_changes("updated", ["upgradeable1x2-3@tests.mozilla.org"]); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); - do_check_false(WindowWatcher.expected); - gInstallUpdate = false; - - let addons = yield promiseAddonsByIDs(["min1max1@tests.mozilla.org", - "min1max2@tests.mozilla.org", - "upgradeable1x2-3@tests.mozilla.org", - "min1max3@tests.mozilla.org", - "min1max3b@tests.mozilla.org", - "override1x2-1x3@tests.mozilla.org"]); - check_state_v3_2(addons); - - do_check_eq(WindowWatcher.args.length, 1); - do_check_true(WindowWatcher.args.indexOf("upgradeable1x2-3@tests.mozilla.org") >= 0); -}); - -// Downgrade to version 1 which will appEnable all the add-ons -// except upgradeable1x2-3; the update we installed isn't compatible with 1 -add_task(function* run_test_6() { - WindowWatcher.expected = true; - yield promiseRestartManager("1"); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", ["upgradeable1x2-3@tests.mozilla.org"]); - check_startup_changes("enabled", ["min1max1@tests.mozilla.org"]); - do_check_false(WindowWatcher.expected); - - let addons = yield promiseAddonsByIDs(["min1max1@tests.mozilla.org", - "min1max2@tests.mozilla.org", - "upgradeable1x2-3@tests.mozilla.org", - "min1max3@tests.mozilla.org", - "min1max3b@tests.mozilla.org", - "override1x2-1x3@tests.mozilla.org"]); - check_state_v1_2(addons); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug554133.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug554133.js deleted file mode 100644 index c252e1ced..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug554133.js +++ /dev/null @@ -1,86 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that if the AMO response provides total_results, -// searchSucceeded is called with the correct number of total results - -Components.utils.import("resource://gre/modules/addons/AddonRepository.jsm"); - -const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url"; - -Components.utils.import("resource://testing-common/httpd.js"); -var server; - -var TESTS = [ -{ - query: "bug554133", - maxResults: 2, - length: 2, - total: 100 -}, -{ - query: "bug554133", - maxResults: 10, - length: 10, - total: 100 -}, -{ - query: "bug554133", - maxResults: 100, - length: 10, - total: 100 -} -]; - -var gCurrentTest = 0; -var SearchCallback = { - searchSucceeded: function(addons, length, total) { - do_check_false(AddonRepository.isSearching); - do_check_eq(addons.length, length); - do_check_eq(length, TESTS[gCurrentTest].length); - do_check_eq(total, TESTS[gCurrentTest].total); - - gCurrentTest++; - run_current_test(); - }, - - searchFailed: function() { - server.stop(do_test_finished); - do_throw("Search results failed"); - } -}; - -function run_current_test() { - if (gCurrentTest < TESTS.length) { - var query = TESTS[gCurrentTest].query; - var maxResults = TESTS[gCurrentTest].maxResults; - AddonRepository.searchAddons(query, maxResults, SearchCallback); - } - else - server.stop(do_test_finished); -} - -function run_test() -{ - // Setup for test - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - startupManager(); - - server = new HttpServer(); - server.registerDirectory("/", do_get_file("data")); - mapFile("/data/test_bug554133.xml", server); - server.start(-1); - gPort = server.identity.primaryPort; - - // Point search to the test server - Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, - "http://localhost:" + gPort + "/data/test_%TERMS%.xml"); - - do_check_neq(AddonRepository, null); - gCurrentTest = 0; - run_current_test(); -} - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug559800.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug559800.js deleted file mode 100644 index 866ad3ad7..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug559800.js +++ /dev/null @@ -1,71 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that deleting the database from the profile doesn't break -// anything - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// getting an unused port -Components.utils.import("resource://testing-common/httpd.js"); -var gServer = new HttpServer(); -gServer.start(-1); -gPort = gServer.identity.primaryPort; - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/test_update.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - }, profileDir); - - startupManager(); - - do_test_pending(); - - run_test_1(); -} - -function end_test() { - gServer.stop(do_test_finished); -} - -function run_test_1() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - - shutdownManager(); - - gExtensionsJSON.remove(true); - - do_execute_soon(check_test_1); - })); -} - -function check_test_1() { - startupManager(false); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - - // due to delayed write, the file may not exist until - // after shutdown - shutdownManager(); - do_check_true(gExtensionsJSON.exists()); - do_check_true(gExtensionsJSON.fileSize > 0); - - end_test(); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug563256.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug563256.js deleted file mode 100644 index 497e66526..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug563256.js +++ /dev/null @@ -1,259 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that the themes switch as expected - -const PREF_GENERAL_SKINS_SELECTEDSKIN = "general.skins.selectedSkin"; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - writeInstallRDFForExtension({ - id: "default@tests.mozilla.org", - version: "1.0", - name: "Default", - internalName: "classic/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "alternate@tests.mozilla.org", - version: "1.0", - name: "Test 1", - type: 4, - internalName: "alternate/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }, profileDir); - - startupManager(); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "alternate@tests.mozilla.org"], function([d, a]) { - do_check_neq(d, null); - do_check_false(d.userDisabled); - do_check_false(d.appDisabled); - do_check_true(d.isActive); - do_check_true(isThemeInAddonsList(profileDir, d.id)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_neq(a, null); - do_check_true(a.userDisabled); - do_check_false(a.appDisabled); - do_check_false(a.isActive); - do_check_false(isThemeInAddonsList(profileDir, a.id)); - do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); - - run_test_1(d, a); - }); -} - -function end_test() { - do_execute_soon(do_test_finished); -} - -// Checks switching to a different theme and back again leaves everything the -// same -function run_test_1(d, a) { - a.userDisabled = false; - - do_check_true(d.userDisabled); - do_check_false(d.appDisabled); - do_check_true(d.isActive); - do_check_true(isThemeInAddonsList(profileDir, d.id)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_false(a.userDisabled); - do_check_false(a.appDisabled); - do_check_false(a.isActive); - do_check_false(isThemeInAddonsList(profileDir, a.id)); - do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - d.userDisabled = false; - - do_check_false(d.userDisabled); - do_check_false(d.appDisabled); - do_check_true(d.isActive); - do_check_true(isThemeInAddonsList(profileDir, d.id)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_true(a.userDisabled); - do_check_false(a.appDisabled); - do_check_false(a.isActive); - do_check_false(isThemeInAddonsList(profileDir, a.id)); - do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - do_execute_soon(run_test_2); -} - -// Tests that after the restart themes can be changed as expected -function run_test_2() { - restartManager(); - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "alternate@tests.mozilla.org"], function([d, a]) { - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - do_check_neq(d, null); - do_check_false(d.userDisabled); - do_check_false(d.appDisabled); - do_check_true(d.isActive); - do_check_true(isThemeInAddonsList(profileDir, d.id)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_neq(a, null); - do_check_true(a.userDisabled); - do_check_false(a.appDisabled); - do_check_false(a.isActive); - do_check_false(isThemeInAddonsList(profileDir, a.id)); - do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - a.userDisabled = false; - - do_check_true(d.userDisabled); - do_check_false(d.appDisabled); - do_check_true(d.isActive); - do_check_true(isThemeInAddonsList(profileDir, d.id)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_false(a.userDisabled); - do_check_false(a.appDisabled); - do_check_false(a.isActive); - do_check_false(isThemeInAddonsList(profileDir, a.id)); - do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - d.userDisabled = false; - - do_check_false(d.userDisabled); - do_check_false(d.appDisabled); - do_check_true(d.isActive); - do_check_true(isThemeInAddonsList(profileDir, d.id)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_true(a.userDisabled); - do_check_false(a.appDisabled); - do_check_false(a.isActive); - do_check_false(isThemeInAddonsList(profileDir, a.id)); - do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - a.userDisabled = false; - - do_check_true(d.userDisabled); - do_check_false(d.appDisabled); - do_check_true(d.isActive); - do_check_true(isThemeInAddonsList(profileDir, d.id)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_false(a.userDisabled); - do_check_false(a.appDisabled); - do_check_false(a.isActive); - do_check_false(isThemeInAddonsList(profileDir, a.id)); - do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - do_execute_soon(check_test_2); - }); -} - -function check_test_2() { - restartManager(); - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "alternate@tests.mozilla.org"], callback_soon(function([d, a]) { - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "alternate/1.0"); - - do_check_true(d.userDisabled); - do_check_false(d.appDisabled); - do_check_false(d.isActive); - do_check_false(isThemeInAddonsList(profileDir, d.id)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_false(a.userDisabled); - do_check_false(a.appDisabled); - do_check_true(a.isActive); - do_check_true(isThemeInAddonsList(profileDir, a.id)); - do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); - - d.userDisabled = false; - - do_check_false(d.userDisabled); - do_check_false(d.appDisabled); - do_check_false(d.isActive); - do_check_false(isThemeInAddonsList(profileDir, d.id)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_true(a.userDisabled); - do_check_false(a.appDisabled); - do_check_true(a.isActive); - do_check_true(isThemeInAddonsList(profileDir, a.id)); - do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "alternate/1.0"); - - restartManager(); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "alternate@tests.mozilla.org"], function([d2, a2]) { - do_check_neq(d2, null); - do_check_false(d2.userDisabled); - do_check_false(d2.appDisabled); - do_check_true(d2.isActive); - do_check_true(isThemeInAddonsList(profileDir, d2.id)); - do_check_false(hasFlag(d2.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(d2.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_neq(a2, null); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_false(a2.isActive); - do_check_false(isThemeInAddonsList(profileDir, a2.id)); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_ENABLE)); - - end_test(); - }); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug564030.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug564030.js deleted file mode 100644 index 92ba3d68f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug564030.js +++ /dev/null @@ -1,63 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that upgrading an incompatible add-on to a compatible one forces an -// EM restart - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "1.9.2"); - - var dest = writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] - }, profileDir); - // Attempt to make this look like it was added some time in the past so - // the update makes the last modified time change. - setExtensionModifiedTime(dest, dest.lastModifiedTime - 5000); - - startupManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a) { - do_check_neq(a, null); - do_check_eq(a.version, "1.0"); - do_check_false(a.userDisabled); - do_check_true(a.appDisabled); - do_check_false(a.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a.id)); - - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "2.0", - name: "Test", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }, profileDir); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a2) { - do_check_neq(a2, null); - do_check_eq(a2.version, "2.0"); - do_check_false(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_true(a2.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - - do_execute_soon(do_test_finished); - }); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug566626.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug566626.js deleted file mode 100644 index 641ff87c9..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug566626.js +++ /dev/null @@ -1,112 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that multiple calls to the async API return fully formed -// add-ons - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -var gAddon; - -// Sets up the profile by installing an add-on. -function run_test() { - do_test_pending(); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - writeInstallRDFForExtension(addon1, profileDir); - - startupManager(); - - run_test_1(); -} - -// Verifies that multiple calls to get an add-on at various stages of execution -// return an add-on with a valid name. -function run_test_1() { - var count = 0; - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.name, "Test 1"); - - if (count == 0) - gAddon = a1; - else - do_check_eq(a1, gAddon); - count++; - if (count == 4) - run_test_2(); - }); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.name, "Test 1"); - - if (count == 0) - gAddon = a1; - else - do_check_eq(a1, gAddon); - count++; - if (count == 4) - run_test_2(); - }); - - do_execute_soon(function() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.name, "Test 1"); - - if (count == 0) - gAddon = a1; - else - do_check_eq(a1, gAddon); - count++; - if (count == 4) - run_test_2(); - }); - }); - - do_execute_soon(function() { - do_execute_soon(function() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.name, "Test 1"); - - if (count == 0) - gAddon = a1; - else - do_check_eq(a1, gAddon); - count++; - if (count == 4) - run_test_2(); - }); - }); - }); -} - -// Verifies that a subsequent call gets the same add-on from the cache -function run_test_2() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.name, "Test 1"); - - do_check_eq(a1, gAddon); - - do_execute_soon(do_test_finished); - }); - -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug567184.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug567184.js deleted file mode 100644 index 0e7863068..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug567184.js +++ /dev/null @@ -1,53 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - startupManager(); - - run_test_1(); -} - -// Tests that installing doesn't require a restart -function run_test_1() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_bug567184"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - - prepare_test({ - "bug567184@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], check_test_1); - install.install(); - }); -} - -function check_test_1() { - AddonManager.getAllInstalls(function(installs) { - // There should be no active installs now since the install completed and - // doesn't require a restart. - do_check_eq(installs.length, 0); - - AddonManager.getAddonByID("bug567184@tests.mozilla.org", function(b1) { - do_check_neq(b1, null); - do_check_true(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_false(b1.isActive); - - do_execute_soon(do_test_finished); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug569138.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug569138.js deleted file mode 100644 index 4869fc117..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug569138.js +++ /dev/null @@ -1,147 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that add-ons with invalid target application entries show -// up in the API but are correctly appDisabled - -// A working add-on -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Missing id -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "1.0", - name: "Test 2", - targetApplications: [{ - minVersion: "1", - maxVersion: "2" - }] -}; - -// Missing minVersion -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "1.0", - name: "Test 3", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - maxVersion: "1" - }] -}; - -// Missing maxVersion -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "1.0", - name: "Test 4", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1" - }] -}; - -// Blank id -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "1.0", - name: "Test 5", - targetApplications: [{ - id: "", - minVersion: "1", - maxVersion: "2" - }] -}; - -// Blank minVersion -var addon6 = { - id: "addon6@tests.mozilla.org", - version: "1.0", - name: "Test 6", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "", - maxVersion: "1" - }] -}; - -// Blank maxVersion -var addon7 = { - id: "addon7@tests.mozilla.org", - version: "1.0", - name: "Test 7", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "" - }] -}; - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// Set up the profile -function run_test() { - do_test_pending(); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - writeInstallRDFForExtension(addon6, profileDir); - writeInstallRDFForExtension(addon7, profileDir); - - startupManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org"], - function([a1, a2, a3, a4, a5, a6, a7]) { - do_check_neq(a1, null); - do_check_false(a1.appDisabled); - do_check_true(a1.isActive); - - do_check_neq(a2, null); - do_check_true(a2.appDisabled); - do_check_false(a2.isActive); - - do_check_neq(a3, null); - do_check_true(a3.appDisabled); - do_check_false(a3.isActive); - - do_check_neq(a4, null); - do_check_true(a4.appDisabled); - do_check_false(a4.isActive); - - do_check_neq(a5, null); - do_check_true(a5.appDisabled); - do_check_false(a5.isActive); - - do_check_neq(a6, null); - do_check_true(a6.appDisabled); - do_check_false(a6.isActive); - - do_check_neq(a6, null); - do_check_true(a6.appDisabled); - do_check_false(a6.isActive); - - do_execute_soon(do_test_finished); - - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug570173.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug570173.js deleted file mode 100644 index 2c87d8c79..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug570173.js +++ /dev/null @@ -1,61 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that add-on update check failures are propogated correctly - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -var testserver; -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - // Create and configure the HTTP server. - testserver = createHttpServer(); - testserver.registerDirectory("/data/", do_get_file("data")); - testserver.registerDirectory("/addons/", do_get_file("addons")); - gPort = testserver.identity.primaryPort; - - run_next_test(); -} - -// Verify that an update check returns the correct errors. -add_task(function* () { - for (let manifestType of ["rdf", "json"]) { - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - updateURL: `http://localhost:${gPort}/data/test_missing.${manifestType}`, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - bootstrap: "true", - }, profileDir); - - yield promiseRestartManager(); - - let addon = yield promiseAddonByID("addon1@tests.mozilla.org"); - - ok(addon); - ok(addon.updateURL.endsWith(manifestType)); - equal(addon.version, "1.0"); - - // We're expecting an error, so resolve when the promise is rejected. - let update = yield promiseFindAddonUpdates(addon, AddonManager.UPDATE_WHEN_USER_REQUESTED) - .catch(Promise.resolve); - - ok(!update.compatibilityUpdate, "not expecting a compatibility update"); - ok(!update.updateAvailable, "not expecting a compatibility update"); - - equal(update.error, AddonManager.UPDATE_STATUS_DOWNLOAD_ERROR); - - addon.uninstall(); - } -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug576735.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug576735.js deleted file mode 100644 index df64e159d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug576735.js +++ /dev/null @@ -1,66 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that we recover gracefully from an extension directory disappearing -// when we were expecting to uninstall it. - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "2.0", - name: "Test 2", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "2"); - - writeInstallRDFForExtension(addon1, profileDir); - - startupManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { - a1.uninstall(); - - shutdownManager(); - - var dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); - dest.remove(true); - - writeInstallRDFForExtension(addon2, profileDir); - - startupManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], - function([a1_2, a2_2]) { - // Addon1 should no longer be installed - do_check_eq(a1_2, null); - - // Addon2 should have been detected - do_check_neq(a2_2, null); - - do_execute_soon(do_test_finished); - }); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug587088.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug587088.js deleted file mode 100644 index 8d9857e7f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug587088.js +++ /dev/null @@ -1,174 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that trying to upgrade or uninstall an extension that has a file locked -// will roll back the upgrade or uninstall and retry at the next restart - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - // This is only an issue on windows. - if (!("nsIWindowsRegKey" in AM_Ci)) - return; - - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - startupManager(); - run_test_1(); -} - -function check_addon(aAddon, aVersion) { - do_check_neq(aAddon, null); - do_check_eq(aAddon.version, aVersion); - do_check_true(aAddon.isActive); - do_check_true(isExtensionInAddonsList(profileDir, aAddon.id)); - - do_check_true(aAddon.hasResource("testfile")); - if (aVersion == "1.0") { - do_check_true(aAddon.hasResource("testfile1")); - do_check_false(aAddon.hasResource("testfile2")); - } - else { - do_check_false(aAddon.hasResource("testfile1")); - do_check_true(aAddon.hasResource("testfile2")); - } - - do_check_eq(aAddon.pendingOperations, AddonManager.PENDING_NONE); -} - -function check_addon_upgrading(aAddon) { - do_check_neq(aAddon, null); - do_check_eq(aAddon.version, "1.0"); - do_check_true(aAddon.isActive); - do_check_true(isExtensionInAddonsList(profileDir, aAddon.id)); - - do_check_true(aAddon.hasResource("testfile")); - do_check_true(aAddon.hasResource("testfile1")); - do_check_false(aAddon.hasResource("testfile2")); - - do_check_eq(aAddon.pendingOperations, AddonManager.PENDING_UPGRADE); - - do_check_eq(aAddon.pendingUpgrade.version, "2.0"); -} - -function check_addon_uninstalling(aAddon, aAfterRestart) { - do_check_neq(aAddon, null); - do_check_eq(aAddon.version, "1.0"); - - if (aAfterRestart) { - do_check_false(aAddon.isActive); - do_check_false(isExtensionInAddonsList(profileDir, aAddon.id)); - } - else { - do_check_true(aAddon.isActive); - do_check_true(isExtensionInAddonsList(profileDir, aAddon.id)); - } - - do_check_true(aAddon.hasResource("testfile")); - do_check_true(aAddon.hasResource("testfile1")); - do_check_false(aAddon.hasResource("testfile2")); - - do_check_eq(aAddon.pendingOperations, AddonManager.PENDING_UNINSTALL); -} - -function run_test_1() { - installAllFiles([do_get_addon("test_bug587088_1")], function() { - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - check_addon(a1, "1.0"); - - // Lock either install.rdf for unpacked add-ons or the xpi for packed add-ons. - let uri = a1.getResourceURI("install.rdf"); - if (uri.schemeIs("jar")) - uri = a1.getResourceURI(); - - let fstream = AM_Cc["@mozilla.org/network/file-input-stream;1"]. - createInstance(AM_Ci.nsIFileInputStream); - fstream.init(uri.QueryInterface(AM_Ci.nsIFileURL).file, -1, 0, 0); - - installAllFiles([do_get_addon("test_bug587088_2")], function() { - - check_addon_upgrading(a1); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1_2) { - check_addon_upgrading(a1_2); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1_3) { - check_addon_upgrading(a1_3); - - fstream.close(); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1_4) { - check_addon(a1_4, "2.0"); - - a1_4.uninstall(); - do_execute_soon(run_test_2); - }); - })); - })); - }); - }); - }); -} - -// Test that a failed uninstall gets rolled back -function run_test_2() { - restartManager(); - - installAllFiles([do_get_addon("test_bug587088_1")], function() { - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { - check_addon(a1, "1.0"); - - // Lock either install.rdf for unpacked add-ons or the xpi for packed add-ons. - let uri = a1.getResourceURI("install.rdf"); - if (uri.schemeIs("jar")) - uri = a1.getResourceURI(); - - let fstream = AM_Cc["@mozilla.org/network/file-input-stream;1"]. - createInstance(AM_Ci.nsIFileInputStream); - fstream.init(uri.QueryInterface(AM_Ci.nsIFileURL).file, -1, 0, 0); - - a1.uninstall(); - - check_addon_uninstalling(a1); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1_2) { - check_addon_uninstalling(a1_2, true); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1_3) { - check_addon_uninstalling(a1_3, true); - - fstream.close(); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1_4) { - do_check_eq(a1_4, null); - var dir = profileDir.clone(); - dir.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); - do_check_false(dir.exists()); - do_check_false(isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org")); - - do_execute_soon(do_test_finished); - }); - })); - })); - })); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug594058.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug594058.js deleted file mode 100644 index 858579815..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug594058.js +++ /dev/null @@ -1,88 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This tests is modifying a file in an unpacked extension -// causes cache invalidation. - -// Disables security checking our updates which haven't been signed -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); -// Allow the mismatch UI to show -Services.prefs.setBoolPref("extensions.showMismatchUI", true); - -Components.utils.import("resource://testing-common/MockRegistrar.jsm"); - -var Ci = Components.interfaces; -const extDir = gProfD.clone(); -extDir.append("extensions"); - -var gCachePurged = false; - -// Override the window watcher -var WindowWatcher = { - openWindow: function(parent, url, name, features, args) { - do_check_false(gCachePurged); - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Components.results.NS_ERROR_NO_INTERFACE; - } -} - -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - -/** - * Start the test by installing extensions. - */ -function run_test() { - do_test_pending(); - gCachePurged = false; - - let obs = AM_Cc["@mozilla.org/observer-service;1"]. - getService(AM_Ci.nsIObserverService); - obs.addObserver({ - observe: function(aSubject, aTopic, aData) { - gCachePurged = true; - } - }, "startupcache-invalidate", false); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - startupManager(); - // nsAppRunner takes care of clearing this when a new app is installed - do_check_false(gCachePurged); - - installAllFiles([do_get_addon("test_bug594058")], function() { - restartManager(); - do_check_true(gCachePurged); - gCachePurged = false; - - // Now, make it look like we've updated the file. First, start the EM - // so it records the bogus old time, then update the file and restart. - let extFile = extDir.clone(); - let pastTime = extFile.lastModifiedTime - 5000; - extFile.append("bug594058@tests.mozilla.org"); - setExtensionModifiedTime(extFile, pastTime); - let otherFile = extFile.clone(); - otherFile.append("directory"); - otherFile.lastModifiedTime = pastTime; - otherFile.append("file1"); - otherFile.lastModifiedTime = pastTime; - - restartManager(); - gCachePurged = false; - - otherFile.lastModifiedTime = pastTime + 5000; - restartManager(); - do_check_true(gCachePurged); - gCachePurged = false; - - restartManager(); - do_check_false(gCachePurged); - - do_test_finished(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug595081.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug595081.js deleted file mode 100644 index db53dc747..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug595081.js +++ /dev/null @@ -1,27 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that the AddonManager objects cannot be tampered with - -function run_test() { - // Setup for test - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - startupManager(); - - // Verify that properties cannot be changed - let old = AddonManager.STATE_AVAILABLE; - AddonManager.STATE_AVAILABLE = 28; - do_check_eq(AddonManager.STATE_AVAILABLE, old); - - // Verify that functions cannot be replaced - AddonManager.isInstallEnabled = function() { - do_throw("Should not be able to replace a function"); - } - AddonManager.isInstallEnabled("application/x-xpinstall"); - - // Verify that properties cannot be added - AddonManager.foo = "bar"; - do_check_false("foo" in AddonManager); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug595573.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug595573.js deleted file mode 100644 index 7e2bf7d77..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug595573.js +++ /dev/null @@ -1,40 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This tests if addons with UUID based ids install and stay installed - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - startupManager(); - run_test_1(); -} - -function run_test_1() { - installAllFiles([do_get_addon("test_bug595573")], function() { - restartManager(); - - AddonManager.getAddonByID("{2f69dacd-03df-4150-a9f1-e8a7b2748829}", function(a1) { - do_check_neq(a1, null); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_execute_soon(run_test_2); - }); - }); -} - -function run_test_2() { - restartManager(); - - AddonManager.getAddonByID("{2f69dacd-03df-4150-a9f1-e8a7b2748829}", function(a1) { - do_check_neq(a1, null); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug596607.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug596607.js deleted file mode 100644 index bdcf93a1f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug596607.js +++ /dev/null @@ -1,147 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that a reference to a non-existent extension in the registry doesn't -// break things -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -// Enable loading extensions from the user and system scopes -Services.prefs.setIntPref("extensions.enabledScopes", - AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER + - AddonManager.SCOPE_SYSTEM); - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "2.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}; - -const addon1Dir = writeInstallRDFForExtension(addon1, gProfD, "addon1"); -const addon2Dir = writeInstallRDFForExtension(addon2, gProfD, "addon2"); -const addon3Dir = gProfD.clone(); -addon3Dir.append("addon3@tests.mozilla.org"); - -let registry; - -function run_test() { - // This test only works where there is a registry. - if (!("nsIWindowsRegKey" in AM_Ci)) - return; - - registry = new MockRegistry(); - do_register_cleanup(() => { - registry.shutdown(); - }); - - do_test_pending(); - - run_test_1(); -} - -// Tests whether starting a fresh profile with a bad entry works -function run_test_1() { - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon1@tests.mozilla.org", addon1Dir.path); - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon2@tests.mozilla.org", addon2Dir.path); - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon3@tests.mozilla.org", addon3Dir.path); - - startupManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org"], function([a1, a2, a3]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_eq(a1.scope, AddonManager.SCOPE_SYSTEM); - - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_eq(a2.scope, AddonManager.SCOPE_USER); - - do_check_eq(a3, null); - - do_execute_soon(run_test_2); - }); -} - -// Tests whether removing the bad entry has any effect -function run_test_2() { - shutdownManager(); - - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon3@tests.mozilla.org", addon3Dir.path); - - startupManager(false); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org"], function([a1, a2, a3]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_eq(a1.scope, AddonManager.SCOPE_SYSTEM); - - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_eq(a2.scope, AddonManager.SCOPE_USER); - - do_check_eq(a3, null); - - do_execute_soon(run_test_3); - }); -} - -// Tests adding the bad entry to an existing profile has any effect -function run_test_3() { - shutdownManager(); - - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon3@tests.mozilla.org", null); - - startupManager(false); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org"], function([a1, a2, a3]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_eq(a1.scope, AddonManager.SCOPE_SYSTEM); - - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_eq(a2.scope, AddonManager.SCOPE_USER); - - do_check_eq(a3, null); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug616841.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug616841.js deleted file mode 100644 index d0c973960..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug616841.js +++ /dev/null @@ -1,26 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that string comparisons work correctly in callbacks - -function test_string_compare() { - do_check_true("C".localeCompare("D") < 0); - do_check_true("D".localeCompare("C") > 0); - do_check_true("\u010C".localeCompare("D") < 0); - do_check_true("D".localeCompare("\u010C") > 0); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - startupManager(); - - do_test_pending(); - - test_string_compare(); - - AddonManager.getAddonByID("foo", function(aAddon) { - test_string_compare(); - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug619730.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug619730.js deleted file mode 100644 index 1c21385e0..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug619730.js +++ /dev/null @@ -1,64 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests whether -var Cc = Components.classes; -var Ci = Components.interfaces; -var Cu = Components.utils; - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_bug619730.xml", gTestserver); - -function load_blocklist(file, aCallback) { - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "blocklist-updated"); - - do_execute_soon(aCallback); - }, "blocklist-updated", false); - - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -var gSawGFX = false; -var gSawTest = false; - -// Performs the initial setup -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - do_check_true(aSubject instanceof AM_Ci.nsIDOMElement); - do_check_eq(aSubject.getAttribute("testattr"), "GFX"); - do_check_eq(aSubject.childNodes.length, 2); - gSawGFX = true; - }, "blocklist-data-gfxItems", false); - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - do_check_true(aSubject instanceof AM_Ci.nsIDOMElement); - do_check_eq(aSubject.getAttribute("testattr"), "FOO"); - do_check_eq(aSubject.childNodes.length, 3); - gSawTest = true; - }, "blocklist-data-testItems", false); - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - do_check_true(gSawGFX); - do_check_true(gSawTest); - }, "blocklist-data-fooItems", false); - - // Need to wait for the blocklist to load; Bad Things happen if the test harness - // shuts down AddonManager before the blocklist service is done telling it about - // changes - load_blocklist("test_bug619730.xml", () => gTestserver.stop(do_test_finished)); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug620837.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug620837.js deleted file mode 100644 index 6bfbfcaf2..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug620837.js +++ /dev/null @@ -1,145 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -Components.utils.import("resource://testing-common/httpd.js"); - -const PREF_BLOCKLIST_LASTUPDATETIME = "app.update.lastUpdateTime.blocklist-background-update-timer"; -const PREF_BLOCKLIST_PINGCOUNTTOTAL = "extensions.blocklist.pingCountTotal"; -const PREF_BLOCKLIST_PINGCOUNTVERSION = "extensions.blocklist.pingCountVersion"; - -const SECONDS_IN_DAY = 60 * 60 * 24; - -var gExpectedQueryString = null; -var gNextTest = null; -var gTestserver = null; - -function notify_blocklist() { - var blocklist = AM_Cc["@mozilla.org/extensions/blocklist;1"]. - getService(AM_Ci.nsITimerCallback); - blocklist.notify(null); -} - -function pathHandler(metadata, response) { - do_check_eq(metadata.queryString, gExpectedQueryString); - gNextTest(); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - gTestserver = new HttpServer(); - gTestserver.registerPathHandler("/", pathHandler); - gTestserver.start(-1); - gPort = gTestserver.identity.primaryPort; - - Services.prefs.setCharPref("extensions.blocklist.url", - "http://localhost:" + gPort + - "/?%PING_COUNT%&%TOTAL_PING_COUNT%&%DAYS_SINCE_LAST_PING%"); - - do_test_pending(); - test1(); -} - -function getNowInSeconds() { - return Math.round(Date.now() / 1000); -} - -function test1() { - gNextTest = test2; - gExpectedQueryString = "1&1&new"; - notify_blocklist(); -} - -function test2() { - gNextTest = test3; - gExpectedQueryString = "invalid&invalid&invalid"; - notify_blocklist(); -} - -function test3() { - Services.prefs.setIntPref(PREF_BLOCKLIST_LASTUPDATETIME, - (getNowInSeconds() - SECONDS_IN_DAY)); - gNextTest = test4; - gExpectedQueryString = "2&2&1"; - notify_blocklist(); -} - -function test4() { - Services.prefs.setIntPref(PREF_BLOCKLIST_PINGCOUNTVERSION, -1); - Services.prefs.setIntPref(PREF_BLOCKLIST_LASTUPDATETIME, - (getNowInSeconds() - (SECONDS_IN_DAY * 2))); - gNextTest = test5; - gExpectedQueryString = "1&3&2"; - notify_blocklist(); -} - -function test5() { - Services.prefs.setIntPref(PREF_BLOCKLIST_LASTUPDATETIME, getNowInSeconds()); - gNextTest = test6; - gExpectedQueryString = "invalid&invalid&0"; - notify_blocklist(); -} - -function test6() { - Services.prefs.setIntPref(PREF_BLOCKLIST_LASTUPDATETIME, - (getNowInSeconds() - (SECONDS_IN_DAY * 3))); - gNextTest = test7; - gExpectedQueryString = "2&4&3"; - notify_blocklist(); -} - -function test7() { - Services.prefs.setIntPref(PREF_BLOCKLIST_PINGCOUNTVERSION, 2147483647); - Services.prefs.setIntPref(PREF_BLOCKLIST_LASTUPDATETIME, - (getNowInSeconds() - (SECONDS_IN_DAY * 4))); - gNextTest = test8; - gExpectedQueryString = "2147483647&5&4"; - notify_blocklist(); -} - -function test8() { - Services.prefs.setIntPref(PREF_BLOCKLIST_LASTUPDATETIME, - (getNowInSeconds() - (SECONDS_IN_DAY * 5))); - gNextTest = test9; - gExpectedQueryString = "1&6&5"; - notify_blocklist(); -} - -function test9() { - Services.prefs.setIntPref(PREF_BLOCKLIST_PINGCOUNTTOTAL, 2147483647); - Services.prefs.setIntPref(PREF_BLOCKLIST_LASTUPDATETIME, - (getNowInSeconds() - (SECONDS_IN_DAY * 6))); - gNextTest = test10; - gExpectedQueryString = "2&2147483647&6"; - notify_blocklist(); -} - -function test10() { - Services.prefs.setIntPref(PREF_BLOCKLIST_LASTUPDATETIME, - (getNowInSeconds() - (SECONDS_IN_DAY * 7))); - gNextTest = test11; - gExpectedQueryString = "3&1&7"; - notify_blocklist(); -} - -function test11() { - Services.prefs.setIntPref(PREF_BLOCKLIST_PINGCOUNTVERSION, -1); - Services.prefs.setIntPref(PREF_BLOCKLIST_LASTUPDATETIME, - (getNowInSeconds() - (SECONDS_IN_DAY * 8))); - gNextTest = test12; - gExpectedQueryString = "1&2&8"; - notify_blocklist(); -} - -function test12() { - Services.prefs.setIntPref(PREF_BLOCKLIST_LASTUPDATETIME, - (getNowInSeconds() - (SECONDS_IN_DAY * 9))); - gNextTest = finish; - gExpectedQueryString = "2&3&9"; - notify_blocklist(); -} - -function finish() { - gTestserver.stop(do_test_finished); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug655254.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug655254.js deleted file mode 100644 index 449c59065..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug655254.js +++ /dev/null @@ -1,164 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that moving an extension in the filesystem without any other -// change still keeps updated compatibility information - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); -// Enable loading extensions from the user and system scopes -Services.prefs.setIntPref("extensions.enabledScopes", - AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "1.9.2"); - -Components.utils.import("resource://testing-common/httpd.js"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; -mapFile("/data/test_bug655254.rdf", testserver); - -var userDir = gProfD.clone(); -userDir.append("extensions2"); -userDir.append(gAppInfo.ID); - -var dirProvider = { - getFile: function(aProp, aPersistent) { - aPersistent.value = false; - if (aProp == "XREUSysExt") - return userDir.parent; - return null; - }, - - QueryInterface: XPCOMUtils.generateQI([AM_Ci.nsIDirectoryServiceProvider, - AM_Ci.nsISupports]) -}; -Services.dirsvc.registerProvider(dirProvider); - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - updateURL: "http://localhost:" + gPort + "/data/test_bug655254.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Set up the profile -function run_test() { - do_test_pending(); - run_test_1(); -} - -function end_test() { - testserver.stop(do_test_finished); -} - -function run_test_1() { - var time = Date.now(); - var dir = writeInstallRDFForExtension(addon1, userDir); - setExtensionModifiedTime(dir, time); - - manuallyInstall(do_get_addon("test_bug655254_2"), userDir, "addon2@tests.mozilla.org"); - - startupManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], function([a1, a2]) { - do_check_neq(a1, null); - do_check_true(a1.appDisabled); - do_check_false(a1.isActive); - do_check_false(isExtensionInAddonsList(userDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.appDisabled); - do_check_true(a2.isActive); - do_check_false(isExtensionInAddonsList(userDir, a2.id)); - do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 1); - - a1.findUpdates({ - onUpdateFinished: function() { - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1_2) { - do_check_neq(a1_2, null); - do_check_false(a1_2.appDisabled); - do_check_true(a1_2.isActive); - do_check_true(isExtensionInAddonsList(userDir, a1_2.id)); - - shutdownManager(); - - do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 0); - - userDir.parent.moveTo(gProfD, "extensions3"); - userDir = gProfD.clone(); - userDir.append("extensions3"); - userDir.append(gAppInfo.ID); - do_check_true(userDir.exists()); - - startupManager(false); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], function([a1_3, a2_3]) { - do_check_neq(a1_3, null); - do_check_false(a1_3.appDisabled); - do_check_true(a1_3.isActive); - do_check_true(isExtensionInAddonsList(userDir, a1_3.id)); - - do_check_neq(a2_3, null); - do_check_false(a2_3.appDisabled); - do_check_true(a2_3.isActive); - do_check_false(isExtensionInAddonsList(userDir, a2_3.id)); - do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 1); - - do_execute_soon(run_test_2); - }); - })); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); -} - -// Set up the profile -function run_test_2() { - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(a2) { - do_check_neq(a2, null); - do_check_false(a2.appDisabled); - do_check_true(a2.isActive); - do_check_false(isExtensionInAddonsList(userDir, a2.id)); - do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 1); - - a2.userDisabled = true; - do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 0); - - shutdownManager(); - - userDir.parent.moveTo(gProfD, "extensions4"); - userDir = gProfD.clone(); - userDir.append("extensions4"); - userDir.append(gAppInfo.ID); - do_check_true(userDir.exists()); - - startupManager(false); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], function([a1_2, a2_2]) { - do_check_neq(a1_2, null); - do_check_false(a1_2.appDisabled); - do_check_true(a1_2.isActive); - do_check_true(isExtensionInAddonsList(userDir, a1_2.id)); - - do_check_neq(a2_2, null); - do_check_true(a2_2.userDisabled); - do_check_false(a2_2.isActive); - do_check_false(isExtensionInAddonsList(userDir, a2_2.id)); - do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 0); - - end_test(); - }); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug659772.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug659772.js deleted file mode 100644 index 6e98a69a4..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug659772.js +++ /dev/null @@ -1,340 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that a pending upgrade during a schema update doesn't break things - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "2.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "2.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}; - -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "2.0", - name: "Test 3", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "2.0", - name: "Test 4", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - run_test_1(); -} - -// Tests whether a schema migration without app version change works -function run_test_1() { - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - - startupManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org"], - function([a1, a2, a3, a4]) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - do_check_false(a1.appDisabled); - do_check_false(a1.userDisabled); - do_check_true(a1.isActive); - do_check_true(isExtensionInAddonsList(profileDir, addon1.id)); - - do_check_neq(a2, null); - do_check_eq(a2.version, "2.0"); - do_check_false(a2.appDisabled); - do_check_false(a2.userDisabled); - do_check_true(a2.isActive); - do_check_true(isExtensionInAddonsList(profileDir, addon2.id)); - - do_check_neq(a3, null); - do_check_eq(a3.version, "2.0"); - do_check_false(a3.appDisabled); - do_check_false(a3.userDisabled); - do_check_true(a3.isActive); - do_check_true(isExtensionInAddonsList(profileDir, addon3.id)); - - do_check_neq(a4, null); - do_check_eq(a4.version, "2.0"); - do_check_true(a4.appDisabled); - do_check_false(a4.userDisabled); - do_check_false(a4.isActive); - do_check_false(isExtensionInAddonsList(profileDir, addon4.id)); - - // Prepare the add-on update, and a bootstrapped addon (bug 693714) - installAllFiles([ - do_get_addon("test_bug659772"), - do_get_addon("test_bootstrap1_1") - ], function() { - shutdownManager(); - - // Make it look like the next time the app is started it has a new DB schema - changeXPIDBVersion(1); - Services.prefs.setIntPref("extensions.databaseSchema", 1); - - let jsonfile = gProfD.clone(); - jsonfile.append("extensions"); - jsonfile.append("staged"); - jsonfile.append("addon3@tests.mozilla.org.json"); - do_check_true(jsonfile.exists()); - - // Remove an unnecessary property from the cached manifest - let fis = AM_Cc["@mozilla.org/network/file-input-stream;1"]. - createInstance(AM_Ci.nsIFileInputStream); - let json = AM_Cc["@mozilla.org/dom/json;1"]. - createInstance(AM_Ci.nsIJSON); - fis.init(jsonfile, -1, 0, 0); - let addonObj = json.decodeFromStream(fis, jsonfile.fileSize); - fis.close(); - delete addonObj.optionsType; - - let stream = AM_Cc["@mozilla.org/network/file-output-stream;1"]. - createInstance(AM_Ci.nsIFileOutputStream); - let converter = AM_Cc["@mozilla.org/intl/converter-output-stream;1"]. - createInstance(AM_Ci.nsIConverterOutputStream); - stream.init(jsonfile, FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | - FileUtils.MODE_TRUNCATE, FileUtils.PERMS_FILE, - 0); - converter.init(stream, "UTF-8", 0, 0x0000); - converter.writeString(JSON.stringify(addonObj)); - converter.close(); - stream.close(); - - Services.prefs.clearUserPref("bootstraptest.install_reason"); - Services.prefs.clearUserPref("bootstraptest.uninstall_reason"); - - startupManager(false); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org"], - function([a1_2, a2_2, a3_2, a4_2]) { - do_check_neq(a1_2, null); - do_check_eq(a1_2.version, "2.0"); - do_check_false(a1_2.appDisabled); - do_check_false(a1_2.userDisabled); - do_check_true(a1_2.isActive); - do_check_true(isExtensionInAddonsList(profileDir, addon1.id)); - - do_check_neq(a2_2, null); - do_check_eq(a2_2.version, "2.0"); - do_check_false(a2_2.appDisabled); - do_check_false(a2_2.userDisabled); - do_check_true(a2_2.isActive); - do_check_true(isExtensionInAddonsList(profileDir, addon2.id)); - - // Should stay enabled because we migrate the compat info from - // the previous version of the DB - do_check_neq(a3_2, null); - do_check_eq(a3_2.version, "2.0"); - todo_check_false(a3_2.appDisabled); // XXX unresolved issue - do_check_false(a3_2.userDisabled); - todo_check_true(a3_2.isActive); // XXX same - todo_check_true(isExtensionInAddonsList(profileDir, addon3.id)); // XXX same - - do_check_neq(a4_2, null); - do_check_eq(a4_2.version, "2.0"); - do_check_true(a4_2.appDisabled); - do_check_false(a4_2.userDisabled); - do_check_false(a4_2.isActive); - do_check_false(isExtensionInAddonsList(profileDir, addon4.id)); - - // Check that install and uninstall haven't been called on the bootstrapped addon - do_check_false(Services.prefs.prefHasUserValue("bootstraptest.install_reason")); - do_check_false(Services.prefs.prefHasUserValue("bootstraptest.uninstall_reason")); - - a1_2.uninstall(); - a2_2.uninstall(); - a3_2.uninstall(); - a4_2.uninstall(); - do_execute_soon(run_test_2); - }); - }); - }); -} - -// Tests whether a schema migration with app version change works -function run_test_2() { - restartManager(); - - shutdownManager(); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - - startupManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org"], - function([a1, a2, a3, a4]) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - do_check_false(a1.appDisabled); - do_check_false(a1.userDisabled); - do_check_true(a1.isActive); - do_check_true(isExtensionInAddonsList(profileDir, addon1.id)); - - do_check_neq(a2, null); - do_check_eq(a2.version, "2.0"); - do_check_false(a2.appDisabled); - do_check_false(a2.userDisabled); - do_check_true(a2.isActive); - do_check_true(isExtensionInAddonsList(profileDir, addon2.id)); - - do_check_neq(a3, null); - do_check_eq(a3.version, "2.0"); - do_check_false(a3.appDisabled); - do_check_false(a3.userDisabled); - do_check_true(a3.isActive); - do_check_true(isExtensionInAddonsList(profileDir, addon3.id)); - - do_check_neq(a4, null); - do_check_eq(a4.version, "2.0"); - do_check_true(a4.appDisabled); - do_check_false(a4.userDisabled); - do_check_false(a4.isActive); - do_check_false(isExtensionInAddonsList(profileDir, addon4.id)); - - // Prepare the add-on update, and a bootstrapped addon (bug 693714) - installAllFiles([ - do_get_addon("test_bug659772"), - do_get_addon("test_bootstrap1_1") - ], function() { do_execute_soon(prepare_schema_migrate); }); - - function prepare_schema_migrate() { - shutdownManager(); - - // Make it look like the next time the app is started it has a new DB schema - changeXPIDBVersion(1); - Services.prefs.setIntPref("extensions.databaseSchema", 1); - - let jsonfile = gProfD.clone(); - jsonfile.append("extensions"); - jsonfile.append("staged"); - jsonfile.append("addon3@tests.mozilla.org.json"); - do_check_true(jsonfile.exists()); - - // Remove an unnecessary property from the cached manifest - let fis = AM_Cc["@mozilla.org/network/file-input-stream;1"]. - createInstance(AM_Ci.nsIFileInputStream); - let json = AM_Cc["@mozilla.org/dom/json;1"]. - createInstance(AM_Ci.nsIJSON); - fis.init(jsonfile, -1, 0, 0); - let addonObj = json.decodeFromStream(fis, jsonfile.fileSize); - fis.close(); - delete addonObj.optionsType; - - let stream = AM_Cc["@mozilla.org/network/file-output-stream;1"]. - createInstance(AM_Ci.nsIFileOutputStream); - let converter = AM_Cc["@mozilla.org/intl/converter-output-stream;1"]. - createInstance(AM_Ci.nsIConverterOutputStream); - stream.init(jsonfile, FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | - FileUtils.MODE_TRUNCATE, FileUtils.PERMS_FILE, - 0); - converter.init(stream, "UTF-8", 0, 0x0000); - converter.writeString(JSON.stringify(addonObj)); - converter.close(); - stream.close(); - - Services.prefs.clearUserPref("bootstraptest.install_reason"); - Services.prefs.clearUserPref("bootstraptest.uninstall_reason"); - - gAppInfo.version = "2"; - startupManager(true); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org"], - callback_soon(function([a1_2, a2_2, a3_2, a4_2]) { - do_check_neq(a1_2, null); - do_check_eq(a1_2.version, "2.0"); - do_check_true(a1_2.appDisabled); - do_check_false(a1_2.userDisabled); - do_check_false(a1_2.isActive); - do_check_false(isExtensionInAddonsList(profileDir, addon1.id)); - - do_check_neq(a2_2, null); - do_check_eq(a2_2.version, "2.0"); - do_check_false(a2_2.appDisabled); - do_check_false(a2_2.userDisabled); - do_check_true(a2_2.isActive); - do_check_true(isExtensionInAddonsList(profileDir, addon2.id)); - - // Should become appDisabled because we migrate the compat info from - // the previous version of the DB - do_check_neq(a3_2, null); - do_check_eq(a3_2.version, "2.0"); - todo_check_true(a3_2.appDisabled); - do_check_false(a3_2.userDisabled); - todo_check_false(a3_2.isActive); - todo_check_false(isExtensionInAddonsList(profileDir, addon3.id)); - - do_check_neq(a4_2, null); - do_check_eq(a4_2.version, "2.0"); - do_check_false(a4_2.appDisabled); - do_check_false(a4_2.userDisabled); - do_check_true(a4_2.isActive); - do_check_true(isExtensionInAddonsList(profileDir, addon4.id)); - - // Check that install and uninstall haven't been called on the bootstrapped addon - do_check_false(Services.prefs.prefHasUserValue("bootstraptest.install_reason")); - do_check_false(Services.prefs.prefHasUserValue("bootstraptest.uninstall_reason")); - - a1_2.uninstall(); - a2_2.uninstall(); - a3_2.uninstall(); - a4_2.uninstall(); - restartManager(); - - shutdownManager(); - - do_test_finished(); - })); - } - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug675371.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug675371.js deleted file mode 100644 index 6f2a5e7cd..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug675371.js +++ /dev/null @@ -1,91 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - startupManager(); - - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_bug675371"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - - prepare_test({ - "bug675371@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test)); - install.install(); - }); -} - -function check_test() { - AddonManager.getAddonByID("bug675371@tests.mozilla.org", do_exception_wrap(function(addon) { - do_check_neq(addon, null); - do_check_true(addon.isActive); - - // Tests that chrome.manifest is registered when the addon is installed. - var target = { }; - Services.scriptloader.loadSubScript("chrome://bug675371/content/test.js", target); - do_check_true(target.active); - - prepare_test({ - "bug675371@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ] - }); - - // Tests that chrome.manifest is unregistered when the addon is disabled. - addon.userDisabled = true; - target.active = false; - try { - Services.scriptloader.loadSubScript("chrome://bug675371/content/test.js", target); - do_throw("Chrome file should not have been found"); - } catch (e) { - do_check_false(target.active); - } - - prepare_test({ - "bug675371@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - // Tests that chrome.manifest is registered when the addon is enabled. - addon.userDisabled = false; - target.active = false; - Services.scriptloader.loadSubScript("chrome://bug675371/content/test.js", target); - do_check_true(target.active); - - prepare_test({ - "bug675371@tests.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ] - }); - - // Tests that chrome.manifest is unregistered when the addon is uninstalled. - addon.uninstall(); - target.active = false; - try { - Services.scriptloader.loadSubScript("chrome://bug675371/content/test.js", target); - do_throw("Chrome file should not have been found"); - } catch (e) { - do_check_false(target.active); - } - - do_execute_soon(do_test_finished); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug740612.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug740612.js deleted file mode 100644 index d17e7acde..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug740612.js +++ /dev/null @@ -1,40 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that attempts to override the global values fails but doesn't -// destroy the world with it -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function getActiveVersion() { - return Services.prefs.getIntPref("bootstraptest.active_version"); -} - -function getInstalledVersion() { - return Services.prefs.getIntPref("bootstraptest.installed_version"); -} - -function run_test() { - do_test_pending(); - - manuallyInstall(do_get_addon("test_bug740612_1"), profileDir, - "bug740612_1@tests.mozilla.org"); - manuallyInstall(do_get_addon("test_bug740612_2"), profileDir, - "bug740612_2@tests.mozilla.org"); - - startupManager(); - - AddonManager.getAddonsByIDs(["bug740612_1@tests.mozilla.org", - "bug740612_2@tests.mozilla.org"], - function([a1, a2]) { - do_check_neq(a1, null); - do_check_neq(a2, null); - do_check_eq(getInstalledVersion(), "1.0"); - do_check_eq(getActiveVersion(), "1.0"); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug753900.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug753900.js deleted file mode 100644 index 206862339..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug753900.js +++ /dev/null @@ -1,86 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that strange characters in an add-on version don't break the -// crash annotation. - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1,0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "1:0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "1,0", - name: "Test 3", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "1:0", - name: "Test 4", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - - startupManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org"], - function([a1, a2, a3, a4]) { - - do_check_neq(a1, null); - do_check_in_crash_annotation(addon1.id, addon1.version); - do_check_neq(a2, null); - do_check_in_crash_annotation(addon2.id, addon2.version); - do_check_neq(a3, null); - do_check_in_crash_annotation(addon3.id, addon3.version); - do_check_neq(a4, null); - do_check_in_crash_annotation(addon4.id, addon4.version); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug757663.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug757663.js deleted file mode 100644 index 54cee0839..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug757663.js +++ /dev/null @@ -1,112 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This test verifies that removing a listener during a callback for that type -// of listener still results in all listeners being called. - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "2.0", - name: "Test 1", - bootstrap: "true", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var listener1 = { - sawEvent: false, - onDisabling: function() { - this.sawEvent = true; - AddonManager.removeAddonListener(this); - }, - onNewInstall: function() { - this.sawEvent = true; - AddonManager.removeInstallListener(this); - } -}; -var listener2 = { - sawEvent: false, - onDisabling: function() { - this.sawEvent = true; - }, - onNewInstall: function() { - this.sawEvent = true; - } -}; -var listener3 = { - sawEvent: false, - onDisabling: function() { - this.sawEvent = true; - }, - onNewInstall: function() { - this.sawEvent = true; - } -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - writeInstallRDFForExtension(addon1, profileDir); - startupManager(); - - run_test_1(); -} - -function run_test_1() { - AddonManager.addAddonListener(listener1); - AddonManager.addAddonListener(listener2); - AddonManager.addAddonListener(listener3); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org"], function([a1]) { - do_check_neq(a1, null); - do_check_false(a1.userDisabled); - do_check_true(a1.isActive); - - a1.userDisabled = true; - - do_check_true(listener1.sawEvent); - listener1.sawEvent = false; - do_check_true(listener2.sawEvent); - listener2.sawEvent = false; - do_check_true(listener3.sawEvent); - listener3.sawEvent = false; - - AddonManager.removeAddonListener(listener1); - AddonManager.removeAddonListener(listener2); - AddonManager.removeAddonListener(listener3); - - a1.uninstall(); - run_test_2(); - }); -} - -function run_test_2() { - AddonManager.addInstallListener(listener1); - AddonManager.addInstallListener(listener2); - AddonManager.addInstallListener(listener3); - - AddonManager.getInstallForFile(do_get_addon("test_bug757663"), function(aInstall) { - - do_check_true(listener1.sawEvent); - listener1.sawEvent = false; - do_check_true(listener2.sawEvent); - listener2.sawEvent = false; - do_check_true(listener3.sawEvent); - listener3.sawEvent = false; - - AddonManager.removeInstallListener(listener1); - AddonManager.removeInstallListener(listener2); - AddonManager.removeInstallListener(listener3); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_bug953156.js b/toolkit/mozapps/webextensions/test/xpcshell/test_bug953156.js deleted file mode 100644 index a7acb9ad2..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_bug953156.js +++ /dev/null @@ -1,51 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - startupManager(); - - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_bug675371"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - - prepare_test({ - "bug675371@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded" - ], callback_soon(check_test)); - install.install(); - }); -} - -function check_test() { - AddonManager.getAddonByID("bug675371@tests.mozilla.org", do_exception_wrap(function(addon) { - do_check_neq(addon, null); - do_check_true(addon.isActive); - - // Tests that chrome.manifest is registered when the addon is installed. - var target = { active: false }; - Services.scriptloader.loadSubScript("chrome://bug675371/content/test.js", target); - do_check_true(target.active); - - shutdownManager(); - - // Tests that chrome.manifest remains registered at app shutdown. - target.active = false; - Services.scriptloader.loadSubScript("chrome://bug675371/content/test.js", target); - do_check_true(target.active); - - do_execute_soon(do_test_finished); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_cache_certdb.js b/toolkit/mozapps/webextensions/test/xpcshell/test_cache_certdb.js deleted file mode 100644 index edb442aad..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_cache_certdb.js +++ /dev/null @@ -1,82 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// We require signature checks for this test -Services.prefs.setBoolPref(PREF_XPI_SIGNATURES_REQUIRED, true); -gUseRealCertChecks = true; - -const CERT = `MIIDITCCAgmgAwIBAgIJALAv8fydd6nBMA0GCSqGSIb3DQEBBQUAMCcxJTAjBgNV -BAMMHGJvb3RzdHJhcDFAdGVzdHMubW96aWxsYS5vcmcwHhcNMTYwMjAyMjMxNjUy -WhcNMjYwMTMwMjMxNjUyWjAnMSUwIwYDVQQDDBxib290c3RyYXAxQHRlc3RzLm1v -emlsbGEub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5caNuLTu -H8dEqNntLlhKi4y09hrgcF3cb6n5Xx9DIHA8CKiZxt9qGXKeeiDwEiiQ8ibJYzdc -jLkbzJUyPVUaH9ygrWynSpSTOvv/Ys3+ERrCo9W7Zuzwdmzt6TTEjFMS4lVx06us -3uUqkdp3JMgCqCEbOFZiztICiSKrp8QFJkAfApZzBqmJOPOWH0yZ2CRRzvbQZ6af -hqQDUalJQjWfsenyUWphhbREqExetxHJFR3OrmJt/shXVyz6dD7TBuE3PPUh1RpE -3ejVufcTzjV3XmK79PxsKLM9V2+ww9e9V3OET57kyvn+bpSWdUYm3X4DA8dxNW6+ -kTFWRnQNZ+zQVQIDAQABo1AwTjAdBgNVHQ4EFgQUac36ccv+99N5HxYa8dCDYRaF -HNQwHwYDVR0jBBgwFoAUac36ccv+99N5HxYa8dCDYRaFHNQwDAYDVR0TBAUwAwEB -/zANBgkqhkiG9w0BAQUFAAOCAQEAFfu3MN8EtY5wcxOFdGShOmGQPm2MJJVE6MG+ -p4RqHrukHZSgKOyWjkRk7t6NXzNcnHco9HFv7FQRAXSJ5zObmyu+TMZlu4jHHCav -GMcV3C/4SUGtlipZbgNe00UAIm6tM3Wh8dr38W7VYg4KGAwXou5XhQ9gCAnSn90o -H/42NqHTjJsR4v18izX2aO25ARQdMby7Lsr5j9RqweHywiSlPusFcKRseqOnIP0d -JT3+qh78LeMbNBO2mYD3SP/zu0TAmkAVNcj2KPw0+a0kVZ15rvslPC/K3xn9msMk -fQthv3rDAcsWvi9YO7T+vylgZBgJfn1ZqpQqy58xN96uh6nPOw==`; - -function overrideCertDB() { - // Unregister the real database. - let registrar = Components.manager.QueryInterface(AM_Ci.nsIComponentRegistrar); - let factory = registrar.getClassObject(CERTDB_CID, AM_Ci.nsIFactory); - registrar.unregisterFactory(CERTDB_CID, factory); - - // Get the real DB - let realCertDB = factory.createInstance(null, AM_Ci.nsIX509CertDB); - - let fakeCert = realCertDB.constructX509FromBase64(CERT.replace(/\n/g, "")); - - let fakeCertDB = { - openSignedAppFileAsync(root, file, callback) { - callback.openSignedAppFileFinished(Components.results.NS_OK, null, fakeCert); - }, - - verifySignedDirectoryAsync(root, dir, callback) { - callback.verifySignedDirectoryFinished(Components.results.NS_OK, fakeCert); - }, - - QueryInterface: XPCOMUtils.generateQI([AM_Ci.nsIX509CertDB]) - }; - - for (let property of Object.keys(realCertDB)) { - if (property in fakeCertDB) { - continue; - } - - if (typeof realCertDB[property] == "function") { - fakeCertDB[property] = realCertDB[property].bind(realCertDB); - } - } - - let certDBFactory = { - createInstance: function(outer, iid) { - if (outer != null) { - throw Components.results.NS_ERROR_NO_AGGREGATION; - } - return fakeCertDB.QueryInterface(iid); - } - }; - registrar.registerFactory(CERTDB_CID, "CertDB", - CERTDB_CONTRACTID, certDBFactory); -} - -add_task(function*() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - startupManager(); - - // Once the application is started we shouldn't be able to replace the - // certificate database - overrideCertDB(); - - let install = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_1"), resolve)); - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_cacheflush.js b/toolkit/mozapps/webextensions/test/xpcshell/test_cacheflush.js deleted file mode 100644 index f3448abd2..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_cacheflush.js +++ /dev/null @@ -1,127 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that flushing the zipreader cache happens when appropriate - -var gExpectedFile = null; -var gCacheFlushCount = 0; - -var CacheFlushObserver = { - observe: function(aSubject, aTopic, aData) { - if (aTopic != "flush-cache-entry") - return; - // Ignore flushes triggered by the fake cert DB - if (aData == "cert-override") - return; - - do_check_true(gExpectedFile != null); - do_check_true(aSubject instanceof AM_Ci.nsIFile); - do_check_eq(aSubject.path, gExpectedFile.path); - gCacheFlushCount++; - } -}; - -function run_test() { - do_test_pending(); - Services.obs.addObserver(CacheFlushObserver, "flush-cache-entry", false); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "2"); - - startupManager(); - - run_test_1(); -} - -// Tests that the cache is flushed when cancelling a pending install -function run_test_1() { - AddonManager.getInstallForFile(do_get_addon("test_cacheflush1"), function(aInstall) { - completeAllInstalls([aInstall], function() { - // We should flush the staged XPI when cancelling the install - gExpectedFile = gProfD.clone(); - gExpectedFile.append("extensions"); - gExpectedFile.append("staged"); - gExpectedFile.append("addon1@tests.mozilla.org.xpi"); - aInstall.cancel(); - - do_check_eq(gCacheFlushCount, 1); - gExpectedFile = null; - gCacheFlushCount = 0; - - run_test_2(); - }); - }); -} - -// Tests that the cache is flushed when uninstalling an add-on -function run_test_2() { - installAllFiles([do_get_addon("test_cacheflush1")], function() { - // Installing will flush the staged XPI during startup - gExpectedFile = gProfD.clone(); - gExpectedFile.append("extensions"); - gExpectedFile.append("staged"); - gExpectedFile.append("addon1@tests.mozilla.org.xpi"); - restartManager(); - do_check_eq(gCacheFlushCount, 1); - gExpectedFile = null; - gCacheFlushCount = 0; - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - // We should flush the installed XPI when uninstalling - do_check_true(a1 != null); - a1.uninstall(); - do_check_eq(gCacheFlushCount, 0); - - gExpectedFile = gProfD.clone(); - gExpectedFile.append("extensions"); - gExpectedFile.append("addon1@tests.mozilla.org.xpi"); - restartManager(); - do_check_eq(gCacheFlushCount, 1); - gExpectedFile = null; - gCacheFlushCount = 0; - - do_execute_soon(run_test_3); - }); - }); -} - -// Tests that the cache is flushed when installing a restartless add-on -function run_test_3() { - AddonManager.getInstallForFile(do_get_addon("test_cacheflush2"), function(aInstall) { - aInstall.addListener({ - onInstallStarted: function() { - // We should flush the staged XPI when completing the install - gExpectedFile = gProfD.clone(); - gExpectedFile.append("extensions"); - gExpectedFile.append("staged"); - gExpectedFile.append("addon2@tests.mozilla.org.xpi"); - }, - - onInstallEnded: function() { - do_check_eq(gCacheFlushCount, 1); - gExpectedFile = null; - gCacheFlushCount = 0; - - do_execute_soon(run_test_4); - } - }); - - aInstall.install(); - }); -} - -// Tests that the cache is flushed when uninstalling a restartless add-on -function run_test_4() { - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - // We should flush the installed XPI when uninstalling - gExpectedFile = gProfD.clone(); - gExpectedFile.append("extensions"); - gExpectedFile.append("addon2@tests.mozilla.org.xpi"); - - a2.uninstall(); - do_check_eq(gCacheFlushCount, 2); - gExpectedFile = null; - gCacheFlushCount = 0; - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_checkCompatibility_themeOverride.js b/toolkit/mozapps/webextensions/test/xpcshell/test_checkCompatibility_themeOverride.js deleted file mode 100644 index b6cb13e08..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_checkCompatibility_themeOverride.js +++ /dev/null @@ -1,93 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that the (temporary) -// extensions.checkCompatibility.temporaryThemeOverride_minAppVersion -// preference works. - -var ADDONS = [{ - id: "addon1@tests.mozilla.org", - type: 4, - internalName: "theme1/1.0", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1.0", - maxVersion: "1.0" - }] -}, { - id: "addon2@tests.mozilla.org", - type: 4, - internalName: "theme2/1.0", - version: "1.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2.0", - maxVersion: "2.0" - }] -}]; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3.0", "1"); - - for (let a of ADDONS) { - writeInstallRDFForExtension(a, profileDir); - } - - startupManager(); - - run_test_1(); -} - -function run_test_1() { - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], - function([a1, a2]) { - - do_check_neq(a1, null); - do_check_false(a1.isActive); - do_check_false(a1.isCompatible); - do_check_true(a1.appDisabled); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_false(a2.isCompatible); - do_check_true(a1.appDisabled); - - do_execute_soon(run_test_2); - }); -} - -function run_test_2() { - Services.prefs.setCharPref("extensions.checkCompatibility.temporaryThemeOverride_minAppVersion", "2.0"); - if (isNightlyChannel()) - Services.prefs.setBoolPref("extensions.checkCompatibility.nightly", false); - else - Services.prefs.setBoolPref("extensions.checkCompatibility.3.0", false); - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], - function([a1, a2]) { - - do_check_neq(a1, null); - do_check_false(a1.isActive); - do_check_false(a1.isCompatible); - do_check_true(a1.appDisabled); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_false(a2.isCompatible); - do_check_false(a2.appDisabled); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_checkcompatibility.js b/toolkit/mozapps/webextensions/test/xpcshell/test_checkcompatibility.js deleted file mode 100644 index b9fc0b3ab..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_checkcompatibility.js +++ /dev/null @@ -1,196 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that the extensions.checkCompatibility.* preferences work. - -var ADDONS = [{ - // Cannot be enabled as it has no target app info for the applciation - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "unknown@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}, { - // Always appears incompatible but can be enabled if compatibility checking is - // disabled - id: "addon2@tests.mozilla.org", - version: "1.0", - name: "Test 2", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}, { - // Always appears incompatible but can be enabled if compatibility checking is - // disabled - id: "addon3@tests.mozilla.org", - version: "1.0", - name: "Test 3", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}, { // Always compatible and enabled - id: "addon4@tests.mozilla.org", - version: "1.0", - name: "Test 4", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}, { // Always compatible and enabled - id: "addon5@tests.mozilla.org", - version: "1.0", - name: "Test 5", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}]; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -var gIsNightly = false; - -function run_test() { - do_test_pending("checkcompatibility.js"); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2.2.3", "2"); - - ADDONS.forEach(function(a) { - writeInstallRDFForExtension(a, profileDir); - }); - - gIsNightly = isNightlyChannel(); - - startupManager(); - - run_test_1(); -} - -/** - * Checks that the add-ons are enabled as expected. - * @param overridden - * A boolean indicating that compatibility checking is overridden - * @param a1 - * The Addon for addon1@tests.mozilla.org - * @param a2 - * The Addon for addon2@tests.mozilla.org - * @param a3 - * The Addon for addon3@tests.mozilla.org - * @param a4 - * The Addon for addon4@tests.mozilla.org - * @param a5 - * The Addon for addon5@tests.mozilla.org - */ -function check_state(overridden, a1, a2, a3, a4, a5) { - do_check_neq(a1, null); - do_check_false(a1.isActive); - do_check_false(a1.isCompatible); - - do_check_neq(a2, null); - if (overridden) - do_check_true(a2.isActive); - else - do_check_false(a2.isActive); - do_check_false(a2.isCompatible); - - do_check_neq(a3, null); - if (overridden) - do_check_true(a3.isActive); - else - do_check_false(a3.isActive); - do_check_false(a3.isCompatible); - - do_check_neq(a4, null); - do_check_true(a4.isActive); - do_check_true(a4.isCompatible); - - do_check_neq(a5, null); - do_check_true(a5.isActive); - do_check_true(a5.isCompatible); -} - -// Tests that with compatibility checking enabled we see the incompatible -// add-ons disabled -function run_test_1() { - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - check_state(false, a1, a2, a3, a4, a5); - - do_execute_soon(run_test_2); - }); -} - -// Tests that with compatibility checking disabled we see the incompatible -// add-ons enabled -function run_test_2() { - if (gIsNightly) - Services.prefs.setBoolPref("extensions.checkCompatibility.nightly", false); - else - Services.prefs.setBoolPref("extensions.checkCompatibility.2.2", false); - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - check_state(true, a1, a2, a3, a4, a5); - - do_execute_soon(run_test_3); - }); -} - -// Tests that with compatibility checking disabled we see the incompatible -// add-ons enabled. -function run_test_3() { - if (!gIsNightly) - Services.prefs.setBoolPref("extensions.checkCompatibility.2.1a", false); - restartManager("2.1a4"); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - check_state(true, a1, a2, a3, a4, a5); - - do_execute_soon(run_test_4); - }); -} - -// Tests that with compatibility checking enabled we see the incompatible -// add-ons disabled. -function run_test_4() { - if (gIsNightly) - Services.prefs.setBoolPref("extensions.checkCompatibility.nightly", true); - else - Services.prefs.setBoolPref("extensions.checkCompatibility.2.1a", true); - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - check_state(false, a1, a2, a3, a4, a5); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_childprocess.js b/toolkit/mozapps/webextensions/test/xpcshell/test_childprocess.js deleted file mode 100644 index a6c635eac..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_childprocess.js +++ /dev/null @@ -1,21 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that the AddonManager refuses to load in child processes. - -function run_test() { - // Already loaded the module by head_addons.js. Need to unload this again, so - // that overriding the app-info and re-importing the module works. - Components.utils.unload("resource://gre/modules/AddonManager.jsm"); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - gAppInfo.processType = AM_Ci.nsIXULRuntime.PROCESS_TYPE_CONTENT; - try { - Components.utils.import("resource://gre/modules/AddonManager.jsm"); - do_throw("AddonManager should have refused to load"); - } - catch (ex) { - do_print(ex.message); - do_check_true(!!ex.message); - } -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_compatoverrides.js b/toolkit/mozapps/webextensions/test/xpcshell/test_compatoverrides.js deleted file mode 100644 index c079534c3..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_compatoverrides.js +++ /dev/null @@ -1,259 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -// Tests compatibility overrides, for when strict compatibility checking is -// disabled. See bug 693906. - - -const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled"; - -Components.utils.import("resource://testing-common/httpd.js"); -var gServer = new HttpServer(); -gServer.start(-1); -gPort = gServer.identity.primaryPort; - -const PORT = gPort; -const BASE_URL = "http://localhost:" + PORT; -const DEFAULT_URL = "about:blank"; -const REQ_URL = "/data.xml"; - -// register static file and mark it for interpolation -mapUrlToFile(REQ_URL, do_get_file("data/test_compatoverrides.xml"), gServer); - -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); -Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); -Services.prefs.setCharPref(PREF_GETADDONS_BYIDS_PERFORMANCE, - BASE_URL + REQ_URL); - - -// Not hosted, no overrides -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test addon 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Hosted, no overrides -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "1.0", - name: "Test addon 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Hosted, matching override -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "1.0", - name: "Test addon 3", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Hosted, matching override, wouldn't be compatible if strict checking is enabled -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "1.0", - name: "Test addon 4", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0.1", - maxVersion: "0.2" - }] -}; - -// Hosted, app ID doesn't match in override -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "1.0", - name: "Test addon 5", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Hosted, addon version range doesn't match in override -var addon6 = { - id: "addon6@tests.mozilla.org", - version: "1.0", - name: "Test addon 6", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Hosted, app version range doesn't match in override -var addon7 = { - id: "addon7@tests.mozilla.org", - version: "1.0", - name: "Test addon 7", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Hosted, multiple overrides -var addon8 = { - id: "addon8@tests.mozilla.org", - version: "1.0", - name: "Test addon 8", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Not hosted, matching override -var addon9 = { - id: "addon9@tests.mozilla.org", - version: "1.0", - name: "Test addon 9", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Not hosted, override is of unsupported type (compatible) -var addon10 = { - id: "addon10@tests.mozilla.org", - version: "1.0", - name: "Test addon 10", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "2"); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - writeInstallRDFForExtension(addon6, profileDir); - writeInstallRDFForExtension(addon7, profileDir); - writeInstallRDFForExtension(addon8, profileDir); - writeInstallRDFForExtension(addon9, profileDir); - writeInstallRDFForExtension(addon10, profileDir); - - startupManager(); - - AddonManagerInternal.backgroundUpdateCheck().then(run_test_1); -} - -function end_test() { - gServer.stop(do_test_finished); -} - -function check_compat_status(aCallback) { - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "addon8@tests.mozilla.org", - "addon9@tests.mozilla.org", - "addon10@tests.mozilla.org"], - function([a1, a2, a3, a4, a5, a6, a7, a8, a9, a10]) { - - do_check_neq(a1, null); - do_check_eq(a1.compatibilityOverrides, null); - do_check_true(a1.isCompatible); - do_check_false(a1.appDisabled); - - do_check_neq(a2, null); - do_check_eq(a2.compatibilityOverrides, null); - do_check_true(a2.isCompatible); - do_check_false(a2.appDisabled); - - do_check_neq(a3, null); - do_check_neq(a3.compatibilityOverrides, null); - do_check_eq(a3.compatibilityOverrides.length, 1); - do_check_false(a3.isCompatible); - do_check_true(a3.appDisabled); - - do_check_neq(a4, null); - do_check_neq(a4.compatibilityOverrides, null); - do_check_eq(a4.compatibilityOverrides.length, 1); - do_check_false(a4.isCompatible); - do_check_true(a4.appDisabled); - - do_check_neq(a5, null); - do_check_eq(a5.compatibilityOverrides, null); - do_check_true(a5.isCompatible); - do_check_false(a5.appDisabled); - - do_check_neq(a6, null); - do_check_neq(a6.compatibilityOverrides, null); - do_check_eq(a6.compatibilityOverrides.length, 1); - do_check_true(a6.isCompatible); - do_check_false(a6.appDisabled); - - do_check_neq(a7, null); - do_check_neq(a7.compatibilityOverrides, null); - do_check_eq(a7.compatibilityOverrides.length, 1); - do_check_true(a7.isCompatible); - do_check_false(a7.appDisabled); - - do_check_neq(a8, null); - do_check_neq(a8.compatibilityOverrides, null); - do_check_eq(a8.compatibilityOverrides.length, 3); - do_check_false(a8.isCompatible); - do_check_true(a8.appDisabled); - - do_check_neq(a9, null); - do_check_neq(a9.compatibilityOverrides, null); - do_check_eq(a9.compatibilityOverrides.length, 1); - do_check_false(a9.isCompatible); - do_check_true(a9.appDisabled); - - do_check_neq(a10, null); - do_check_eq(a10.compatibilityOverrides, null); - do_check_true(a10.isCompatible); - do_check_false(a10.appDisabled); - - do_execute_soon(aCallback); - }); -} - -function run_test_1() { - do_print("Run test 1"); - check_compat_status(run_test_2); -} - -function run_test_2() { - do_print("Run test 2"); - restartManager(); - check_compat_status(end_test); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_corrupt.js b/toolkit/mozapps/webextensions/test/xpcshell/test_corrupt.js deleted file mode 100644 index 210c6a936..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_corrupt.js +++ /dev/null @@ -1,406 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that we rebuild something sensible from a corrupt database - - -Components.utils.import("resource://testing-common/httpd.js"); -// Create and configure the HTTP server. -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; - -// register files with server -testserver.registerDirectory("/addons/", do_get_file("addons")); -mapFile("/data/test_corrupt.rdf", testserver); - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); - -// Will be enabled -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Will be disabled -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "1.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Will get a compatibility update and stay enabled -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "1.0", - name: "Test 3", - updateURL: "http://localhost:" + gPort + "/data/test_corrupt.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Will get a compatibility update and be enabled -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "1.0", - name: "Test 4", - updateURL: "http://localhost:" + gPort + "/data/test_corrupt.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Would stay incompatible with strict compat -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "1.0", - name: "Test 5", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Enabled bootstrapped -var addon6 = { - id: "addon6@tests.mozilla.org", - version: "1.0", - name: "Test 6", - bootstrap: "true", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Disabled bootstrapped -var addon7 = { - id: "addon7@tests.mozilla.org", - version: "1.0", - name: "Test 7", - bootstrap: "true", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// The default theme -var theme1 = { - id: "theme1@tests.mozilla.org", - version: "1.0", - name: "Theme 1", - internalName: "classic/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// The selected theme -var theme2 = { - id: "theme2@tests.mozilla.org", - version: "1.0", - name: "Theme 2", - internalName: "test/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - writeInstallRDFForExtension(addon6, profileDir); - writeInstallRDFForExtension(addon7, profileDir); - writeInstallRDFForExtension(theme1, profileDir); - writeInstallRDFForExtension(theme2, profileDir); - - // Startup the profile and setup the initial state - startupManager(); - - AddonManager.getAddonsByIDs(["addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([a2, a3, a4, - a7, t2]) { - // Set up the initial state - a2.userDisabled = true; - a4.userDisabled = true; - a7.userDisabled = true; - t2.userDisabled = false; - a3.findUpdates({ - onUpdateFinished: function() { - a4.findUpdates({ - onUpdateFinished: function() { - do_execute_soon(run_test_1); - } - }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - } - }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - }); -} - -function end_test() { - testserver.stop(do_test_finished); -} - -function run_test_1() { - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], - callback_soon(function([a1, a2, a3, a4, a5, a6, a7, t1, t2]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_false(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a5, null); - do_check_true(a5.isActive); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - - // Shutdown and replace the database with a corrupt file (a directory - // serves this purpose). On startup the add-ons manager won't rebuild - // because there is a file there still. - shutdownManager(); - gExtensionsJSON.remove(true); - gExtensionsJSON.create(AM_Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY); - startupManager(false); - - // Accessing the add-ons should open and recover the database - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], - callback_soon(function([a1_2, a2_2, a3_2, a4_2, a5_2, a6_2, a7_2, t1_2, t2_2]) { - // Should be correctly recovered - do_check_neq(a1_2, null); - do_check_true(a1_2.isActive); - do_check_false(a1_2.userDisabled); - do_check_false(a1_2.appDisabled); - do_check_eq(a1_2.pendingOperations, AddonManager.PENDING_NONE); - - // Should be correctly recovered - do_check_neq(a2_2, null); - do_check_false(a2_2.isActive); - do_check_true(a2_2.userDisabled); - do_check_false(a2_2.appDisabled); - do_check_eq(a2_2.pendingOperations, AddonManager.PENDING_NONE); - - // The compatibility update won't be recovered but it should still be - // active for this session - do_check_neq(a3_2, null); - do_check_true(a3_2.isActive); - do_check_false(a3_2.userDisabled); - do_check_false(a3_2.appDisabled); - do_check_eq(a3_2.pendingOperations, AddonManager.PENDING_NONE); - - // The compatibility update won't be recovered and with strict - // compatibility it would not have been able to tell that it was - // previously userDisabled. However, without strict compat, it wasn't - // appDisabled, so it knows it must have been userDisabled. - do_check_neq(a4_2, null); - do_check_false(a4_2.isActive); - do_check_true(a4_2.userDisabled); - do_check_false(a4_2.appDisabled); - do_check_eq(a4_2.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a5_2, null); - do_check_true(a5_2.isActive); - do_check_false(a5_2.userDisabled); - do_check_false(a5_2.appDisabled); - do_check_eq(a5_2.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a6_2, null); - do_check_true(a6_2.isActive); - do_check_false(a6_2.userDisabled); - do_check_false(a6_2.appDisabled); - do_check_eq(a6_2.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7_2, null); - do_check_false(a7_2.isActive); - do_check_true(a7_2.userDisabled); - do_check_false(a7_2.appDisabled); - do_check_eq(a7_2.pendingOperations, AddonManager.PENDING_NONE); - - // Should be correctly recovered - do_check_neq(t1_2, null); - do_check_false(t1_2.isActive); - do_check_true(t1_2.userDisabled); - do_check_false(t1_2.appDisabled); - do_check_eq(t1_2.pendingOperations, AddonManager.PENDING_NONE); - - // Should be correctly recovered - do_check_neq(t2_2, null); - do_check_true(t2_2.isActive); - do_check_false(t2_2.userDisabled); - do_check_false(t2_2.appDisabled); - do_check_eq(t2_2.pendingOperations, AddonManager.PENDING_NONE); - - Assert.throws(shutdownManager); - startupManager(false); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], - callback_soon(function([a1_3, a2_3, a3_3, a4_3, a5_3, a6_3, a7_3, t1_3, t2_3]) { - do_check_neq(a1_3, null); - do_check_true(a1_3.isActive); - do_check_false(a1_3.userDisabled); - do_check_false(a1_3.appDisabled); - do_check_eq(a1_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a2_3, null); - do_check_false(a2_3.isActive); - do_check_true(a2_3.userDisabled); - do_check_false(a2_3.appDisabled); - do_check_eq(a2_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a3_3, null); - do_check_true(a3_3.isActive); - do_check_false(a3_3.userDisabled); - do_check_false(a3_3.appDisabled); - do_check_eq(a3_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a4_3, null); - do_check_false(a4_3.isActive); - do_check_true(a4_3.userDisabled); - do_check_false(a4_3.appDisabled); - do_check_eq(a4_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a5_3, null); - do_check_true(a5_3.isActive); - do_check_false(a5_3.userDisabled); - do_check_false(a5_3.appDisabled); - do_check_eq(a5_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a6_3, null); - do_check_true(a6_3.isActive); - do_check_false(a6_3.userDisabled); - do_check_false(a6_3.appDisabled); - do_check_eq(a6_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7_3, null); - do_check_false(a7_3.isActive); - do_check_true(a7_3.userDisabled); - do_check_false(a7_3.appDisabled); - do_check_eq(a7_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1_3, null); - do_check_false(t1_3.isActive); - do_check_true(t1_3.userDisabled); - do_check_false(t1_3.appDisabled); - do_check_eq(t1_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t2_3, null); - do_check_true(t2_3.isActive); - do_check_false(t2_3.userDisabled); - do_check_false(t2_3.appDisabled); - do_check_eq(t2_3.pendingOperations, AddonManager.PENDING_NONE); - - Assert.throws(shutdownManager); - - end_test(); - })); - })); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_corrupt_strictcompat.js b/toolkit/mozapps/webextensions/test/xpcshell/test_corrupt_strictcompat.js deleted file mode 100644 index 622973472..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_corrupt_strictcompat.js +++ /dev/null @@ -1,405 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that we rebuild something sensible from a corrupt database - - -Components.utils.import("resource://testing-common/httpd.js"); -// Create and configure the HTTP server. -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; - -// register files with server -testserver.registerDirectory("/addons/", do_get_file("addons")); -mapFile("/data/test_corrupt.rdf", testserver); - - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true); - -// Will be enabled -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Will be disabled -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "1.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Will get a compatibility update and be enabled -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "1.0", - name: "Test 3", - updateURL: "http://localhost:" + gPort + "/data/test_corrupt.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Will get a compatibility update and be disabled -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "1.0", - name: "Test 4", - updateURL: "http://localhost:" + gPort + "/data/test_corrupt.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Stays incompatible -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "1.0", - name: "Test 5", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Enabled bootstrapped -var addon6 = { - id: "addon6@tests.mozilla.org", - version: "1.0", - name: "Test 6", - bootstrap: "true", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Disabled bootstrapped -var addon7 = { - id: "addon7@tests.mozilla.org", - version: "1.0", - name: "Test 7", - bootstrap: "true", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// The default theme -var theme1 = { - id: "theme1@tests.mozilla.org", - version: "1.0", - name: "Theme 1", - internalName: "classic/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// The selected theme -var theme2 = { - id: "theme2@tests.mozilla.org", - version: "1.0", - name: "Theme 2", - internalName: "test/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - writeInstallRDFForExtension(addon6, profileDir); - writeInstallRDFForExtension(addon7, profileDir); - writeInstallRDFForExtension(theme1, profileDir); - writeInstallRDFForExtension(theme2, profileDir); - - // Startup the profile and setup the initial state - startupManager(); - - AddonManager.getAddonsByIDs(["addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([a2, a3, a4, - a7, t2]) { - // Set up the initial state - a2.userDisabled = true; - a4.userDisabled = true; - a7.userDisabled = true; - t2.userDisabled = false; - a3.findUpdates({ - onUpdateFinished: function() { - a4.findUpdates({ - onUpdateFinished: function() { - do_execute_soon(run_test_1); - } - }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - } - }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - }); -} - -function end_test() { - testserver.stop(do_test_finished); -} - -function run_test_1() { - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], - callback_soon(function([a1, a2, a3, a4, a5, a6, a7, t1, t2]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_false(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a5, null); - do_check_false(a5.isActive); - do_check_false(a5.userDisabled); - do_check_true(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - - // Shutdown and replace the database with a corrupt file (a directory - // serves this purpose). On startup the add-ons manager won't rebuild - // because there is a file there still. - shutdownManager(); - gExtensionsJSON.remove(true); - gExtensionsJSON.create(AM_Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY); - startupManager(false); - - // Accessing the add-ons should open and recover the database - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], - callback_soon(function([a1_2, a2_2, a3_2, a4_2, a5_2, a6_2, a7_2, t1_2, t2_2]) { - // Should be correctly recovered - do_check_neq(a1_2, null); - do_check_true(a1_2.isActive); - do_check_false(a1_2.userDisabled); - do_check_false(a1_2.appDisabled); - do_check_eq(a1_2.pendingOperations, AddonManager.PENDING_NONE); - - // Should be correctly recovered - do_check_neq(a2_2, null); - do_check_false(a2_2.isActive); - do_check_true(a2_2.userDisabled); - do_check_false(a2_2.appDisabled); - do_check_eq(a2_2.pendingOperations, AddonManager.PENDING_NONE); - - // The compatibility update won't be recovered but it should still be - // active for this session - do_check_neq(a3_2, null); - do_check_true(a3_2.isActive); - do_check_false(a3_2.userDisabled); - do_check_true(a3_2.appDisabled); - do_check_eq(a3_2.pendingOperations, AddonManager.PENDING_DISABLE); - - // The compatibility update won't be recovered and it will not have been - // able to tell that it was previously userDisabled - do_check_neq(a4_2, null); - do_check_false(a4_2.isActive); - do_check_false(a4_2.userDisabled); - do_check_true(a4_2.appDisabled); - do_check_eq(a4_2.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a5_2, null); - do_check_false(a5_2.isActive); - do_check_false(a5_2.userDisabled); - do_check_true(a5_2.appDisabled); - do_check_eq(a5_2.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a6_2, null); - do_check_true(a6_2.isActive); - do_check_false(a6_2.userDisabled); - do_check_false(a6_2.appDisabled); - do_check_eq(a6_2.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7_2, null); - do_check_false(a7_2.isActive); - do_check_true(a7_2.userDisabled); - do_check_false(a7_2.appDisabled); - do_check_eq(a7_2.pendingOperations, AddonManager.PENDING_NONE); - - // Should be correctly recovered - do_check_neq(t1_2, null); - do_check_false(t1_2.isActive); - do_check_true(t1_2.userDisabled); - do_check_false(t1_2.appDisabled); - do_check_eq(t1_2.pendingOperations, AddonManager.PENDING_NONE); - - // Should be correctly recovered - do_check_neq(t2_2, null); - do_check_true(t2_2.isActive); - do_check_false(t2_2.userDisabled); - do_check_false(t2_2.appDisabled); - do_check_eq(t2_2.pendingOperations, AddonManager.PENDING_NONE); - - Assert.throws(shutdownManager); - startupManager(false); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], - callback_soon(function([a1_3, a2_3, a3_3, a4_3, a5_3, a6_3, a7_3, t1_3, t2_3]) { - do_check_neq(a1_3, null); - do_check_true(a1_3.isActive); - do_check_false(a1_3.userDisabled); - do_check_false(a1_3.appDisabled); - do_check_eq(a1_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a2_3, null); - do_check_false(a2_3.isActive); - do_check_true(a2_3.userDisabled); - do_check_false(a2_3.appDisabled); - do_check_eq(a2_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a3_3, null); - do_check_false(a3_3.isActive); - do_check_false(a3_3.userDisabled); - do_check_true(a3_3.appDisabled); - do_check_eq(a3_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a4_3, null); - do_check_false(a4_3.isActive); - do_check_false(a4_3.userDisabled); - do_check_true(a4_3.appDisabled); - do_check_eq(a4_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a5_3, null); - do_check_false(a5_3.isActive); - do_check_false(a5_3.userDisabled); - do_check_true(a5_3.appDisabled); - do_check_eq(a5_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a6_3, null); - do_check_true(a6_3.isActive); - do_check_false(a6_3.userDisabled); - do_check_false(a6_3.appDisabled); - do_check_eq(a6_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7_3, null); - do_check_false(a7_3.isActive); - do_check_true(a7_3.userDisabled); - do_check_false(a7_3.appDisabled); - do_check_eq(a7_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1_3, null); - do_check_false(t1_3.isActive); - do_check_true(t1_3.userDisabled); - do_check_false(t1_3.appDisabled); - do_check_eq(t1_3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t2_3, null); - do_check_true(t2_3.isActive); - do_check_false(t2_3.userDisabled); - do_check_false(t2_3.appDisabled); - do_check_eq(t2_3.pendingOperations, AddonManager.PENDING_NONE); - - Assert.throws(shutdownManager); - - end_test(); - })); - })); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_corruptfile.js b/toolkit/mozapps/webextensions/test/xpcshell/test_corruptfile.js deleted file mode 100644 index 92b375850..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_corruptfile.js +++ /dev/null @@ -1,83 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that attempting to install a corrupt XPI file doesn't break the universe - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - startupManager(); - - if (TEST_UNPACKED) - run_test_unpacked(); - else - run_test_packed(); -} - -// When installing packed we won't detect corruption in the XPI until we attempt -// to load bootstrap.js so everything will look normal from the outside. -function run_test_packed() { - do_test_pending(); - - prepare_test({ - "corrupt@tests.mozilla.org": [ - ["onInstalling", false], - ["onInstalled", false] - ] - }, [ - "onNewInstall", - "onInstallStarted", - "onInstallEnded" - ]); - - installAllFiles([do_get_file("data/corruptfile.xpi")], function() { - ensure_test_completed(); - - AddonManager.getAddonByID("corrupt@tests.mozilla.org", function(addon) { - do_check_neq(addon, null); - - do_test_finished(); - }); - }); -} - -// When extracting the corruption will be detected and the add-on fails to -// install -function run_test_unpacked() { - do_test_pending(); - - prepare_test({ - "corrupt@tests.mozilla.org": [ - ["onInstalling", false], - "onOperationCancelled" - ] - }, [ - "onNewInstall", - "onInstallStarted", - "onInstallFailed" - ]); - - installAllFiles([do_get_file("data/corruptfile.xpi")], function() { - ensure_test_completed(); - - // Check the add-on directory isn't left over - var addonDir = profileDir.clone(); - addonDir.append("corrupt@tests.mozilla.org"); - pathShouldntExist(addonDir); - - // Check the staging directory isn't left over - var stageDir = profileDir.clone(); - stageDir.append("staged"); - pathShouldntExist(stageDir); - - AddonManager.getAddonByID("corrupt@tests.mozilla.org", function(addon) { - do_check_eq(addon, null); - - do_test_finished(); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_dataDirectory.js b/toolkit/mozapps/webextensions/test/xpcshell/test_dataDirectory.js deleted file mode 100644 index bf75818e9..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_dataDirectory.js +++ /dev/null @@ -1,50 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -// Disables security checking our updates which haven't been signed -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -var ADDON = { - id: "datadirectory1@tests.mozilla.org", - addon: "test_data_directory" -}; - -function run_test() { - var expectedDir = gProfD.clone(); - expectedDir.append("extension-data"); - expectedDir.append(ADDON.id); - - do_test_pending(); - do_check_false(expectedDir.exists()); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "1.9"); - startupManager(); - - installAllFiles([do_get_addon(ADDON.addon)], function() { - restartManager(); - - AddonManager.getAddonByID(ADDON.id, function(item) { - item.getDataDirectory(promise_callback); - }); - }); -} - -function promise_callback() { - do_check_eq(arguments.length, 2); - var expectedDir = gProfD.clone(); - expectedDir.append("extension-data"); - expectedDir.append(ADDON.id); - - do_check_eq(arguments[0], expectedDir.path); - do_check_true(expectedDir.exists()); - do_check_true(expectedDir.isDirectory()); - - do_check_eq(arguments[1], null); - - // Cleanup. - expectedDir.parent.remove(true); - - do_test_finished(); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_default_providers_pref.js b/toolkit/mozapps/webextensions/test/xpcshell/test_default_providers_pref.js deleted file mode 100644 index 1b61e033a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_default_providers_pref.js +++ /dev/null @@ -1,13 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -// Tests the extensions.defaultProviders.enabled pref which turns -// off the default XPIProvider and LightweightThemeManager. - -function run_test() { - Services.prefs.setBoolPref("extensions.defaultProviders.enabled", false); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - startupManager(); - do_check_false(AddonManager.isInstallEnabled("application/x-xpinstall")); - Services.prefs.clearUserPref("extensions.defaultProviders.enabled"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_delay_update.js b/toolkit/mozapps/webextensions/test/xpcshell/test_delay_update.js deleted file mode 100644 index 3d7eef051..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_delay_update.js +++ /dev/null @@ -1,260 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that delaying an update works - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -Components.utils.import("resource://testing-common/httpd.js"); -const profileDir = gProfD.clone(); -profileDir.append("extensions"); -const tempdir = gTmpD.clone(); - -const IGNORE_ID = "test_delay_update_ignore@tests.mozilla.org"; -const COMPLETE_ID = "test_delay_update_complete@tests.mozilla.org"; -const DEFER_ID = "test_delay_update_defer@tests.mozilla.org"; - -const TEST_IGNORE_PREF = "delaytest.ignore"; - -// Note that we would normally use BootstrapMonitor but it currently requires -// the objects in `data` to be serializable, and we need a real reference to the -// `instanceID` symbol to test. - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42"); - -// Create and configure the HTTP server. -let testserver = createHttpServer(); -gPort = testserver.identity.primaryPort; -mapFile("/data/test_delay_updates_complete.rdf", testserver); -mapFile("/data/test_delay_updates_ignore.rdf", testserver); -mapFile("/data/test_delay_updates_defer.rdf", testserver); -testserver.registerDirectory("/addons/", do_get_file("addons")); - -function* createIgnoreAddon() { - writeInstallRDFToDir({ - id: IGNORE_ID, - version: "1.0", - bootstrap: true, - unpack: true, - updateURL: `http://localhost:${gPort}/data/test_delay_updates_ignore.rdf`, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Delay Update Ignore", - }, profileDir, IGNORE_ID, "bootstrap.js"); - - let unpacked_addon = profileDir.clone(); - unpacked_addon.append(IGNORE_ID); - do_get_file("data/test_delay_update_ignore/bootstrap.js") - .copyTo(unpacked_addon, "bootstrap.js"); -} - -function* createCompleteAddon() { - writeInstallRDFToDir({ - id: COMPLETE_ID, - version: "1.0", - bootstrap: true, - unpack: true, - updateURL: `http://localhost:${gPort}/data/test_delay_updates_complete.rdf`, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Delay Update Complete", - }, profileDir, COMPLETE_ID, "bootstrap.js"); - - let unpacked_addon = profileDir.clone(); - unpacked_addon.append(COMPLETE_ID); - do_get_file("data/test_delay_update_complete/bootstrap.js") - .copyTo(unpacked_addon, "bootstrap.js"); -} - -function* createDeferAddon() { - writeInstallRDFToDir({ - id: DEFER_ID, - version: "1.0", - bootstrap: true, - unpack: true, - updateURL: `http://localhost:${gPort}/data/test_delay_updates_defer.rdf`, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Delay Update Defer", - }, profileDir, DEFER_ID, "bootstrap.js"); - - let unpacked_addon = profileDir.clone(); - unpacked_addon.append(DEFER_ID); - do_get_file("data/test_delay_update_defer/bootstrap.js") - .copyTo(unpacked_addon, "bootstrap.js"); -} - -// add-on registers upgrade listener, and ignores update. -add_task(function*() { - - yield createIgnoreAddon(); - - startupManager(); - - let addon = yield promiseAddonByID(IGNORE_ID); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Delay Update Ignore"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - - let update = yield promiseFindAddonUpdates(addon); - let install = update.updateAvailable; - - yield promiseCompleteAllInstalls([install]); - - do_check_eq(install.state, AddonManager.STATE_POSTPONED); - - // addon upgrade has been delayed - let addon_postponed = yield promiseAddonByID(IGNORE_ID); - do_check_neq(addon_postponed, null); - do_check_eq(addon_postponed.version, "1.0"); - do_check_eq(addon_postponed.name, "Test Delay Update Ignore"); - do_check_true(addon_postponed.isCompatible); - do_check_false(addon_postponed.appDisabled); - do_check_true(addon_postponed.isActive); - do_check_eq(addon_postponed.type, "extension"); - do_check_true(Services.prefs.getBoolPref(TEST_IGNORE_PREF)); - - // restarting allows upgrade to proceed - yield promiseRestartManager(); - - let addon_upgraded = yield promiseAddonByID(IGNORE_ID); - do_check_neq(addon_upgraded, null); - do_check_eq(addon_upgraded.version, "2.0"); - do_check_eq(addon_upgraded.name, "Test Delay Update Ignore"); - do_check_true(addon_upgraded.isCompatible); - do_check_false(addon_upgraded.appDisabled); - do_check_true(addon_upgraded.isActive); - do_check_eq(addon_upgraded.type, "extension"); - - yield shutdownManager(); -}); - -// add-on registers upgrade listener, and allows update. -add_task(function*() { - - yield createCompleteAddon(); - - startupManager(); - - let addon = yield promiseAddonByID(COMPLETE_ID); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Delay Update Complete"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - - let update = yield promiseFindAddonUpdates(addon); - let install = update.updateAvailable; - - yield promiseCompleteAllInstalls([install]); - - // upgrade is initially postponed - let addon_postponed = yield promiseAddonByID(COMPLETE_ID); - do_check_neq(addon_postponed, null); - do_check_eq(addon_postponed.version, "1.0"); - do_check_eq(addon_postponed.name, "Test Delay Update Complete"); - do_check_true(addon_postponed.isCompatible); - do_check_false(addon_postponed.appDisabled); - do_check_true(addon_postponed.isActive); - do_check_eq(addon_postponed.type, "extension"); - - // addon upgrade has been allowed - let [addon_allowed] = yield promiseAddonEvent("onInstalled"); - do_check_neq(addon_allowed, null); - do_check_eq(addon_allowed.version, "2.0"); - do_check_eq(addon_allowed.name, "Test Delay Update Complete"); - do_check_true(addon_allowed.isCompatible); - do_check_false(addon_allowed.appDisabled); - do_check_true(addon_allowed.isActive); - do_check_eq(addon_allowed.type, "extension"); - - // restarting changes nothing - yield promiseRestartManager(); - - let addon_upgraded = yield promiseAddonByID(COMPLETE_ID); - do_check_neq(addon_upgraded, null); - do_check_eq(addon_upgraded.version, "2.0"); - do_check_eq(addon_upgraded.name, "Test Delay Update Complete"); - do_check_true(addon_upgraded.isCompatible); - do_check_false(addon_upgraded.appDisabled); - do_check_true(addon_upgraded.isActive); - do_check_eq(addon_upgraded.type, "extension"); - - yield shutdownManager(); -}); - -// add-on registers upgrade listener, initially defers update then allows upgrade -add_task(function*() { - - yield createDeferAddon(); - - startupManager(); - - let addon = yield promiseAddonByID(DEFER_ID); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Delay Update Defer"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - - let update = yield promiseFindAddonUpdates(addon); - let install = update.updateAvailable; - - yield promiseCompleteAllInstalls([install]); - - // upgrade is initially postponed - let addon_postponed = yield promiseAddonByID(DEFER_ID); - do_check_neq(addon_postponed, null); - do_check_eq(addon_postponed.version, "1.0"); - do_check_eq(addon_postponed.name, "Test Delay Update Defer"); - do_check_true(addon_postponed.isCompatible); - do_check_false(addon_postponed.appDisabled); - do_check_true(addon_postponed.isActive); - do_check_eq(addon_postponed.type, "extension"); - - // add-on will not allow upgrade until fake event fires - AddonManagerPrivate.callAddonListeners("onFakeEvent"); - - // addon upgrade has been allowed - let [addon_allowed] = yield promiseAddonEvent("onInstalled"); - do_check_neq(addon_allowed, null); - do_check_eq(addon_allowed.version, "2.0"); - do_check_eq(addon_allowed.name, "Test Delay Update Defer"); - do_check_true(addon_allowed.isCompatible); - do_check_false(addon_allowed.appDisabled); - do_check_true(addon_allowed.isActive); - do_check_eq(addon_allowed.type, "extension"); - - // restarting changes nothing - yield promiseRestartManager(); - - let addon_upgraded = yield promiseAddonByID(DEFER_ID); - do_check_neq(addon_upgraded, null); - do_check_eq(addon_upgraded.version, "2.0"); - do_check_eq(addon_upgraded.name, "Test Delay Update Defer"); - do_check_true(addon_upgraded.isCompatible); - do_check_false(addon_upgraded.appDisabled); - do_check_true(addon_upgraded.isActive); - do_check_eq(addon_upgraded.type, "extension"); - - yield shutdownManager(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_delay_update_webextension.js b/toolkit/mozapps/webextensions/test/xpcshell/test_delay_update_webextension.js deleted file mode 100644 index cdfac8f8c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_delay_update_webextension.js +++ /dev/null @@ -1,344 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that delaying an update works for WebExtensions. - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); - -/* globals browser*/ - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); -const tempdir = gTmpD.clone(); -const stageDir = profileDir.clone(); -stageDir.append("staged"); - -const IGNORE_ID = "test_delay_update_ignore_webext@tests.mozilla.org"; -const COMPLETE_ID = "test_delay_update_complete_webext@tests.mozilla.org"; -const DEFER_ID = "test_delay_update_defer_webext@tests.mozilla.org"; -const NOUPDATE_ID = "test_no_update_webext@tests.mozilla.org"; - -// Create and configure the HTTP server. -let testserver = createHttpServer(); -gPort = testserver.identity.primaryPort; -mapFile("/data/test_delay_updates_complete.json", testserver); -mapFile("/data/test_delay_updates_ignore.json", testserver); -mapFile("/data/test_delay_updates_defer.json", testserver); -mapFile("/data/test_no_update.json", testserver); -testserver.registerDirectory("/addons/", do_get_file("addons")); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42"); - -const { Management } = Components.utils.import("resource://gre/modules/Extension.jsm", {}); - -function promiseWebExtensionStartup() { - return new Promise(resolve => { - let listener = (event, extension) => { - Management.off("startup", listener); - resolve(extension); - }; - - Management.on("startup", listener); - }); -} - -// add-on registers upgrade listener, and ignores update. -add_task(function* delay_updates_ignore() { - startupManager(); - - let extension = ExtensionTestUtils.loadExtension({ - useAddonManager: "permanent", - manifest: { - "version": "1.0", - "applications": { - "gecko": { - "id": IGNORE_ID, - "update_url": `http://localhost:${gPort}/data/test_delay_updates_ignore.json`, - }, - }, - }, - background() { - browser.runtime.onUpdateAvailable.addListener(details => { - if (details) { - if (details.version) { - // This should be the version of the pending update. - browser.test.assertEq("2.0", details.version, "correct version"); - browser.test.notifyPass("delay"); - } - } else { - browser.test.fail("no details object passed"); - } - }); - browser.test.sendMessage("ready"); - }, - }, IGNORE_ID); - - yield Promise.all([extension.startup(), extension.awaitMessage("ready")]); - - let addon = yield promiseAddonByID(IGNORE_ID); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Generated extension"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - - let update = yield promiseFindAddonUpdates(addon); - let install = update.updateAvailable; - - yield promiseCompleteAllInstalls([install]); - - do_check_eq(install.state, AddonManager.STATE_POSTPONED); - - // addon upgrade has been delayed - let addon_postponed = yield promiseAddonByID(IGNORE_ID); - do_check_neq(addon_postponed, null); - do_check_eq(addon_postponed.version, "1.0"); - do_check_eq(addon_postponed.name, "Generated extension"); - do_check_true(addon_postponed.isCompatible); - do_check_false(addon_postponed.appDisabled); - do_check_true(addon_postponed.isActive); - do_check_eq(addon_postponed.type, "extension"); - - yield extension.awaitFinish("delay"); - - // restarting allows upgrade to proceed - yield extension.markUnloaded(); - yield promiseRestartManager(); - - let addon_upgraded = yield promiseAddonByID(IGNORE_ID); - yield promiseWebExtensionStartup(); - - do_check_neq(addon_upgraded, null); - do_check_eq(addon_upgraded.version, "2.0"); - do_check_eq(addon_upgraded.name, "Delay Upgrade"); - do_check_true(addon_upgraded.isCompatible); - do_check_false(addon_upgraded.appDisabled); - do_check_true(addon_upgraded.isActive); - do_check_eq(addon_upgraded.type, "extension"); - - yield addon_upgraded.uninstall(); - yield promiseShutdownManager(); -}); - -// add-on registers upgrade listener, and allows update. -add_task(function* delay_updates_complete() { - startupManager(); - - let extension = ExtensionTestUtils.loadExtension({ - useAddonManager: "permanent", - manifest: { - "version": "1.0", - "applications": { - "gecko": { - "id": COMPLETE_ID, - "update_url": `http://localhost:${gPort}/data/test_delay_updates_complete.json`, - }, - }, - }, - background() { - browser.runtime.onUpdateAvailable.addListener(details => { - browser.test.notifyPass("reload"); - browser.runtime.reload(); - }); - browser.test.sendMessage("ready"); - }, - }, COMPLETE_ID); - - yield Promise.all([extension.startup(), extension.awaitMessage("ready")]); - - let addon = yield promiseAddonByID(COMPLETE_ID); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Generated extension"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - - let update = yield promiseFindAddonUpdates(addon); - let install = update.updateAvailable; - - let promiseInstalled = promiseAddonEvent("onInstalled"); - yield promiseCompleteAllInstalls([install]); - - yield extension.awaitFinish("reload"); - - // addon upgrade has been allowed - let [addon_allowed] = yield promiseInstalled; - yield promiseWebExtensionStartup(); - - do_check_neq(addon_allowed, null); - do_check_eq(addon_allowed.version, "2.0"); - do_check_eq(addon_allowed.name, "Delay Upgrade"); - do_check_true(addon_allowed.isCompatible); - do_check_false(addon_allowed.appDisabled); - do_check_true(addon_allowed.isActive); - do_check_eq(addon_allowed.type, "extension"); - - if (stageDir.exists()) { - do_throw("Staging directory should not exist for formerly-postponed extension"); - } - - yield extension.markUnloaded(); - yield addon_allowed.uninstall(); - yield promiseShutdownManager(); -}); - -// add-on registers upgrade listener, initially defers update then allows upgrade -add_task(function* delay_updates_defer() { - startupManager(); - - let extension = ExtensionTestUtils.loadExtension({ - useAddonManager: "permanent", - manifest: { - "version": "1.0", - "applications": { - "gecko": { - "id": DEFER_ID, - "update_url": `http://localhost:${gPort}/data/test_delay_updates_defer.json`, - }, - }, - }, - background() { - browser.runtime.onUpdateAvailable.addListener(details => { - // Upgrade will only proceed when "allow" message received. - browser.test.onMessage.addListener(msg => { - if (msg == "allow") { - browser.test.notifyPass("allowed"); - browser.runtime.reload(); - } else { - browser.test.fail(`wrong message: ${msg}`); - } - }); - browser.test.sendMessage("truly ready"); - }); - browser.test.sendMessage("ready"); - }, - }, DEFER_ID); - - yield Promise.all([extension.startup(), extension.awaitMessage("ready")]); - - let addon = yield promiseAddonByID(DEFER_ID); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Generated extension"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - - let update = yield promiseFindAddonUpdates(addon); - let install = update.updateAvailable; - - let promiseInstalled = promiseAddonEvent("onInstalled"); - yield promiseCompleteAllInstalls([install]); - - do_check_eq(install.state, AddonManager.STATE_POSTPONED); - - // upgrade is initially postponed - let addon_postponed = yield promiseAddonByID(DEFER_ID); - do_check_neq(addon_postponed, null); - do_check_eq(addon_postponed.version, "1.0"); - do_check_eq(addon_postponed.name, "Generated extension"); - do_check_true(addon_postponed.isCompatible); - do_check_false(addon_postponed.appDisabled); - do_check_true(addon_postponed.isActive); - do_check_eq(addon_postponed.type, "extension"); - - // add-on will not allow upgrade until message is received - yield extension.awaitMessage("truly ready"); - extension.sendMessage("allow"); - yield extension.awaitFinish("allowed"); - - // addon upgrade has been allowed - let [addon_allowed] = yield promiseInstalled; - yield promiseWebExtensionStartup(); - - do_check_neq(addon_allowed, null); - do_check_eq(addon_allowed.version, "2.0"); - do_check_eq(addon_allowed.name, "Delay Upgrade"); - do_check_true(addon_allowed.isCompatible); - do_check_false(addon_allowed.appDisabled); - do_check_true(addon_allowed.isActive); - do_check_eq(addon_allowed.type, "extension"); - - yield extension.markUnloaded(); - yield promiseRestartManager(); - - // restart changes nothing - addon_allowed = yield promiseAddonByID(DEFER_ID); - yield promiseWebExtensionStartup(); - - do_check_neq(addon_allowed, null); - do_check_eq(addon_allowed.version, "2.0"); - do_check_eq(addon_allowed.name, "Delay Upgrade"); - do_check_true(addon_allowed.isCompatible); - do_check_false(addon_allowed.appDisabled); - do_check_true(addon_allowed.isActive); - do_check_eq(addon_allowed.type, "extension"); - - yield addon_allowed.uninstall(); - yield promiseShutdownManager(); -}); - -// browser.runtime.reload() without a pending upgrade should just reload. -add_task(function* runtime_reload() { - startupManager(); - - let extension = ExtensionTestUtils.loadExtension({ - useAddonManager: "permanent", - manifest: { - "version": "1.0", - "applications": { - "gecko": { - "id": NOUPDATE_ID, - "update_url": `http://localhost:${gPort}/data/test_no_update.json`, - }, - }, - }, - background() { - browser.test.onMessage.addListener(msg => { - if (msg == "reload") { - browser.runtime.reload(); - } else { - browser.test.fail(`wrong message: ${msg}`); - } - }); - browser.test.sendMessage("ready"); - }, - }, NOUPDATE_ID); - - yield Promise.all([extension.startup(), extension.awaitMessage("ready")]); - - let addon = yield promiseAddonByID(NOUPDATE_ID); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Generated extension"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - - yield promiseFindAddonUpdates(addon); - - extension.sendMessage("reload"); - // Wait for extension to restart, to make sure reload works. - yield promiseWebExtensionStartup(); - - addon = yield promiseAddonByID(NOUPDATE_ID); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Generated extension"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - - yield extension.markUnloaded(); - yield addon.uninstall(); - yield promiseShutdownManager(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_dependencies.js b/toolkit/mozapps/webextensions/test/xpcshell/test_dependencies.js deleted file mode 100644 index 3afc03f84..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_dependencies.js +++ /dev/null @@ -1,144 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); -startupManager(); - -const BOOTSTRAP = String.raw` - Components.utils.import("resource://gre/modules/Services.jsm"); - - function startup(data) { - Services.obs.notifyObservers(null, "test-addon-bootstrap-startup", data.id); - } - function shutdown(data) { - Services.obs.notifyObservers(null, "test-addon-bootstrap-shutdown", data.id); - } - function install() {} - function uninstall() {} -`; - -const ADDONS = [ - { - id: "addon1@dependency-test.mozilla.org", - dependencies: ["addon2@dependency-test.mozilla.org"], - }, - { - id: "addon2@dependency-test.mozilla.org", - dependencies: ["addon3@dependency-test.mozilla.org"], - }, - { - id: "addon3@dependency-test.mozilla.org", - }, - { - id: "addon4@dependency-test.mozilla.org", - }, - { - id: "addon5@dependency-test.mozilla.org", - dependencies: ["addon2@dependency-test.mozilla.org"], - }, -]; - -let addonFiles = []; - -let events = []; -add_task(function* setup() { - let startupObserver = (subject, topic, data) => { - events.push(["startup", data]); - }; - let shutdownObserver = (subject, topic, data) => { - events.push(["shutdown", data]); - }; - - Services.obs.addObserver(startupObserver, "test-addon-bootstrap-startup", false); - Services.obs.addObserver(shutdownObserver, "test-addon-bootstrap-shutdown", false); - do_register_cleanup(() => { - Services.obs.removeObserver(startupObserver, "test-addon-bootstrap-startup"); - Services.obs.removeObserver(shutdownObserver, "test-addon-bootstrap-shutdown"); - }); - - for (let addon of ADDONS) { - Object.assign(addon, { - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1", - }], - version: "1.0", - name: addon.id, - bootstrap: true, - }); - - addonFiles.push(createTempXPIFile(addon, {"bootstrap.js": BOOTSTRAP})); - } -}); - -add_task(function*() { - deepEqual(events, [], "Should have no events"); - - yield promiseInstallAllFiles([addonFiles[3]]); - - deepEqual(events, [ - ["startup", ADDONS[3].id], - ]); - - events.length = 0; - - yield promiseInstallAllFiles([addonFiles[0]]); - deepEqual(events, [], "Should have no events"); - - yield promiseInstallAllFiles([addonFiles[1]]); - deepEqual(events, [], "Should have no events"); - - yield promiseInstallAllFiles([addonFiles[2]]); - - deepEqual(events, [ - ["startup", ADDONS[2].id], - ["startup", ADDONS[1].id], - ["startup", ADDONS[0].id], - ]); - - events.length = 0; - - yield promiseInstallAllFiles([addonFiles[2]]); - - deepEqual(events, [ - ["shutdown", ADDONS[0].id], - ["shutdown", ADDONS[1].id], - ["shutdown", ADDONS[2].id], - - ["startup", ADDONS[2].id], - ["startup", ADDONS[1].id], - ["startup", ADDONS[0].id], - ]); - - events.length = 0; - - yield promiseInstallAllFiles([addonFiles[4]]); - - deepEqual(events, [ - ["startup", ADDONS[4].id], - ]); - - events.length = 0; - - yield promiseRestartManager(); - - deepEqual(events, [ - ["shutdown", ADDONS[4].id], - ["shutdown", ADDONS[3].id], - ["shutdown", ADDONS[0].id], - ["shutdown", ADDONS[1].id], - ["shutdown", ADDONS[2].id], - - ["startup", ADDONS[2].id], - ["startup", ADDONS[1].id], - ["startup", ADDONS[0].id], - ["startup", ADDONS[3].id], - ["startup", ADDONS[4].id], - ]); -}); - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_dictionary.js b/toolkit/mozapps/webextensions/test/xpcshell/test_dictionary.js deleted file mode 100644 index f4b6a0535..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_dictionary.js +++ /dev/null @@ -1,811 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that bootstrappable add-ons can be used without restarts. -Components.utils.import("resource://gre/modules/Services.jsm"); - -// Enable loading extensions from the user scopes -Services.prefs.setIntPref("extensions.enabledScopes", - AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER); - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); -const userExtDir = gProfD.clone(); -userExtDir.append("extensions2"); -userExtDir.append(gAppInfo.ID); -registerDirectory("XREUSysExt", userExtDir.parent); - -Components.utils.import("resource://testing-common/httpd.js"); -// Create and configure the HTTP server. -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; - -// register files with server -testserver.registerDirectory("/addons/", do_get_file("addons")); -mapFile("/data/test_dictionary.rdf", testserver); - -/** - * This object is both a factory and an mozISpellCheckingEngine implementation (so, it - * is de-facto a service). It's also an interface requestor that gives out - * itself when asked for mozISpellCheckingEngine. - */ -var HunspellEngine = { - dictionaryDirs: [], - listener: null, - - QueryInterface: function hunspell_qi(iid) { - if (iid.equals(Components.interfaces.nsISupports) || - iid.equals(Components.interfaces.nsIFactory) || - iid.equals(Components.interfaces.mozISpellCheckingEngine)) - return this; - throw Components.results.NS_ERROR_NO_INTERFACE; - }, - createInstance: function hunspell_ci(outer, iid) { - if (outer) - throw Components.results.NS_ERROR_NO_AGGREGATION; - return this.QueryInterface(iid); - }, - lockFactory: function hunspell_lockf(lock) { - throw Components.results.NS_ERROR_NOT_IMPLEMENTED; - }, - - addDirectory: function hunspell_addDirectory(dir) { - this.dictionaryDirs.push(dir); - if (this.listener) - this.listener("addDirectory"); - }, - - removeDirectory: function hunspell_addDirectory(dir) { - this.dictionaryDirs.splice(this.dictionaryDirs.indexOf(dir), 1); - if (this.listener) - this.listener("removeDirectory"); - }, - - getInterface: function hunspell_gi(iid) { - if (iid.equals(Components.interfaces.mozISpellCheckingEngine)) - return this; - throw Components.results.NS_ERROR_NO_INTERFACE; - }, - - contractID: "@mozilla.org/spellchecker/engine;1", - classID: Components.ID("{6f3c63bc-a4fd-449b-9a58-a2d9bd972cce}"), - - activate: function hunspell_activate() { - this.origClassID = Components.manager.nsIComponentRegistrar - .contractIDToCID(this.contractID); - this.origFactory = Components.manager - .getClassObject(Components.classes[this.contractID], - Components.interfaces.nsIFactory); - - Components.manager.nsIComponentRegistrar - .unregisterFactory(this.origClassID, this.origFactory); - Components.manager.nsIComponentRegistrar.registerFactory(this.classID, - "Test hunspell", this.contractID, this); - }, - - deactivate: function hunspell_deactivate() { - Components.manager.nsIComponentRegistrar.unregisterFactory(this.classID, this); - Components.manager.nsIComponentRegistrar.registerFactory(this.origClassID, - "Hunspell", this.contractID, this.origFactory); - }, - - isDictionaryEnabled: function hunspell_isDictionaryEnabled(name) { - return this.dictionaryDirs.some(function(dir) { - var dic = dir.clone(); - dic.append(name); - return dic.exists(); - }); - } -}; - -function run_test() { - do_test_pending(); - - startupManager(); - - run_test_1(); -} - -// Tests that installing doesn't require a restart -function run_test_1() { - prepare_test({ }, [ - "onNewInstall" - ]); - - HunspellEngine.activate(); - - AddonManager.getInstallForFile(do_get_addon("test_dictionary"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.type, "dictionary"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test Dictionary"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_true(install.addon.hasResource("install.rdf")); - do_check_false(install.addon.hasResource("bootstrap.js")); - do_check_eq(install.addon.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_INSTALL, 0); - do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - - let addon = install.addon; - prepare_test({ - "ab-CD@dictionaries.addons.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], function() { - do_check_true(addon.hasResource("install.rdf")); - HunspellEngine.listener = function(aEvent) { - HunspellEngine.listener = null; - do_check_eq(aEvent, "addDirectory"); - do_execute_soon(check_test_1); - }; - }); - install.install(); - }); -} - -function check_test_1() { - AddonManager.getAllInstalls(function(installs) { - // There should be no active installs now since the install completed and - // doesn't require a restart. - do_check_eq(installs.length, 0); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - do_check_true(b1.hasResource("install.rdf")); - do_check_false(b1.hasResource("bootstrap.js")); - do_check_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - - let dir = do_get_addon_root_uri(profileDir, "ab-CD@dictionaries.addons.mozilla.org"); - - let chromeReg = AM_Cc["@mozilla.org/chrome/chrome-registry;1"]. - getService(AM_Ci.nsIChromeRegistry); - try { - chromeReg.convertChromeURL(NetUtil.newURI("chrome://dict/content/dict.xul")); - do_throw("Chrome manifest should not have been registered"); - } - catch (e) { - // Expected the chrome url to not be registered - } - - AddonManager.getAddonsWithOperationsByTypes(null, function(list) { - do_check_eq(list.length, 0); - - run_test_2(); - }); - }); - }); -} - -// Tests that disabling doesn't require a restart -function run_test_2() { - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { - prepare_test({ - "ab-CD@dictionaries.addons.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ] - }); - - do_check_eq(b1.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_DISABLE, 0); - b1.userDisabled = true; - ensure_test_completed(); - - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_true(b1.userDisabled); - do_check_false(b1.isActive); - do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(newb1) { - do_check_neq(newb1, null); - do_check_eq(newb1.version, "1.0"); - do_check_false(newb1.appDisabled); - do_check_true(newb1.userDisabled); - do_check_false(newb1.isActive); - - do_execute_soon(run_test_3); - }); - }); -} - -// Test that restarting doesn't accidentally re-enable -function run_test_3() { - shutdownManager(); - do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - startupManager(false); - do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_true(b1.userDisabled); - do_check_false(b1.isActive); - - run_test_4(); - }); -} - -// Tests that enabling doesn't require a restart -function run_test_4() { - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { - prepare_test({ - "ab-CD@dictionaries.addons.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - do_check_eq(b1.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_ENABLE, 0); - b1.userDisabled = false; - ensure_test_completed(); - - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - do_check_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(newb1) { - do_check_neq(newb1, null); - do_check_eq(newb1.version, "1.0"); - do_check_false(newb1.appDisabled); - do_check_false(newb1.userDisabled); - do_check_true(newb1.isActive); - - do_execute_soon(run_test_5); - }); - }); -} - -// Tests that a restart shuts down and restarts the add-on -function run_test_5() { - shutdownManager(); - do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - startupManager(false); - do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - do_check_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_false(isExtensionInAddonsList(profileDir, b1.id)); - - run_test_7(); - }); -} - -// Tests that uninstalling doesn't require a restart -function run_test_7() { - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { - prepare_test({ - "ab-CD@dictionaries.addons.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ] - }); - - do_check_eq(b1.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_UNINSTALL, 0); - b1.uninstall(); - - check_test_7(); - }); -} - -function check_test_7() { - ensure_test_completed(); - do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", - callback_soon(function(b1) { - do_check_eq(b1, null); - - restartManager(); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(newb1) { - do_check_eq(newb1, null); - - do_execute_soon(run_test_8); - }); - })); -} - -// Test that a bootstrapped extension dropped into the profile loads properly -// on startup and doesn't cause an EM restart -function run_test_8() { - shutdownManager(); - - let dir = profileDir.clone(); - dir.append("ab-CD@dictionaries.addons.mozilla.org"); - dir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0o755); - let zip = AM_Cc["@mozilla.org/libjar/zip-reader;1"]. - createInstance(AM_Ci.nsIZipReader); - zip.open(do_get_addon("test_dictionary")); - dir.append("install.rdf"); - zip.extract("install.rdf", dir); - dir = dir.parent; - dir.append("dictionaries"); - dir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0o755); - dir.append("ab-CD.dic"); - zip.extract("dictionaries/ab-CD.dic", dir); - zip.close(); - - startupManager(false); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - do_check_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - - do_execute_soon(run_test_9); - }); -} - -// Test that items detected as removed during startup get removed properly -function run_test_9() { - shutdownManager(); - - let dir = profileDir.clone(); - dir.append("ab-CD@dictionaries.addons.mozilla.org"); - dir.remove(true); - startupManager(false); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { - do_check_eq(b1, null); - do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - - do_execute_soon(run_test_12); - }); -} - - -// Tests that bootstrapped extensions are correctly loaded even if the app is -// upgraded at the same time -function run_test_12() { - shutdownManager(); - - let dir = profileDir.clone(); - dir.append("ab-CD@dictionaries.addons.mozilla.org"); - dir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0o755); - let zip = AM_Cc["@mozilla.org/libjar/zip-reader;1"]. - createInstance(AM_Ci.nsIZipReader); - zip.open(do_get_addon("test_dictionary")); - dir.append("install.rdf"); - zip.extract("install.rdf", dir); - dir = dir.parent; - dir.append("dictionaries"); - dir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0o755); - dir.append("ab-CD.dic"); - zip.extract("dictionaries/ab-CD.dic", dir); - zip.close(); - - startupManager(true); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - do_check_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - - b1.uninstall(); - do_execute_soon(run_test_16); - }); -} - - -// Tests that bootstrapped extensions don't get loaded when in safe mode -function run_test_16() { - restartManager(); - - installAllFiles([do_get_addon("test_dictionary")], function() { - // spin the event loop to let the addon finish starting - do_execute_soon(function check_installed_dictionary() { - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", - callback_soon(function(b1) { - // Should have installed and started - do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - - shutdownManager(); - - // Should have stopped - do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - - gAppInfo.inSafeMode = true; - startupManager(false); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", - callback_soon(function(b1_2) { - // Should still be stopped - do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - do_check_false(b1_2.isActive); - - shutdownManager(); - gAppInfo.inSafeMode = false; - startupManager(false); - - // Should have started - do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1_3) { - b1_3.uninstall(); - - do_execute_soon(run_test_17); - }); - })); - })); - }); - }); -} - -// Check that a bootstrapped extension in a non-profile location is loaded -function run_test_17() { - shutdownManager(); - - let dir = userExtDir.clone(); - dir.append("ab-CD@dictionaries.addons.mozilla.org"); - dir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0o755); - let zip = AM_Cc["@mozilla.org/libjar/zip-reader;1"]. - createInstance(AM_Ci.nsIZipReader); - zip.open(do_get_addon("test_dictionary")); - dir.append("install.rdf"); - zip.extract("install.rdf", dir); - dir = dir.parent; - dir.append("dictionaries"); - dir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0o755); - dir.append("ab-CD.dic"); - zip.extract("dictionaries/ab-CD.dic", dir); - zip.close(); - - startupManager(); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", - callback_soon(function(b1) { - // Should have installed and started - do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_true(b1.isActive); - - // From run_test_21 - dir = userExtDir.clone(); - dir.append("ab-CD@dictionaries.addons.mozilla.org"); - dir.remove(true); - - restartManager(); - - run_test_23(); - })); -} - -// Tests that installing from a URL doesn't require a restart -function run_test_23() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_dictionary.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - - prepare_test({ }, [ - "onDownloadStarted", - "onDownloadEnded" - ], function() { - do_check_eq(install.type, "dictionary"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test Dictionary"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_true(install.addon.hasResource("install.rdf")); - do_check_false(install.addon.hasResource("bootstrap.js")); - do_check_eq(install.addon.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_INSTALL, 0); - do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - - let addon = install.addon; - prepare_test({ - "ab-CD@dictionaries.addons.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], function() { - do_check_true(addon.hasResource("install.rdf")); - // spin to let the addon startup finish - do_execute_soon(check_test_23); - }); - }); - install.install(); - }, "application/x-xpinstall"); -} - -function check_test_23() { - AddonManager.getAllInstalls(function(installs) { - // There should be no active installs now since the install completed and - // doesn't require a restart. - do_check_eq(installs.length, 0); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - do_check_true(b1.hasResource("install.rdf")); - do_check_false(b1.hasResource("bootstrap.js")); - do_check_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - - let dir = do_get_addon_root_uri(profileDir, "ab-CD@dictionaries.addons.mozilla.org"); - - AddonManager.getAddonsWithOperationsByTypes(null, callback_soon(function(list) { - do_check_eq(list.length, 0); - - restartManager(); - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1_2) { - b1_2.uninstall(); - do_execute_soon(run_test_25); - }); - })); - }); - }); -} - -// Tests that updating from a bootstrappable add-on to a normal add-on calls -// the uninstall method -function run_test_25() { - restartManager(); - - HunspellEngine.listener = function(aEvent) { - HunspellEngine.listener = null; - do_check_eq(aEvent, "addDirectory"); - do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - - installAllFiles([do_get_addon("test_dictionary_2")], function test_25_installed2() { - // Needs a restart to complete this so the old version stays running - do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", - callback_soon(function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_true(b1.isActive); - do_check_true(hasFlag(b1.pendingOperations, AddonManager.PENDING_UPGRADE)); - - restartManager(); - - do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1_2) { - do_check_neq(b1_2, null); - do_check_eq(b1_2.version, "2.0"); - do_check_true(b1_2.isActive); - do_check_eq(b1_2.pendingOperations, AddonManager.PENDING_NONE); - - do_execute_soon(run_test_26); - }); - })); - }); - }; - - installAllFiles([do_get_addon("test_dictionary")], function test_25_installed() { }); -} - -// Tests that updating from a normal add-on to a bootstrappable add-on calls -// the install method -function run_test_26() { - installAllFiles([do_get_addon("test_dictionary")], function test_26_install() { - // Needs a restart to complete this - do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", - callback_soon(function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "2.0"); - do_check_true(b1.isActive); - do_check_true(hasFlag(b1.pendingOperations, AddonManager.PENDING_UPGRADE)); - - restartManager(); - - do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1_2) { - do_check_neq(b1_2, null); - do_check_eq(b1_2.version, "1.0"); - do_check_true(b1_2.isActive); - do_check_eq(b1_2.pendingOperations, AddonManager.PENDING_NONE); - - HunspellEngine.deactivate(); - b1_2.uninstall(); - do_execute_soon(run_test_27); - }); - })); - }); -} - -// Tests that an update check from a normal add-on to a bootstrappable add-on works -function run_test_27() { - restartManager(); - writeInstallRDFForExtension({ - id: "ab-CD@dictionaries.addons.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/test_dictionary.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Dictionary", - }, profileDir); - restartManager(); - - prepare_test({ - "ab-CD@dictionaries.addons.mozilla.org": [ - "onInstalling" - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], callback_soon(check_test_27)); - - AddonManagerPrivate.backgroundUpdateCheck(); -} - -function check_test_27(install) { - do_check_eq(install.existingAddon.pendingUpgrade.install, install); - - restartManager(); - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "2.0"); - do_check_eq(b1.type, "dictionary"); - b1.uninstall(); - do_execute_soon(run_test_28); - }); -} - -// Tests that an update check from a bootstrappable add-on to a normal add-on works -function run_test_28() { - restartManager(); - - writeInstallRDFForExtension({ - id: "ef@dictionaries.addons.mozilla.org", - version: "1.0", - type: "64", - updateURL: "http://localhost:" + gPort + "/data/test_dictionary.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Dictionary ef", - }, profileDir); - restartManager(); - - prepare_test({ - "ef@dictionaries.addons.mozilla.org": [ - "onInstalling" - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], callback_soon(check_test_28)); - - AddonManagerPrivate.backgroundUpdateCheck(); -} - -function check_test_28(install) { - do_check_eq(install.existingAddon.pendingUpgrade.install, install); - - restartManager(); - AddonManager.getAddonByID("ef@dictionaries.addons.mozilla.org", function(b2) { - do_check_neq(b2, null); - do_check_eq(b2.version, "2.0"); - do_check_eq(b2.type, "extension"); - b2.uninstall(); - do_execute_soon(run_test_29); - }); -} - -// Tests that an update check from a bootstrappable add-on to a bootstrappable add-on works -function run_test_29() { - restartManager(); - - writeInstallRDFForExtension({ - id: "gh@dictionaries.addons.mozilla.org", - version: "1.0", - type: "64", - updateURL: "http://localhost:" + gPort + "/data/test_dictionary.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Dictionary gh", - }, profileDir); - restartManager(); - - prepare_test({ - "gh@dictionaries.addons.mozilla.org": [ - ["onInstalling", false /* = no restart */], - ["onInstalled", false] - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], check_test_29); - - AddonManagerPrivate.backgroundUpdateCheck(); -} - -function check_test_29(install) { - AddonManager.getAddonByID("gh@dictionaries.addons.mozilla.org", function(b2) { - do_check_neq(b2, null); - do_check_eq(b2.version, "2.0"); - do_check_eq(b2.type, "dictionary"); - - prepare_test({ - "gh@dictionaries.addons.mozilla.org": [ - ["onUninstalling", false], - ["onUninstalled", false], - ] - }, [ - ], callback_soon(finish_test_29)); - - b2.uninstall(); - }); -} - -function finish_test_29() { - testserver.stop(do_test_finished); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_disable.js b/toolkit/mozapps/webextensions/test/xpcshell/test_disable.js deleted file mode 100644 index 867715863..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_disable.js +++ /dev/null @@ -1,194 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -Components.utils.import("resource://gre/modules/NetUtil.jsm"); - -// This verifies that add-ons can be disabled and enabled. - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - optionsURL: "chrome://foo/content/options.xul", - aboutURL: "chrome://foo/content/about.xul", - iconURL: "chrome://foo/content/icon.png", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -var gIconURL = null; - -// Sets up the profile by installing an add-on. -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - startupManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { - do_check_eq(a1, null); - do_check_not_in_crash_annotation(addon1.id, addon1.version); - - writeInstallRDFForExtension(addon1, profileDir, addon1.id, "icon.png"); - gIconURL = do_get_addon_root_uri(profileDir.clone(), addon1.id) + "icon.png"; - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(newa1) { - do_check_neq(newa1, null); - do_check_true(newa1.isActive); - do_check_false(newa1.userDisabled); - do_check_eq(newa1.aboutURL, "chrome://foo/content/about.xul"); - do_check_eq(newa1.optionsURL, "chrome://foo/content/options.xul"); - do_check_eq(newa1.iconURL, "chrome://foo/content/icon.png"); - do_check_true(isExtensionInAddonsList(profileDir, newa1.id)); - do_check_true(hasFlag(newa1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(newa1.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_eq(newa1.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_DISABLE | - AddonManager.OP_NEEDS_RESTART_UNINSTALL); - do_check_in_crash_annotation(addon1.id, addon1.version); - - run_test_1(); - }); - })); -} - -// Disabling an add-on should work -function run_test_1() { - prepare_test({ - "addon1@tests.mozilla.org": [ - "onDisabling" - ] - }); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_DISABLE, 0); - a1.userDisabled = true; - do_check_eq(a1.aboutURL, "chrome://foo/content/about.xul"); - do_check_eq(a1.optionsURL, "chrome://foo/content/options.xul"); - do_check_eq(a1.iconURL, "chrome://foo/content/icon.png"); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_eq(a1.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_DISABLE | - AddonManager.OP_NEEDS_RESTART_UNINSTALL); - do_check_in_crash_annotation(addon1.id, addon1.version); - - ensure_test_completed(); - - AddonManager.getAddonsWithOperationsByTypes(null, callback_soon(function(list) { - do_check_eq(list.length, 1); - do_check_eq(list[0].id, "addon1@tests.mozilla.org"); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(newa1) { - do_check_neq(newa1, null); - do_check_false(newa1.isActive); - do_check_true(newa1.userDisabled); - do_check_eq(newa1.aboutURL, null); - do_check_eq(newa1.optionsURL, null); - do_check_eq(newa1.iconURL, gIconURL); - do_check_false(isExtensionInAddonsList(profileDir, newa1.id)); - do_check_false(hasFlag(newa1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(newa1.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_eq(newa1.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_ENABLE); - do_check_not_in_crash_annotation(addon1.id, addon1.version); - - run_test_2(); - }); - })); - }); -} - -// Enabling an add-on should work. -function run_test_2() { - prepare_test({ - "addon1@tests.mozilla.org": [ - "onEnabling" - ] - }); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - a1.userDisabled = false; - do_check_eq(a1.aboutURL, null); - do_check_eq(a1.optionsURL, null); - do_check_eq(a1.iconURL, gIconURL); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_eq(a1.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_ENABLE); - - ensure_test_completed(); - - AddonManager.getAddonsWithOperationsByTypes(null, callback_soon(function(list) { - do_check_eq(list.length, 1); - do_check_eq(list[0].id, "addon1@tests.mozilla.org"); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(newa1) { - do_check_neq(newa1, null); - do_check_true(newa1.isActive); - do_check_false(newa1.userDisabled); - do_check_eq(newa1.aboutURL, "chrome://foo/content/about.xul"); - do_check_eq(newa1.optionsURL, "chrome://foo/content/options.xul"); - do_check_eq(newa1.iconURL, "chrome://foo/content/icon.png"); - do_check_true(isExtensionInAddonsList(profileDir, newa1.id)); - do_check_true(hasFlag(newa1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(newa1.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_eq(newa1.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_DISABLE | - AddonManager.OP_NEEDS_RESTART_UNINSTALL); - do_check_in_crash_annotation(addon1.id, addon1.version); - - run_test_3(); - }); - })); - }); -} - -// Disabling then enabling without restart should fire onOperationCancelled. -function run_test_3() { - prepare_test({ - "addon1@tests.mozilla.org": [ - "onDisabling" - ] - }); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { - a1.userDisabled = true; - ensure_test_completed(); - prepare_test({ - "addon1@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - a1.userDisabled = false; - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_ENABLE)); - - ensure_test_completed(); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(newa1) { - do_check_neq(newa1, null); - do_check_true(newa1.isActive); - do_check_false(newa1.userDisabled); - do_check_eq(newa1.aboutURL, "chrome://foo/content/about.xul"); - do_check_eq(newa1.optionsURL, "chrome://foo/content/options.xul"); - do_check_eq(newa1.iconURL, "chrome://foo/content/icon.png"); - do_check_true(isExtensionInAddonsList(profileDir, newa1.id)); - do_check_true(hasFlag(newa1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(newa1.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_execute_soon(do_test_finished); - }); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_distribution.js b/toolkit/mozapps/webextensions/test/xpcshell/test_distribution.js deleted file mode 100644 index 720b454cc..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_distribution.js +++ /dev/null @@ -1,273 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that add-ons distributed with the application get installed -// correctly - -// Allow distributed add-ons to install -Services.prefs.setBoolPref("extensions.installDistroAddons", true); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); -const distroDir = gProfD.clone(); -distroDir.append("distribution"); -distroDir.append("extensions"); -registerDirectory("XREAppDist", distroDir.parent); - -var addon1_1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test version 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "5" - }] -}; - -var addon1_2 = { - id: "addon1@tests.mozilla.org", - version: "2.0", - name: "Test version 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "5" - }] -}; - -var addon1_3 = { - id: "addon1@tests.mozilla.org", - version: "3.0", - name: "Test version 3", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "5" - }] -}; - -function getActiveVersion() { - return Services.prefs.getIntPref("bootstraptest.active_version"); -} - -function getInstalledVersion() { - return Services.prefs.getIntPref("bootstraptest.installed_version"); -} - -function setOldModificationTime() { - // Make sure the installed extension has an old modification time so any - // changes will be detected - shutdownManager() - let extension = gProfD.clone(); - extension.append("extensions"); - if (Services.prefs.getBoolPref("extensions.alwaysUnpack")) - extension.append("addon1@tests.mozilla.org"); - else - extension.append("addon1@tests.mozilla.org.xpi"); - setExtensionModifiedTime(extension, Date.now() - MAKE_FILE_OLD_DIFFERENCE); - startupManager(false); -} - -function run_test() { - do_test_pending(); - - run_test_1(); -} - -// Tests that on the first startup the add-on gets installed, with now as the -// profile modifiedTime. -function run_test_1() { - let extension = writeInstallRDFForExtension(addon1_1, distroDir); - setExtensionModifiedTime(extension, Date.now() - MAKE_FILE_OLD_DIFFERENCE); - - startupManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - do_check_true(a1.isActive); - do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); - do_check_false(a1.foreignInstall); - - // Modification time should be updated when the addon is copied to the - // profile. - let testURI = a1.getResourceURI(TEST_UNPACKED ? "install.rdf" : ""); - let testFile = testURI.QueryInterface(Components.interfaces.nsIFileURL).file; - - do_check_true(testFile.exists()); - let difference = testFile.lastModifiedTime - Date.now(); - do_check_true(Math.abs(difference) < MAX_TIME_DIFFERENCE); - - do_execute_soon(run_test_2); - }); -} - -// Tests that starting with a newer version in the distribution dir doesn't -// install it yet -function run_test_2() { - setOldModificationTime(); - - writeInstallRDFForExtension(addon1_2, distroDir); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - do_check_true(a1.isActive); - do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); - - do_execute_soon(run_test_3); - }); -} - -// Test that an app upgrade installs the newer version -function run_test_3() { - restartManager("2"); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - do_check_true(a1.isActive); - do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); - do_check_false(a1.foreignInstall); - - do_execute_soon(run_test_4); - }); -} - -// Test that an app upgrade doesn't downgrade the extension -function run_test_4() { - setOldModificationTime(); - - writeInstallRDFForExtension(addon1_1, distroDir); - - restartManager("3"); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - do_check_true(a1.isActive); - do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); - - do_execute_soon(run_test_5); - }); -} - -// Tests that after uninstalling a restart doesn't re-install the extension -function run_test_5() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { - a1.uninstall(); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1_2) { - do_check_eq(a1_2, null); - - do_execute_soon(run_test_6); - }); - })); -} - -// Tests that upgrading the application still doesn't re-install the uninstalled -// extension -function run_test_6() { - restartManager("4"); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_eq(a1, null); - - do_execute_soon(run_test_7); - }); -} - -// Tests that a pending install of a newer version of a distributed add-on -// at app change still gets applied -function run_test_7() { - Services.prefs.clearUserPref("extensions.installedDistroAddon.addon1@tests.mozilla.org"); - - installAllFiles([do_get_addon("test_distribution1_2")], function() { - restartManager(2); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - do_check_true(a1.isActive); - do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); - - a1.uninstall(); - do_execute_soon(run_test_8); - }); - }); -} - -// Tests that a pending install of a older version of a distributed add-on -// at app change gets replaced by the distributed version -function run_test_8() { - restartManager(); - - writeInstallRDFForExtension(addon1_3, distroDir); - - installAllFiles([do_get_addon("test_distribution1_2")], function() { - restartManager(3); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "3.0"); - do_check_true(a1.isActive); - do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); - - a1.uninstall(); - do_execute_soon(run_test_9); - }); - }); -} - -// Tests that bootstrapped add-ons distributed start up correctly, also that -// add-ons with multiple directories get copied fully -function run_test_9() { - restartManager(); - - // Copy the test add-on to the distro dir - let addon = do_get_file("data/test_distribution2_2"); - addon.copyTo(distroDir, "addon2@tests.mozilla.org"); - - restartManager("5"); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_neq(a2, null); - do_check_true(a2.isActive); - - do_check_eq(getInstalledVersion(), 2); - do_check_eq(getActiveVersion(), 2); - - do_check_true(a2.hasResource("bootstrap.js")); - do_check_true(a2.hasResource("subdir/dummy.txt")); - do_check_true(a2.hasResource("subdir/subdir2/dummy2.txt")); - - // Currently installs are unpacked if the source is a directory regardless - // of the install.rdf property or the global preference - - let addonDir = profileDir.clone(); - addonDir.append("addon2@tests.mozilla.org"); - do_check_true(addonDir.exists()); - do_check_true(addonDir.isDirectory()); - addonDir.append("subdir"); - do_check_true(addonDir.exists()); - do_check_true(addonDir.isDirectory()); - addonDir.append("subdir2"); - do_check_true(addonDir.exists()); - do_check_true(addonDir.isDirectory()); - addonDir.append("dummy2.txt"); - do_check_true(addonDir.exists()); - do_check_true(addonDir.isFile()); - - a2.uninstall(); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_dss.js b/toolkit/mozapps/webextensions/test/xpcshell/test_dss.js deleted file mode 100644 index b408cc9c7..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_dss.js +++ /dev/null @@ -1,824 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -Components.utils.import("resource://gre/modules/NetUtil.jsm"); - -// using a dynamic port in the addon metadata -Components.utils.import("resource://testing-common/httpd.js"); -var gServer = new HttpServer(); -gServer.start(-1); -gPort = gServer.identity.primaryPort; - -// This verifies that themes behave as expected - -const PREF_GENERAL_SKINS_SELECTEDSKIN = "general.skins.selectedSkin"; -const PREF_EXTENSIONS_DSS_ENABLED = "extensions.dss.enabled"; - -Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// Observer to ensure a "lightweight-theme-styling-update" notification is sent -// when expected -var gLWThemeChanged = false; -var LightweightThemeObserver = { - observe: function(aSubject, aTopic, aData) { - if (aTopic != "lightweight-theme-styling-update") - return; - - gLWThemeChanged = true; - } -}; - -AM_Cc["@mozilla.org/observer-service;1"] - .getService(Components.interfaces.nsIObserverService) - .addObserver(LightweightThemeObserver, "lightweight-theme-styling-update", false); - - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - Services.prefs.setCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN, "theme1/1.0"); - Services.prefs.setBoolPref(PREF_EXTENSIONS_DSS_ENABLED, true); - writeInstallRDFForExtension({ - id: "theme1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - type: 4, - internalName: "theme1/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "theme2@tests.mozilla.org", - version: "1.0", - name: "Test 1", - internalName: "theme2/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }, profileDir); - - // We need a default theme for some of these things to work but we have hidden - // the one in the application directory. - writeInstallRDFForExtension({ - id: "default@tests.mozilla.org", - version: "1.0", - name: "Default", - internalName: "classic/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }, profileDir); - - startupManager(); - // Make sure we only register once despite multiple calls - AddonManager.addInstallListener(InstallListener); - AddonManager.addAddonListener(AddonListener); - AddonManager.addInstallListener(InstallListener); - AddonManager.addAddonListener(AddonListener); - AddonManager.addInstallListener(InstallListener); - - AddonManager.getAddonsByIDs(["theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([t1, t2]) { - do_check_neq(t1, null); - do_check_false(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_true(t1.isActive); - do_check_eq(t1.screenshots, null); - do_check_true(isThemeInAddonsList(profileDir, t1.id)); - do_check_false(hasFlag(t1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(t1.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_neq(t2, null); - do_check_true(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_false(t2.isActive); - do_check_eq(t2.screenshots, null); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - do_check_false(hasFlag(t2.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(t2.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_execute_soon(run_test_1); - }); -} - -function end_test() { - do_execute_soon(do_test_finished); -} - -// Checks enabling one theme disables the others -function run_test_1() { - prepare_test({ - "theme1@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ], - "theme2@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - AddonManager.getAddonsByIDs(["theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([t1, t2]) { - t2.userDisabled = false; - - ensure_test_completed(); - do_check_false(hasFlag(t2.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(t2.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_true(t1.userDisabled); - do_check_false(hasFlag(t1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(t1.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_execute_soon(check_test_1); - }); -} - -function check_test_1() { - restartManager(); - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "theme2/1.0"); - - AddonManager.getAddonsByIDs(["theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([t1, t2]) { - do_check_neq(t1, null); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_false(t1.isActive); - do_check_true(isThemeInAddonsList(profileDir, t1.id)); - do_check_false(hasFlag(t1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(t1.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_neq(t2, null); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_true(t2.isActive); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - do_check_false(hasFlag(t2.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(t2.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_false(gLWThemeChanged); - - do_execute_soon(run_test_2); - }); -} - -// Removing the active theme should fall back to the default (not ideal in this -// case since we don't have the default theme installed) -function run_test_2() { - var dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("theme2@tests.mozilla.org")); - dest.remove(true); - - restartManager(); - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - AddonManager.getAddonsByIDs(["theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([t1, t2]) { - do_check_neq(t1, null); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_false(t1.isActive); - do_check_true(isThemeInAddonsList(profileDir, t1.id)); - do_check_false(hasFlag(t1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(t1.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_eq(t2, null); - do_check_false(isThemeInAddonsList(profileDir, "theme2@tests.mozilla.org")); - do_check_false(gLWThemeChanged); - - do_execute_soon(run_test_3); - }); -} - -// Installing a lightweight theme should happen instantly and disable the default theme -function run_test_3() { - writeInstallRDFForExtension({ - id: "theme2@tests.mozilla.org", - version: "1.0", - name: "Test 1", - internalName: "theme2/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }, profileDir); - restartManager(); - - prepare_test({ - "1@personas.mozilla.org": [ - ["onInstalling", false], - "onInstalled", - ["onEnabling", false], - "onEnabled" - ], - "default@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled", - ] - }, [ - "onExternalInstall" - ]); - - LightweightThemeManager.currentTheme = { - id: "1", - version: "1", - name: "Test LW Theme", - description: "A test theme", - author: "Mozilla", - homepageURL: "http://localhost:" + gPort + "/data/index.html", - headerURL: "http://localhost:" + gPort + "/data/header.png", - footerURL: "http://localhost:" + gPort + "/data/footer.png", - previewURL: "http://localhost:" + gPort + "/data/preview.png", - iconURL: "http://localhost:" + gPort + "/data/icon.png" - }; - - ensure_test_completed(); - - AddonManager.getAddonByID("1@personas.mozilla.org", function(p1) { - do_check_neq(null, p1); - do_check_eq(p1.name, "Test LW Theme"); - do_check_eq(p1.version, "1"); - do_check_eq(p1.type, "theme"); - do_check_eq(p1.description, "A test theme"); - do_check_eq(p1.creator, "Mozilla"); - do_check_eq(p1.homepageURL, "http://localhost:" + gPort + "/data/index.html"); - do_check_eq(p1.iconURL, "http://localhost:" + gPort + "/data/icon.png"); - do_check_eq(p1.screenshots.length, 1); - do_check_eq(p1.screenshots[0], "http://localhost:" + gPort + "/data/preview.png"); - do_check_false(p1.appDisabled); - do_check_false(p1.userDisabled); - do_check_true(p1.isCompatible); - do_check_true(p1.providesUpdatesSecurely); - do_check_eq(p1.blocklistState, 0); - do_check_true(p1.isActive); - do_check_eq(p1.pendingOperations, 0); - do_check_eq(p1.permissions, AddonManager.PERM_CAN_UNINSTALL | AddonManager.PERM_CAN_DISABLE); - do_check_eq(p1.scope, AddonManager.SCOPE_PROFILE); - do_check_true("isCompatibleWith" in p1); - do_check_true("findUpdates" in p1); - - AddonManager.getAddonsByTypes(["theme"], function(addons) { - let seen = false; - addons.forEach(function(a) { - if (a.id == "1@personas.mozilla.org") { - seen = true; - } - else { - dump("Checking theme " + a.id + "\n"); - do_check_false(a.isActive); - do_check_true(a.userDisabled); - } - }); - do_check_true(seen); - - do_check_true(gLWThemeChanged); - gLWThemeChanged = false; - - do_execute_soon(run_test_4); - }); - }); -} - -// Installing a second lightweight theme should disable the first with no restart -function run_test_4() { - prepare_test({ - "1@personas.mozilla.org": [ - ["onDisabling", false], - "onDisabled", - ], - "2@personas.mozilla.org": [ - ["onInstalling", false], - "onInstalled", - ["onEnabling", false], - "onEnabled" - ] - }, [ - "onExternalInstall" - ]); - - LightweightThemeManager.currentTheme = { - id: "2", - version: "1", - name: "Test LW Theme", - description: "A second test theme", - author: "Mozilla", - homepageURL: "http://localhost:" + gPort + "/data/index.html", - headerURL: "http://localhost:" + gPort + "/data/header.png", - footerURL: "http://localhost:" + gPort + "/data/footer.png", - previewURL: "http://localhost:" + gPort + "/data/preview.png", - iconURL: "http://localhost:" + gPort + "/data/icon.png" - }; - - ensure_test_completed(); - - AddonManager.getAddonsByIDs(["1@personas.mozilla.org", - "2@personas.mozilla.org"], function([p1, p2]) { - do_check_neq(null, p2); - do_check_false(p2.appDisabled); - do_check_false(p2.userDisabled); - do_check_true(p2.isActive); - do_check_eq(p2.pendingOperations, 0); - do_check_eq(p2.permissions, AddonManager.PERM_CAN_UNINSTALL | AddonManager.PERM_CAN_DISABLE); - - do_check_neq(null, p1); - do_check_false(p1.appDisabled); - do_check_true(p1.userDisabled); - do_check_false(p1.isActive); - do_check_eq(p1.pendingOperations, 0); - do_check_eq(p1.permissions, AddonManager.PERM_CAN_UNINSTALL | AddonManager.PERM_CAN_ENABLE); - - AddonManager.getAddonsByTypes(["theme"], function(addons) { - let seen = false; - addons.forEach(function(a) { - if (a.id == "2@personas.mozilla.org") { - seen = true; - } - else { - dump("Checking theme " + a.id + "\n"); - do_check_false(a.isActive); - do_check_true(a.userDisabled); - } - }); - do_check_true(seen); - - do_check_true(gLWThemeChanged); - gLWThemeChanged = false; - - do_execute_soon(run_test_5); - }); - }); -} - -// Switching to a custom theme should disable the lightweight theme and require -// a restart. Cancelling that should also be possible. -function run_test_5() { - prepare_test({ - "2@personas.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ], - "theme2@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - AddonManager.getAddonsByIDs(["2@personas.mozilla.org", - "theme2@tests.mozilla.org"], function([p2, t2]) { - t2.userDisabled = false; - - ensure_test_completed(); - - prepare_test({ - "2@personas.mozilla.org": [ - "onEnabling" - ], - "theme2@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ] - }); - - p2.userDisabled = false; - - ensure_test_completed(); - - prepare_test({ - "2@personas.mozilla.org": [ - ["onOperationCancelled", true] - ], - "theme2@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - t2.userDisabled = false; - - ensure_test_completed(); - - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(hasFlag(AddonManager.PENDING_ENABLE, t2.pendingOperations)); - do_check_false(p2.isActive); - do_check_true(p2.userDisabled); - do_check_false(hasFlag(AddonManager.PENDING_DISABLE, p2.pendingOperations)); - do_check_true(hasFlag(AddonManager.PERM_CAN_ENABLE, p2.permissions)); - do_check_true(gLWThemeChanged); - - do_execute_soon(check_test_5); - }); -} - -function check_test_5() { - restartManager(); - - AddonManager.getAddonsByIDs(["2@personas.mozilla.org", - "theme2@tests.mozilla.org"], function([p2, t2]) { - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(hasFlag(AddonManager.PENDING_ENABLE, t2.pendingOperations)); - do_check_false(p2.isActive); - do_check_true(p2.userDisabled); - do_check_false(hasFlag(AddonManager.PENDING_DISABLE, p2.pendingOperations)); - - do_check_true(gLWThemeChanged); - gLWThemeChanged = false; - - do_execute_soon(run_test_6); - }); -} - -// Switching from a custom theme to a lightweight theme should require a restart -function run_test_6() { - prepare_test({ - "2@personas.mozilla.org": [ - "onEnabling", - ], - "theme2@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ] - }); - - AddonManager.getAddonsByIDs(["2@personas.mozilla.org", - "theme2@tests.mozilla.org"], function([p2, t2]) { - p2.userDisabled = false; - - ensure_test_completed(); - - prepare_test({ - "2@personas.mozilla.org": [ - "onOperationCancelled", - ], - "theme2@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - t2.userDisabled = false; - - ensure_test_completed(); - - prepare_test({ - "2@personas.mozilla.org": [ - "onEnabling", - ], - "theme2@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ] - }); - - p2.userDisabled = false; - - ensure_test_completed(); - - do_check_false(p2.isActive); - do_check_false(p2.userDisabled); - do_check_true(hasFlag(AddonManager.PENDING_ENABLE, p2.pendingOperations)); - do_check_false(t2.isActive); - do_check_true(t2.userDisabled); - do_check_false(hasFlag(AddonManager.PENDING_DISABLE, t2.pendingOperations)); - do_check_false(gLWThemeChanged); - - do_execute_soon(check_test_6); - }); -} - -function check_test_6() { - restartManager(); - - AddonManager.getAddonsByIDs(["2@personas.mozilla.org", - "theme2@tests.mozilla.org"], function([p2, t2]) { - do_check_true(p2.isActive); - do_check_false(p2.userDisabled); - do_check_false(hasFlag(AddonManager.PENDING_ENABLE, p2.pendingOperations)); - do_check_false(t2.isActive); - do_check_true(t2.userDisabled); - do_check_false(hasFlag(AddonManager.PENDING_DISABLE, t2.pendingOperations)); - - do_check_true(gLWThemeChanged); - gLWThemeChanged = false; - - do_execute_soon(run_test_7); - }); -} - -// Uninstalling a lightweight theme should not require a restart -function run_test_7() { - prepare_test({ - "1@personas.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ] - }); - - AddonManager.getAddonByID("1@personas.mozilla.org", function(p1) { - p1.uninstall(); - - ensure_test_completed(); - do_check_eq(LightweightThemeManager.usedThemes.length, 1); - do_check_false(gLWThemeChanged); - - do_execute_soon(run_test_8); - }); -} - -// Uninstalling a lightweight theme in use should not require a restart and it -// should reactivate the default theme -// Also, uninstalling a lightweight theme in use should send a -// "lightweight-theme-styling-update" notification through the observer service -function run_test_8() { - prepare_test({ - "2@personas.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ], - "default@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - AddonManager.getAddonByID("2@personas.mozilla.org", function(p2) { - p2.uninstall(); - - ensure_test_completed(); - do_check_eq(LightweightThemeManager.usedThemes.length, 0); - - do_check_true(gLWThemeChanged); - gLWThemeChanged = false; - - do_execute_soon(run_test_9); - }); -} - -// Uninstalling a theme not in use should not require a restart -function run_test_9() { - AddonManager.getAddonByID("theme1@tests.mozilla.org", function(t1) { - prepare_test({ - "theme1@tests.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ] - }); - - t1.uninstall(); - - ensure_test_completed(); - - AddonManager.getAddonByID("theme1@tests.mozilla.org", function(newt1) { - do_check_eq(newt1, null); - do_check_false(gLWThemeChanged); - - do_execute_soon(run_test_10); - }); - }); -} - -// Uninstalling a custom theme in use should require a restart -function run_test_10() { - AddonManager.getAddonByID("theme2@tests.mozilla.org", callback_soon(function(oldt2) { - prepare_test({ - "theme2@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ], - "default@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ] - }); - - oldt2.userDisabled = false; - - ensure_test_completed(); - - restartManager(); - - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "theme2@tests.mozilla.org"], - callback_soon(function([d, t2]) { - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_false(d.isActive); - do_check_true(d.userDisabled); - do_check_false(d.appDisabled); - - prepare_test({ - "theme2@tests.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ], - "default@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - t2.uninstall(); - - ensure_test_completed(); - do_check_false(gLWThemeChanged); - - restartManager(); - - do_execute_soon(run_test_11); - })); - })); -} - -// Installing a custom theme not in use should not require a restart -function run_test_11() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_theme"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.type, "theme"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test Theme 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - - prepare_test({ - "theme1@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test_11)); - install.install(); - }); -} - -function check_test_11() { - restartManager(); - AddonManager.getAddonByID("theme1@tests.mozilla.org", function(t1) { - do_check_neq(t1, null); - var previewSpec = do_get_addon_root_uri(profileDir, "theme1@tests.mozilla.org") + "preview.png"; - do_check_eq(t1.screenshots.length, 1); - do_check_eq(t1.screenshots[0], previewSpec); - do_check_false(gLWThemeChanged); - - do_execute_soon(run_test_12); - }); -} - -// Updating a custom theme not in use should not require a restart -function run_test_12() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_theme"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.type, "theme"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test Theme 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - - prepare_test({ - "theme1@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], check_test_12); - install.install(); - }); -} - -function check_test_12() { - AddonManager.getAddonByID("theme1@tests.mozilla.org", function(t1) { - do_check_neq(t1, null); - do_check_false(gLWThemeChanged); - - do_execute_soon(run_test_13); - }); -} - -// Updating a custom theme in use should require a restart -function run_test_13() { - AddonManager.getAddonByID("theme1@tests.mozilla.org", callback_soon(function(t1) { - prepare_test({ - "theme1@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ], - "default@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ] - }); - - t1.userDisabled = false; - ensure_test_completed(); - restartManager(); - - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_theme"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.type, "theme"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test Theme 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - - prepare_test({ - "theme1@tests.mozilla.org": [ - "onInstalling", - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test_13)); - install.install(); - }); - })); -} - -function check_test_13() { - restartManager(); - - AddonManager.getAddonByID("theme1@tests.mozilla.org", function(t1) { - do_check_neq(t1, null); - do_check_true(t1.isActive); - do_check_false(gLWThemeChanged); - t1.uninstall(); - - do_execute_soon(run_test_14); - }); -} - -// Switching from a lightweight theme to the default theme should not require -// a restart -function run_test_14() { - restartManager(); - LightweightThemeManager.currentTheme = { - id: "1", - version: "1", - name: "Test LW Theme", - description: "A test theme", - author: "Mozilla", - homepageURL: "http://localhost:" + gPort + "/data/index.html", - headerURL: "http://localhost:" + gPort + "/data/header.png", - footerURL: "http://localhost:" + gPort + "/data/footer.png", - previewURL: "http://localhost:" + gPort + "/data/preview.png", - iconURL: "http://localhost:" + gPort + "/data/icon.png" - }; - - AddonManager.getAddonByID("default@tests.mozilla.org", function(d) { - do_check_true(d.userDisabled); - do_check_false(d.isActive); - - prepare_test({ - "1@personas.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ], - "default@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - d.userDisabled = false; - ensure_test_completed(); - - do_check_false(d.userDisabled); - do_check_true(d.isActive); - - do_check_true(gLWThemeChanged); - gLWThemeChanged = false; - - end_test(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_duplicateplugins.js b/toolkit/mozapps/webextensions/test/xpcshell/test_duplicateplugins.js deleted file mode 100644 index 4d1848ea4..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_duplicateplugins.js +++ /dev/null @@ -1,187 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -Components.utils.import("resource://testing-common/MockRegistrar.jsm"); - -var Ci = Components.interfaces; - -// This verifies that duplicate plugins are coalesced and maintain their ID -// across restarts. - -var PLUGINS = [{ - name: "Duplicate Plugin 1", - description: "A duplicate plugin", - version: "1", - blocklisted: false, - enabledState: Ci.nsIPluginTag.STATE_ENABLED, - get disabled() { - return this.enabledState == Ci.nsIPluginTag.STATE_DISABLED; - }, - filename: "/home/mozilla/.plugins/dupplugin1.so" -}, { - name: "Duplicate Plugin 1", - description: "A duplicate plugin", - version: "1", - blocklisted: false, - enabledState: Ci.nsIPluginTag.STATE_ENABLED, - get disabled() { - return this.enabledState == Ci.nsIPluginTag.STATE_DISABLED; - }, - filename: "/usr/lib/plugins/dupplugin1.so" -}, { - name: "Duplicate Plugin 2", - description: "Another duplicate plugin", - version: "1", - blocklisted: false, - enabledState: Ci.nsIPluginTag.STATE_ENABLED, - get disabled() { - return this.enabledState == Ci.nsIPluginTag.STATE_DISABLED; - }, - filename: "/home/mozilla/.plugins/dupplugin2.so" -}, { - name: "Duplicate Plugin 2", - description: "Another duplicate plugin", - version: "1", - blocklisted: false, - enabledState: Ci.nsIPluginTag.STATE_ENABLED, - get disabled() { - return this.enabledState == Ci.nsIPluginTag.STATE_DISABLED; - }, - filename: "/usr/lib/plugins/dupplugin2.so" -}, { - name: "Non-duplicate Plugin", // 3 - description: "Not a duplicate plugin", - version: "1", - blocklisted: false, - enabledState: Ci.nsIPluginTag.STATE_ENABLED, - get disabled() { - return this.enabledState == Ci.nsIPluginTag.STATE_DISABLED; - }, - filename: "/home/mozilla/.plugins/dupplugin3.so" -}, { - name: "Non-duplicate Plugin", // 4 - description: "Not a duplicate because the descriptions are different", - version: "1", - blocklisted: false, - enabledState: Ci.nsIPluginTag.STATE_ENABLED, - get disabled() { - return this.enabledState == Ci.nsIPluginTag.STATE_DISABLED; - }, - filename: "/usr/lib/plugins/dupplugin4.so" -}, { - name: "Another Non-duplicate Plugin", // 5 - description: "Not a duplicate plugin", - version: "1", - blocklisted: false, - enabledState: Ci.nsIPluginTag.STATE_ENABLED, - get disabled() { - return this.enabledState == Ci.nsIPluginTag.STATE_DISABLED; - }, - filename: "/home/mozilla/.plugins/dupplugin5.so" -}]; - -// A fake plugin host to return the plugins defined above -var PluginHost = { - getPluginTags: function(countRef) { - countRef.value = PLUGINS.length; - return PLUGINS; - }, - - QueryInterface: function(iid) { - if (iid.equals(Components.interfaces.nsIPluginHost) - || iid.equals(Components.interfaces.nsISupports)) - return this; - - throw Components.results.NS_ERROR_NO_INTERFACE; - } -} - -MockRegistrar.register("@mozilla.org/plugin/host;1", PluginHost); - -var gPluginIDs = [null, null, null, null, null]; - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - Services.prefs.setBoolPref("media.gmp-provider.enabled", false); - - startupManager(); - - run_test_1(); -} - -function found_plugin(aNum, aId) { - if (gPluginIDs[aNum]) - do_throw("Found duplicate of plugin " + aNum); - gPluginIDs[aNum] = aId; -} - -// Test that the plugins were coalesced and all appear in the returned list -function run_test_1() { - AddonManager.getAddonsByTypes(["plugin"], function(aAddons) { - do_check_eq(aAddons.length, 5); - aAddons.forEach(function(aAddon) { - if (aAddon.name == "Duplicate Plugin 1") { - found_plugin(0, aAddon.id); - do_check_eq(aAddon.description, "A duplicate plugin"); - } - else if (aAddon.name == "Duplicate Plugin 2") { - found_plugin(1, aAddon.id); - do_check_eq(aAddon.description, "Another duplicate plugin"); - } - else if (aAddon.name == "Another Non-duplicate Plugin") { - found_plugin(5, aAddon.id); - do_check_eq(aAddon.description, "Not a duplicate plugin"); - } - else if (aAddon.name == "Non-duplicate Plugin") { - if (aAddon.description == "Not a duplicate plugin") - found_plugin(3, aAddon.id); - else if (aAddon.description == "Not a duplicate because the descriptions are different") - found_plugin(4, aAddon.id); - else - do_throw("Found unexpected plugin with description " + aAddon.description); - } - else { - do_throw("Found unexpected plugin " + aAddon.name); - } - }); - - run_test_2(); - }); -} - -// Test that disabling a coalesced plugin disables all its tags -function run_test_2() { - AddonManager.getAddonByID(gPluginIDs[0], function(p) { - do_check_false(p.userDisabled); - p.userDisabled = true; - do_check_true(PLUGINS[0].disabled); - do_check_true(PLUGINS[1].disabled); - - do_execute_soon(run_test_3); - }); -} - -// Test that IDs persist across restart -function run_test_3() { - restartManager(); - - AddonManager.getAddonByID(gPluginIDs[0], callback_soon(function(p) { - do_check_neq(p, null); - do_check_eq(p.name, "Duplicate Plugin 1"); - do_check_eq(p.description, "A duplicate plugin"); - - // Reorder the plugins and restart again - [PLUGINS[0], PLUGINS[1]] = [PLUGINS[1], PLUGINS[0]]; - restartManager(); - - AddonManager.getAddonByID(gPluginIDs[0], function(p_2) { - do_check_neq(p_2, null); - do_check_eq(p_2.name, "Duplicate Plugin 1"); - do_check_eq(p_2.description, "A duplicate plugin"); - - do_execute_soon(do_test_finished); - }); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_e10s_restartless.js b/toolkit/mozapps/webextensions/test/xpcshell/test_e10s_restartless.js deleted file mode 100644 index 1a3a0e747..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_e10s_restartless.js +++ /dev/null @@ -1,429 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const ID = "bootstrap1@tests.mozilla.org"; -const ID2 = "bootstrap2@tests.mozilla.org"; - -const APP_STARTUP = 1; -const ADDON_INSTALL = 5; - -function getStartupReason(id) { - let info = BootstrapMonitor.started.get(id); - return info ? info.reason : undefined; -} - -BootstrapMonitor.init(); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -startupManager(); - -function* check_normal() { - let install = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_1"), resolve)); - yield promiseCompleteAllInstalls([install]); - do_check_eq(install.state, AddonManager.STATE_INSTALLED); - do_check_false(hasFlag(install.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - - BootstrapMonitor.checkAddonInstalled(ID); - BootstrapMonitor.checkAddonStarted(ID); - - let addon = yield promiseAddonByID(ID); - do_check_eq(addon, install.addon); - - do_check_false(hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_DISABLE)); - addon.userDisabled = true; - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_false(addon.isActive); - do_check_false(hasFlag(addon.pendingOperations, AddonManager.PENDING_DISABLE)); - - do_check_false(hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_ENABLE)); - addon.userDisabled = false; - BootstrapMonitor.checkAddonStarted(ID); - do_check_true(addon.isActive); - do_check_false(hasFlag(addon.pendingOperations, AddonManager.PENDING_ENABLE)); - - do_check_false(hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_UNINSTALL)); - addon.uninstall(); - BootstrapMonitor.checkAddonNotStarted(ID); - BootstrapMonitor.checkAddonNotInstalled(ID); - - yield promiseRestartManager(); -} - -// Installing the add-on normally doesn't require a restart -add_task(function*() { - gAppInfo.browserTabsRemoteAutostart = false; - Services.prefs.setBoolPref("extensions.e10sBlocksEnabling", false); - - yield check_normal(); -}); - -// Enabling the pref doesn't change anything -add_task(function*() { - gAppInfo.browserTabsRemoteAutostart = false; - Services.prefs.setBoolPref("extensions.e10sBlocksEnabling", true); - - yield check_normal(); -}); - -// Default e10s doesn't change anything -add_task(function*() { - gAppInfo.browserTabsRemoteAutostart = true; - Services.prefs.setBoolPref("extensions.e10sBlocksEnabling", false); - - yield check_normal(); -}); - -// Pref and e10s blocks install -add_task(function*() { - gAppInfo.browserTabsRemoteAutostart = true; - Services.prefs.setBoolPref("extensions.e10sBlocksEnabling", true); - - let install = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_1"), resolve)); - yield promiseCompleteAllInstalls([install]); - do_check_eq(install.state, AddonManager.STATE_INSTALLED); - do_check_true(hasFlag(install.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - - let addon = yield promiseAddonByID(ID); - do_check_eq(addon, null); - - yield promiseRestartManager(); - - BootstrapMonitor.checkAddonInstalled(ID); - BootstrapMonitor.checkAddonStarted(ID); - do_check_eq(getStartupReason(ID), ADDON_INSTALL); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - - do_check_false(hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_DISABLE)); - addon.userDisabled = true; - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_false(addon.isActive); - do_check_false(hasFlag(addon.pendingOperations, AddonManager.PENDING_DISABLE)); - - do_check_true(hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_ENABLE)); - addon.userDisabled = false; - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_false(addon.isActive); - do_check_true(hasFlag(addon.pendingOperations, AddonManager.PENDING_ENABLE)); - - yield promiseRestartManager(); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - - do_check_true(addon.isActive); - BootstrapMonitor.checkAddonStarted(ID); - - do_check_false(hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_UNINSTALL)); - addon.uninstall(); - BootstrapMonitor.checkAddonNotStarted(ID); - BootstrapMonitor.checkAddonNotInstalled(ID); - - yield promiseRestartManager(); -}); - -add_task(function*() { - gAppInfo.browserTabsRemoteAutostart = true; - Services.prefs.setBoolPref("extensions.e10sBlocksEnabling", true); - - let install = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_1"), resolve)); - yield promiseCompleteAllInstalls([install]); - do_check_eq(install.state, AddonManager.STATE_INSTALLED); - do_check_true(hasFlag(install.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - - let addon = yield promiseAddonByID(ID); - do_check_eq(addon, null); - - yield promiseRestartManager(); - - // After install and restart we should block. - let blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_true(blocked); - - BootstrapMonitor.checkAddonInstalled(ID); - BootstrapMonitor.checkAddonStarted(ID); - do_check_eq(getStartupReason(ID), ADDON_INSTALL); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - - do_check_false(hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_DISABLE)); - addon.userDisabled = true; - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_false(addon.isActive); - do_check_false(hasFlag(addon.pendingOperations, AddonManager.PENDING_DISABLE)); - do_check_true(hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_ENABLE)); - - yield promiseRestartManager(); - - // After disable and restart we should not block. - blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_false(blocked); - - addon = yield promiseAddonByID(ID); - addon.userDisabled = false; - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_false(addon.isActive); - do_check_true(hasFlag(addon.pendingOperations, AddonManager.PENDING_ENABLE)); - - yield promiseRestartManager(); - - // After re-enable and restart we should block. - blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_true(blocked); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - - do_check_true(addon.isActive); - BootstrapMonitor.checkAddonStarted(ID); - // This should probably be ADDON_ENABLE, but its not easy to make - // that happen. See bug 1304392 for discussion. - do_check_eq(getStartupReason(ID), APP_STARTUP); - - do_check_false(hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_UNINSTALL)); - addon.uninstall(); - BootstrapMonitor.checkAddonNotStarted(ID); - BootstrapMonitor.checkAddonNotInstalled(ID); - - yield promiseRestartManager(); - - // After uninstall and restart we should not block. - blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_false(blocked); - - restartManager(); -}); - -add_task(function*() { - gAppInfo.browserTabsRemoteAutostart = true; - Services.prefs.setBoolPref("extensions.e10sBlocksEnabling", true); - - let install1 = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_1"), resolve)); - let install2 = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap2_1"), resolve)); - yield promiseCompleteAllInstalls([install1, install2]); - do_check_eq(install1.state, AddonManager.STATE_INSTALLED); - do_check_eq(install2.state, AddonManager.STATE_INSTALLED); - do_check_true(hasFlag(install1.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - do_check_true(hasFlag(install2.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - - let addon = yield promiseAddonByID(ID); - let addon2 = yield promiseAddonByID(ID2); - - do_check_eq(addon, null); - do_check_eq(addon2, null); - - yield promiseRestartManager(); - - // After install and restart we should block. - let blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_true(blocked); - - BootstrapMonitor.checkAddonInstalled(ID); - BootstrapMonitor.checkAddonStarted(ID); - do_check_eq(getStartupReason(ID), ADDON_INSTALL); - - BootstrapMonitor.checkAddonInstalled(ID2); - BootstrapMonitor.checkAddonStarted(ID2); - do_check_eq(getStartupReason(ID2), ADDON_INSTALL); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - addon2 = yield promiseAddonByID(ID2); - do_check_neq(addon2, null); - - do_check_false(hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_DISABLE)); - addon.userDisabled = true; - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_false(addon.isActive); - do_check_false(hasFlag(addon.pendingOperations, AddonManager.PENDING_DISABLE)); - do_check_true(hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_ENABLE)); - - yield promiseRestartManager(); - - // After disable one addon and restart we should block. - blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_true(blocked); - - addon2 = yield promiseAddonByID(ID2); - - do_check_false(hasFlag(addon2.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_DISABLE)); - addon2.userDisabled = true; - BootstrapMonitor.checkAddonNotStarted(ID2); - do_check_false(addon2.isActive); - do_check_false(hasFlag(addon2.pendingOperations, AddonManager.PENDING_DISABLE)); - do_check_true(hasFlag(addon2.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_ENABLE)); - - yield promiseRestartManager(); - - // After disable both addons and restart we should not block. - blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_false(blocked); - - addon = yield promiseAddonByID(ID); - addon.userDisabled = false; - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_false(addon.isActive); - do_check_true(hasFlag(addon.pendingOperations, AddonManager.PENDING_ENABLE)); - - yield promiseRestartManager(); - - // After re-enable one addon and restart we should block. - blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_true(blocked); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - - do_check_true(addon.isActive); - BootstrapMonitor.checkAddonStarted(ID); - // Bug 1304392 again (see comment above) - do_check_eq(getStartupReason(ID), APP_STARTUP); - - do_check_false(hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_UNINSTALL)); - addon.uninstall(); - BootstrapMonitor.checkAddonNotStarted(ID); - BootstrapMonitor.checkAddonNotInstalled(ID); - - yield promiseRestartManager(); - - // After uninstall the only enabled addon and restart we should not block. - blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_false(blocked); - - addon2 = yield promiseAddonByID(ID2); - addon2.uninstall(); - - restartManager(); -}); - -// Check that the rollout policy sets work as expected -add_task(function*() { - gAppInfo.browserTabsRemoteAutostart = true; - Services.prefs.setBoolPref("extensions.e10sBlocksEnabling", true); - Services.prefs.setCharPref("extensions.e10s.rollout.policy", "xpcshell-test"); - - // Both 'bootstrap1' and 'bootstrap2' addons are listed in the allowed policy - // set, so they should install and start normally. - yield check_normal(); - - // Check that the two add-ons can be installed together correctly as - // check_normal() only perform checks on bootstrap1. - let install1 = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_1"), resolve)); - let install2 = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap2_1"), resolve)); - yield promiseCompleteAllInstalls([install1, install2]); - - do_check_eq(install1.state, AddonManager.STATE_INSTALLED); - do_check_eq(install2.state, AddonManager.STATE_INSTALLED); - do_check_false(hasFlag(install1.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - do_check_false(hasFlag(install2.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - - let addon = yield promiseAddonByID(ID); - let addon2 = yield promiseAddonByID(ID2); - - do_check_neq(addon, null); - do_check_neq(addon2, null); - - BootstrapMonitor.checkAddonInstalled(ID); - BootstrapMonitor.checkAddonStarted(ID); - - BootstrapMonitor.checkAddonInstalled(ID2); - BootstrapMonitor.checkAddonStarted(ID2); - - yield promiseRestartManager(); - - // After install and restart e10s should not be blocked. - let blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_false(blocked); - - // Check that adding bootstrap2 to the blocklist will trigger a disable of e10s. - Services.prefs.setCharPref("extensions.e10s.rollout.blocklist", ID2); - blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_true(blocked); - - yield promiseRestartManager(); - - // Check that after restarting, e10s continues to be blocked. - blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_true(blocked); - - // Check that uninstalling bootstrap2 (which is in the blocklist) will - // cause e10s to be re-enabled. - addon2 = yield promiseAddonByID(ID2); - do_check_false(hasFlag(addon2.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_UNINSTALL)); - addon2.uninstall(); - BootstrapMonitor.checkAddonNotStarted(ID2); - BootstrapMonitor.checkAddonNotInstalled(ID2); - - yield promiseRestartManager(); - - // After uninstall the blocklisted addon and restart we should not block. - blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_false(blocked); - - - // Let's perform similar checks again, now that bootstrap2 is in the blocklist. - // The bootstrap1 add-on should install and start correctly, but bootstrap2 should not. - addon = yield promiseAddonByID(ID); - addon.uninstall(); - BootstrapMonitor.checkAddonNotStarted(ID); - BootstrapMonitor.checkAddonNotInstalled(ID); - - yield promiseRestartManager(); - - install1 = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_1"), resolve)); - install2 = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap2_1"), resolve)); - yield promiseCompleteAllInstalls([install1, install2]); - - do_check_eq(install1.state, AddonManager.STATE_INSTALLED); - do_check_eq(install2.state, AddonManager.STATE_INSTALLED); - do_check_false(hasFlag(install1.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - do_check_true(hasFlag(install2.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - - addon = yield promiseAddonByID(ID); - addon2 = yield promiseAddonByID(ID2); - - do_check_neq(addon, null); - do_check_eq(addon2, null); - - BootstrapMonitor.checkAddonInstalled(ID); - BootstrapMonitor.checkAddonStarted(ID); - - BootstrapMonitor.checkAddonNotInstalled(ID2); - BootstrapMonitor.checkAddonNotStarted(ID2); - - yield promiseRestartManager(); - - blocked = Services.prefs.getBoolPref("extensions.e10sBlockedByAddons"); - do_check_true(blocked); - - // Clean-up - addon = yield promiseAddonByID(ID); - addon2 = yield promiseAddonByID(ID2); - - addon.uninstall(); - BootstrapMonitor.checkAddonNotStarted(ID); - BootstrapMonitor.checkAddonNotInstalled(ID); - - addon2.uninstall(); - BootstrapMonitor.checkAddonNotStarted(ID2); - BootstrapMonitor.checkAddonNotInstalled(ID2); - - Services.prefs.clearUserPref("extensions.e10s.rollout.policy"); - Services.prefs.clearUserPref("extensions.e10s.rollout.blocklist"); - - yield promiseRestartManager(); -}); - -// The hotfix is unaffected -add_task(function*() { - gAppInfo.browserTabsRemoteAutostart = true; - Services.prefs.setBoolPref("extensions.e10sBlocksEnabling", true); - Services.prefs.setCharPref("extensions.hotfix.id", ID); - Services.prefs.setBoolPref("extensions.hotfix.cert.checkAttributes", false); - - yield check_normal(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_error.js b/toolkit/mozapps/webextensions/test/xpcshell/test_error.js deleted file mode 100644 index 11a465b55..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_error.js +++ /dev/null @@ -1,90 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that various error conditions are handled correctly - -Components.utils.import("resource://gre/modules/Services.jsm"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - startupManager(); - - do_test_pending(); - run_test_1(); -} - -// Checks that a local file validates ok -function run_test_1() { - AddonManager.getInstallForFile(do_get_file("data/unsigned.xpi"), function(install) { - do_check_neq(install, null); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_eq(install.error, 0); - - install.cancel(); - - run_test_2(); - }); -} - -// Checks that a corrupt file shows an error -function run_test_2() { - AddonManager.getInstallForFile(do_get_file("data/corrupt.xpi"), function(install) { - do_check_neq(install, null); - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(install.error, AddonManager.ERROR_CORRUPT_FILE); - - run_test_3(); - }); -} - -// Checks that an empty file shows an error -function run_test_3() { - AddonManager.getInstallForFile(do_get_file("data/empty.xpi"), function(install) { - do_check_neq(install, null); - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(install.error, AddonManager.ERROR_CORRUPT_FILE); - - run_test_4(); - }); -} - -// Checks that a file that doesn't match its hash shows an error -function run_test_4() { - let url = Services.io.newFileURI(do_get_file("data/unsigned.xpi")).spec; - AddonManager.getInstallForURL(url, function(install) { - do_check_neq(install, null); - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(install.error, AddonManager.ERROR_INCORRECT_HASH); - - run_test_5(); - }, "application/x-xpinstall", "sha1:foo"); -} - -// Checks that a file that doesn't exist shows an error -function run_test_5() { - let file = do_get_file("data"); - file.append("missing.xpi"); - AddonManager.getInstallForFile(file, function(install) { - do_check_neq(install, null); - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(install.error, AddonManager.ERROR_NETWORK_FAILURE); - - run_test_6(); - }); -} - -// Checks that an add-on with an illegal ID shows an error -function run_test_6() { - AddonManager.getInstallForFile(do_get_addon("test_bug567173"), function(install) { - do_check_neq(install, null); - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(install.error, AddonManager.ERROR_CORRUPT_FILE); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_experiment.js b/toolkit/mozapps/webextensions/test/xpcshell/test_experiment.js deleted file mode 100644 index 3dcd83da8..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_experiment.js +++ /dev/null @@ -1,131 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ - -var scope = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm"); -const XPIProvider = scope.XPIProvider; -const ID = "experiment1@tests.mozilla.org"; - -var gIsNightly = false; - -function run_test() { - BootstrapMonitor.init(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - startupManager(); - - gIsNightly = isNightlyChannel(); - - run_next_test(); -} - -add_task(function* test_experiment() { - BootstrapMonitor.checkAddonNotInstalled(ID); - BootstrapMonitor.checkAddonNotStarted(ID); - - yield promiseInstallAllFiles([do_get_addon("test_experiment1")]); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID); - - let addon = yield promiseAddonByID(ID); - Assert.ok(addon, "Addon is found."); - - Assert.ok(addon.userDisabled, "Experiments are userDisabled by default."); - Assert.ok(!addon.appDisabled, "Experiments are not appDisabled by compatibility."); - Assert.equal(addon.isActive, false, "Add-on is not active."); - Assert.equal(addon.updateURL, null, "No updateURL for experiments."); - Assert.equal(addon.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DISABLE, - "Background updates are disabled."); - Assert.equal(addon.permissions, AddonManager.PERM_CAN_UNINSTALL + AddonManager.PERM_CAN_ENABLE, - "Permissions are minimal."); - Assert.ok(!(addon.pendingOperations & AddonManager.PENDING_ENABLE), - "Should not be pending enable"); - Assert.ok(!(addon.pendingOperations & AddonManager.PENDING_DISABLE), - "Should not be pending disable"); - - // Setting applyBackgroundUpdates should not work. - addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_ENABLE; - Assert.equal(addon.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DISABLE, - "Setting applyBackgroundUpdates shouldn't do anything."); - - let noCompatibleCalled = false; - let noUpdateCalled = false; - let finishedCalled = false; - - let listener = { - onNoCompatibilityUpdateAvailable: () => { noCompatibleCalled = true; }, - onNoUpdateAvailable: () => { noUpdateCalled = true; }, - onUpdateFinished: () => { finishedCalled = true; }, - }; - - addon.findUpdates(listener, "testing", null, null); - Assert.ok(noCompatibleCalled, "Listener called."); - Assert.ok(noUpdateCalled, "Listener called."); - Assert.ok(finishedCalled, "Listener called."); -}); - -// Changes to userDisabled should not be persisted to the database. -add_task(function* test_userDisabledNotPersisted() { - let addon = yield promiseAddonByID(ID); - Assert.ok(addon, "Add-on is found."); - Assert.ok(addon.userDisabled, "Add-on is user disabled."); - - let promise = promiseAddonEvent("onEnabled"); - addon.userDisabled = false; - let [addon2] = yield promise; - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - Assert.equal(addon2.id, addon.id, "Changed add-on matches expected."); - Assert.equal(addon2.userDisabled, false, "Add-on is no longer user disabled."); - Assert.ok(addon2.isActive, "Add-on is active."); - - Assert.ok(ID in XPIProvider.bootstrappedAddons, - "Experiment add-on listed in XPIProvider bootstrapped list."); - - addon = yield promiseAddonByID(ID); - Assert.ok(addon, "Add-on retrieved."); - Assert.equal(addon.userDisabled, false, "Add-on is still enabled after API retrieve."); - Assert.ok(addon.isActive, "Add-on is still active."); - Assert.ok(!(addon.pendingOperations & AddonManager.PENDING_ENABLE), - "Should not be pending enable"); - Assert.ok(!(addon.pendingOperations & AddonManager.PENDING_DISABLE), - "Should not be pending disable"); - - // Now when we restart the manager the add-on should revert state. - yield promiseRestartManager(); - let persisted = JSON.parse(Services.prefs.getCharPref("extensions.bootstrappedAddons")); - Assert.ok(!(ID in persisted), - "Experiment add-on not persisted to bootstrappedAddons."); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID); - - addon = yield promiseAddonByID(ID); - Assert.ok(addon, "Add-on retrieved."); - Assert.ok(addon.userDisabled, "Add-on is disabled after restart."); - Assert.equal(addon.isActive, false, "Add-on is not active after restart."); - addon.uninstall(); - - BootstrapMonitor.checkAddonNotInstalled(ID); - BootstrapMonitor.checkAddonNotStarted(ID); -}); - -add_task(function* test_checkCompatibility() { - if (gIsNightly) - Services.prefs.setBoolPref("extensions.checkCompatibility.nightly", false); - else - Services.prefs.setBoolPref("extensions.checkCompatibility.1", false); - - yield promiseRestartManager(); - - yield promiseInstallAllFiles([do_get_addon("test_experiment1")]); - let addon = yield promiseAddonByID(ID); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID); - - Assert.ok(addon, "Add-on is found."); - Assert.ok(addon.userDisabled, "Add-on is user disabled."); - Assert.ok(!addon.appDisabled, "Add-on is not app disabled."); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_ext_management.js b/toolkit/mozapps/webextensions/test/xpcshell/test_ext_management.js deleted file mode 100644 index a3b3f477c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_ext_management.js +++ /dev/null @@ -1,137 +0,0 @@ -"use strict"; - -add_task(function* setup() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "48", "48"); - startupManager(); -}); - -/* eslint-disable no-undef */ -// Shared background function for getSelf tests -function backgroundGetSelf() { - browser.management.getSelf().then(extInfo => { - browser.test.sendMessage("management-getSelf", extInfo); - }, error => { - browser.test.notifyFail(`getSelf rejected with error: ${error}`); - }); -} -/* eslint-enable no-undef */ - -add_task(function* test_management_get_self_complete() { - const id = "get_self_test_complete@tests.mozilla.com"; - const permissions = ["management", "cookies"]; - const hostPermissions = ["*://example.org/", "https://foo.example.org/"]; - - let manifest = { - applications: { - gecko: { - id, - update_url: "https://updates.mozilla.com/", - }, - }, - name: "test extension name", - short_name: "test extension short name", - description: "test extension description", - version: "1.0", - homepage_url: "http://www.example.com/", - options_ui: { - "page": "get_self_options.html", - }, - icons: { - "16": "icons/icon-16.png", - "48": "icons/icon-48.png", - }, - permissions: [...permissions, ...hostPermissions], - }; - - let extension = ExtensionTestUtils.loadExtension({ - manifest, - background: backgroundGetSelf, - useAddonManager: "temporary", - }); - yield extension.startup(); - let extInfo = yield extension.awaitMessage("management-getSelf"); - - equal(extInfo.id, id, "getSelf returned the expected id"); - equal(extInfo.installType, "development", "getSelf returned the expected installType"); - for (let prop of ["name", "description", "version"]) { - equal(extInfo[prop], manifest[prop], `getSelf returned the expected ${prop}`); - } - equal(extInfo.shortName, manifest.short_name, "getSelf returned the expected shortName"); - equal(extInfo.mayDisable, true, "getSelf returned the expected value for mayDisable"); - equal(extInfo.enabled, true, "getSelf returned the expected value for enabled"); - equal(extInfo.homepageUrl, manifest.homepage_url, "getSelf returned the expected homepageUrl"); - equal(extInfo.updateUrl, manifest.applications.gecko.update_url, "getSelf returned the expected updateUrl"); - ok(extInfo.optionsUrl.endsWith(manifest.options_ui.page), "getSelf returned the expected optionsUrl"); - for (let [index, size] of Object.keys(manifest.icons).sort().entries()) { - equal(extInfo.icons[index].size, +size, "getSelf returned the expected icon size"); - equal(extInfo.icons[index].url, manifest.icons[size], "getSelf returned the expected icon url"); - } - deepEqual(extInfo.permissions.sort(), permissions.sort(), "getSelf returned the expected permissions"); - deepEqual(extInfo.hostPermissions.sort(), hostPermissions.sort(), "getSelf returned the expected hostPermissions"); - equal(extInfo.installType, "development", "getSelf returned the expected installType"); - yield extension.unload(); -}); - -add_task(function* test_management_get_self_minimal() { - const id = "get_self_test_minimal@tests.mozilla.com"; - - let manifest = { - applications: { - gecko: { - id, - }, - }, - name: "test extension name", - version: "1.0", - }; - - let extension = ExtensionTestUtils.loadExtension({ - manifest, - background: backgroundGetSelf, - useAddonManager: "temporary", - }); - yield extension.startup(); - let extInfo = yield extension.awaitMessage("management-getSelf"); - - equal(extInfo.id, id, "getSelf returned the expected id"); - equal(extInfo.installType, "development", "getSelf returned the expected installType"); - for (let prop of ["name", "version"]) { - equal(extInfo[prop], manifest[prop], `getSelf returned the expected ${prop}`); - } - for (let prop of ["shortName", "description", "optionsUrl"]) { - equal(extInfo[prop], "", `getSelf returned the expected ${prop}`); - } - for (let prop of ["homepageUrl", " updateUrl", "icons"]) { - equal(Reflect.getOwnPropertyDescriptor(extInfo, prop), undefined, `getSelf did not return a ${prop} property`); - } - for (let prop of ["permissions", "hostPermissions"]) { - deepEqual(extInfo[prop], [], `getSelf returned the expected ${prop}`); - } - yield extension.unload(); -}); - -add_task(function* test_management_get_self_permanent() { - const id = "get_self_test_permanent@tests.mozilla.com"; - - let manifest = { - applications: { - gecko: { - id, - }, - }, - name: "test extension name", - version: "1.0", - }; - - let extension = ExtensionTestUtils.loadExtension({ - manifest, - background: backgroundGetSelf, - useAddonManager: "permanent", - }); - yield extension.startup(); - let extInfo = yield extension.awaitMessage("management-getSelf"); - - equal(extInfo.id, id, "getSelf returned the expected id"); - equal(extInfo.installType, "normal", "getSelf returned the expected installType"); - yield extension.unload(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_filepointer.js b/toolkit/mozapps/webextensions/test/xpcshell/test_filepointer.js deleted file mode 100644 index 406489e40..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_filepointer.js +++ /dev/null @@ -1,403 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that various operations with file pointers work and do not affect the -// source files - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon1_2 = { - id: "addon1@tests.mozilla.org", - version: "2.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "1.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); -profileDir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0o755); - -const sourceDir = gProfD.clone(); -sourceDir.append("source"); - -Components.utils.import("resource://testing-common/httpd.js"); -var testserver; - -function writePointer(aId, aName) { - let file = profileDir.clone(); - file.append(aName ? aName : aId); - - let target = sourceDir.clone(); - target.append(do_get_expected_addon_name(aId)); - - var fos = AM_Cc["@mozilla.org/network/file-output-stream;1"]. - createInstance(AM_Ci.nsIFileOutputStream); - fos.init(file, - FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_TRUNCATE, - FileUtils.PERMS_FILE, 0); - fos.write(target.path, target.path.length); - fos.close(); -} - -function writeRelativePointer(aId, aName) { - let file = profileDir.clone(); - file.append(aName ? aName : aId); - - let absTarget = sourceDir.clone(); - absTarget.append(do_get_expected_addon_name(aId)); - - var relTarget = absTarget.getRelativeDescriptor(profileDir); - - var fos = AM_Cc["@mozilla.org/network/file-output-stream;1"]. - createInstance(AM_Ci.nsIFileOutputStream); - fos.init(file, - FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_TRUNCATE, - FileUtils.PERMS_FILE, 0); - fos.write(relTarget, relTarget.length); - fos.close(); -} - -function run_test() { - // pointer files only work with unpacked directories - if (Services.prefs.getBoolPref("extensions.alwaysUnpack") == false) - return; - - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - // Create and configure the HTTP server. - testserver = new HttpServer(); - testserver.registerDirectory("/data/", do_get_file("data")); - testserver.registerDirectory("/addons/", do_get_file("addons")); - testserver.start(-1); - gPort = testserver.identity.primaryPort; - - run_test_1(); -} - -function end_test() { - testserver.stop(do_test_finished); -} - -// Tests that installing a new add-on by pointer works -function run_test_1() { - writeInstallRDFForExtension(addon1, sourceDir); - writePointer(addon1.id); - - startupManager(); - - AddonManager.getAddonByID(addon1.id, function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - - let file = a1.getResourceURI().QueryInterface(AM_Ci.nsIFileURL).file; - do_check_eq(file.parent.path, sourceDir.path); - - let rootUri = do_get_addon_root_uri(sourceDir, addon1.id); - let uri = a1.getResourceURI("/"); - do_check_eq(uri.spec, rootUri); - uri = a1.getResourceURI("install.rdf"); - do_check_eq(uri.spec, rootUri + "install.rdf"); - - // Check that upgrade is disabled for addons installed by file-pointers. - do_check_eq(a1.permissions & AddonManager.PERM_CAN_UPGRADE, 0); - run_test_2(); - }); -} - -// Tests that installing the addon from some other source doesn't clobber -// the original sources -function run_test_2() { - prepare_test({}, [ - "onNewInstall", - ]); - - let url = "http://localhost:" + gPort + "/addons/test_filepointer.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], callback_soon(check_test_2)); - - install.install(); - }, "application/x-xpinstall"); -} - -function check_test_2() { - restartManager(); - - AddonManager.getAddonByID(addon1.id, function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - - let file = a1.getResourceURI().QueryInterface(AM_Ci.nsIFileURL).file; - do_check_eq(file.parent.path, profileDir.path); - - let rootUri = do_get_addon_root_uri(profileDir, addon1.id); - let uri = a1.getResourceURI("/"); - do_check_eq(uri.spec, rootUri); - uri = a1.getResourceURI("install.rdf"); - do_check_eq(uri.spec, rootUri + "install.rdf"); - - let source = sourceDir.clone(); - source.append(addon1.id); - do_check_true(source.exists()); - - a1.uninstall(); - - do_execute_soon(run_test_3); - }); -} - -// Tests that uninstalling doesn't clobber the original sources -function run_test_3() { - restartManager(); - - writePointer(addon1.id); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - - a1.uninstall(); - - restartManager(); - - let source = sourceDir.clone(); - source.append(addon1.id); - do_check_true(source.exists()); - - do_execute_soon(run_test_4); - })); -} - -// Tests that misnaming a pointer doesn't clobber the sources -function run_test_4() { - writePointer("addon2@tests.mozilla.org", addon1.id); - - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], function([a1, a2]) { - do_check_eq(a1, null); - do_check_eq(a2, null); - - let source = sourceDir.clone(); - source.append(addon1.id); - do_check_true(source.exists()); - - let pointer = profileDir.clone(); - pointer.append("addon2@tests.mozilla.org"); - do_check_false(pointer.exists()); - - do_execute_soon(run_test_5); - }); -} - -// Tests that changing the ID of an existing add-on doesn't clobber the sources -function run_test_5() { - var dest = writeInstallRDFForExtension(addon1, sourceDir); - // Make sure the modification time changes enough to be detected. - setExtensionModifiedTime(dest, dest.lastModifiedTime - 5000); - writePointer(addon1.id); - - restartManager(); - - AddonManager.getAddonByID(addon1.id, callback_soon(function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - - writeInstallRDFForExtension(addon2, sourceDir, addon1.id); - - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], function([a1_2, a2_2]) { - do_check_eq(a1_2, null); - do_check_eq(a2_2, null); - - let source = sourceDir.clone(); - source.append(addon1.id); - do_check_true(source.exists()); - - let pointer = profileDir.clone(); - pointer.append(addon1.id); - do_check_false(pointer.exists()); - - do_execute_soon(run_test_6); - }); - })); -} - -// Removing the pointer file should uninstall the add-on -function run_test_6() { - var dest = writeInstallRDFForExtension(addon1, sourceDir); - // Make sure the modification time changes enough to be detected in run_test_8. - setExtensionModifiedTime(dest, dest.lastModifiedTime - 5000); - writePointer(addon1.id); - - restartManager(); - - AddonManager.getAddonByID(addon1.id, callback_soon(function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - - let pointer = profileDir.clone(); - pointer.append(addon1.id); - pointer.remove(false); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1_2) { - do_check_eq(a1_2, null); - - do_execute_soon(run_test_7); - }); - })); -} - -// Removing the pointer file and replacing it with a directory should work -function run_test_7() { - writePointer(addon1.id); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - - let pointer = profileDir.clone(); - pointer.append(addon1.id); - pointer.remove(false); - - writeInstallRDFForExtension(addon1_2, profileDir); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1_2) { - do_check_neq(a1_2, null); - do_check_eq(a1_2.version, "2.0"); - - a1_2.uninstall(); - - do_execute_soon(run_test_8); - }); - })); -} - -// Changes to the source files should be detected -function run_test_8() { - restartManager(); - - writePointer(addon1.id); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - - writeInstallRDFForExtension(addon1_2, sourceDir); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1_2) { - do_check_neq(a1_2, null); - do_check_eq(a1_2.version, "2.0"); - - a1_2.uninstall(); - - do_execute_soon(run_test_9); - }); - })); -} - -// Removing the add-on the pointer file points at should uninstall the add-on -function run_test_9() { - restartManager(); - - var dest = writeInstallRDFForExtension(addon1, sourceDir); - writePointer(addon1.id); - - restartManager(); - - AddonManager.getAddonByID(addon1.id, callback_soon(function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - - dest.remove(true); - - restartManager(); - - AddonManager.getAddonByID(addon1.id, function(a1_2) { - do_check_eq(a1_2, null); - - let pointer = profileDir.clone(); - pointer.append(addon1.id); - do_check_false(pointer.exists()); - - do_execute_soon(run_test_10); - }); - })); -} - -// Tests that installing a new add-on by pointer with a relative path works -function run_test_10() { - writeInstallRDFForExtension(addon1, sourceDir); - writeRelativePointer(addon1.id); - - restartManager(); - - AddonManager.getAddonByID(addon1.id, function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - - let file = a1.getResourceURI().QueryInterface(AM_Ci.nsIFileURL).file; - do_check_eq(file.parent.path, sourceDir.path); - - let rootUri = do_get_addon_root_uri(sourceDir, addon1.id); - let uri = a1.getResourceURI("/"); - do_check_eq(uri.spec, rootUri); - uri = a1.getResourceURI("install.rdf"); - do_check_eq(uri.spec, rootUri + "install.rdf"); - - // Check that upgrade is disabled for addons installed by file-pointers. - do_check_eq(a1.permissions & AddonManager.PERM_CAN_UPGRADE, 0); - end_test(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_fuel.js b/toolkit/mozapps/webextensions/test/xpcshell/test_fuel.js deleted file mode 100644 index 0c3035f76..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_fuel.js +++ /dev/null @@ -1,165 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -// This just verifies that FUEL integrates to the add-ons manager - -var testdata = { - dummyid: "fuel-dummy-extension@mozilla.org", - dummyname: "Dummy Extension", - inspectorid: "addon1@tests.mozilla.org", - inspectorname: "Test Addon", - missing: "fuel.fuel-test-missing", - dummy: "fuel.fuel-test" -}; - -var Application = null - -function run_test() { - var cm = AM_Cc["@mozilla.org/categorymanager;1"]. - getService(AM_Ci.nsICategoryManager); - - try { - var contract = cm.getCategoryEntry("JavaScript-global-privileged-property", - "Application"); - Application = AM_Cc[contract].getService(AM_Ci.extIApplication); - } - catch (e) { - // This application does not include a FUEL variant. - return; - } - - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - const profileDir = gProfD.clone(); - profileDir.append("extensions"); - - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test Addon", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - }, profileDir); - - startupManager(); - - Application.getExtensions(function(extensions) { - // test to see if the extensions object is available - do_check_neq(extensions, null); - - // test to see if a non-existant extension exists - do_check_true(!extensions.has(testdata.dummyid)); - - // test to see if an extension exists - do_check_true(extensions.has(testdata.inspectorid)); - - var inspector = extensions.get(testdata.inspectorid); - do_check_eq(inspector.id, testdata.inspectorid); - do_check_eq(inspector.name, testdata.inspectorname); - do_check_eq(inspector.version, "1.0"); - do_check_true(inspector.firstRun, true); - do_check_true(inspector.enabled); - - // test to see if extension find works - do_check_eq(extensions.all.length, 1); - // STORAGE TESTING - // Make sure the we are given the same extension (cached) so things like .storage work right - inspector.storage.set("test", "simple check"); - do_check_true(inspector.storage.has("test")); - - var inspector2 = extensions.get(testdata.inspectorid); - do_check_eq(inspector2.id, testdata.inspectorid); - do_check_true(inspector.storage.has("test")); - do_check_eq(inspector2.storage.get("test", "cache"), inspector.storage.get("test", "original")); - - inspector.events.addListener("disable", onGenericEvent); - inspector.events.addListener("enable", onGenericEvent); - inspector.events.addListener("uninstall", onGenericEvent); - inspector.events.addListener("cancel", onGenericEvent); - - AddonManager.getAddonByID(testdata.inspectorid, function(a) { - a.userDisabled = true; - - do_check_eq(gLastEvent, "disable"); - - // enabling after a disable will only fire a 'cancel' event - // see - http://mxr.mozilla.org/seamonkey/source/toolkit/mozapps/extensions/src/nsExtensionManager.js.in#5216 - a.userDisabled = false; - do_check_eq(gLastEvent, "cancel"); - - a.uninstall(); - do_check_eq(gLastEvent, "uninstall"); - - a.cancelUninstall(); - do_check_eq(gLastEvent, "cancel"); - - // PREF TESTING - // Reset the install event preference, so that we can test it again later - // inspector.prefs.get("install-event-fired").reset(); - - // test the value of the preference root - do_check_eq(extensions.all[0].prefs.root, "extensions.addon1@tests.mozilla.org."); - - // test getting nonexistent values - var itemValue = inspector.prefs.getValue(testdata.missing, "default"); - do_check_eq(itemValue, "default"); - - do_check_eq(inspector.prefs.get(testdata.missing), null); - - // test setting and getting a value - inspector.prefs.setValue(testdata.dummy, "dummy"); - itemValue = inspector.prefs.getValue(testdata.dummy, "default"); - do_check_eq(itemValue, "dummy"); - - // test for overwriting an existing value - inspector.prefs.setValue(testdata.dummy, "smarty"); - itemValue = inspector.prefs.getValue(testdata.dummy, "default"); - do_check_eq(itemValue, "smarty"); - - // test setting and getting a value - inspector.prefs.get(testdata.dummy).value = "dummy2"; - itemValue = inspector.prefs.get(testdata.dummy).value; - do_check_eq(itemValue, "dummy2"); - - // test resetting a pref [since there is no default value, the pref should disappear] - inspector.prefs.get(testdata.dummy).reset(); - itemValue = inspector.prefs.getValue(testdata.dummy, "default"); - do_check_eq(itemValue, "default"); - - // test to see if a non-existant property exists - do_check_true(!inspector.prefs.has(testdata.dummy)); - - inspector.prefs.events.addListener("change", onPrefChange); - inspector.prefs.setValue("fuel.fuel-test", "change event"); - }); - }); -} - -var gLastEvent; -function onGenericEvent(event) { - gLastEvent = event.type; -} - -function onPrefChange(evt) { - Application.getExtensions(function(extensions) { - var inspector3 = extensions.get(testdata.inspectorid); - - do_check_eq(evt.data, testdata.dummy); - inspector3.prefs.events.removeListener("change", onPrefChange); - - inspector3.prefs.get("fuel.fuel-test").events.addListener("change", onPrefChange2); - inspector3.prefs.setValue("fuel.fuel-test", "change event2"); - }); -} - -function onPrefChange2(evt) { - do_check_eq(evt.data, testdata.dummy); - - do_execute_soon(do_test_finished); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_general.js b/toolkit/mozapps/webextensions/test/xpcshell/test_general.js deleted file mode 100644 index e69b13314..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_general.js +++ /dev/null @@ -1,58 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This just verifies that the EM can actually startup and shutdown a few times -// without any errors - -// We have to look up how many add-ons are present since there will be plugins -// etc. detected -var gCount; - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - var count = 0; - startupManager(); - AddonManager.getAddonsByTypes(null, function(list) { - gCount = list.length; - - do_execute_soon(run_test_1); - }); -} - -function run_test_1() { - restartManager(); - - AddonManager.getAddonsByTypes(null, function(addons) { - do_check_eq(gCount, addons.length); - - AddonManager.getAddonsWithOperationsByTypes(null, function(pendingAddons) { - do_check_eq(0, pendingAddons.length); - - do_execute_soon(run_test_2); - }); - }); -} - -function run_test_2() { - shutdownManager(); - - startupManager(false); - - AddonManager.getAddonsByTypes(null, function(addons) { - do_check_eq(gCount, addons.length); - - do_execute_soon(run_test_3); - }); -} - -function run_test_3() { - restartManager(); - - AddonManager.getAddonsByTypes(null, callback_soon(function(addons) { - do_check_eq(gCount, addons.length); - do_test_finished(); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_getresource.js b/toolkit/mozapps/webextensions/test/xpcshell/test_getresource.js deleted file mode 100644 index c83638d54..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_getresource.js +++ /dev/null @@ -1,94 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// install.rdf size, icon.png size, subfile.txt size -const ADDON_SIZE = 672 + 15 + 26; - -// This verifies the functionality of getResourceURI -// There are two cases - with a filename it returns an nsIFileURL to the filename -// and with no parameters, it returns an nsIFileURL to the root of the addon - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - startupManager(); - - AddonManager.getInstallForFile(do_get_addon("test_getresource"), function(aInstall) { - do_check_true(aInstall.addon.hasResource("install.rdf")); - do_check_eq(aInstall.addon.getResourceURI().spec, aInstall.sourceURI.spec); - - do_check_true(aInstall.addon.hasResource("icon.png")); - do_check_eq(aInstall.addon.getResourceURI("icon.png").spec, - "jar:" + aInstall.sourceURI.spec + "!/icon.png"); - - do_check_false(aInstall.addon.hasResource("missing.txt")); - - do_check_true(aInstall.addon.hasResource("subdir/subfile.txt")); - do_check_eq(aInstall.addon.getResourceURI("subdir/subfile.txt").spec, - "jar:" + aInstall.sourceURI.spec + "!/subdir/subfile.txt"); - - do_check_false(aInstall.addon.hasResource("subdir/missing.txt")); - - do_check_eq(aInstall.addon.size, ADDON_SIZE); - - completeAllInstalls([aInstall], function() { - restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - - let addonDir = gProfD.clone(); - addonDir.append("extensions"); - let rootUri = do_get_addon_root_uri(addonDir, "addon1@tests.mozilla.org"); - - let uri = a1.getResourceURI("/"); - do_check_eq(uri.spec, rootUri); - - let file = rootUri + "install.rdf"; - do_check_true(a1.hasResource("install.rdf")); - uri = a1.getResourceURI("install.rdf") - do_check_eq(uri.spec, file); - - file = rootUri + "icon.png"; - do_check_true(a1.hasResource("icon.png")); - uri = a1.getResourceURI("icon.png") - do_check_eq(uri.spec, file); - - do_check_false(a1.hasResource("missing.txt")); - - file = rootUri + "subdir/subfile.txt"; - do_check_true(a1.hasResource("subdir/subfile.txt")); - uri = a1.getResourceURI("subdir/subfile.txt") - do_check_eq(uri.spec, file); - - do_check_false(a1.hasResource("subdir/missing.txt")); - - do_check_eq(a1.size, ADDON_SIZE); - - a1.uninstall(); - - try { - // hasResource should never throw an exception. - do_check_false(a1.hasResource("icon.png")); - } catch (e) { - do_check_true(false); - } - - AddonManager.getInstallForFile(do_get_addon("test_getresource"), - callback_soon(function(aInstall_2) { - do_check_false(a1.hasResource("icon.png")); - do_check_true(aInstall_2.addon.hasResource("icon.png")); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(newa1) { - do_check_eq(newa1, null); - - do_execute_soon(do_test_finished); - }); - })); - }); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Device.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Device.js deleted file mode 100644 index 9b0eb54a7..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Device.js +++ /dev/null @@ -1,96 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether a machine which differs only on device ID, but otherwise -// exactly matches the blacklist entry, is not blocked. -// Uses test_gfxBlacklist.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - switch (get_platform()) { - case "WINNT": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x9876"); - gfxInfo.spoofDriverVersion("8.52.322.2201"); - // Windows 7 - gfxInfo.spoofOSVersion(0x60001); - break; - case "Linux": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x9876"); - break; - case "Darwin": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x9876"); - gfxInfo.spoofOSVersion(0x1090); - break; - case "Android": - gfxInfo.spoofVendorID("abcd"); - gfxInfo.spoofDeviceID("aabb"); - gfxInfo.spoofDriverVersion("5"); - break; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_CANVAS2D_ACCELERATION); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_DriverNew.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_DriverNew.js deleted file mode 100644 index f8b783ff2..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_DriverNew.js +++ /dev/null @@ -1,92 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether a new-enough driver bypasses the blacklist, even if the rest of -// the attributes match the blacklist entry. -// Uses test_gfxBlacklist.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - switch (get_platform()) { - case "WINNT": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofDriverVersion("8.52.322.2202"); - // Windows 7 - gfxInfo.spoofOSVersion(0x60001); - break; - case "Linux": - // We don't support driver versions on Linux. - do_test_finished(); - return; - case "Darwin": - // We don't support driver versions on Darwin. - do_test_finished(); - return; - case "Android": - gfxInfo.spoofVendorID("abcd"); - gfxInfo.spoofDeviceID("wxyz"); - gfxInfo.spoofDriverVersion("6"); - break; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Equal_DriverNew.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Equal_DriverNew.js deleted file mode 100644 index 1b3410e87..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Equal_DriverNew.js +++ /dev/null @@ -1,123 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether a machine which is newer than the equal -// blacklist entry is allowed. -// Uses test_gfxBlacklist.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - switch (get_platform()) { - case "WINNT": - gfxInfo.spoofVendorID("0xdcdc"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofDriverVersion("8.52.322.1112"); - // Windows 7 - gfxInfo.spoofOSVersion(0x60001); - break; - case "Linux": - // We don't support driver versions on Linux. - do_test_finished(); - return; - case "Darwin": - // We don't support driver versions on OS X. - do_test_finished(); - return; - case "Android": - gfxInfo.spoofVendorID("dcdc"); - gfxInfo.spoofDeviceID("uiop"); - gfxInfo.spoofDriverVersion("6"); - break; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "15.0", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - // Make sure unrelated features aren't affected - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_11_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_OPENGL_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_11_ANGLE); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_HARDWARE_VIDEO_DECODING); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_WEBRTC_HW_ACCELERATION); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_WEBRTC_HW_ACCELERATION_DECODE); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_WEBRTC_HW_ACCELERATION_ENCODE); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_WEBGL_MSAA); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_WEBGL_ANGLE); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_CANVAS2D_ACCELERATION); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Equal_DriverOld.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Equal_DriverOld.js deleted file mode 100644 index 248c9e7f6..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Equal_DriverOld.js +++ /dev/null @@ -1,93 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether a machine which is older than the equal -// blacklist entry is correctly allowed. -// Uses test_gfxBlacklist.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - switch (get_platform()) { - case "WINNT": - gfxInfo.spoofVendorID("0xdcdc"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofDriverVersion("8.52.322.1110"); - // Windows 7 - gfxInfo.spoofOSVersion(0x60001); - break; - case "Linux": - // We don't support driver versions on Linux. - do_test_finished(); - return; - case "Darwin": - // We don't support driver versions on Darwin. - do_test_finished(); - return; - case "Android": - gfxInfo.spoofVendorID("dcdc"); - gfxInfo.spoofDeviceID("uiop"); - gfxInfo.spoofDriverVersion("4"); - break; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - // Make sure unrelated features aren't affected - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Equal_OK.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Equal_OK.js deleted file mode 100644 index 8b8928bb8..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Equal_OK.js +++ /dev/null @@ -1,93 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether a machine which exactly matches the equal -// blacklist entry is successfully blocked. -// Uses test_gfxBlacklist.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - switch (get_platform()) { - case "WINNT": - gfxInfo.spoofVendorID("0xdcdc"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofDriverVersion("8.52.322.1111"); - // Windows 7 - gfxInfo.spoofOSVersion(0x60001); - break; - case "Linux": - // We don't support driver versions on Linux. - do_test_finished(); - return; - case "Darwin": - // We don't support driver versions on Darwin. - do_test_finished(); - return; - case "Android": - gfxInfo.spoofVendorID("dcdc"); - gfxInfo.spoofDeviceID("uiop"); - gfxInfo.spoofDriverVersion("5"); - break; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - // Make sure unrelated features aren't affected - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_GTE_DriverOld.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_GTE_DriverOld.js deleted file mode 100644 index bd5858023..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_GTE_DriverOld.js +++ /dev/null @@ -1,93 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether a machine which is lower than the greater-than-or-equal -// blacklist entry is allowed. -// Uses test_gfxBlacklist.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - switch (get_platform()) { - case "WINNT": - gfxInfo.spoofVendorID("0xabab"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofDriverVersion("8.52.322.2201"); - // Windows 7 - gfxInfo.spoofOSVersion(0x60001); - break; - case "Linux": - // We don't support driver versions on Linux. - do_test_finished(); - return; - case "Darwin": - // We don't support driver versions on Darwin. - do_test_finished(); - return; - case "Android": - gfxInfo.spoofVendorID("abab"); - gfxInfo.spoofDeviceID("ghjk"); - gfxInfo.spoofDriverVersion("6"); - break; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - // Make sure unrelated features aren't affected - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_GTE_OK.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_GTE_OK.js deleted file mode 100644 index b5c5ed2a6..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_GTE_OK.js +++ /dev/null @@ -1,93 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether a machine which exactly matches the greater-than-or-equal -// blacklist entry is successfully blocked. -// Uses test_gfxBlacklist.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - switch (get_platform()) { - case "WINNT": - gfxInfo.spoofVendorID("0xabab"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofDriverVersion("8.52.322.2202"); - // Windows 7 - gfxInfo.spoofOSVersion(0x60001); - break; - case "Linux": - // We don't support driver versions on Linux. - do_test_finished(); - return; - case "Darwin": - // We don't support driver versions on Darwin. - do_test_finished(); - return; - case "Android": - gfxInfo.spoofVendorID("abab"); - gfxInfo.spoofDeviceID("ghjk"); - gfxInfo.spoofDriverVersion("7"); - break; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - // Make sure unrelated features aren't affected - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_No_Comparison.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_No_Comparison.js deleted file mode 100644 index ff37e6676..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_No_Comparison.js +++ /dev/null @@ -1,89 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether a machine which exactly matches the blacklist entry is -// successfully blocked. -// Uses test_gfxBlacklist.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x6666"); - - // Spoof the OS version so it matches the test file. - switch (get_platform()) { - case "WINNT": - // Windows 7 - gfxInfo.spoofOSVersion(0x60001); - break; - case "Linux": - break; - case "Darwin": - gfxInfo.spoofOSVersion(0x1090); - break; - case "Android": - break; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - var driverVersion = gfxInfo.adapterDriverVersion; - if (driverVersion) { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DEVICE); - - // Make sure unrelated features aren't affected - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - } - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OK.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OK.js deleted file mode 100644 index 72b2a2bdc..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OK.js +++ /dev/null @@ -1,94 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether a machine which exactly matches the blacklist entry is -// successfully blocked. -// Uses test_gfxBlacklist.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - switch (get_platform()) { - case "WINNT": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofDriverVersion("8.52.322.2201"); - // Windows 7 - gfxInfo.spoofOSVersion(0x60001); - break; - case "Linux": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - break; - case "Darwin": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofOSVersion(0x1090); - break; - case "Android": - gfxInfo.spoofVendorID("abcd"); - gfxInfo.spoofDeviceID("asdf"); - gfxInfo.spoofDriverVersion("5"); - break; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - // Make sure unrelated features aren't affected - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OS.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OS.js deleted file mode 100644 index fa0deb19a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OS.js +++ /dev/null @@ -1,93 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether a machine which differs only on OS version, but otherwise -// exactly matches the blacklist entry, is not blocked. -// Uses test_gfxBlacklist.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - switch (get_platform()) { - case "WINNT": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofDriverVersion("8.52.322.2201"); - // Windows Vista - gfxInfo.spoofOSVersion(0x60000); - break; - case "Linux": - // We don't have any OS versions on Linux, just "Linux". - do_test_finished(); - return; - case "Darwin": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofOSVersion(0x1080); - break; - case "Android": - // On Android, the driver version is used as the OS version (because - // there's so many of them). - do_test_finished(); - return; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OSVersion_match.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OSVersion_match.js deleted file mode 100644 index f01329b45..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OSVersion_match.js +++ /dev/null @@ -1,95 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether new OS versions are matched properly. -// Uses test_gfxBlacklist_OS.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist_OSVersion.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - gfxInfo.spoofDriverVersion("8.52.322.2201"); - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - - // Spoof the version of the OS appropriately to test the test file. - switch (get_platform()) { - case "WINNT": - // Windows 8 - gfxInfo.spoofOSVersion(0x60002); - break; - case "Linux": - // We don't have any OS versions on Linux, just "Linux". - do_test_finished(); - return; - case "Darwin": - // Mountain Lion - gfxInfo.spoofOSVersion(0x1090); - break; - case "Android": - // On Android, the driver version is used as the OS version (because - // there's so many of them). - do_test_finished(); - return; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - if (get_platform() == "WINNT") { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - } else if (get_platform() == "Darwin") { - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_OPENGL_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - } - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist_OSVersion.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OSVersion_mismatch_DriverVersion.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OSVersion_mismatch_DriverVersion.js deleted file mode 100644 index 4b1069dc6..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OSVersion_mismatch_DriverVersion.js +++ /dev/null @@ -1,95 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether blocklists specifying new OSeswcorrectly don't block if driver -// versions are appropriately up-to-date. -// Uses test_gfxBlacklist_OS.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist_OSVersion.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - gfxInfo.spoofDriverVersion("8.52.322.2202"); - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - - // Spoof the version of the OS appropriately to test the test file. - switch (get_platform()) { - case "WINNT": - // Windows 8 - gfxInfo.spoofOSVersion(0x60002); - break; - case "Linux": - // We don't have any OS versions on Linux, just "Linux". - do_test_finished(); - return; - case "Darwin": - gfxInfo.spoofOSVersion(0x1080); - break; - case "Android": - // On Android, the driver version is used as the OS version (because - // there's so many of them). - do_test_finished(); - return; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - if (get_platform() == "WINNT") { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - } else if (get_platform() == "Darwin") { - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_OPENGL_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - } - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist_OSVersion.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OSVersion_mismatch_OSVersion.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OSVersion_mismatch_OSVersion.js deleted file mode 100644 index 0c5a0dcb7..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_OSVersion_mismatch_OSVersion.js +++ /dev/null @@ -1,96 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether old OS versions are not matched when the blacklist contains -// only new OS versions. -// Uses test_gfxBlacklist_OS.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist_OSVersion.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - gfxInfo.spoofDriverVersion("8.52.322.2201"); - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - - // Spoof the version of the OS appropriately to test the test file. - switch (get_platform()) { - case "WINNT": - // Windows 7 - gfxInfo.spoofOSVersion(0x60001); - break; - case "Linux": - // We don't have any OS versions on Linux, just "Linux". - do_test_finished(); - return; - case "Darwin": - // Lion - gfxInfo.spoofOSVersion(0x1080); - break; - case "Android": - // On Android, the driver version is used as the OS version (because - // there's so many of them). - do_test_finished(); - return; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - if (get_platform() == "WINNT") { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - } else if (get_platform() == "Darwin") { - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_OPENGL_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - } - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist_OSVersion.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Vendor.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Vendor.js deleted file mode 100644 index 868c48149..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Vendor.js +++ /dev/null @@ -1,93 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This should eventually be moved to head_addons.js -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether a machine which differs only on vendor, but otherwise -// exactly matches the blacklist entry, is not blocked. -// Uses test_gfxBlacklist.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - switch (get_platform()) { - case "WINNT": - gfxInfo.spoofVendorID("0xdcba"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofDriverVersion("8.52.322.2201"); - // Windows 7 - gfxInfo.spoofOSVersion(0x60001); - break; - case "Linux": - gfxInfo.spoofVendorID("0xdcba"); - gfxInfo.spoofDeviceID("0x1234"); - break; - case "Darwin": - gfxInfo.spoofVendorID("0xdcba"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofOSVersion(0x1090); - break; - case "Android": - gfxInfo.spoofVendorID("dcba"); - gfxInfo.spoofDeviceID("asdf"); - gfxInfo.spoofDriverVersion("5"); - break; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Version.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Version.js deleted file mode 100644 index 48174b772..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_Version.js +++ /dev/null @@ -1,145 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; - -// Test whether a machine which exactly matches the blacklist entry is -// successfully blocked. -// Uses test_gfxBlacklist_AllOS.xml - -Cu.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist_AllOS.xml", gTestserver); - -function get_platform() { - var xulRuntime = Cc["@mozilla.org/xre/app-info;1"] - .getService(Ci.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - switch (get_platform()) { - case "WINNT": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofDriverVersion("8.52.322.2201"); - // Windows 7 - gfxInfo.spoofOSVersion(0x60001); - break; - case "Linux": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - break; - case "Darwin": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofOSVersion(0x1090); - break; - case "Android": - gfxInfo.spoofVendorID("abcd"); - gfxInfo.spoofDeviceID("asdf"); - gfxInfo.spoofDriverVersion("5"); - break; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "15.0", "8"); - startupManager(); - - do_test_pending(); - - function checkBlacklist() - { - var failureId = {}; - var status; - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - do_check_eq(failureId.value, "FEATURE_FAILURE_DL_BLACKLIST_g1"); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - do_check_eq(failureId.value, "FEATURE_FAILURE_DL_BLACKLIST_g2"); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_10_LAYERS, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - do_check_eq(failureId.value, ""); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_10_1_LAYERS, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - do_check_eq(failureId.value, ""); - - // These four pass on Linux independent of the blocklist XML file as the - // try machines don't have support. - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_OPENGL_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_WEBGL_OPENGL, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - do_check_eq(failureId.value, "FEATURE_FAILURE_DL_BLACKLIST_g11"); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_WEBGL_ANGLE, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - do_check_eq(failureId.value, "FEATURE_FAILURE_DL_BLACKLIST_NO_ID"); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_WEBGL_MSAA, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_STAGEFRIGHT, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_WEBRTC_HW_ACCELERATION, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_WEBRTC_HW_ACCELERATION_ENCODE, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_WEBRTC_HW_ACCELERATION_DECODE, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_11_LAYERS, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_HARDWARE_VIDEO_DECODING, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_11_ANGLE, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DX_INTEROP2, failureId); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(function(aSubject, aTopic, aData) { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(checkBlacklist); - }, "blocklist-data-gfxItems", false); - - load_blocklist("test_gfxBlacklist_AllOS.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_prefs.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_prefs.js deleted file mode 100644 index fbb992879..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gfxBlacklist_prefs.js +++ /dev/null @@ -1,135 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -var { classes: Cc, interfaces: Ci } = Components; - -// Test whether the blacklist succesfully adds and removes the prefs that store -// its decisions when the remote blacklist is changed. -// Uses test_gfxBlacklist.xml and test_gfxBlacklist2.xml - -Components.utils.import("resource://testing-common/httpd.js"); - -var gTestserver = new HttpServer(); -gTestserver.start(-1); -gPort = gTestserver.identity.primaryPort; -mapFile("/data/test_gfxBlacklist.xml", gTestserver); -mapFile("/data/test_gfxBlacklist2.xml", gTestserver); - -function get_platform() { - var xulRuntime = Components.classes["@mozilla.org/xre/app-info;1"] - .getService(Components.interfaces.nsIXULRuntime); - return xulRuntime.OS; -} - -function load_blocklist(file) { - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + - gPort + "/data/" + file); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); -} - -// Performs the initial setup -function run_test() { - try { - var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); - } catch (e) { - do_test_finished(); - return; - } - - // We can't do anything if we can't spoof the stuff we need. - if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) { - do_test_finished(); - return; - } - - gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug); - - // Set the vendor/device ID, etc, to match the test file. - switch (get_platform()) { - case "WINNT": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofDriverVersion("8.52.322.2201"); - // Windows 7 - gfxInfo.spoofOSVersion(0x60001); - break; - case "Linux": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - break; - case "Darwin": - gfxInfo.spoofVendorID("0xabcd"); - gfxInfo.spoofDeviceID("0x1234"); - gfxInfo.spoofOSVersion(0x1090); - break; - case "Android": - gfxInfo.spoofVendorID("abcd"); - gfxInfo.spoofDeviceID("asdf"); - gfxInfo.spoofDriverVersion("5"); - break; - } - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); - startupManager(); - - do_test_pending(); - - function blacklistAdded(aSubject, aTopic, aData) - { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(ensureBlacklistSet); - } - function ensureBlacklistSet() - { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - // Make sure unrelated features aren't affected - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - var prefs = Cc["@mozilla.org/preferences-service;1"]. - getService(Ci.nsIPrefBranch); - do_check_eq(prefs.getIntPref("gfx.blacklist.direct2d"), - Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION); - - Services.obs.removeObserver(blacklistAdded, "blocklist-data-gfxItems"); - Services.obs.addObserver(blacklistRemoved, "blocklist-data-gfxItems", false); - load_blocklist("test_gfxBlacklist2.xml"); - } - - function blacklistRemoved(aSubject, aTopic, aData) - { - // If we wait until after we go through the event loop, gfxInfo is sure to - // have processed the gfxItems event. - do_execute_soon(ensureBlacklistUnset); - } - function ensureBlacklistUnset() - { - var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - // Make sure unrelated features aren't affected - status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS); - do_check_eq(status, Ci.nsIGfxInfo.FEATURE_STATUS_OK); - - var prefs = Cc["@mozilla.org/preferences-service;1"]. - getService(Ci.nsIPrefBranch); - var exists = false; - try { - prefs.getIntPref("gfx.blacklist.direct2d"); - exists = true; - } catch (e) {} - - do_check_false(exists); - - gTestserver.stop(do_test_finished); - } - - Services.obs.addObserver(blacklistAdded, "blocklist-data-gfxItems", false); - load_blocklist("test_gfxBlacklist.xml"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_gmpProvider.js b/toolkit/mozapps/webextensions/test/xpcshell/test_gmpProvider.js deleted file mode 100644 index 545d7d666..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_gmpProvider.js +++ /dev/null @@ -1,416 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ - -"use strict"; - -var {classes: Cc, interfaces: Ci, utils: Cu} = Components; -var GMPScope = Cu.import("resource://gre/modules/addons/GMPProvider.jsm"); -Cu.import("resource://gre/modules/AppConstants.jsm"); -Cu.import("resource://gre/modules/UpdateUtils.jsm"); - -XPCOMUtils.defineLazyGetter(this, "pluginsBundle", - () => Services.strings.createBundle("chrome://global/locale/plugins.properties")); - -XPCOMUtils.defineLazyModuleGetter(this, "FileUtils", - "resource://gre/modules/FileUtils.jsm"); - -var gMockAddons = new Map(); -var gMockEmeAddons = new Map(); - -for (let plugin of GMPScope.GMP_PLUGINS) { - let mockAddon = Object.freeze({ - id: plugin.id, - isValid: true, - isInstalled: false, - nameId: plugin.name, - descriptionId: plugin.description, - missingKey: plugin.missingKey, - missingFilesKey: plugin.missingFilesKey, - }); - gMockAddons.set(mockAddon.id, mockAddon); - if (mockAddon.id == "gmp-widevinecdm" || - mockAddon.id.indexOf("gmp-eme-") == 0) { - gMockEmeAddons.set(mockAddon.id, mockAddon); - } -} - -var gInstalledAddonId = ""; -var gPrefs = Services.prefs; -var gGetKey = GMPScope.GMPPrefs.getPrefKey; - -function MockGMPInstallManager() { -} - -MockGMPInstallManager.prototype = { - checkForAddons: () => Promise.resolve({ - usedFallback: true, - gmpAddons: [...gMockAddons.values()] - }), - - installAddon: addon => { - gInstalledAddonId = addon.id; - return Promise.resolve(); - }, -}; - - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - startupManager(); - - gPrefs.setBoolPref(GMPScope.GMPPrefs.KEY_LOGGING_DUMP, true); - gPrefs.setIntPref(GMPScope.GMPPrefs.KEY_LOGGING_LEVEL, 0); - gPrefs.setBoolPref(GMPScope.GMPPrefs.KEY_EME_ENABLED, true); - for (let addon of gMockAddons.values()) { - gPrefs.setBoolPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_VISIBLE, addon.id), - true); - gPrefs.setBoolPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_FORCE_SUPPORTED, addon.id), - true); - } - GMPScope.GMPProvider.shutdown(); - GMPScope.GMPProvider.startup(); - - run_next_test(); -} - -add_task(function* test_notInstalled() { - for (let addon of gMockAddons.values()) { - gPrefs.setCharPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id), ""); - gPrefs.setBoolPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, addon.id), false); - } - - let addons = yield promiseAddonsByIDs([...gMockAddons.keys()]); - Assert.equal(addons.length, gMockAddons.size); - - for (let addon of addons) { - Assert.ok(!addon.isInstalled); - Assert.equal(addon.type, "plugin"); - Assert.equal(addon.version, ""); - - let mockAddon = gMockAddons.get(addon.id); - - Assert.notEqual(mockAddon, null); - let name = pluginsBundle.GetStringFromName(mockAddon.nameId); - Assert.equal(addon.name, name); - let description = pluginsBundle.GetStringFromName(mockAddon.descriptionId); - Assert.equal(addon.description, description); - - Assert.ok(!addon.isActive); - Assert.ok(!addon.appDisabled); - Assert.ok(addon.userDisabled); - - Assert.equal(addon.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - Assert.equal(addon.size, 0); - Assert.equal(addon.scope, AddonManager.SCOPE_APPLICATION); - Assert.equal(addon.pendingOperations, AddonManager.PENDING_NONE); - Assert.equal(addon.operationsRequiringRestart, AddonManager.PENDING_NONE); - - Assert.equal(addon.permissions, AddonManager.PERM_CAN_UPGRADE | - AddonManager.PERM_CAN_ENABLE); - - Assert.equal(addon.updateDate, null); - - Assert.ok(addon.isCompatible); - Assert.ok(addon.isPlatformCompatible); - Assert.ok(addon.providesUpdatesSecurely); - Assert.ok(!addon.foreignInstall); - - let mimetypes = addon.pluginMimeTypes; - Assert.ok(mimetypes); - Assert.equal(mimetypes.length, 0); - let libraries = addon.pluginLibraries; - Assert.ok(libraries); - Assert.equal(libraries.length, 0); - Assert.equal(addon.pluginFullpath, ""); - } -}); - -add_task(function* test_installed() { - const TEST_DATE = new Date(2013, 0, 1, 12); - const TEST_VERSION = "1.2.3.4"; - const TEST_TIME_SEC = Math.round(TEST_DATE.getTime() / 1000); - - let addons = yield promiseAddonsByIDs([...gMockAddons.keys()]); - Assert.equal(addons.length, gMockAddons.size); - - for (let addon of addons) { - let mockAddon = gMockAddons.get(addon.id); - Assert.notEqual(mockAddon, null); - - let file = Services.dirsvc.get("ProfD", Ci.nsIFile); - file.append(addon.id); - file.append(TEST_VERSION); - gPrefs.setBoolPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, mockAddon.id), false); - gPrefs.setCharPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_LAST_UPDATE, mockAddon.id), - "" + TEST_TIME_SEC); - gPrefs.setCharPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, mockAddon.id), - TEST_VERSION); - - Assert.ok(addon.isInstalled); - Assert.equal(addon.type, "plugin"); - Assert.ok(!addon.isActive); - Assert.ok(!addon.appDisabled); - Assert.ok(addon.userDisabled); - - let name = pluginsBundle.GetStringFromName(mockAddon.nameId); - Assert.equal(addon.name, name); - Assert.equal(addon.version, TEST_VERSION); - - Assert.equal(addon.permissions, AddonManager.PERM_CAN_UPGRADE | - AddonManager.PERM_CAN_ENABLE); - - Assert.equal(addon.updateDate.getTime(), TEST_TIME_SEC * 1000); - - let mimetypes = addon.pluginMimeTypes; - Assert.ok(mimetypes); - Assert.equal(mimetypes.length, 0); - let libraries = addon.pluginLibraries; - Assert.ok(libraries); - Assert.equal(libraries.length, 1); - Assert.equal(libraries[0], TEST_VERSION); - let fullpath = addon.pluginFullpath; - Assert.equal(fullpath.length, 1); - Assert.equal(fullpath[0], file.path); - } -}); - -add_task(function* test_enable() { - let addons = yield promiseAddonsByIDs([...gMockAddons.keys()]); - Assert.equal(addons.length, gMockAddons.size); - - for (let addon of addons) { - gPrefs.setBoolPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, addon.id), true); - - Assert.ok(addon.isActive); - Assert.ok(!addon.appDisabled); - Assert.ok(!addon.userDisabled); - - Assert.equal(addon.permissions, AddonManager.PERM_CAN_UPGRADE | - AddonManager.PERM_CAN_DISABLE); - } -}); - -add_task(function* test_globalEmeDisabled() { - let addons = yield promiseAddonsByIDs([...gMockEmeAddons.keys()]); - Assert.equal(addons.length, gMockEmeAddons.size); - - gPrefs.setBoolPref(GMPScope.GMPPrefs.KEY_EME_ENABLED, false); - GMPScope.GMPProvider.shutdown(); - GMPScope.GMPProvider.startup(); - for (let addon of addons) { - Assert.ok(!addon.isActive); - Assert.ok(addon.appDisabled); - Assert.ok(!addon.userDisabled); - - Assert.equal(addon.permissions, 0); - } - gPrefs.setBoolPref(GMPScope.GMPPrefs.KEY_EME_ENABLED, true); - GMPScope.GMPProvider.shutdown(); - GMPScope.GMPProvider.startup(); -}); - -add_task(function* test_autoUpdatePrefPersistance() { - let addons = yield promiseAddonsByIDs([...gMockAddons.keys()]); - Assert.equal(addons.length, gMockAddons.size); - - for (let addon of addons) { - let autoupdateKey = gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_AUTOUPDATE, addon.id); - gPrefs.clearUserPref(autoupdateKey); - - addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE; - Assert.ok(!gPrefs.getBoolPref(autoupdateKey)); - - addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_ENABLE; - Assert.equal(addon.applyBackgroundUpdates, AddonManager.AUTOUPDATE_ENABLE); - Assert.ok(gPrefs.getBoolPref(autoupdateKey)); - - addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DEFAULT; - Assert.ok(!gPrefs.prefHasUserValue(autoupdateKey)); - } -}); - -function createMockPluginFilesIfNeeded(aFile, aPluginId) { - function createFile(aFileName) { - let f = aFile.clone(); - f.append(aFileName); - if (!f.exists()) { - f.create(Ci.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); - } - } - - let id = aPluginId.substring(4); - let libName = AppConstants.DLL_PREFIX + id + AppConstants.DLL_SUFFIX; - - createFile(libName); - if (aPluginId == "gmp-widevinecdm") { - createFile("manifest.json"); - } else { - createFile(id + ".info"); - } - if (aPluginId == "gmp-eme-adobe") - createFile(id + ".voucher"); -} - -// Array.includes() is only in Nightly channel, so polyfill so we don't fail -// on other branches. -if (![].includes) { - Array.prototype.includes = function(element) { - return Object(this).indexOf(element) != -1; - } -} - -add_task(function* test_pluginRegistration() { - const TEST_VERSION = "1.2.3.4"; - - let profD = do_get_profile(); - for (let addon of gMockAddons.values()) { - let file = profD.clone(); - file.append(addon.id); - file.append(TEST_VERSION); - - let addedPaths = []; - let removedPaths = []; - let clearPaths = () => { addedPaths = []; removedPaths = []; } - - let MockGMPService = { - addPluginDirectory: path => { - if (!addedPaths.includes(path)) { - addedPaths.push(path); - } - }, - removePluginDirectory: path => { - if (!removedPaths.includes(path)) { - removedPaths.push(path); - } - }, - removeAndDeletePluginDirectory: path => { - if (!removedPaths.includes(path)) { - removedPaths.push(path); - } - }, - }; - GMPScope.gmpService = MockGMPService; - - gPrefs.setBoolPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, addon.id), true); - - // Test that plugin registration fails if the plugin dynamic library and - // info files are not present. - gPrefs.setCharPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id), - TEST_VERSION); - clearPaths(); - yield promiseRestartManager(); - Assert.equal(addedPaths.indexOf(file.path), -1); - Assert.deepEqual(removedPaths, [file.path]); - - // Create dummy GMP library/info files, and test that plugin registration - // succeeds during startup, now that we've added GMP info/lib files. - createMockPluginFilesIfNeeded(file, addon.id); - - gPrefs.setCharPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id), - TEST_VERSION); - clearPaths(); - yield promiseRestartManager(); - Assert.notEqual(addedPaths.indexOf(file.path), -1); - Assert.deepEqual(removedPaths, []); - - // Setting the ABI to something invalid should cause plugin to be removed at startup. - clearPaths(); - gPrefs.setCharPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_ABI, addon.id), "invalid-ABI"); - yield promiseRestartManager(); - Assert.equal(addedPaths.indexOf(file.path), -1); - Assert.deepEqual(removedPaths, [file.path]); - - // Setting the ABI to expected ABI should cause registration at startup. - clearPaths(); - gPrefs.setCharPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id), - TEST_VERSION); - gPrefs.setCharPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_ABI, addon.id), UpdateUtils.ABI); - yield promiseRestartManager(); - Assert.notEqual(addedPaths.indexOf(file.path), -1); - Assert.deepEqual(removedPaths, []); - - // Check that clearing the version doesn't trigger registration. - clearPaths(); - gPrefs.clearUserPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id)); - Assert.deepEqual(addedPaths, []); - Assert.deepEqual(removedPaths, [file.path]); - - // Restarting with no version set should not trigger registration. - clearPaths(); - yield promiseRestartManager(); - Assert.equal(addedPaths.indexOf(file.path), -1); - Assert.equal(removedPaths.indexOf(file.path), -1); - - // Changing the pref mid-session should cause unregistration and registration. - gPrefs.setCharPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id), - TEST_VERSION); - clearPaths(); - const TEST_VERSION_2 = "5.6.7.8"; - let file2 = Services.dirsvc.get("ProfD", Ci.nsIFile); - file2.append(addon.id); - file2.append(TEST_VERSION_2); - gPrefs.setCharPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id), - TEST_VERSION_2); - Assert.deepEqual(addedPaths, [file2.path]); - Assert.deepEqual(removedPaths, [file.path]); - - // Disabling the plugin should cause unregistration. - gPrefs.setCharPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id), - TEST_VERSION); - clearPaths(); - gPrefs.setBoolPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, addon.id), false); - Assert.deepEqual(addedPaths, []); - Assert.deepEqual(removedPaths, [file.path]); - - // Restarting with the plugin disabled should not cause registration. - clearPaths(); - yield promiseRestartManager(); - Assert.equal(addedPaths.indexOf(file.path), -1); - Assert.equal(removedPaths.indexOf(file.path), -1); - - // Re-enabling the plugin should cause registration. - clearPaths(); - gPrefs.setBoolPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, addon.id), true); - Assert.deepEqual(addedPaths, [file.path]); - Assert.deepEqual(removedPaths, []); - GMPScope = Cu.import("resource://gre/modules/addons/GMPProvider.jsm"); - } -}); - -add_task(function* test_periodicUpdate() { - Object.defineProperty(GMPScope, "GMPInstallManager", { - value: MockGMPInstallManager, - writable: true, - enumerable: true, - configurable: true - }); - - let addons = yield promiseAddonsByIDs([...gMockAddons.keys()]); - Assert.equal(addons.length, gMockAddons.size); - - for (let addon of addons) { - gPrefs.clearUserPref(gGetKey(GMPScope.GMPPrefs.KEY_PLUGIN_AUTOUPDATE, addon.id)); - - addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE; - gPrefs.setIntPref(GMPScope.GMPPrefs.KEY_UPDATE_LAST_CHECK, 0); - let result = - yield addon.findUpdates({}, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - Assert.strictEqual(result, false); - - addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_ENABLE; - gPrefs.setIntPref(GMPScope.GMPPrefs.KEY_UPDATE_LAST_CHECK, Date.now() / 1000 - 60); - result = - yield addon.findUpdates({}, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - Assert.strictEqual(result, false); - - gPrefs.setIntPref(GMPScope.GMPPrefs.KEY_UPDATE_LAST_CHECK, - Date.now() / 1000 - 2 * GMPScope.SEC_IN_A_DAY); - gInstalledAddonId = ""; - result = - yield addon.findUpdates({}, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - Assert.strictEqual(result, true); - Assert.equal(gInstalledAddonId, addon.id); - } - - GMPScope = Cu.import("resource://gre/modules/addons/GMPProvider.jsm"); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_hasbinarycomponents.js b/toolkit/mozapps/webextensions/test/xpcshell/test_hasbinarycomponents.js deleted file mode 100644 index 925e63626..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_hasbinarycomponents.js +++ /dev/null @@ -1,82 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests detection of binary components via parsing of chrome manifests. - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - startupManager(); - - installAllFiles([do_get_addon("test_chromemanifest_1"), - do_get_addon("test_chromemanifest_2"), - do_get_addon("test_chromemanifest_3"), - do_get_addon("test_chromemanifest_4"), - do_get_addon("test_chromemanifest_5")], - function() { - - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - // addon1 has no binary components - do_check_neq(a1, null); - do_check_false(a1.userDisabled); - do_check_false(a1.hasBinaryComponents); - do_check_true(a1.isCompatible); - do_check_false(a1.appDisabled); - do_check_true(a1.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - // addon2 has a binary component, is compatible - do_check_neq(a2, null); - do_check_false(a2.userDisabled); - do_check_true(a2.hasBinaryComponents); - do_check_true(a2.isCompatible); - do_check_false(a2.appDisabled); - do_check_true(a2.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - - // addon3 has a binary component, is incompatible - do_check_neq(a3, null); - do_check_false(a3.userDisabled); - do_check_true(a2.hasBinaryComponents); - do_check_false(a3.isCompatible); - do_check_true(a3.appDisabled); - do_check_false(a3.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - - // addon4 has a binary component listed in a sub-manifest, is incompatible - do_check_neq(a4, null); - do_check_false(a4.userDisabled); - do_check_true(a2.hasBinaryComponents); - do_check_false(a4.isCompatible); - do_check_true(a4.appDisabled); - do_check_false(a4.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - // addon5 has a binary component, but is set to not unpack - do_check_neq(a5, null); - do_check_false(a5.userDisabled); - if (TEST_UNPACKED) - do_check_true(a5.hasBinaryComponents); - else - do_check_false(a5.hasBinaryComponents); - do_check_true(a5.isCompatible); - do_check_false(a5.appDisabled); - do_check_true(a5.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_execute_soon(do_test_finished); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_hotfix.js b/toolkit/mozapps/webextensions/test/xpcshell/test_hotfix.js deleted file mode 100644 index c9303897f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_hotfix.js +++ /dev/null @@ -1,309 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that hotfix installation works - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); -// Ignore any certificate requirements the app has set -Services.prefs.setBoolPref("extensions.hotfix.cert.checkAttributes", false); - -Components.utils.import("resource://testing-common/httpd.js"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; -testserver.registerDirectory("/addons/", do_get_file("addons")); -mapFile("/data/test_hotfix_1.rdf", testserver); -mapFile("/data/test_hotfix_2.rdf", testserver); -mapFile("/data/test_hotfix_3.rdf", testserver); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - startupManager(); - - do_test_pending(); - run_test_1(); -} - -function end_test() { - testserver.stop(do_test_finished); -} - -// Test that background updates find and install any available hotfix -function run_test_1() { - Services.prefs.setCharPref("extensions.hotfix.id", "hotfix@tests.mozilla.org"); - Services.prefs.setCharPref("extensions.update.background.url", "http://localhost:" + - gPort + "/data/test_hotfix_1.rdf"); - - prepare_test({ - "hotfix@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test_1)); - - // We don't need to wait on the promise, just waiting for the install to finish is enough. - AddonManagerInternal.backgroundUpdateCheck(); -} - -function check_test_1() { - restartManager(); - - AddonManager.getAddonByID("hotfix@tests.mozilla.org", function(aAddon) { - do_check_neq(aAddon, null); - do_check_eq(aAddon.version, "1.0"); - - aAddon.uninstall(); - do_execute_soon(run_test_2); - }); -} - -// Don't install an already used hotfix -function run_test_2() { - restartManager(); - - AddonManager.addInstallListener({ - onNewInstall: function() { - do_throw("Should not have seen a new install created"); - } - }); - - // Run the background update - AddonManagerInternal.backgroundUpdateCheck().then(run_test_3); -} - -// Install a newer hotfix -function run_test_3() { - restartManager(); - Services.prefs.setCharPref("extensions.hotfix.url", "http://localhost:" + - gPort + "/data/test_hotfix_2.rdf"); - - prepare_test({ - "hotfix@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test_3)); - - AddonManagerInternal.backgroundUpdateCheck(); -} - -function check_test_3() { - restartManager(); - - AddonManager.getAddonByID("hotfix@tests.mozilla.org", function(aAddon) { - do_check_neq(aAddon, null); - do_check_eq(aAddon.version, "2.0"); - - aAddon.uninstall(); - do_execute_soon(run_test_4); - }); -} - -// Don't install an incompatible hotfix -function run_test_4() { - restartManager(); - - Services.prefs.setCharPref("extensions.hotfix.url", "http://localhost:" + - gPort + "/data/test_hotfix_3.rdf"); - - AddonManager.addInstallListener({ - onNewInstall: function() { - do_throw("Should not have seen a new install created"); - } - }); - - AddonManagerInternal.backgroundUpdateCheck().then(run_test_5); -} - -// Don't install an older hotfix -function run_test_5() { - restartManager(); - - Services.prefs.setCharPref("extensions.hotfix.url", "http://localhost:" + - gPort + "/data/test_hotfix_1.rdf"); - - AddonManager.addInstallListener({ - onNewInstall: function() { - do_throw("Should not have seen a new install created"); - } - }); - - AddonManagerInternal.backgroundUpdateCheck().then(run_test_6); -} - -// Don't re-download an already pending install -function run_test_6() { - restartManager(); - - Services.prefs.setCharPref("extensions.hotfix.lastVersion", "0"); - Services.prefs.setCharPref("extensions.hotfix.url", "http://localhost:" + - gPort + "/data/test_hotfix_1.rdf"); - - prepare_test({ - "hotfix@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test_6)); - - AddonManagerInternal.backgroundUpdateCheck(); -} - -function check_test_6() { - AddonManager.addInstallListener({ - onNewInstall: function() { - do_throw("Should not have seen a new install created"); - } - }); - - AddonManagerInternal.backgroundUpdateCheck() - .then(promiseRestartManager) - .then(() => promiseAddonByID("hotfix@tests.mozilla.org")) - .then(aAddon => { - aAddon.uninstall(); - run_test_7(); - }); -} - -// Start downloading again if something cancels the install -function run_test_7() { - restartManager(); - - Services.prefs.setCharPref("extensions.hotfix.lastVersion", "0"); - - prepare_test({ - "hotfix@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded", - ], check_test_7); - - AddonManagerInternal.backgroundUpdateCheck(); -} - -function check_test_7(aInstall) { - prepare_test({ - "hotfix@tests.mozilla.org": [ - "onOperationCancelled" - ] - }, [ - "onInstallCancelled", - ]); - - aInstall.cancel(); - - prepare_test({ - "hotfix@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded", - ], callback_soon(finish_test_7)); - - AddonManagerInternal.backgroundUpdateCheck(); -} - -function finish_test_7() { - restartManager(); - - AddonManager.getAddonByID("hotfix@tests.mozilla.org", function(aAddon) { - do_check_neq(aAddon, null); - do_check_eq(aAddon.version, "1.0"); - - aAddon.uninstall(); - do_execute_soon(run_test_8); - }); -} - -// Cancel a pending install when a newer version is already available -function run_test_8() { - restartManager(); - - Services.prefs.setCharPref("extensions.hotfix.lastVersion", "0"); - Services.prefs.setCharPref("extensions.hotfix.url", "http://localhost:" + - gPort + "/data/test_hotfix_1.rdf"); - - prepare_test({ - "hotfix@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded", - ], check_test_8); - - AddonManagerInternal.backgroundUpdateCheck(); -} - -function check_test_8() { - Services.prefs.setCharPref("extensions.hotfix.url", "http://localhost:" + - gPort + "/data/test_hotfix_2.rdf"); - - prepare_test({ - "hotfix@tests.mozilla.org": [ - "onOperationCancelled", - "onInstalling" - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallCancelled", - "onInstallEnded", - ], finish_test_8); - - AddonManagerInternal.backgroundUpdateCheck(); -} - -function finish_test_8() { - AddonManager.getAllInstalls(callback_soon(function(aInstalls) { - do_check_eq(aInstalls.length, 1); - do_check_eq(aInstalls[0].version, "2.0"); - - restartManager(); - - AddonManager.getAddonByID("hotfix@tests.mozilla.org", callback_soon(function(aAddon) { - do_check_neq(aAddon, null); - do_check_eq(aAddon.version, "2.0"); - - aAddon.uninstall(); - restartManager(); - - end_test(); - })); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_hotfix_cert.js b/toolkit/mozapps/webextensions/test/xpcshell/test_hotfix_cert.js deleted file mode 100644 index 42ee59740..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_hotfix_cert.js +++ /dev/null @@ -1,167 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that hotfix installation works -const PREF_EM_HOTFIX_ID = "extensions.hotfix.id"; -const PREF_EM_HOTFIX_LASTVERSION = "extensions.hotfix.lastVersion"; -const PREF_EM_HOTFIX_URL = "extensions.hotfix.url"; -const PREF_EM_CERT_CHECKATTRIBUTES = "extensions.hotfix.cert.checkAttributes"; -const PREF_EM_HOTFIX_CERTS = "extensions.hotfix.certs."; - -// Derived from "openssl x509 -in firefox-hotfix.crt -fingerprint -sha1" -const GOOD_FINGERPRINT = "39:E7:2B:7A:5B:CF:37:78:F9:5D:4A:E0:53:2D:2F:3D:68:53:C5:60"; -const BAD_FINGERPRINT = "40:E7:2B:7A:5B:CF:37:78:F9:5D:4A:E0:53:2D:2F:3D:68:53:C5:60"; - -Components.utils.import("resource://testing-common/httpd.js"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; -testserver.registerDirectory("/data/", do_get_file("data")); - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); -// Ignore any certificate requirements the app has set -Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true); -Services.prefs.setCharPref(PREF_EM_HOTFIX_URL, "http://localhost:" + gPort + "/hotfix.rdf"); -// Clear out all hotfix cert prefs to make sure only the test prefs apply. -var defaults = Services.prefs.getDefaultBranch(""); -defaults.deleteBranch(PREF_EM_HOTFIX_CERTS); - -/* - * Register an addon install listener and return a promise that: - * resolves with the AddonInstall object if the install succeeds - * rejects with the AddonInstall if the install fails - */ -function promiseInstallListener() { - return new Promise((resolve, reject) => { - let listener = { - onDownloadFailed: ai => { - AddonManager.removeInstallListener(listener); - reject(ai); - }, - onInstallEnded: ai => { - AddonManager.removeInstallListener(listener); - resolve(ai); - }, - onDownloadCancelled: ai => { - AddonManager.removeInstallListener(listener); - reject(ai); - } - }; - AddonManager.addInstallListener(listener); - }); -} - -function promiseSuccessfulInstall() { - return promiseInstallListener().then( - aInstall => { - do_check_true(true); - do_check_eq(aInstall.addon.id, Services.prefs.getCharPref(PREF_EM_HOTFIX_ID)); - aInstall.addon.uninstall(); - Services.prefs.clearUserPref(PREF_EM_HOTFIX_LASTVERSION); - }, - aInstall => { - do_throw("Install should not have failed"); - }); -} - -function promiseFailedInstall() { - return promiseInstallListener().then( - aInstall => { - do_throw("Install should not have succeeded"); - aInstall.addon.uninstall(); - Services.prefs.clearUserPref(PREF_EM_HOTFIX_LASTVERSION); - }, - aInstall => { - do_check_true(true); - }); -} - -var tryInstallHotfix = Task.async(function*(id, file, installListener) { - Services.prefs.setCharPref(PREF_EM_HOTFIX_ID, id); - - testserver.registerPathHandler("/hotfix.rdf", function(request, response) { - response.write(createUpdateRDF({ - [id]: [{ - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0", - maxVersion: "*", - updateLink: "http://localhost:" + gPort + "/data/signing_checks/" + file, - }] - }] - })); - }); - - yield Promise.all([ - installListener, - AddonManagerPrivate.backgroundUpdateCheck() - ]); - - testserver.registerPathHandler("/hotfix.rdf", null); - Services.prefs.clearUserPref(PREF_EM_HOTFIX_ID); -}); - -// Test valid AMO hotfix signed add-ons doesn't work if the fingerprint pref is wrong -add_task(function* amo_signed_hotfix() { - Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", BAD_FINGERPRINT); - - yield tryInstallHotfix("firefox-hotfix@mozilla.org", - "hotfix_good.xpi", - promiseFailedInstall()); -}); - -// Test valid AMO hotfix signed add-ons works -add_task(function* amo_signed_hotfix() { - Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", GOOD_FINGERPRINT); - - yield tryInstallHotfix("firefox-hotfix@mozilla.org", - "hotfix_good.xpi", - promiseSuccessfulInstall()); -}); - -// A hotfix altered after signing should fail -add_task(function* amo_broken_hotfix() { - yield tryInstallHotfix("firefox-hotfix@mozilla.org", - "hotfix_broken.xpi", - promiseFailedInstall()); -}); - -// Test an add-on with the wrong ID but signed by the right cert fails -add_task(function* amo_wrongID_rightcert() { - yield tryInstallHotfix("test@tests.mozilla.org", - "hotfix_badid.xpi", - promiseFailedInstall()); -}); - -// It shouldn't matter that it requested the ID matching the cert to begin with -// if the embedded cert's ID doesn't match the add-on's ID -add_task(function* amo_wrongID_rightcert2() { - yield tryInstallHotfix("firefox-hotfix@mozilla.org", - "hotfix_badid.xpi", - promiseFailedInstall()); -}); - -// Test something signed by a regular AMO cert doesn't work -add_task(function* amo_signed_addon() { - yield tryInstallHotfix("test@tests.mozilla.org", - "signed_bootstrap_1.xpi", - promiseFailedInstall()); -}); - -// Test totally unsigned add-on fails -add_task(function* unsigned() { - yield tryInstallHotfix("test@tests.mozilla.org", - "unsigned_bootstrap_2.xpi", - promiseFailedInstall()); -}); - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - startupManager(); - - run_next_test(); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_install.js b/toolkit/mozapps/webextensions/test/xpcshell/test_install.js deleted file mode 100644 index 60af3a9fd..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_install.js +++ /dev/null @@ -1,1843 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that add-ons can be installed from XPI files -var Cc = Components.classes; -var Ci = Components.interfaces; -var Cu = Components.utils; - -// install.rdf size, icon.png, icon64.png size -const ADDON1_SIZE = 705 + 16 + 16; - -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/NetUtil.jsm"); -Cu.import("resource://testing-common/httpd.js"); - -var testserver; -var gInstallDate; -var gInstall = null; - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - startupManager(); - // Make sure we only register once despite multiple calls - AddonManager.addInstallListener(InstallListener); - AddonManager.addAddonListener(AddonListener); - AddonManager.addInstallListener(InstallListener); - AddonManager.addAddonListener(AddonListener); - - // Create and configure the HTTP server. - testserver = new HttpServer(); - testserver.registerDirectory("/addons/", do_get_file("addons")); - testserver.registerDirectory("/data/", do_get_file("data")); - testserver.registerPathHandler("/redirect", function(aRequest, aResponse) { - aResponse.setStatusLine(null, 301, "Moved Permanently"); - let url = aRequest.host + ":" + aRequest.port + aRequest.queryString; - aResponse.setHeader("Location", "http://" + url); - }); - testserver.start(-1); - gPort = testserver.identity.primaryPort; - - do_test_pending(); - run_test_1(); -} - -function end_test() { - testserver.stop(do_test_finished); -} - -// Checks that an install from a local file proceeds as expected -function run_test_1() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_install1"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.linkedInstalls, null); - do_check_eq(install.type, "extension"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_true(install.addon.hasResource("install.rdf")); - do_check_neq(install.addon.syncGUID, null); - do_check_eq(install.addon.install, install); - do_check_eq(install.addon.size, ADDON1_SIZE); - do_check_true(hasFlag(install.addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - let file = do_get_addon("test_install1"); - let uri = Services.io.newFileURI(file).spec; - do_check_eq(install.addon.getResourceURI("install.rdf").spec, "jar:" + uri + "!/install.rdf"); - do_check_eq(install.addon.iconURL, "jar:" + uri + "!/icon.png"); - do_check_eq(install.addon.icon64URL, "jar:" + uri + "!/icon64.png"); - do_check_eq(install.iconURL, null); - - do_check_eq(install.sourceURI.spec, uri); - do_check_eq(install.addon.sourceURI.spec, uri); - - AddonManager.getAllInstalls(function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - - AddonManager.getInstallsByTypes(["foo"], function(fooInstalls) { - do_check_eq(fooInstalls.length, 0); - - AddonManager.getInstallsByTypes(["extension"], function(extensionInstalls) { - do_check_eq(extensionInstalls.length, 1); - do_check_eq(extensionInstalls[0], install); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], function() { - check_test_1(install.addon.syncGUID); - }); - install.install(); - }); - }); - }); - }); -} - -function check_test_1(installSyncGUID) { - ensure_test_completed(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(olda1) { - do_check_eq(olda1, null); - - AddonManager.getAddonsWithOperationsByTypes(null, callback_soon(function(pendingAddons) { - do_check_eq(pendingAddons.length, 1); - do_check_eq(pendingAddons[0].id, "addon1@tests.mozilla.org"); - let uri = NetUtil.newURI(pendingAddons[0].iconURL); - if (uri instanceof AM_Ci.nsIJARURI) { - let jarURI = uri.QueryInterface(AM_Ci.nsIJARURI); - let archiveURI = jarURI.JARFile; - let archiveFile = archiveURI.QueryInterface(AM_Ci.nsIFileURL).file; - let zipReader = Cc["@mozilla.org/libjar/zip-reader;1"]. - createInstance(Ci.nsIZipReader); - try { - zipReader.open(archiveFile); - do_check_true(zipReader.hasEntry(jarURI.JAREntry)); - } - finally { - zipReader.close(); - } - } - else { - let iconFile = uri.QueryInterface(AM_Ci.nsIFileURL).file; - do_check_true(iconFile.exists()); - // Make the iconFile predictably old. - iconFile.lastModifiedTime = Date.now() - MAKE_FILE_OLD_DIFFERENCE; - } - - // Make the pending install have a sensible date - let updateDate = Date.now(); - let extURI = pendingAddons[0].getResourceURI(""); - let ext = extURI.QueryInterface(AM_Ci.nsIFileURL).file; - setExtensionModifiedTime(ext, updateDate); - - // The pending add-on cannot be disabled or enabled. - do_check_false(hasFlag(pendingAddons[0].permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_false(hasFlag(pendingAddons[0].permissions, AddonManager.PERM_CAN_DISABLE)); - - restartManager(); - - AddonManager.getAllInstalls(function(activeInstalls) { - do_check_eq(activeInstalls, 0); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { - do_check_neq(a1, null); - do_check_neq(a1.syncGUID, null); - do_check_true(a1.syncGUID.length >= 9); - do_check_eq(a1.syncGUID, installSyncGUID); - do_check_eq(a1.type, "extension"); - do_check_eq(a1.version, "1.0"); - do_check_eq(a1.name, "Test 1"); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_true(do_get_addon("test_install1").exists()); - do_check_in_crash_annotation(a1.id, a1.version); - do_check_eq(a1.size, ADDON1_SIZE); - do_check_false(a1.foreignInstall); - - do_check_eq(a1.sourceURI.spec, - Services.io.newFileURI(do_get_addon("test_install1")).spec); - let difference = a1.installDate.getTime() - updateDate; - if (Math.abs(difference) > MAX_TIME_DIFFERENCE) - do_throw("Add-on install time was out by " + difference + "ms"); - - difference = a1.updateDate.getTime() - updateDate; - if (Math.abs(difference) > MAX_TIME_DIFFERENCE) - do_throw("Add-on update time was out by " + difference + "ms"); - - do_check_true(a1.hasResource("install.rdf")); - do_check_false(a1.hasResource("foo.bar")); - - let uri2 = do_get_addon_root_uri(profileDir, "addon1@tests.mozilla.org"); - do_check_eq(a1.getResourceURI("install.rdf").spec, uri2 + "install.rdf"); - do_check_eq(a1.iconURL, uri2 + "icon.png"); - do_check_eq(a1.icon64URL, uri2 + "icon64.png"); - - // Ensure that extension bundle (or icon if unpacked) has updated - // lastModifiedDate. - let testURI = a1.getResourceURI(TEST_UNPACKED ? "icon.png" : ""); - let testFile = testURI.QueryInterface(Components.interfaces.nsIFileURL).file; - do_check_true(testFile.exists()); - difference = testFile.lastModifiedTime - Date.now(); - do_check_true(Math.abs(difference) < MAX_TIME_DIFFERENCE); - - a1.uninstall(); - let { id, version } = a1; - restartManager(); - do_check_not_in_crash_annotation(id, version); - - do_execute_soon(run_test_2); - })); - }); - })); - }); -} - -// Tests that an install from a url downloads. -function run_test_2() { - let url = "http://localhost:" + gPort + "/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(install) { - do_check_neq(install, null); - do_check_eq(install.linkedInstalls, null); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test 2"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - do_check_eq(install.iconURL, null); - do_check_eq(install.sourceURI.spec, url); - - AddonManager.getAllInstalls(function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_2); - - install.addListener({ - onDownloadProgress: function() { - do_execute_soon(function() { - Components.utils.forceGC(); - }); - } - }); - - install.install(); - }); - }, "application/x-xpinstall", null, "Test 2", null, "1.0"); -} - -function check_test_2(install) { - ensure_test_completed(); - do_check_eq(install.version, "2.0"); - do_check_eq(install.name, "Real Test 2"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_eq(install.addon.install, install); - do_check_true(hasFlag(install.addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - do_check_eq(install.iconURL, null); - - // Pause the install here and start it again in run_test_3 - do_execute_soon(function() { run_test_3(install); }); - return false; -} - -// Tests that the downloaded XPI installs ok -function run_test_3(install) { - prepare_test({ - "addon2@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], check_test_3); - install.install(); -} - -function check_test_3(aInstall) { - // Make the pending install have a sensible date - let updateDate = Date.now(); - let extURI = aInstall.addon.getResourceURI(""); - let ext = extURI.QueryInterface(AM_Ci.nsIFileURL).file; - setExtensionModifiedTime(ext, updateDate); - - ensure_test_completed(); - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(olda2) { - do_check_eq(olda2, null); - restartManager(); - - AddonManager.getAllInstalls(function(installs) { - do_check_eq(installs, 0); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_neq(a2, null); - do_check_neq(a2.syncGUID, null); - do_check_eq(a2.type, "extension"); - do_check_eq(a2.version, "2.0"); - do_check_eq(a2.name, "Real Test 2"); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - do_check_true(do_get_addon("test_install2_1").exists()); - do_check_in_crash_annotation(a2.id, a2.version); - do_check_eq(a2.sourceURI.spec, - "http://localhost:" + gPort + "/addons/test_install2_1.xpi"); - - let difference = a2.installDate.getTime() - updateDate; - if (Math.abs(difference) > MAX_TIME_DIFFERENCE) - do_throw("Add-on install time was out by " + difference + "ms"); - - difference = a2.updateDate.getTime() - updateDate; - if (Math.abs(difference) > MAX_TIME_DIFFERENCE) - do_throw("Add-on update time was out by " + difference + "ms"); - - gInstallDate = a2.installDate.getTime(); - - run_test_4(); - }); - }); - })); -} - -// Tests that installing a new version of an existing add-on works -function run_test_4() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install2_2.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.version, "3.0"); - do_check_eq(install.name, "Test 3"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - AddonManager.getAllInstalls(function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - do_check_eq(install.existingAddon, null); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_4); - install.install(); - }); - }, "application/x-xpinstall", null, "Test 3", null, "3.0"); -} - -function check_test_4(install) { - ensure_test_completed(); - - do_check_eq(install.version, "3.0"); - do_check_eq(install.name, "Real Test 3"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_neq(install.existingAddon); - do_check_eq(install.existingAddon.id, "addon2@tests.mozilla.org"); - do_check_eq(install.addon.install, install); - do_check_true(hasFlag(install.addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - - run_test_5(); - // Installation will continue when there is nothing returned. -} - -// Continue installing the new version -function run_test_5() { - prepare_test({ - "addon2@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], check_test_5); -} - -function check_test_5(install) { - ensure_test_completed(); - - do_check_eq(install.existingAddon.pendingUpgrade.install, install); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(olda2) { - do_check_neq(olda2, null); - do_check_true(hasFlag(olda2.pendingOperations, AddonManager.PENDING_UPGRADE)); - - AddonManager.getInstallsByTypes(null, callback_soon(function(installs) { - do_check_eq(installs.length, 1); - do_check_eq(installs[0].addon, olda2.pendingUpgrade); - restartManager(); - - AddonManager.getInstallsByTypes(null, function(installs2) { - do_check_eq(installs2.length, 0); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_neq(a2, null); - do_check_eq(a2.type, "extension"); - do_check_eq(a2.version, "3.0"); - do_check_eq(a2.name, "Real Test 3"); - do_check_true(a2.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - do_check_true(do_get_addon("test_install2_2").exists()); - do_check_in_crash_annotation(a2.id, a2.version); - do_check_eq(a2.sourceURI.spec, - "http://localhost:" + gPort + "/addons/test_install2_2.xpi"); - do_check_false(a2.foreignInstall); - - do_check_eq(a2.installDate.getTime(), gInstallDate); - // Update date should be later (or the same if this test is too fast) - do_check_true(a2.installDate <= a2.updateDate); - - a2.uninstall(); - do_execute_soon(run_test_6); - }); - }); - })); - }); -} - -// Tests that an install that requires a compatibility update works -function run_test_6() { - restartManager(); - - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Real Test 4"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - AddonManager.getInstallsByTypes(null, function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_6); - install.install(); - }); - }, "application/x-xpinstall", null, "Real Test 4", null, "1.0"); -} - -function check_test_6(install) { - ensure_test_completed(); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Real Test 4"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_eq(install.existingAddon, null); - do_check_false(install.addon.appDisabled); - run_test_7(); - return true; -} - -// Continue the install -function run_test_7() { - prepare_test({ - "addon3@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], check_test_7); -} - -function check_test_7() { - ensure_test_completed(); - AddonManager.getAddonByID("addon3@tests.mozilla.org", callback_soon(function(olda3) { - do_check_eq(olda3, null); - restartManager(); - - AddonManager.getAllInstalls(function(installs) { - do_check_eq(installs, 0); - - AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) { - do_check_neq(a3, null); - do_check_neq(a3.syncGUID, null); - do_check_eq(a3.type, "extension"); - do_check_eq(a3.version, "1.0"); - do_check_eq(a3.name, "Real Test 4"); - do_check_true(a3.isActive); - do_check_false(a3.appDisabled); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - do_check_true(do_get_addon("test_install3").exists()); - a3.uninstall(); - do_execute_soon(run_test_8); - }); - }); - })); -} - -function run_test_8() { - restartManager(); - - AddonManager.addInstallListener(InstallListener); - AddonManager.addAddonListener(AddonListener); - - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_install3"), function(install) { - do_check_true(install.addon.isCompatible); - - prepare_test({ - "addon3@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test_8)); - install.install(); - }); -} - -function check_test_8() { - restartManager(); - - AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) { - do_check_neq(a3, null); - do_check_neq(a3.syncGUID, null); - do_check_eq(a3.type, "extension"); - do_check_eq(a3.version, "1.0"); - do_check_eq(a3.name, "Real Test 4"); - do_check_true(a3.isActive); - do_check_false(a3.appDisabled); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - do_check_true(do_get_addon("test_install3").exists()); - a3.uninstall(); - do_execute_soon(run_test_9); - }); -} - -// Test that after cancelling a download it is removed from the active installs -function run_test_9() { - restartManager(); - - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Real Test 4"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - AddonManager.getInstallsByTypes(null, function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_9); - install.install(); - }); - }, "application/x-xpinstall", null, "Real Test 4", null, "1.0"); -} - -function check_test_9(install) { - prepare_test({}, [ - "onDownloadCancelled" - ], function() { - let file = install.file; - - // Allow the file removal to complete - do_execute_soon(function() { - AddonManager.getAllInstalls(function(activeInstalls) { - do_check_eq(activeInstalls.length, 0); - do_check_false(file.exists()); - - run_test_10(); - }); - }); - }); - - install.cancel(); -} - -// Tests that after cancelling a pending install it is removed from the active -// installs -function run_test_10() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Real Test 4"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - AddonManager.getInstallsByTypes(null, function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - - prepare_test({ - "addon3@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], check_test_10); - install.install(); - }); - }, "application/x-xpinstall", null, "Real Test 4", null, "1.0"); -} - -function check_test_10(install) { - prepare_test({ - "addon3@tests.mozilla.org": [ - "onOperationCancelled" - ] - }, [ - "onInstallCancelled" - ]); - - install.cancel(); - - ensure_test_completed(); - - AddonManager.getAllInstalls(callback_soon(function(activeInstalls) { - do_check_eq(activeInstalls.length, 0); - - restartManager(); - - // Check that the install did not complete - AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) { - do_check_eq(a3, null); - - do_execute_soon(run_test_11); - }); - })); -} - -// Tests that a multi-package install shows up as multiple installs with the -// correct sourceURI. -function run_test_11() { - prepare_test({ }, [ - "onNewInstall", - "onNewInstall", - "onNewInstall", - "onNewInstall", - "onNewInstall", - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_install4"), function(install) { - ensure_test_completed(); - do_check_neq(install, null); - do_check_neq(install.linkedInstalls, null); - do_check_eq(install.linkedInstalls.length, 5); - - // Might be in any order so sort them based on ID - let installs = [install].concat(install.linkedInstalls); - installs.sort(function(a, b) { - if (a.state != b.state) { - if (a.state == AddonManager.STATE_DOWNLOAD_FAILED) - return 1; - else if (b.state == AddonManager.STATE_DOWNLOAD_FAILED) - return -1; - } - - // Don't care what order the failed installs show up in - if (a.state == AddonManager.STATE_DOWNLOAD_FAILED) - return 0; - - if (a.addon.id < b.addon.id) - return -1; - if (a.addon.id > b.addon.id) - return 1; - return 0; - }); - - // Comes from addon4.xpi and is made compatible by an update check - do_check_eq(installs[0].sourceURI, install.sourceURI); - do_check_eq(installs[0].addon.id, "addon4@tests.mozilla.org"); - do_check_false(installs[0].addon.appDisabled); - do_check_eq(installs[0].version, "1.0"); - do_check_eq(installs[0].name, "Multi Test 1"); - do_check_eq(installs[0].state, AddonManager.STATE_DOWNLOADED); - do_check_true(hasFlag(installs[0].addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - - // Comes from addon5.jar and is compatible by default - do_check_eq(installs[1].sourceURI, install.sourceURI); - do_check_eq(installs[1].addon.id, "addon5@tests.mozilla.org"); - do_check_false(installs[1].addon.appDisabled); - do_check_eq(installs[1].version, "3.0"); - do_check_eq(installs[1].name, "Multi Test 2"); - do_check_eq(installs[1].state, AddonManager.STATE_DOWNLOADED); - do_check_true(hasFlag(installs[1].addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - - // Comes from addon6.xpi and would be incompatible with strict compat enabled - do_check_eq(installs[2].sourceURI, install.sourceURI); - do_check_eq(installs[2].addon.id, "addon6@tests.mozilla.org"); - do_check_false(installs[2].addon.appDisabled); - do_check_eq(installs[2].version, "2.0"); - do_check_eq(installs[2].name, "Multi Test 3"); - do_check_eq(installs[2].state, AddonManager.STATE_DOWNLOADED); - do_check_true(hasFlag(installs[2].addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - - // Comes from addon7.jar and is made compatible by an update check - do_check_eq(installs[3].sourceURI, install.sourceURI); - do_check_eq(installs[3].addon.id, "addon7@tests.mozilla.org"); - do_check_false(installs[3].addon.appDisabled); - do_check_eq(installs[3].version, "5.0"); - do_check_eq(installs[3].name, "Multi Test 4"); - do_check_eq(installs[3].state, AddonManager.STATE_DOWNLOADED); - do_check_true(hasFlag(installs[3].addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - - do_check_eq(installs[4].state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(installs[4].error, AddonManager.ERROR_CORRUPT_FILE); - - do_check_eq(installs[5].state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(installs[5].error, AddonManager.ERROR_CORRUPT_FILE); - - AddonManager.getAllInstalls(function(aInstalls) { - do_check_eq(aInstalls.length, 4); - - prepare_test({ - "addon4@tests.mozilla.org": [ - "onInstalling" - ], - "addon5@tests.mozilla.org": [ - "onInstalling" - ], - "addon6@tests.mozilla.org": [ - "onInstalling" - ], - "addon7@tests.mozilla.org": [ - "onInstalling" - ] - }, { - "addon4@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ], - "addon5@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ], - "addon6@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ], - "addon7@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ] - }, callback_soon(check_test_11)); - - installs[0].install(); - installs[1].install(); - installs[3].install(); - - // Note that we install addon6 last. Since it doesn't need a restart to - // install it completes asynchronously which would otherwise make the - // onInstallStarted/onInstallEnded events go out of sequence unless this - // is the last install operation - installs[2].install(); - }); - }); -} - -function check_test_11() { - restartManager(); - - AddonManager.getAddonsByIDs(["addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org"], - function([a4, a5, a6, a7]) { - do_check_neq(a4, null); - do_check_neq(a5, null); - do_check_neq(a6, null); - do_check_neq(a7, null); - - a4.uninstall(); - a5.uninstall(); - a6.uninstall(); - a7.uninstall(); - - do_execute_soon(run_test_12); - }); -} - -// Same as test 11 but for a remote XPI -function run_test_12() { - restartManager(); - - prepare_test({ }, [ - "onNewInstall", - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install4.xpi"; - AddonManager.getInstallForURL(url, function(install) { - gInstall = install; - - ensure_test_completed(); - do_check_neq(install, null); - do_check_eq(install.linkedInstalls, null); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - prepare_test({ - "addon4@tests.mozilla.org": [ - "onInstalling" - ], - "addon5@tests.mozilla.org": [ - "onInstalling" - ], - "addon6@tests.mozilla.org": [ - "onInstalling" - ], - "addon7@tests.mozilla.org": [ - "onInstalling" - ] - }, { - "NO_ID": [ - "onDownloadStarted", - "onNewInstall", - "onNewInstall", - "onNewInstall", - "onNewInstall", - "onNewInstall", - "onDownloadEnded" - ], - "addon4@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ], - "addon5@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ], - "addon6@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ], - "addon7@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ] - }, callback_soon(check_test_12)); - install.install(); - }, "application/x-xpinstall", null, "Multi Test 4"); -} - -function check_test_12() { - do_check_eq(gInstall.linkedInstalls.length, 5); - - // Might be in any order so sort them based on ID - let installs = [gInstall].concat(gInstall.linkedInstalls); - installs.sort(function(a, b) { - if (a.state != b.state) { - if (a.state == AddonManager.STATE_DOWNLOAD_FAILED) - return 1; - else if (b.state == AddonManager.STATE_DOWNLOAD_FAILED) - return -1; - } - - // Don't care what order the failed installs show up in - if (a.state == AddonManager.STATE_DOWNLOAD_FAILED) - return 0; - - if (a.addon.id < b.addon.id) - return -1; - if (a.addon.id > b.addon.id) - return 1; - return 0; - }); - - // Comes from addon4.xpi and is made compatible by an update check - do_check_eq(installs[0].sourceURI, gInstall.sourceURI); - do_check_eq(installs[0].addon.id, "addon4@tests.mozilla.org"); - do_check_false(installs[0].addon.appDisabled); - do_check_eq(installs[0].version, "1.0"); - do_check_eq(installs[0].name, "Multi Test 1"); - do_check_eq(installs[0].state, AddonManager.STATE_INSTALLED); - - // Comes from addon5.jar and is compatible by default - do_check_eq(installs[1].sourceURI, gInstall.sourceURI); - do_check_eq(installs[1].addon.id, "addon5@tests.mozilla.org"); - do_check_false(installs[1].addon.appDisabled); - do_check_eq(installs[1].version, "3.0"); - do_check_eq(installs[1].name, "Multi Test 2"); - do_check_eq(installs[1].state, AddonManager.STATE_INSTALLED); - - // Comes from addon6.xpi and would be incompatible with strict compat enabled - do_check_eq(installs[2].sourceURI, gInstall.sourceURI); - do_check_eq(installs[2].addon.id, "addon6@tests.mozilla.org"); - do_check_false(installs[2].addon.appDisabled); - do_check_eq(installs[2].version, "2.0"); - do_check_eq(installs[2].name, "Multi Test 3"); - do_check_eq(installs[2].state, AddonManager.STATE_INSTALLED); - - // Comes from addon7.jar and is made compatible by an update check - do_check_eq(installs[3].sourceURI, gInstall.sourceURI); - do_check_eq(installs[3].addon.id, "addon7@tests.mozilla.org"); - do_check_false(installs[3].addon.appDisabled); - do_check_eq(installs[3].version, "5.0"); - do_check_eq(installs[3].name, "Multi Test 4"); - do_check_eq(installs[3].state, AddonManager.STATE_INSTALLED); - - do_check_eq(installs[4].state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(installs[4].error, AddonManager.ERROR_CORRUPT_FILE); - - do_check_eq(installs[5].state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(installs[5].error, AddonManager.ERROR_CORRUPT_FILE); - - restartManager(); - - AddonManager.getAddonsByIDs(["addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org"], - function([a4, a5, a6, a7]) { - do_check_neq(a4, null); - do_check_neq(a5, null); - do_check_neq(a6, null); - do_check_neq(a7, null); - - a4.uninstall(); - a5.uninstall(); - a6.uninstall(); - a7.uninstall(); - - do_execute_soon(run_test_13); - }); -} - - -// Tests that cancelling an upgrade leaves the original add-on's pendingOperations -// correct -function run_test_13() { - restartManager(); - - installAllFiles([do_get_addon("test_install2_1")], function() { - restartManager(); - - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install2_2.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.version, "3.0"); - do_check_eq(install.name, "Test 3"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - AddonManager.getAllInstalls(function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - do_check_eq(install.existingAddon, null); - - prepare_test({ - "addon2@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded", - ], check_test_13); - install.install(); - }); - }, "application/x-xpinstall", null, "Test 3", null, "3.0"); - }); -} - -function check_test_13(install) { - ensure_test_completed(); - - do_check_eq(install.version, "3.0"); - do_check_eq(install.name, "Real Test 3"); - do_check_eq(install.state, AddonManager.STATE_INSTALLED); - do_check_neq(install.existingAddon, null); - do_check_eq(install.existingAddon.id, "addon2@tests.mozilla.org"); - do_check_eq(install.addon.install, install); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(olda2) { - do_check_neq(olda2, null); - do_check_true(hasFlag(olda2.pendingOperations, AddonManager.PENDING_UPGRADE)); - do_check_eq(olda2.pendingUpgrade, install.addon); - - do_check_true(hasFlag(install.addon.pendingOperations, - AddonManager.PENDING_INSTALL)); - - prepare_test({ - "addon2@tests.mozilla.org": [ - "onOperationCancelled" - ] - }, [ - "onInstallCancelled", - ]); - - install.cancel(); - - do_check_false(hasFlag(install.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - - do_check_false(hasFlag(olda2.pendingOperations, AddonManager.PENDING_UPGRADE)); - do_check_eq(olda2.pendingUpgrade, null); - - restartManager(); - - // Check that the upgrade did not complete - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_eq(a2.version, "2.0"); - - a2.uninstall(); - - do_execute_soon(run_test_14); - }); - })); -} - -// Check that cancelling the install from onDownloadStarted actually cancels it -function run_test_14() { - restartManager(); - - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_eq(install.file, null); - - prepare_test({ }, [ - "onDownloadStarted" - ], check_test_14); - install.install(); - }, "application/x-xpinstall"); -} - -function check_test_14(install) { - prepare_test({ }, [ - "onDownloadCancelled" - ], function() { - let file = install.file; - - install.addListener({ - onDownloadProgress: function() { - do_throw("Download should not have continued"); - }, - onDownloadEnded: function() { - do_throw("Download should not have continued"); - } - }); - - // Allow the listener to return to see if it continues downloading. The - // The listener only really tests if we give it time to see progress, the - // file check isn't ideal either - do_execute_soon(function() { - do_check_false(file.exists()); - - run_test_15(); - }); - }); - - // Wait for the channel to be ready to cancel - do_execute_soon(function() { - install.cancel(); - }); -} - -// Checks that cancelling the install from onDownloadEnded actually cancels it -function run_test_15() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_eq(install.file, null); - - prepare_test({ }, [ - "onDownloadStarted", - "onDownloadEnded" - ], check_test_15); - install.install(); - }, "application/x-xpinstall"); -} - -function check_test_15(install) { - prepare_test({ }, [ - "onDownloadCancelled" - ]); - - install.cancel(); - - ensure_test_completed(); - - install.addListener({ - onInstallStarted: function() { - do_throw("Install should not have continued"); - } - }); - - // Allow the listener to return to see if it starts installing - do_execute_soon(run_test_16); -} - -// Verify that the userDisabled value carries over to the upgrade by default -function run_test_16() { - restartManager(); - - let url = "http://localhost:" + gPort + "/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onInstallStarted: function() { - do_check_false(aInstall.addon.userDisabled); - aInstall.addon.userDisabled = true; - }, - - onInstallEnded: function() { - do_execute_soon(function install2_1_ended() { - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_true(a2.userDisabled); - do_check_false(a2.isActive); - - let url_2 = "http://localhost:" + gPort + "/addons/test_install2_2.xpi"; - AddonManager.getInstallForURL(url_2, function(aInstall_2) { - aInstall_2.addListener({ - onInstallEnded: function() { - do_execute_soon(function install2_2_ended() { - do_check_true(aInstall_2.addon.userDisabled); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2_2) { - do_check_true(a2_2.userDisabled); - do_check_false(a2_2.isActive); - - a2_2.uninstall(); - do_execute_soon(run_test_17); - }); - }); - } - }); - aInstall_2.install(); - }, "application/x-xpinstall"); - }); - }); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -// Verify that changing the userDisabled value before onInstallEnded works -function run_test_17() { - restartManager(); - - let url = "http://localhost:" + gPort + "/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onInstallEnded: function() { - do_execute_soon(function install2_1_ended2() { - do_check_false(aInstall.addon.userDisabled); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_false(a2.userDisabled); - do_check_true(a2.isActive); - - let url_2 = "http://localhost:" + gPort + "/addons/test_install2_2.xpi"; - AddonManager.getInstallForURL(url_2, function(aInstall_2) { - aInstall_2.addListener({ - onInstallStarted: function() { - do_check_false(aInstall_2.addon.userDisabled); - aInstall_2.addon.userDisabled = true; - }, - - onInstallEnded: function() { - do_execute_soon(function install2_2_ended2() { - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2_2) { - do_check_true(a2_2.userDisabled); - do_check_false(a2_2.isActive); - - a2_2.uninstall(); - do_execute_soon(run_test_18); - }); - }); - } - }); - aInstall_2.install(); - }, "application/x-xpinstall"); - }); - }); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -// Verify that changing the userDisabled value before onInstallEnded works -function run_test_18() { - restartManager(); - - let url = "http://localhost:" + gPort + "/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onInstallStarted: function() { - do_check_false(aInstall.addon.userDisabled); - aInstall.addon.userDisabled = true; - }, - - onInstallEnded: function() { - do_execute_soon(function install_2_1_ended3() { - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_true(a2.userDisabled); - do_check_false(a2.isActive); - - let url_2 = "http://localhost:" + gPort + "/addons/test_install2_2.xpi"; - AddonManager.getInstallForURL(url_2, function(aInstall_2) { - aInstall_2.addListener({ - onInstallStarted: function() { - do_check_true(aInstall_2.addon.userDisabled); - aInstall_2.addon.userDisabled = false; - }, - - onInstallEnded: function() { - do_execute_soon(function install_2_2_ended3() { - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2_2) { - do_check_false(a2_2.userDisabled); - do_check_true(a2_2.isActive); - - a2_2.uninstall(); - do_execute_soon(run_test_18_1); - }); - }); - } - }); - aInstall_2.install(); - }, "application/x-xpinstall"); - }); - }); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - - -// Checks that metadata is not stored if the pref is set to false -function run_test_18_1() { - restartManager(); - - Services.prefs.setBoolPref("extensions.getAddons.cache.enabled", true); - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, - "http://localhost:" + gPort + "/data/test_install.xml"); - - Services.prefs.setBoolPref("extensions.addon2@tests.mozilla.org.getAddons.cache.enabled", false); - - let url = "http://localhost:" + gPort + "/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onInstallEnded: function(unused, aAddon) { - do_execute_soon(function test18_1_install_ended() { - do_check_neq(aAddon.fullDescription, "Repository description"); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_neq(a2.fullDescription, "Repository description"); - - a2.uninstall(); - do_execute_soon(run_test_19); - }); - }); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -// Checks that metadata is downloaded for new installs and is visible before and -// after restart -function run_test_19() { - restartManager(); - Services.prefs.setBoolPref("extensions.addon2@tests.mozilla.org.getAddons.cache.enabled", true); - - let url = "http://localhost:" + gPort + "/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onInstallEnded: function(unused, aAddon) { - do_execute_soon(function test19_install_ended() { - do_check_eq(aAddon.fullDescription, "Repository description"); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_eq(a2.fullDescription, "Repository description"); - - a2.uninstall(); - do_execute_soon(run_test_20); - }); - }); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -// Do the same again to make sure it works when the data is already in the cache -function run_test_20() { - restartManager(); - - let url = "http://localhost:" + gPort + "/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onInstallEnded: function(unused, aAddon) { - do_execute_soon(function test20_install_ended() { - do_check_eq(aAddon.fullDescription, "Repository description"); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_eq(a2.fullDescription, "Repository description"); - - a2.uninstall(); - do_execute_soon(run_test_21); - }); - }); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -// Verify that installing an add-on that is already pending install cancels the -// first install -function run_test_21() { - restartManager(); - Services.prefs.setBoolPref("extensions.getAddons.cache.enabled", false); - - installAllFiles([do_get_addon("test_install2_1")], function() { - AddonManager.getAllInstalls(function(aInstalls) { - do_check_eq(aInstalls.length, 1); - - prepare_test({ - "addon2@tests.mozilla.org": [ - "onOperationCancelled", - "onInstalling" - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallCancelled", - "onInstallEnded", - ], check_test_21); - - let url = "http://localhost:" + gPort + "/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.install(); - }, "application/x-xpinstall"); - }); - }); -} - -function check_test_21(aInstall) { - AddonManager.getAllInstalls(callback_soon(function(aInstalls) { - do_check_eq(aInstalls.length, 1); - do_check_eq(aInstalls[0], aInstall); - - prepare_test({ - "addon2@tests.mozilla.org": [ - "onOperationCancelled" - ] - }, [ - "onInstallCancelled", - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_eq(a2, null); - - run_test_22(); - }); - })); -} - -// Tests that an install can be restarted after being cancelled -function run_test_22() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - ensure_test_completed(); - - do_check_neq(aInstall, null); - do_check_eq(aInstall.state, AddonManager.STATE_AVAILABLE); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_22); - aInstall.install(); - }, "application/x-xpinstall"); -} - -function check_test_22(aInstall) { - prepare_test({}, [ - "onDownloadCancelled" - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - prepare_test({ - "addon3@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], finish_test_22); - - aInstall.install(); -} - -function finish_test_22(aInstall) { - prepare_test({ - "addon3@tests.mozilla.org": [ - "onOperationCancelled" - ] - }, [ - "onInstallCancelled" - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - run_test_23(); -} - -// Tests that an install can be restarted after being cancelled when a hash -// was provided -function run_test_23() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - ensure_test_completed(); - - do_check_neq(aInstall, null); - do_check_eq(aInstall.state, AddonManager.STATE_AVAILABLE); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_23); - aInstall.install(); - }, "application/x-xpinstall", do_get_addon_hash("test_install3")); -} - -function check_test_23(aInstall) { - prepare_test({}, [ - "onDownloadCancelled" - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - prepare_test({ - "addon3@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], finish_test_23); - - aInstall.install(); -} - -function finish_test_23(aInstall) { - prepare_test({ - "addon3@tests.mozilla.org": [ - "onOperationCancelled" - ] - }, [ - "onInstallCancelled" - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - run_test_24(); -} - -// Tests that an install with a bad hash can be restarted after it fails, though -// it will only fail again -function run_test_24() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - ensure_test_completed(); - - do_check_neq(aInstall, null); - do_check_eq(aInstall.state, AddonManager.STATE_AVAILABLE); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadFailed", - ], check_test_24); - aInstall.install(); - }, "application/x-xpinstall", "sha1:foo"); -} - -function check_test_24(aInstall) { - prepare_test({ }, [ - "onDownloadStarted", - "onDownloadFailed" - ], run_test_25); - - aInstall.install(); -} - -// Tests that installs with a hash for a local file work -function run_test_25() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = Services.io.newFileURI(do_get_addon("test_install3")).spec; - AddonManager.getInstallForURL(url, function(aInstall) { - ensure_test_completed(); - - do_check_neq(aInstall, null); - do_check_eq(aInstall.state, AddonManager.STATE_DOWNLOADED); - do_check_eq(aInstall.error, 0); - - prepare_test({ }, [ - "onDownloadCancelled" - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - run_test_26(); - }, "application/x-xpinstall", do_get_addon_hash("test_install3")); -} - -function run_test_26() { - prepare_test({ }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadCancelled" - ]); - - let observerService = AM_Cc["@mozilla.org/network/http-activity-distributor;1"]. - getService(AM_Ci.nsIHttpActivityDistributor); - observerService.addObserver({ - observeActivity: function(aChannel, aType, aSubtype, aTimestamp, aSizeData, - aStringData) { - aChannel.QueryInterface(AM_Ci.nsIChannel); - // Wait for the final event for the redirected URL - if (aChannel.URI.spec != "http://localhost:" + gPort + "/addons/test_install1.xpi" || - aType != AM_Ci.nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION || - aSubtype != AM_Ci.nsIHttpActivityObserver.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE) - return; - - // Request should have been cancelled - do_check_eq(aChannel.status, Components.results.NS_BINDING_ABORTED); - - observerService.removeObserver(this); - - run_test_27(); - } - }); - - let url = "http://localhost:" + gPort + "/redirect?/addons/test_install1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onDownloadProgress: function(aDownloadProgressInstall) { - aDownloadProgressInstall.cancel(); - } - }); - - aInstall.install(); - }, "application/x-xpinstall"); -} - - -// Tests that an install can be restarted during onDownloadCancelled after being -// cancelled in mid-download -function run_test_27() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - ensure_test_completed(); - - do_check_neq(aInstall, null); - do_check_eq(aInstall.state, AddonManager.STATE_AVAILABLE); - - aInstall.addListener({ - onDownloadProgress: function() { - aInstall.removeListener(this); - aInstall.cancel(); - } - }); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadCancelled", - ], check_test_27); - aInstall.install(); - }, "application/x-xpinstall"); -} - -function check_test_27(aInstall) { - prepare_test({ - "addon3@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], finish_test_27); - - let file = aInstall.file; - aInstall.install(); - do_check_neq(file.path, aInstall.file.path); - do_check_false(file.exists()); -} - -function finish_test_27(aInstall) { - prepare_test({ - "addon3@tests.mozilla.org": [ - "onOperationCancelled" - ] - }, [ - "onInstallCancelled" - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - run_test_28(); -} - -// Tests that an install that isn't strictly compatible and has -// binary components correctly has appDisabled set (see bug 702868). -function run_test_28() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install5.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Real Test 5"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - AddonManager.getInstallsByTypes(null, function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted" - ], check_test_28); - install.install(); - }); - }, "application/x-xpinstall", null, "Real Test 5", null, "1.0"); -} - -function check_test_28(install) { - ensure_test_completed(); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Real Test 5"); - do_check_eq(install.state, AddonManager.STATE_INSTALLING); - do_check_eq(install.existingAddon, null); - do_check_false(install.addon.isCompatible); - do_check_true(install.addon.appDisabled); - - prepare_test({}, [ - "onInstallCancelled" - ], finish_test_28); - return false; -} - -function finish_test_28(install) { - prepare_test({}, [ - "onDownloadCancelled" - ], run_test_29); - - install.cancel(); -} - -// Tests that an install with a matching compatibility override has appDisabled -// set correctly. -function run_test_29() { - Services.prefs.setBoolPref("extensions.getAddons.cache.enabled", true); - - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:" + gPort + "/addons/test_install6.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Addon Test 6"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - AddonManager.getInstallsByTypes(null, function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded" - ], check_test_29); - install.install(); - }); - }, "application/x-xpinstall", null, "Addon Test 6", null, "1.0"); -} - -function check_test_29(install) { - // ensure_test_completed(); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_neq(install.addon, null); - do_check_false(install.addon.isCompatible); - do_check_true(install.addon.appDisabled); - - prepare_test({}, [ - "onDownloadCancelled" - ], run_test_30); - install.cancel(); - return false; -} - -// Tests that a multi-package XPI with no add-ons inside shows up as a -// corrupt file -function run_test_30() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_install7"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(install.error, AddonManager.ERROR_CORRUPT_FILE); - do_check_eq(install.linkedInstalls, null); - - run_test_31(); - }); -} - -// Tests that a multi-package XPI with no valid add-ons inside shows up as a -// corrupt file -function run_test_31() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_install8"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(install.error, AddonManager.ERROR_CORRUPT_FILE); - do_check_eq(install.linkedInstalls, null); - - end_test(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_install_from_sources.js b/toolkit/mozapps/webextensions/test/xpcshell/test_install_from_sources.js deleted file mode 100644 index 18bb7d74e..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_install_from_sources.js +++ /dev/null @@ -1,80 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const ID = "bootstrap1@tests.mozilla.org"; -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42"); -startupManager(); - -BootstrapMonitor.init(); - -// Partial list of bootstrap reasons from XPIProvider.jsm -const BOOTSTRAP_REASONS = { - ADDON_INSTALL: 5, - ADDON_UPGRADE: 7, - ADDON_DOWNGRADE: 8, -}; - -// Install an unsigned add-on with no existing add-on present. -// Restart and make sure it is still around. -add_task(function*() { - let extInstallCalled = false; - AddonManager.addInstallListener({ - onExternalInstall: (aInstall) => { - do_check_eq(aInstall.id, ID); - do_check_eq(aInstall.version, "1.0"); - extInstallCalled = true; - }, - }); - - let installingCalled = false; - let installedCalled = false; - AddonManager.addAddonListener({ - onInstalling: (aInstall) => { - do_check_eq(aInstall.id, ID); - do_check_eq(aInstall.version, "1.0"); - installingCalled = true; - }, - onInstalled: (aInstall) => { - do_check_eq(aInstall.id, ID); - do_check_eq(aInstall.version, "1.0"); - installedCalled = true; - }, - onInstallStarted: (aInstall) => { - do_throw("onInstallStarted called unexpectedly"); - } - }); - - yield AddonManager.installAddonFromSources(do_get_file("data/from_sources/")); - - do_check_true(extInstallCalled); - do_check_true(installingCalled); - do_check_true(installedCalled); - - let install = BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - equal(install.reason, BOOTSTRAP_REASONS.ADDON_INSTALL); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - let addon = yield promiseAddonByID(ID); - - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Bootstrap 1"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - yield promiseRestartManager(); - - install = BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - equal(install.reason, BOOTSTRAP_REASONS.ADDON_INSTALL); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - - yield promiseRestartManager(); -}); - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_install_icons.js b/toolkit/mozapps/webextensions/test/xpcshell/test_install_icons.js deleted file mode 100644 index 70f91c560..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_install_icons.js +++ /dev/null @@ -1,61 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// use httpserver to find an available port -Components.utils.import("resource://testing-common/httpd.js"); -var gServer = new HttpServer(); -gServer.start(-1); -gPort = gServer.identity.primaryPort; - -var addon_url = "http://localhost:" + gPort + "/test.xpi"; -var icon32_url = "http://localhost:" + gPort + "/icon.png"; -var icon64_url = "http://localhost:" + gPort + "/icon64.png"; - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - startupManager(); - - test_1(); -} - -function test_1() { - AddonManager.getInstallForURL(addon_url, function(aInstall) { - do_check_eq(aInstall.iconURL, null); - do_check_neq(aInstall.icons, null); - do_check_eq(aInstall.icons[32], undefined); - do_check_eq(aInstall.icons[64], undefined); - test_2(); - }, "application/x-xpinstall", null, null, null, null, null); -} - -function test_2() { - AddonManager.getInstallForURL(addon_url, function(aInstall) { - do_check_eq(aInstall.iconURL, icon32_url); - do_check_neq(aInstall.icons, null); - do_check_eq(aInstall.icons[32], icon32_url); - do_check_eq(aInstall.icons[64], undefined); - test_3(); - }, "application/x-xpinstall", null, null, icon32_url, null, null); -} - -function test_3() { - AddonManager.getInstallForURL(addon_url, function(aInstall) { - do_check_eq(aInstall.iconURL, icon32_url); - do_check_neq(aInstall.icons, null); - do_check_eq(aInstall.icons[32], icon32_url); - do_check_eq(aInstall.icons[64], undefined); - test_4(); - }, "application/x-xpinstall", null, null, { "32": icon32_url }, null, null); -} - -function test_4() { - AddonManager.getInstallForURL(addon_url, function(aInstall) { - do_check_eq(aInstall.iconURL, icon32_url); - do_check_neq(aInstall.icons, null); - do_check_eq(aInstall.icons[32], icon32_url); - do_check_eq(aInstall.icons[64], icon64_url); - do_execute_soon(do_test_finished); - }, "application/x-xpinstall", null, null, { "32": icon32_url, "64": icon64_url }, null, null); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_install_strictcompat.js b/toolkit/mozapps/webextensions/test/xpcshell/test_install_strictcompat.js deleted file mode 100644 index 77f806ba2..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_install_strictcompat.js +++ /dev/null @@ -1,1726 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that add-ons can be installed from XPI files -var Cc = Components.classes; -var Ci = Components.interfaces; -var Cu = Components.utils; - -// install.rdf size, icon.png, icon64.png size -const ADDON1_SIZE = 705 + 16 + 16; - -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/NetUtil.jsm"); -Cu.import("resource://testing-common/httpd.js"); - -var testserver; -var gInstallDate; -var gInstall = null; - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true); - - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - startupManager(); - // Make sure we only register once despite multiple calls - AddonManager.addInstallListener(InstallListener); - AddonManager.addAddonListener(AddonListener); - AddonManager.addInstallListener(InstallListener); - AddonManager.addAddonListener(AddonListener); - - // Create and configure the HTTP server. - testserver = new HttpServer(); - testserver.registerDirectory("/addons/", do_get_file("addons")); - testserver.registerDirectory("/data/", do_get_file("data")); - testserver.registerPathHandler("/redirect", function(aRequest, aResponse) { - aResponse.setStatusLine(null, 301, "Moved Permanently"); - let url = aRequest.host + ":" + aRequest.port + aRequest.queryString; - aResponse.setHeader("Location", "http://" + url); - }); - testserver.start(4444); - - do_test_pending(); - run_test_1(); -} - -function end_test() { - testserver.stop(do_test_finished); -} - -// Checks that an install from a local file proceeds as expected -function run_test_1() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_install1"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.linkedInstalls, null); - do_check_eq(install.type, "extension"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_true(install.addon.hasResource("install.rdf")); - do_check_eq(install.addon.install, install); - do_check_eq(install.addon.size, ADDON1_SIZE); - do_check_true(hasFlag(install.addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - let file = do_get_addon("test_install1"); - let uri = Services.io.newFileURI(file).spec; - do_check_eq(install.addon.getResourceURI("install.rdf").spec, "jar:" + uri + "!/install.rdf"); - do_check_eq(install.addon.iconURL, "jar:" + uri + "!/icon.png"); - do_check_eq(install.addon.icon64URL, "jar:" + uri + "!/icon64.png"); - do_check_eq(install.iconURL, null); - - do_check_eq(install.sourceURI.spec, uri); - do_check_eq(install.addon.sourceURI.spec, uri); - - AddonManager.getAllInstalls(function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - - AddonManager.getInstallsByTypes(["foo"], function(fooInstalls) { - do_check_eq(fooInstalls.length, 0); - - AddonManager.getInstallsByTypes(["extension"], function(extensionInstalls) { - do_check_eq(extensionInstalls.length, 1); - do_check_eq(extensionInstalls[0], install); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], check_test_1); - install.install(); - }); - }); - }); - }); -} - -function check_test_1() { - ensure_test_completed(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(olda1) { - do_check_eq(olda1, null); - - AddonManager.getAddonsWithOperationsByTypes(null, callback_soon(function(pendingAddons) { - do_check_eq(pendingAddons.length, 1); - do_check_eq(pendingAddons[0].id, "addon1@tests.mozilla.org"); - let uri = NetUtil.newURI(pendingAddons[0].iconURL); - if (uri instanceof AM_Ci.nsIJARURI) { - let jarURI = uri.QueryInterface(AM_Ci.nsIJARURI); - let archiveURI = jarURI.JARFile; - let archiveFile = archiveURI.QueryInterface(AM_Ci.nsIFileURL).file; - let zipReader = Cc["@mozilla.org/libjar/zip-reader;1"]. - createInstance(Ci.nsIZipReader); - try { - zipReader.open(archiveFile); - do_check_true(zipReader.hasEntry(jarURI.JAREntry)); - } - finally { - zipReader.close(); - } - } - else { - let iconFile = uri.QueryInterface(AM_Ci.nsIFileURL).file; - do_check_true(iconFile.exists()); - } - - // Make the pending install have a sensible date - let updateDate = Date.now(); - let extURI = pendingAddons[0].getResourceURI(""); - let ext = extURI.QueryInterface(AM_Ci.nsIFileURL).file; - setExtensionModifiedTime(ext, updateDate); - - // The pending add-on cannot be disabled or enabled. - do_check_false(hasFlag(pendingAddons[0].permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_false(hasFlag(pendingAddons[0].permissions, AddonManager.PERM_CAN_DISABLE)); - - restartManager(); - - AddonManager.getAllInstalls(function(activeInstalls) { - do_check_eq(activeInstalls, 0); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.type, "extension"); - do_check_eq(a1.version, "1.0"); - do_check_eq(a1.name, "Test 1"); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_true(do_get_addon("test_install1").exists()); - do_check_in_crash_annotation(a1.id, a1.version); - do_check_eq(a1.size, ADDON1_SIZE); - - do_check_eq(a1.sourceURI.spec, - Services.io.newFileURI(do_get_addon("test_install1")).spec); - let difference = a1.installDate.getTime() - updateDate; - if (Math.abs(difference) > MAX_TIME_DIFFERENCE) - do_throw("Add-on install time was out by " + difference + "ms"); - - difference = a1.updateDate.getTime() - updateDate; - if (Math.abs(difference) > MAX_TIME_DIFFERENCE) - do_throw("Add-on update time was out by " + difference + "ms"); - - do_check_true(a1.hasResource("install.rdf")); - do_check_false(a1.hasResource("foo.bar")); - - let root_uri = do_get_addon_root_uri(profileDir, "addon1@tests.mozilla.org"); - do_check_eq(a1.getResourceURI("install.rdf").spec, root_uri + "install.rdf"); - do_check_eq(a1.iconURL, root_uri + "icon.png"); - do_check_eq(a1.icon64URL, root_uri + "icon64.png"); - - a1.uninstall(); - do_execute_soon(function() { run_test_2(a1) }); - }); - }); - })); - }); -} - -// Tests that an install from a url downloads. -function run_test_2(aAddon) { - let { id, version } = aAddon; - restartManager(); - do_check_not_in_crash_annotation(id, version); - - let url = "http://localhost:4444/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(install) { - do_check_neq(install, null); - do_check_eq(install.linkedInstalls, null); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test 2"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - do_check_eq(install.iconURL, null); - do_check_eq(install.sourceURI.spec, url); - - AddonManager.getAllInstalls(function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_2); - - install.addListener({ - onDownloadProgress: function() { - do_execute_soon(function() { - Components.utils.forceGC(); - }); - } - }); - - install.install(); - }); - }, "application/x-xpinstall", null, "Test 2", null, "1.0"); -} - -function check_test_2(install) { - ensure_test_completed(); - do_check_eq(install.version, "2.0"); - do_check_eq(install.name, "Real Test 2"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_eq(install.addon.install, install); - do_check_true(hasFlag(install.addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - do_check_eq(install.iconURL, null); - - // Pause the install here and start it again in run_test_3 - do_execute_soon(function() { run_test_3(install); }); - return false; -} - -// Tests that the downloaded XPI installs ok -function run_test_3(install) { - prepare_test({ - "addon2@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], check_test_3); - install.install(); -} - -function check_test_3(aInstall) { - // Make the pending install have a sensible date - let updateDate = Date.now(); - let extURI = aInstall.addon.getResourceURI(""); - let ext = extURI.QueryInterface(AM_Ci.nsIFileURL).file; - setExtensionModifiedTime(ext, updateDate); - - ensure_test_completed(); - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(olda2) { - do_check_eq(olda2, null); - restartManager(); - - AddonManager.getAllInstalls(function(installs) { - do_check_eq(installs, 0); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_neq(a2, null); - do_check_eq(a2.type, "extension"); - do_check_eq(a2.version, "2.0"); - do_check_eq(a2.name, "Real Test 2"); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - do_check_true(do_get_addon("test_install2_1").exists()); - do_check_in_crash_annotation(a2.id, a2.version); - do_check_eq(a2.sourceURI.spec, - "http://localhost:4444/addons/test_install2_1.xpi"); - - let difference = a2.installDate.getTime() - updateDate; - if (Math.abs(difference) > MAX_TIME_DIFFERENCE) - do_throw("Add-on install time was out by " + difference + "ms"); - - difference = a2.updateDate.getTime() - updateDate; - if (Math.abs(difference) > MAX_TIME_DIFFERENCE) - do_throw("Add-on update time was out by " + difference + "ms"); - - gInstallDate = a2.installDate.getTime(); - - run_test_4(); - }); - }); - })); -} - -// Tests that installing a new version of an existing add-on works -function run_test_4() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:4444/addons/test_install2_2.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.version, "3.0"); - do_check_eq(install.name, "Test 3"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - AddonManager.getAllInstalls(function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - do_check_eq(install.existingAddon, null); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_4); - install.install(); - }); - }, "application/x-xpinstall", null, "Test 3", null, "3.0"); -} - -function check_test_4(install) { - ensure_test_completed(); - - do_check_eq(install.version, "3.0"); - do_check_eq(install.name, "Real Test 3"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_neq(install.existingAddon); - do_check_eq(install.existingAddon.id, "addon2@tests.mozilla.org"); - do_check_eq(install.addon.install, install); - do_check_true(hasFlag(install.addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - - run_test_5(); - // Installation will continue when there is nothing returned. -} - -// Continue installing the new version -function run_test_5() { - prepare_test({ - "addon2@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], check_test_5); -} - -function check_test_5(install) { - ensure_test_completed(); - - do_check_eq(install.existingAddon.pendingUpgrade.install, install); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(olda2) { - do_check_neq(olda2, null); - do_check_true(hasFlag(olda2.pendingOperations, AddonManager.PENDING_UPGRADE)); - - AddonManager.getInstallsByTypes(null, callback_soon(function(installs) { - do_check_eq(installs.length, 1); - do_check_eq(installs[0].addon, olda2.pendingUpgrade); - restartManager(); - - AddonManager.getInstallsByTypes(null, function(installs2) { - do_check_eq(installs2.length, 0); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_neq(a2, null); - do_check_eq(a2.type, "extension"); - do_check_eq(a2.version, "3.0"); - do_check_eq(a2.name, "Real Test 3"); - do_check_true(a2.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - do_check_true(do_get_addon("test_install2_2").exists()); - do_check_in_crash_annotation(a2.id, a2.version); - do_check_eq(a2.sourceURI.spec, - "http://localhost:4444/addons/test_install2_2.xpi"); - - do_check_eq(a2.installDate.getTime(), gInstallDate); - // Update date should be later (or the same if this test is too fast) - do_check_true(a2.installDate <= a2.updateDate); - - a2.uninstall(); - do_execute_soon(run_test_6); - }); - }); - })); - }); -} - -// Tests that an install that requires a compatibility update works -function run_test_6() { - restartManager(); - - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:4444/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Real Test 4"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - AddonManager.getInstallsByTypes(null, function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_6); - install.install(); - }); - }, "application/x-xpinstall", null, "Real Test 4", null, "1.0"); -} - -function check_test_6(install) { - ensure_test_completed(); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Real Test 4"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_eq(install.existingAddon, null); - do_check_false(install.addon.appDisabled); - run_test_7(); - return true; -} - -// Continue the install -function run_test_7() { - prepare_test({ - "addon3@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], check_test_7); -} - -function check_test_7() { - ensure_test_completed(); - AddonManager.getAddonByID("addon3@tests.mozilla.org", callback_soon(function(olda3) { - do_check_eq(olda3, null); - restartManager(); - - AddonManager.getAllInstalls(function(installs) { - do_check_eq(installs, 0); - - AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) { - do_check_neq(a3, null); - do_check_eq(a3.type, "extension"); - do_check_eq(a3.version, "1.0"); - do_check_eq(a3.name, "Real Test 4"); - do_check_true(a3.isActive); - do_check_false(a3.appDisabled); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - do_check_true(do_get_addon("test_install3").exists()); - a3.uninstall(); - do_execute_soon(run_test_8); - }); - }); - })); -} - -function run_test_8() { - restartManager(); - - AddonManager.addInstallListener(InstallListener); - AddonManager.addAddonListener(AddonListener); - - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_install3"), function(install) { - do_check_true(install.addon.isCompatible); - - prepare_test({ - "addon3@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test_8)); - install.install(); - }); -} - -function check_test_8() { - restartManager(); - - AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) { - do_check_neq(a3, null); - do_check_eq(a3.type, "extension"); - do_check_eq(a3.version, "1.0"); - do_check_eq(a3.name, "Real Test 4"); - do_check_true(a3.isActive); - do_check_false(a3.appDisabled); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - do_check_true(do_get_addon("test_install3").exists()); - a3.uninstall(); - do_execute_soon(run_test_9); - }); -} - -// Test that after cancelling a download it is removed from the active installs -function run_test_9() { - restartManager(); - - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:4444/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Real Test 4"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - AddonManager.getInstallsByTypes(null, function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_9); - install.install(); - }); - }, "application/x-xpinstall", null, "Real Test 4", null, "1.0"); -} - -function check_test_9(install) { - prepare_test({}, [ - "onDownloadCancelled" - ], function() { - let file = install.file; - - // Allow the file removal to complete - do_execute_soon(function() { - AddonManager.getAllInstalls(function(activeInstalls) { - do_check_eq(activeInstalls.length, 0); - do_check_false(file.exists()); - - run_test_10(); - }); - }); - }); - - install.cancel(); -} - -// Tests that after cancelling a pending install it is removed from the active -// installs -function run_test_10() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:4444/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Real Test 4"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - AddonManager.getInstallsByTypes(null, function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - - prepare_test({ - "addon3@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], check_test_10); - install.install(); - }); - }, "application/x-xpinstall", null, "Real Test 4", null, "1.0"); -} - -function check_test_10(install) { - prepare_test({ - "addon3@tests.mozilla.org": [ - "onOperationCancelled" - ] - }, [ - "onInstallCancelled" - ]); - - install.cancel(); - - ensure_test_completed(); - - AddonManager.getAllInstalls(callback_soon(function(activeInstalls) { - do_check_eq(activeInstalls.length, 0); - - restartManager(); - - // Check that the install did not complete - AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) { - do_check_eq(a3, null); - - run_test_11(); - }); - })); -} - -// Tests that a multi-package install shows up as multiple installs with the -// correct sourceURI. -function run_test_11() { - prepare_test({ }, [ - "onNewInstall", - "onNewInstall", - "onNewInstall", - "onNewInstall", - "onNewInstall", - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_install4"), function(install) { - ensure_test_completed(); - do_check_neq(install, null); - do_check_neq(install.linkedInstalls, null); - do_check_eq(install.linkedInstalls.length, 5); - - // Might be in any order so sort them based on ID - let installs = [install].concat(install.linkedInstalls); - installs.sort(function(a, b) { - if (a.state != b.state) { - if (a.state == AddonManager.STATE_DOWNLOAD_FAILED) - return 1; - else if (b.state == AddonManager.STATE_DOWNLOAD_FAILED) - return -1; - } - - // Don't care what order the failed installs show up in - if (a.state == AddonManager.STATE_DOWNLOAD_FAILED) - return 0; - - if (a.addon.id < b.addon.id) - return -1; - if (a.addon.id > b.addon.id) - return 1; - return 0; - }); - - // Comes from addon4.xpi and is made compatible by an update check - do_check_eq(installs[0].sourceURI, install.sourceURI); - do_check_eq(installs[0].addon.id, "addon4@tests.mozilla.org"); - do_check_false(installs[0].addon.appDisabled); - do_check_eq(installs[0].version, "1.0"); - do_check_eq(installs[0].name, "Multi Test 1"); - do_check_eq(installs[0].state, AddonManager.STATE_DOWNLOADED); - do_check_true(hasFlag(installs[0].addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - - // Comes from addon5.jar and is compatible by default - do_check_eq(installs[1].sourceURI, install.sourceURI); - do_check_eq(installs[1].addon.id, "addon5@tests.mozilla.org"); - do_check_false(installs[1].addon.appDisabled); - do_check_eq(installs[1].version, "3.0"); - do_check_eq(installs[1].name, "Multi Test 2"); - do_check_eq(installs[1].state, AddonManager.STATE_DOWNLOADED); - do_check_true(hasFlag(installs[1].addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - - // Comes from addon6.xpi and is incompatible - do_check_eq(installs[2].sourceURI, install.sourceURI); - do_check_eq(installs[2].addon.id, "addon6@tests.mozilla.org"); - do_check_true(installs[2].addon.appDisabled); - do_check_eq(installs[2].version, "2.0"); - do_check_eq(installs[2].name, "Multi Test 3"); - do_check_eq(installs[2].state, AddonManager.STATE_DOWNLOADED); - do_check_false(hasFlag(installs[2].addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - - // Comes from addon7.jar and is made compatible by an update check - do_check_eq(installs[3].sourceURI, install.sourceURI); - do_check_eq(installs[3].addon.id, "addon7@tests.mozilla.org"); - do_check_false(installs[3].addon.appDisabled); - do_check_eq(installs[3].version, "5.0"); - do_check_eq(installs[3].name, "Multi Test 4"); - do_check_eq(installs[3].state, AddonManager.STATE_DOWNLOADED); - do_check_true(hasFlag(installs[3].addon.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_INSTALL)); - - do_check_eq(installs[4].state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(installs[4].error, AddonManager.ERROR_CORRUPT_FILE); - - do_check_eq(installs[5].state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(installs[5].error, AddonManager.ERROR_CORRUPT_FILE); - - AddonManager.getAllInstalls(function(aInstalls) { - do_check_eq(aInstalls.length, 4); - - prepare_test({ - "addon4@tests.mozilla.org": [ - "onInstalling" - ], - "addon5@tests.mozilla.org": [ - "onInstalling" - ], - "addon6@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ], - "addon7@tests.mozilla.org": [ - "onInstalling" - ] - }, { - "addon4@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ], - "addon5@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ], - "addon6@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ], - "addon7@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ] - }, callback_soon(check_test_11)); - - installs[0].install(); - installs[1].install(); - installs[3].install(); - - // Note that we install addon6 last. Since it doesn't need a restart to - // install it completes asynchronously which would otherwise make the - // onInstallStarted/onInstallEnded events go out of sequence unless this - // is the last install operation - installs[2].install(); - }); - }); -} - -function check_test_11() { - restartManager(); - - AddonManager.getAddonsByIDs(["addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org"], - function([a4, a5, a6, a7]) { - do_check_neq(a4, null); - do_check_neq(a5, null); - do_check_neq(a6, null); - do_check_neq(a7, null); - - a4.uninstall(); - a5.uninstall(); - a6.uninstall(); - a7.uninstall(); - - do_execute_soon(run_test_12); - }); -} - -// Same as test 11 but for a remote XPI -function run_test_12() { - restartManager(); - - prepare_test({ }, [ - "onNewInstall", - ]); - - let url = "http://localhost:4444/addons/test_install4.xpi"; - AddonManager.getInstallForURL(url, function(install) { - gInstall = install; - - ensure_test_completed(); - do_check_neq(install, null); - do_check_eq(install.linkedInstalls, null); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - prepare_test({ - "addon4@tests.mozilla.org": [ - "onInstalling" - ], - "addon5@tests.mozilla.org": [ - "onInstalling" - ], - "addon6@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ], - "addon7@tests.mozilla.org": [ - "onInstalling" - ] - }, { - "NO_ID": [ - "onDownloadStarted", - "onNewInstall", - "onNewInstall", - "onNewInstall", - "onNewInstall", - "onNewInstall", - "onDownloadEnded" - ], - "addon4@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ], - "addon5@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ], - "addon6@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ], - "addon7@tests.mozilla.org": [ - "onInstallStarted", - "onInstallEnded" - ] - }, callback_soon(check_test_12)); - install.install(); - }, "application/x-xpinstall", null, "Multi Test 4"); -} - -function check_test_12() { - do_check_eq(gInstall.linkedInstalls.length, 5); - - // Might be in any order so sort them based on ID - let installs = [gInstall].concat(gInstall.linkedInstalls); - installs.sort(function(a, b) { - if (a.state != b.state) { - if (a.state == AddonManager.STATE_DOWNLOAD_FAILED) - return 1; - else if (b.state == AddonManager.STATE_DOWNLOAD_FAILED) - return -1; - } - - // Don't care what order the failed installs show up in - if (a.state == AddonManager.STATE_DOWNLOAD_FAILED) - return 0; - - if (a.addon.id < b.addon.id) - return -1; - if (a.addon.id > b.addon.id) - return 1; - return 0; - }); - - // Comes from addon4.xpi and is made compatible by an update check - do_check_eq(installs[0].sourceURI, gInstall.sourceURI); - do_check_eq(installs[0].addon.id, "addon4@tests.mozilla.org"); - do_check_false(installs[0].addon.appDisabled); - do_check_eq(installs[0].version, "1.0"); - do_check_eq(installs[0].name, "Multi Test 1"); - do_check_eq(installs[0].state, AddonManager.STATE_INSTALLED); - - // Comes from addon5.jar and is compatible by default - do_check_eq(installs[1].sourceURI, gInstall.sourceURI); - do_check_eq(installs[1].addon.id, "addon5@tests.mozilla.org"); - do_check_false(installs[1].addon.appDisabled); - do_check_eq(installs[1].version, "3.0"); - do_check_eq(installs[1].name, "Multi Test 2"); - do_check_eq(installs[1].state, AddonManager.STATE_INSTALLED); - - // Comes from addon6.xpi and is incompatible - do_check_eq(installs[2].sourceURI, gInstall.sourceURI); - do_check_eq(installs[2].addon.id, "addon6@tests.mozilla.org"); - do_check_true(installs[2].addon.appDisabled); - do_check_eq(installs[2].version, "2.0"); - do_check_eq(installs[2].name, "Multi Test 3"); - do_check_eq(installs[2].state, AddonManager.STATE_INSTALLED); - - // Comes from addon7.jar and is made compatible by an update check - do_check_eq(installs[3].sourceURI, gInstall.sourceURI); - do_check_eq(installs[3].addon.id, "addon7@tests.mozilla.org"); - do_check_false(installs[3].addon.appDisabled); - do_check_eq(installs[3].version, "5.0"); - do_check_eq(installs[3].name, "Multi Test 4"); - do_check_eq(installs[3].state, AddonManager.STATE_INSTALLED); - - do_check_eq(installs[4].state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(installs[4].error, AddonManager.ERROR_CORRUPT_FILE); - - do_check_eq(installs[5].state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(installs[5].error, AddonManager.ERROR_CORRUPT_FILE); - - restartManager(); - - AddonManager.getAddonsByIDs(["addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org"], - function([a4, a5, a6, a7]) { - do_check_neq(a4, null); - do_check_neq(a5, null); - do_check_neq(a6, null); - do_check_neq(a7, null); - - a4.uninstall(); - a5.uninstall(); - a6.uninstall(); - a7.uninstall(); - - do_execute_soon(run_test_13); - }); -} - - -// Tests that cancelling an upgrade leaves the original add-on's pendingOperations -// correct -function run_test_13() { - restartManager(); - - installAllFiles([do_get_addon("test_install2_1")], function() { - restartManager(); - - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:4444/addons/test_install2_2.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.version, "3.0"); - do_check_eq(install.name, "Test 3"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - - AddonManager.getAllInstalls(function(activeInstalls) { - do_check_eq(activeInstalls.length, 1); - do_check_eq(activeInstalls[0], install); - do_check_eq(install.existingAddon, null); - - prepare_test({ - "addon2@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded", - ], check_test_13); - install.install(); - }); - }, "application/x-xpinstall", null, "Test 3", null, "3.0"); - }); -} - -function check_test_13(install) { - ensure_test_completed(); - - do_check_eq(install.version, "3.0"); - do_check_eq(install.name, "Real Test 3"); - do_check_eq(install.state, AddonManager.STATE_INSTALLED); - do_check_neq(install.existingAddon, null); - do_check_eq(install.existingAddon.id, "addon2@tests.mozilla.org"); - do_check_eq(install.addon.install, install); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(olda2) { - do_check_neq(olda2, null); - do_check_true(hasFlag(olda2.pendingOperations, AddonManager.PENDING_UPGRADE)); - do_check_eq(olda2.pendingUpgrade, install.addon); - - do_check_true(hasFlag(install.addon.pendingOperations, - AddonManager.PENDING_INSTALL)); - - prepare_test({ - "addon2@tests.mozilla.org": [ - "onOperationCancelled" - ] - }, [ - "onInstallCancelled", - ]); - - install.cancel(); - - do_check_false(hasFlag(install.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - - do_check_false(hasFlag(olda2.pendingOperations, AddonManager.PENDING_UPGRADE)); - do_check_eq(olda2.pendingUpgrade, null); - - restartManager(); - - // Check that the upgrade did not complete - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_eq(a2.version, "2.0"); - - a2.uninstall(); - - do_execute_soon(run_test_14); - }); - })); -} - -// Check that cancelling the install from onDownloadStarted actually cancels it -function run_test_14() { - restartManager(); - - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:4444/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_eq(install.file, null); - - prepare_test({ }, [ - "onDownloadStarted" - ], check_test_14); - install.install(); - }, "application/x-xpinstall"); -} - -function check_test_14(install) { - prepare_test({ }, [ - "onDownloadCancelled" - ], function() { - let file = install.file; - - install.addListener({ - onDownloadProgress: function() { - do_throw("Download should not have continued"); - }, - onDownloadEnded: function() { - do_throw("Download should not have continued"); - } - }); - - // Allow the listener to return to see if it continues downloading. The - // The listener only really tests if we give it time to see progress, the - // file check isn't ideal either - do_execute_soon(function() { - do_check_false(file.exists()); - - run_test_15(); - }); - }); - - // Wait for the channel to be ready to cancel - do_execute_soon(function() { - install.cancel(); - }); -} - -// Checks that cancelling the install from onDownloadEnded actually cancels it -function run_test_15() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:4444/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(install) { - ensure_test_completed(); - - do_check_eq(install.file, null); - - prepare_test({ }, [ - "onDownloadStarted", - "onDownloadEnded" - ], check_test_15); - install.install(); - }, "application/x-xpinstall"); -} - -function check_test_15(install) { - prepare_test({ }, [ - "onDownloadCancelled" - ]); - - install.cancel(); - - ensure_test_completed(); - - install.addListener({ - onInstallStarted: function() { - do_throw("Install should not have continued"); - } - }); - - // Allow the listener to return to see if it starts installing - do_execute_soon(run_test_16); -} - -// Verify that the userDisabled value carries over to the upgrade by default -function run_test_16() { - restartManager(); - - let url = "http://localhost:4444/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onInstallStarted: function() { - do_check_false(aInstall.addon.userDisabled); - aInstall.addon.userDisabled = true; - }, - - onInstallEnded: function() { - do_execute_soon(function test16_install1() { - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_true(a2.userDisabled); - do_check_false(a2.isActive); - - let url_2 = "http://localhost:4444/addons/test_install2_2.xpi"; - AddonManager.getInstallForURL(url_2, function(aInstall_2) { - aInstall_2.addListener({ - onInstallEnded: function() { - do_execute_soon(function test16_install2() { - do_check_true(aInstall_2.addon.userDisabled); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2_2) { - do_check_true(a2_2.userDisabled); - do_check_false(a2_2.isActive); - - a2_2.uninstall(); - do_execute_soon(run_test_17); - }); - }); - } - }); - aInstall_2.install(); - }, "application/x-xpinstall"); - }); - }); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -// Verify that changing the userDisabled value before onInstallEnded works -function run_test_17() { - restartManager(); - - let url = "http://localhost:4444/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onInstallEnded: function() { - do_execute_soon(function() { - do_check_false(aInstall.addon.userDisabled); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_false(a2.userDisabled); - do_check_true(a2.isActive); - - let url_2 = "http://localhost:4444/addons/test_install2_2.xpi"; - AddonManager.getInstallForURL(url_2, function(aInstall_2) { - aInstall_2.addListener({ - onInstallStarted: function() { - do_check_false(aInstall_2.addon.userDisabled); - aInstall_2.addon.userDisabled = true; - }, - - onInstallEnded: function() { - do_execute_soon(function() { - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2_2) { - do_check_true(a2_2.userDisabled); - do_check_false(a2_2.isActive); - - a2_2.uninstall(); - do_execute_soon(run_test_18); - }); - }); - } - }); - aInstall_2.install(); - }, "application/x-xpinstall"); - }); - }); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -// Verify that changing the userDisabled value before onInstallEnded works -function run_test_18() { - restartManager(); - - let url = "http://localhost:4444/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onInstallStarted: function() { - do_check_false(aInstall.addon.userDisabled); - aInstall.addon.userDisabled = true; - }, - - onInstallEnded: function() { - do_execute_soon(function test18_install1() { - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_true(a2.userDisabled); - do_check_false(a2.isActive); - - let url_2 = "http://localhost:4444/addons/test_install2_2.xpi"; - AddonManager.getInstallForURL(url_2, function(aInstall_2) { - aInstall_2.addListener({ - onInstallStarted: function() { - do_check_true(aInstall_2.addon.userDisabled); - aInstall_2.addon.userDisabled = false; - }, - - onInstallEnded: function() { - do_execute_soon(function test18_install2() { - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2_2) { - do_check_false(a2_2.userDisabled); - do_check_true(a2_2.isActive); - - a2_2.uninstall(); - do_execute_soon(run_test_18_1); - }); - }); - } - }); - aInstall_2.install(); - }, "application/x-xpinstall"); - }); - }); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - - -// Checks that metadata is not stored if the pref is set to false -function run_test_18_1() { - restartManager(); - - Services.prefs.setBoolPref("extensions.getAddons.cache.enabled", true); - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, - "http://localhost:4444/data/test_install.xml"); - - Services.prefs.setBoolPref("extensions.addon2@tests.mozilla.org.getAddons.cache.enabled", false); - - let url = "http://localhost:4444/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onInstallEnded: function(unused, aAddon) { - do_execute_soon(function test18_install() { - do_check_neq(aAddon.fullDescription, "Repository description"); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_neq(a2.fullDescription, "Repository description"); - - a2.uninstall(); - do_execute_soon(run_test_19); - }); - }); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -// Checks that metadata is downloaded for new installs and is visible before and -// after restart -function run_test_19() { - restartManager(); - Services.prefs.setBoolPref("extensions.addon2@tests.mozilla.org.getAddons.cache.enabled", true); - - let url = "http://localhost:4444/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onInstallEnded: function(unused, aAddon) { - do_execute_soon(function test19_install() { - do_check_eq(aAddon.fullDescription, "Repository description"); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_eq(a2.fullDescription, "Repository description"); - - a2.uninstall(); - do_execute_soon(run_test_20); - }); - }); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -// Do the same again to make sure it works when the data is already in the cache -function run_test_20() { - restartManager(); - - let url = "http://localhost:4444/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onInstallEnded: function(unused, aAddon) { - do_execute_soon(function test20_install() { - do_check_eq(aAddon.fullDescription, "Repository description"); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_eq(a2.fullDescription, "Repository description"); - - a2.uninstall(); - do_execute_soon(run_test_21); - }); - }); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -// Verify that installing an add-on that is already pending install cancels the -// first install -function run_test_21() { - restartManager(); - Services.prefs.setBoolPref("extensions.getAddons.cache.enabled", false); - - installAllFiles([do_get_addon("test_install2_1")], function() { - AddonManager.getAllInstalls(function(aInstalls) { - do_check_eq(aInstalls.length, 1); - - prepare_test({ - "addon2@tests.mozilla.org": [ - "onOperationCancelled", - "onInstalling" - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallCancelled", - "onInstallEnded", - ], check_test_21); - - let url = "http://localhost:4444/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.install(); - }, "application/x-xpinstall"); - }); - }); -} - -function check_test_21(aInstall) { - AddonManager.getAllInstalls(callback_soon(function(aInstalls) { - do_check_eq(aInstalls.length, 1); - do_check_eq(aInstalls[0], aInstall); - - prepare_test({ - "addon2@tests.mozilla.org": [ - "onOperationCancelled" - ] - }, [ - "onInstallCancelled", - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_eq(a2, null); - - run_test_22(); - }); - })); -} - -// Tests that an install can be restarted after being cancelled -function run_test_22() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:4444/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - ensure_test_completed(); - - do_check_neq(aInstall, null); - do_check_eq(aInstall.state, AddonManager.STATE_AVAILABLE); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_22); - aInstall.install(); - }, "application/x-xpinstall"); -} - -function check_test_22(aInstall) { - prepare_test({}, [ - "onDownloadCancelled" - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - prepare_test({ - "addon3@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], finish_test_22); - - aInstall.install(); -} - -function finish_test_22(aInstall) { - prepare_test({ - "addon3@tests.mozilla.org": [ - "onOperationCancelled" - ] - }, [ - "onInstallCancelled" - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - run_test_23(); -} - -// Tests that an install can be restarted after being cancelled when a hash -// was provided -function run_test_23() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:4444/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - ensure_test_completed(); - - do_check_neq(aInstall, null); - do_check_eq(aInstall.state, AddonManager.STATE_AVAILABLE); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_23); - aInstall.install(); - }, "application/x-xpinstall", do_get_addon_hash("test_install3")); -} - -function check_test_23(aInstall) { - prepare_test({}, [ - "onDownloadCancelled" - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - prepare_test({ - "addon3@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], finish_test_23); - - aInstall.install(); -} - -function finish_test_23(aInstall) { - prepare_test({ - "addon3@tests.mozilla.org": [ - "onOperationCancelled" - ] - }, [ - "onInstallCancelled" - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - run_test_24(); -} - -// Tests that an install with a bad hash can be restarted after it fails, though -// it will only fail again -function run_test_24() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:4444/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - ensure_test_completed(); - - do_check_neq(aInstall, null); - do_check_eq(aInstall.state, AddonManager.STATE_AVAILABLE); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadFailed", - ], check_test_24); - aInstall.install(); - }, "application/x-xpinstall", "sha1:foo"); -} - -function check_test_24(aInstall) { - prepare_test({ }, [ - "onDownloadStarted", - "onDownloadFailed" - ], run_test_25); - - aInstall.install(); -} - -// Tests that installs with a hash for a local file work -function run_test_25() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = Services.io.newFileURI(do_get_addon("test_install3")).spec; - AddonManager.getInstallForURL(url, function(aInstall) { - ensure_test_completed(); - - do_check_neq(aInstall, null); - do_check_eq(aInstall.state, AddonManager.STATE_DOWNLOADED); - do_check_eq(aInstall.error, 0); - - prepare_test({ }, [ - "onDownloadCancelled" - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - run_test_26(); - }, "application/x-xpinstall", do_get_addon_hash("test_install3")); -} - -function run_test_26() { - prepare_test({ }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadCancelled" - ]); - - let observerService = AM_Cc["@mozilla.org/network/http-activity-distributor;1"]. - getService(AM_Ci.nsIHttpActivityDistributor); - observerService.addObserver({ - observeActivity: function(aChannel, aType, aSubtype, aTimestamp, aSizeData, - aStringData) { - aChannel.QueryInterface(AM_Ci.nsIChannel); - // Wait for the final event for the redirected URL - if (aChannel.URI.spec != "http://localhost:4444/addons/test_install1.xpi" || - aType != AM_Ci.nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION || - aSubtype != AM_Ci.nsIHttpActivityObserver.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE) - return; - - // Request should have been cancelled - do_check_eq(aChannel.status, Components.results.NS_BINDING_ABORTED); - - observerService.removeObserver(this); - - run_test_27(); - } - }); - - let url = "http://localhost:4444/redirect?/addons/test_install1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onDownloadProgress: function(aDownloadProgressInstall) { - aDownloadProgressInstall.cancel(); - } - }); - - aInstall.install(); - }, "application/x-xpinstall"); -} - - -// Tests that an install can be restarted during onDownloadCancelled after being -// cancelled in mid-download -function run_test_27() { - prepare_test({ }, [ - "onNewInstall" - ]); - - let url = "http://localhost:4444/addons/test_install3.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - ensure_test_completed(); - - do_check_neq(aInstall, null); - do_check_eq(aInstall.state, AddonManager.STATE_AVAILABLE); - - aInstall.addListener({ - onDownloadProgress: function() { - aInstall.removeListener(this); - aInstall.cancel(); - } - }); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadCancelled", - ], check_test_27); - aInstall.install(); - }, "application/x-xpinstall"); -} - -function check_test_27(aInstall) { - prepare_test({ - "addon3@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], finish_test_27); - - let file = aInstall.file; - aInstall.install(); - do_check_neq(file.path, aInstall.file.path); - do_check_false(file.exists()); -} - -function finish_test_27(aInstall) { - prepare_test({ - "addon3@tests.mozilla.org": [ - "onOperationCancelled" - ] - }, [ - "onInstallCancelled" - ]); - - aInstall.cancel(); - - ensure_test_completed(); - - run_test_30(); -} - -// Tests that a multi-package XPI with no add-ons inside shows up as a -// corrupt file -function run_test_30() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_install7"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(install.error, AddonManager.ERROR_CORRUPT_FILE); - do_check_eq(install.linkedInstalls, null); - - run_test_31(); - }); -} - -// Tests that a multi-package XPI with no valid add-ons inside shows up as a -// corrupt file -function run_test_31() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_install8"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(install.error, AddonManager.ERROR_CORRUPT_FILE); - do_check_eq(install.linkedInstalls, null); - - end_test(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_isDebuggable.js b/toolkit/mozapps/webextensions/test/xpcshell/test_isDebuggable.js deleted file mode 100644 index 87f2856b0..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_isDebuggable.js +++ /dev/null @@ -1,36 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -var ADDONS = [ - "test_bootstrap2_1", // restartless addon - "test_bootstrap1_4", // old-school addon - "test_jetpack" // sdk addon -]; - -var IDS = [ - "bootstrap1@tests.mozilla.org", - "bootstrap2@tests.mozilla.org", - "jetpack@tests.mozilla.org" -]; - -function run_test() { - do_test_pending(); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - startupManager(); - AddonManager.checkCompatibility = false; - - installAllFiles(ADDONS.map(do_get_addon), function () { - restartManager(); - - AddonManager.getAddonsByIDs(IDS, function([a1, a2, a3]) { - do_check_eq(a1.isDebuggable, false); - do_check_eq(a2.isDebuggable, true); - do_check_eq(a3.isDebuggable, true); - do_test_finished(); - }); - }, true); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_isReady.js b/toolkit/mozapps/webextensions/test/xpcshell/test_isReady.js deleted file mode 100644 index 6222398a7..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_isReady.js +++ /dev/null @@ -1,49 +0,0 @@ -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -function run_test() { - run_next_test(); -} - -add_task(function* () { - equal(AddonManager.isReady, false, "isReady should be false before startup"); - - let gotStartupEvent = false; - let gotShutdownEvent = false; - let listener = { - onStartup() { - gotStartupEvent = true; - }, - onShutdown() { - gotShutdownEvent = true; - }, - }; - AddonManager.addManagerListener(listener); - - do_print("Starting manager..."); - startupManager(); - equal(AddonManager.isReady, true, "isReady should be true after startup"); - equal(gotStartupEvent, true, "Should have seen onStartup event after startup"); - equal(gotShutdownEvent, false, "Should not have seen onShutdown event before shutdown"); - - gotStartupEvent = false; - gotShutdownEvent = false; - - do_print("Shutting down manager..."); - let shutdownPromise = promiseShutdownManager(); - equal(AddonManager.isReady, false, "isReady should be false when shutdown commences"); - yield shutdownPromise; - - equal(AddonManager.isReady, false, "isReady should be false after shutdown"); - equal(gotStartupEvent, false, "Should not have seen onStartup event after shutdown"); - equal(gotShutdownEvent, true, "Should have seen onShutdown event after shutdown"); - - AddonManager.addManagerListener(listener); - gotStartupEvent = false; - gotShutdownEvent = false; - - do_print("Starting manager again..."); - startupManager(); - equal(AddonManager.isReady, true, "isReady should be true after repeat startup"); - equal(gotStartupEvent, true, "Should have seen onStartup event after repeat startup"); - equal(gotShutdownEvent, false, "Should not have seen onShutdown event before shutdown, following repeat startup"); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_json_updatecheck.js b/toolkit/mozapps/webextensions/test/xpcshell/test_json_updatecheck.js deleted file mode 100644 index adf789afb..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_json_updatecheck.js +++ /dev/null @@ -1,372 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ -"use strict"; - -// This verifies that AddonUpdateChecker works correctly for JSON -// update manifests, particularly for behavior which does not -// cleanly overlap with RDF manifests. - -const TOOLKIT_ID = "toolkit@mozilla.org"; -const TOOLKIT_MINVERSION = "42.0a1"; - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "42.0a2", "42.0a2"); - -Components.utils.import("resource://gre/modules/addons/AddonUpdateChecker.jsm"); - -let testserver = createHttpServer(); -gPort = testserver.identity.primaryPort; - -let gUpdateManifests = {}; - -function mapManifest(aPath, aManifestData) { - gUpdateManifests[aPath] = aManifestData; - testserver.registerPathHandler(aPath, serveManifest); -} - -function serveManifest(request, response) { - let manifest = gUpdateManifests[request.path]; - - response.setHeader("Content-Type", manifest.contentType, false); - response.write(manifest.data); -} - -const extensionsDir = gProfD.clone(); -extensionsDir.append("extensions"); - - -function checkUpdates(aData) { - // Registers JSON update manifest for it with the testing server, - // checks for updates, and yields the list of updates on - // success. - - let extension = aData.manifestExtension || "json"; - - let path = `/updates/${aData.id}.${extension}`; - let updateUrl = `http://localhost:${gPort}${path}` - - let addonData = {}; - if ("updates" in aData) - addonData.updates = aData.updates; - - let manifestJSON = { - "addons": { - [aData.id]: addonData - } - }; - - mapManifest(path.replace(/\?.*/, ""), - { data: JSON.stringify(manifestJSON), - contentType: aData.contentType || "application/json" }); - - - return new Promise((resolve, reject) => { - AddonUpdateChecker.checkForUpdates(aData.id, aData.updateKey, updateUrl, { - onUpdateCheckComplete: resolve, - - onUpdateCheckError: function(status) { - reject(new Error("Update check failed with status " + status)); - } - }); - }); -} - - -add_task(function* test_default_values() { - // Checks that the appropriate defaults are used for omitted values. - - startupManager(); - - let updates = yield checkUpdates({ - id: "updatecheck-defaults@tests.mozilla.org", - version: "0.1", - updates: [{ - version: "0.2" - }] - }); - - equal(updates.length, 1); - let update = updates[0]; - - equal(update.targetApplications.length, 1); - let targetApp = update.targetApplications[0]; - - equal(targetApp.id, TOOLKIT_ID); - equal(targetApp.minVersion, TOOLKIT_MINVERSION); - equal(targetApp.maxVersion, "*"); - - equal(update.version, "0.2"); - equal(update.multiprocessCompatible, true, "multiprocess_compatible flag"); - equal(update.strictCompatibility, false, "inferred strictConpatibility flag"); - equal(update.updateURL, null, "updateURL"); - equal(update.updateHash, null, "updateHash"); - equal(update.updateInfoURL, null, "updateInfoURL"); - - // If there's no applications property, we default to using one - // containing "gecko". If there is an applications property, but - // it doesn't contain "gecko", the update is skipped. - updates = yield checkUpdates({ - id: "updatecheck-defaults@tests.mozilla.org", - version: "0.1", - updates: [{ - version: "0.2", - applications: { "foo": {} } - }] - }); - - equal(updates.length, 0); - - // Updates property is also optional. No updates, but also no error. - updates = yield checkUpdates({ - id: "updatecheck-defaults@tests.mozilla.org", - version: "0.1", - }); - - equal(updates.length, 0); -}); - - -add_task(function* test_explicit_values() { - // Checks that the appropriate explicit values are used when - // provided. - - let updates = yield checkUpdates({ - id: "updatecheck-explicit@tests.mozilla.org", - version: "0.1", - updates: [{ - version: "0.2", - update_link: "https://example.com/foo.xpi", - update_hash: "sha256:0", - update_info_url: "https://example.com/update_info.html", - multiprocess_compatible: false, - applications: { - gecko: { - strict_min_version: "42.0a2.xpcshell", - strict_max_version: "43.xpcshell" - } - } - }] - }); - - equal(updates.length, 1); - let update = updates[0]; - - equal(update.targetApplications.length, 1); - let targetApp = update.targetApplications[0]; - - equal(targetApp.id, TOOLKIT_ID); - equal(targetApp.minVersion, "42.0a2.xpcshell"); - equal(targetApp.maxVersion, "43.xpcshell"); - - equal(update.version, "0.2"); - equal(update.multiprocessCompatible, false, "multiprocess_compatible flag"); - equal(update.strictCompatibility, true, "inferred strictCompatibility flag"); - equal(update.updateURL, "https://example.com/foo.xpi", "updateURL"); - equal(update.updateHash, "sha256:0", "updateHash"); - equal(update.updateInfoURL, "https://example.com/update_info.html", "updateInfoURL"); -}); - - -add_task(function* test_secure_hashes() { - // Checks that only secure hash functions are accepted for - // non-secure update URLs. - - let hashFunctions = ["sha512", - "sha256", - "sha1", - "md5", - "md4", - "xxx"]; - - let updateItems = hashFunctions.map((hash, idx) => ({ - version: `0.${idx}`, - update_link: `http://localhost:${gPort}/updates/${idx}-${hash}.xpi`, - update_hash: `${hash}:08ac852190ecd81f40a514ea9299fe9143d9ab5e296b97e73fb2a314de49648a`, - })); - - let { messages, result: updates } = yield promiseConsoleOutput(() => { - return checkUpdates({ - id: "updatecheck-hashes@tests.mozilla.org", - version: "0.1", - updates: updateItems - }); - }); - - equal(updates.length, hashFunctions.length); - - updates = updates.filter(update => update.updateHash || update.updateURL); - equal(updates.length, 2, "expected number of update hashes were accepted"); - - ok(updates[0].updateHash.startsWith("sha512:"), "sha512 hash is present"); - ok(updates[0].updateURL); - - ok(updates[1].updateHash.startsWith("sha256:"), "sha256 hash is present"); - ok(updates[1].updateURL); - - messages = messages.filter(msg => /Update link.*not secure.*strong enough hash \(needs to be sha256 or sha512\)/.test(msg.message)); - equal(messages.length, hashFunctions.length - 2, "insecure hashes generated the expected warning"); -}); - - -add_task(function* test_strict_compat() { - // Checks that strict compatibility is enabled for strict max - // versions other than "*", but not for advisory max versions. - // Also, ensure that strict max versions take precedence over - // advisory versions. - - let { messages, result: updates } = yield promiseConsoleOutput(() => { - return checkUpdates({ - id: "updatecheck-strict@tests.mozilla.org", - version: "0.1", - updates: [ - { version: "0.2", - applications: { gecko: { strict_max_version: "*" } } }, - { version: "0.3", - applications: { gecko: { strict_max_version: "43" } } }, - { version: "0.4", - applications: { gecko: { advisory_max_version: "43" } } }, - { version: "0.5", - applications: { gecko: { advisory_max_version: "43", - strict_max_version: "44" } } }, - ] - }); - }); - - equal(updates.length, 4, "all update items accepted"); - - equal(updates[0].targetApplications[0].maxVersion, "*"); - equal(updates[0].strictCompatibility, false); - - equal(updates[1].targetApplications[0].maxVersion, "43"); - equal(updates[1].strictCompatibility, true); - - equal(updates[2].targetApplications[0].maxVersion, "43"); - equal(updates[2].strictCompatibility, false); - - equal(updates[3].targetApplications[0].maxVersion, "44"); - equal(updates[3].strictCompatibility, true); - - messages = messages.filter(msg => /Ignoring 'advisory_max_version'.*'strict_max_version' also present/.test(msg.message)); - equal(messages.length, 1, "mix of advisory_max_version and strict_max_version generated the expected warning"); -}); - - -add_task(function* test_update_url_security() { - // Checks that update links to privileged URLs are not accepted. - - let { messages, result: updates } = yield promiseConsoleOutput(() => { - return checkUpdates({ - id: "updatecheck-security@tests.mozilla.org", - version: "0.1", - updates: [ - { version: "0.2", - update_link: "chrome://browser/content/browser.xul", - update_hash: "sha256:08ac852190ecd81f40a514ea9299fe9143d9ab5e296b97e73fb2a314de49648a" }, - { version: "0.3", - update_link: "http://example.com/update.xpi", - update_hash: "sha256:18ac852190ecd81f40a514ea9299fe9143d9ab5e296b97e73fb2a314de49648a" }, - ] - }); - }); - - equal(updates.length, 2, "both updates were processed"); - equal(updates[0].updateURL, null, "privileged update URL was removed"); - equal(updates[1].updateURL, "http://example.com/update.xpi", "safe update URL was accepted"); - - messages = messages.filter(msg => /http:\/\/localhost.*\/updates\/.*may not load or link to chrome:/.test(msg.message)); - equal(messages.length, 1, "privileged upate URL generated the expected console message"); -}); - - -add_task(function* test_no_update_key() { - // Checks that updates fail when an update key has been specified. - - let { messages } = yield promiseConsoleOutput(function* () { - yield Assert.rejects( - checkUpdates({ - id: "updatecheck-updatekey@tests.mozilla.org", - version: "0.1", - updateKey: "ayzzx=", - updates: [ - { version: "0.2" }, - { version: "0.3" }, - ] - }), - null, "updated expected to fail"); - }); - - messages = messages.filter(msg => /Update keys are not supported for JSON update manifests/.test(msg.message)); - equal(messages.length, 1, "got expected update-key-unsupported error"); -}); - - -add_task(function* test_type_detection() { - // Checks that JSON update manifests are detected correctly - // regardless of extension or MIME type. - - let tests = [ - { contentType: "application/json", - extension: "json", - valid: true }, - { contentType: "application/json", - extension: "php", - valid: true }, - { contentType: "text/plain", - extension: "json", - valid: true }, - { contentType: "application/octet-stream", - extension: "json", - valid: true }, - { contentType: "text/plain", - extension: "json?foo=bar", - valid: true }, - { contentType: "text/plain", - extension: "php", - valid: true }, - { contentType: "text/plain", - extension: "rdf", - valid: true }, - { contentType: "application/json", - extension: "rdf", - valid: true }, - { contentType: "text/xml", - extension: "json", - valid: true }, - { contentType: "application/rdf+xml", - extension: "json", - valid: true }, - ]; - - for (let [i, test] of tests.entries()) { - let { messages } = yield promiseConsoleOutput(function *() { - let id = `updatecheck-typedetection-${i}@tests.mozilla.org`; - let updates; - try { - updates = yield checkUpdates({ - id: id, - version: "0.1", - contentType: test.contentType, - manifestExtension: test.extension, - updates: [{ version: "0.2" }] - }); - } catch (e) { - ok(!test.valid, "update manifest correctly detected as RDF"); - return; - } - - ok(test.valid, "update manifest correctly detected as JSON"); - equal(updates.length, 1, "correct number of updates"); - equal(updates[0].id, id, "update is for correct extension"); - }); - - if (test.valid) { - // Make sure we don't get any XML parsing errors from the - // XMLHttpRequest machinery. - ok(!messages.some(msg => /not well-formed/.test(msg.message)), - "expect XMLHttpRequest not to attempt XML parsing"); - } - - messages = messages.filter(msg => /Update manifest was not valid XML/.test(msg.message)); - equal(messages.length, !test.valid, "expected number of XML parsing errors"); - } -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_langpack.js b/toolkit/mozapps/webextensions/test/xpcshell/test_langpack.js deleted file mode 100644 index a97a14d4d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_langpack.js +++ /dev/null @@ -1,339 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that language packs can be used without restarts. -Components.utils.import("resource://gre/modules/Services.jsm"); - -// Enable loading extensions from the user scopes -Services.prefs.setIntPref("extensions.enabledScopes", - AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER); -// Enable installing distribution add-ons -Services.prefs.setBoolPref("extensions.installDistroAddons", true); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); -const userExtDir = gProfD.clone(); -userExtDir.append("extensions2"); -userExtDir.append(gAppInfo.ID); -registerDirectory("XREUSysExt", userExtDir.parent); -const distroDir = gProfD.clone(); -distroDir.append("distribution"); -distroDir.append("extensions"); -registerDirectory("XREAppDist", distroDir.parent); - -var chrome = Components.classes["@mozilla.org/chrome/chrome-registry;1"] - .getService(Components.interfaces.nsIXULChromeRegistry); - -function do_unregister_manifest() { - let path = getFileForAddon(profileDir, "langpack-x-testing@tests.mozilla.org"); - Components.manager.removeBootstrappedManifestLocation(path); -} - -function do_check_locale_not_registered(provider) { - let didThrow = false; - try { - chrome.getSelectedLocale(provider); - } catch (e) { - didThrow = true; - } - do_check_true(didThrow); -} - -function run_test() { - do_test_pending(); - - startupManager(); - - run_test_1(); -} - -// Tests that installing doesn't require a restart -function run_test_1() { - do_check_locale_not_registered("test-langpack"); - - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_langpack"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.type, "locale"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Language Pack x-testing"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_true(install.addon.hasResource("install.rdf")); - do_check_false(install.addon.hasResource("bootstrap.js")); - do_check_eq(install.addon.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_INSTALL, 0); - - let addon = install.addon; - prepare_test({ - "langpack-x-testing@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], function() { - do_check_true(addon.hasResource("install.rdf")); - // spin to let the startup complete - do_execute_soon(check_test_1); - }); - install.install(); - }); -} - -function check_test_1() { - AddonManager.getAllInstalls(function(installs) { - // There should be no active installs now since the install completed and - // doesn't require a restart. - do_check_eq(installs.length, 0); - - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - // check chrome reg that language pack is registered - do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing"); - do_check_true(b1.hasResource("install.rdf")); - do_check_false(b1.hasResource("bootstrap.js")); - - let dir = do_get_addon_root_uri(profileDir, "langpack-x-testing@tests.mozilla.org"); - - AddonManager.getAddonsWithOperationsByTypes(null, function(list) { - do_check_eq(list.length, 0); - - run_test_2(); - }); - }); - }); -} - -// Tests that disabling doesn't require a restart -function run_test_2() { - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { - prepare_test({ - "langpack-x-testing@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ] - }); - - do_check_eq(b1.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_DISABLE, 0); - b1.userDisabled = true; - ensure_test_completed(); - - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_true(b1.userDisabled); - do_check_false(b1.isActive); - // check chrome reg that language pack is not registered - do_check_locale_not_registered("test-langpack"); - - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) { - do_check_neq(newb1, null); - do_check_eq(newb1.version, "1.0"); - do_check_false(newb1.appDisabled); - do_check_true(newb1.userDisabled); - do_check_false(newb1.isActive); - - do_execute_soon(run_test_3); - }); - }); -} - -// Test that restarting doesn't accidentally re-enable -function run_test_3() { - shutdownManager(); - startupManager(false); - // check chrome reg that language pack is not registered - do_check_locale_not_registered("test-langpack"); - - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_true(b1.userDisabled); - do_check_false(b1.isActive); - - run_test_4(); - }); -} - -// Tests that enabling doesn't require a restart -function run_test_4() { - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { - prepare_test({ - "langpack-x-testing@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - do_check_eq(b1.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_ENABLE, 0); - b1.userDisabled = false; - ensure_test_completed(); - - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - // check chrome reg that language pack is registered - do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing"); - - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) { - do_check_neq(newb1, null); - do_check_eq(newb1.version, "1.0"); - do_check_false(newb1.appDisabled); - do_check_false(newb1.userDisabled); - do_check_true(newb1.isActive); - - do_execute_soon(run_test_5); - }); - }); -} - -// Tests that a restart shuts down and restarts the add-on -function run_test_5() { - shutdownManager(); - do_unregister_manifest(); - // check chrome reg that language pack is not registered - do_check_locale_not_registered("test-langpack"); - startupManager(false); - // check chrome reg that language pack is registered - do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing"); - - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - do_check_false(isExtensionInAddonsList(profileDir, b1.id)); - - run_test_7(); - }); -} - -// Tests that uninstalling doesn't require a restart -function run_test_7() { - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { - prepare_test({ - "langpack-x-testing@tests.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ] - }); - - do_check_eq(b1.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_UNINSTALL, 0); - b1.uninstall(); - - check_test_7(); - }); -} - -function check_test_7() { - ensure_test_completed(); - // check chrome reg that language pack is not registered - do_check_locale_not_registered("test-langpack"); - - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", - callback_soon(function(b1) { - do_check_eq(b1, null); - - restartManager(); - - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) { - do_check_eq(newb1, null); - - do_execute_soon(run_test_8); - }); - })); -} - -// Tests that a locale detected in the profile starts working immediately -function run_test_8() { - shutdownManager(); - - manuallyInstall(do_get_addon("test_langpack"), profileDir, "langpack-x-testing@tests.mozilla.org"); - - startupManager(false); - - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", - callback_soon(function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - // check chrome reg that language pack is registered - do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing"); - do_check_true(b1.hasResource("install.rdf")); - do_check_false(b1.hasResource("bootstrap.js")); - - shutdownManager(); - do_unregister_manifest(); - // check chrome reg that language pack is not registered - do_check_locale_not_registered("test-langpack"); - startupManager(false); - // check chrome reg that language pack is registered - do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing"); - - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b2) { - prepare_test({ - "langpack-x-testing@tests.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ] - }); - - b2.uninstall(); - ensure_test_completed(); - do_execute_soon(run_test_9); - }); - })); -} - -// Tests that a locale from distribution/extensions gets installed and starts -// working immediately -function run_test_9() { - shutdownManager(); - manuallyInstall(do_get_addon("test_langpack"), distroDir, "langpack-x-testing@tests.mozilla.org"); - gAppInfo.version = "2.0"; - startupManager(true); - - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", callback_soon(function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "1.0"); - do_check_false(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_true(b1.isActive); - // check chrome reg that language pack is registered - do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing"); - do_check_true(b1.hasResource("install.rdf")); - do_check_false(b1.hasResource("bootstrap.js")); - - shutdownManager(); - do_unregister_manifest(); - // check chrome reg that language pack is not registered - do_check_locale_not_registered("test-langpack"); - startupManager(false); - // check chrome reg that language pack is registered - do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing"); - - do_test_finished(); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_locale.js b/toolkit/mozapps/webextensions/test/xpcshell/test_locale.js deleted file mode 100644 index b4c7311e5..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_locale.js +++ /dev/null @@ -1,149 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that localized properties work as expected - -const PREF_MATCH_OS_LOCALE = "intl.locale.matchOS"; -const PREF_SELECTED_LOCALE = "general.useragent.locale"; - - -function run_test() { - do_test_pending(); - - // Setup for test - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - Services.prefs.setBoolPref(PREF_MATCH_OS_LOCALE, false); - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "fr-FR"); - - startupManager(); - - run_test_1(); -} - -// Tests that the localized properties are visible before installation -function run_test_1() { - AddonManager.getInstallForFile(do_get_addon("test_locale"), function(install) { - do_check_eq(install.addon.name, "fr-FR Name"); - do_check_eq(install.addon.description, "fr-FR Description"); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], callback_soon(run_test_2)); - install.install(); - }); -} - -// Tests that the localized properties are visible after installation -function run_test_2() { - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(addon) { - do_check_neq(addon, null); - - do_check_eq(addon.name, "fr-FR Name"); - do_check_eq(addon.description, "fr-FR Description"); - - addon.userDisabled = true; - do_execute_soon(run_test_3); - }); -} - -// Test that the localized properties are still there when disabled. -function run_test_3() { - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(addon) { - do_check_neq(addon, null); - do_check_eq(addon.name, "fr-FR Name"); - - do_execute_soon(run_test_4); - }); -} - -// Localised preference values should be ignored when the add-on is disabled -function run_test_4() { - Services.prefs.setCharPref("extensions.addon1@tests.mozilla.org.name", "Name from prefs"); - Services.prefs.setCharPref("extensions.addon1@tests.mozilla.org.contributor.1", "Contributor 1"); - Services.prefs.setCharPref("extensions.addon1@tests.mozilla.org.contributor.2", "Contributor 2"); - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(addon) { - do_check_neq(addon, null); - do_check_eq(addon.name, "fr-FR Name"); - let contributors = addon.contributors; - do_check_eq(contributors.length, 3); - do_check_eq(contributors[0], "Fr Contributor 1"); - do_check_eq(contributors[1], "Fr Contributor 2"); - do_check_eq(contributors[2], "Fr Contributor 3"); - - do_execute_soon(run_test_5); - }); -} - -// Test that changing locale works -function run_test_5() { - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "de-DE"); - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(addon) { - do_check_neq(addon, null); - - do_check_eq(addon.name, "de-DE Name"); - do_check_eq(addon.description, null); - - do_execute_soon(run_test_6); - }); -} - -// Test that missing locales use the fallbacks -function run_test_6() { - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "nl-NL"); - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(addon) { - do_check_neq(addon, null); - - do_check_eq(addon.name, "Fallback Name"); - do_check_eq(addon.description, "Fallback Description"); - - addon.userDisabled = false; - do_execute_soon(run_test_7); - })); -} - -// Test that the prefs will override the fallbacks -function run_test_7() { - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(addon) { - do_check_neq(addon, null); - - do_check_eq(addon.name, "Name from prefs"); - - do_execute_soon(run_test_8); - }); -} - -// Test that the prefs will override localized values from the manifest -function run_test_8() { - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "fr-FR"); - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(addon) { - do_check_neq(addon, null); - - do_check_eq(addon.name, "Name from prefs"); - let contributors = addon.contributors; - do_check_eq(contributors.length, 2); - do_check_eq(contributors[0], "Contributor 1"); - do_check_eq(contributors[1], "Contributor 2"); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_locked.js b/toolkit/mozapps/webextensions/test/xpcshell/test_locked.js deleted file mode 100644 index 86457eab1..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_locked.js +++ /dev/null @@ -1,544 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that we rebuild something sensible from a corrupt database - -Components.utils.import("resource://testing-common/httpd.js"); -Components.utils.import("resource://gre/modules/osfile.jsm"); - -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; -mapFile("/data/test_corrupt.rdf", testserver); -testserver.registerDirectory("/addons/", do_get_file("addons")); - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); - -// Will be enabled -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Will be disabled -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "1.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Will get a compatibility update and stay enabled -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "1.0", - name: "Test 3", - updateURL: "http://localhost:" + gPort + "/data/test_corrupt.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Will get a compatibility update and be enabled -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "1.0", - name: "Test 4", - updateURL: "http://localhost:" + gPort + "/data/test_corrupt.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Would stay incompatible with strict compat -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "1.0", - name: "Test 5", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Enabled bootstrapped -var addon6 = { - id: "addon6@tests.mozilla.org", - version: "1.0", - name: "Test 6", - bootstrap: "true", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Disabled bootstrapped -var addon7 = { - id: "addon7@tests.mozilla.org", - version: "1.0", - name: "Test 7", - bootstrap: "true", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// The default theme -var theme1 = { - id: "theme1@tests.mozilla.org", - version: "1.0", - name: "Theme 1", - internalName: "classic/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// The selected theme -var theme2 = { - id: "theme2@tests.mozilla.org", - version: "1.0", - name: "Theme 2", - internalName: "test/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -add_task(function* init() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - writeInstallRDFForExtension(addon6, profileDir); - writeInstallRDFForExtension(addon7, profileDir); - writeInstallRDFForExtension(theme1, profileDir); - writeInstallRDFForExtension(theme2, profileDir); - - // Startup the profile and setup the initial state - startupManager(); - - // New profile so new add-ons are ignored - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - - let [a2, a3, a4, a7, t2] = - yield promiseAddonsByIDs(["addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme2@tests.mozilla.org"]); - let deferredUpdateFinished = Promise.defer(); - // Set up the initial state - a2.userDisabled = true; - a4.userDisabled = true; - a7.userDisabled = true; - t2.userDisabled = false; - a3.findUpdates({ - onUpdateFinished: function() { - a4.findUpdates({ - onUpdateFinished: function() { - // Let the updates finish before restarting the manager - deferredUpdateFinished.resolve(); - } - }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - } - }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - - yield deferredUpdateFinished.promise; -}); - - -add_task(function* run_test_1() { - restartManager(); - let [a1, a2, a3, a4, a5, a6, a7, t1, t2] = - yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"]); - - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_false(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_true(a5.isActive); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - - // Open another handle on the JSON DB with as much Unix and Windows locking - // as we can to simulate some other process interfering with it - shutdownManager(); - do_print("Locking " + gExtensionsJSON.path); - let options = { - winShare: 0 - }; - if (OS.Constants.libc.O_EXLOCK) - options.unixFlags = OS.Constants.libc.O_EXLOCK; - - let file = yield OS.File.open(gExtensionsJSON.path, {read:true, write:true, existing:true}, options); - - let filePermissions = gExtensionsJSON.permissions; - if (!OS.Constants.Win) { - gExtensionsJSON.permissions = 0; - } - startupManager(false); - - // Shouldn't have seen any startup changes - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - - // Accessing the add-ons should open and recover the database - [a1, a2, a3, a4, a5, a6, a7, t1, t2] = - yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"]); - - // Should be correctly recovered - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - // Should be correctly recovered - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - // The compatibility update won't be recovered but it should still be - // active for this session - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_false(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - - // The compatibility update won't be recovered and with strict - // compatibility it would not have been able to tell that it was - // previously userDisabled. However, without strict compat, it wasn't - // appDisabled, so it knows it must have been userDisabled. - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_true(a5.isActive); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - // Should be correctly recovered - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - - // Should be correctly recovered - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - - // Restarting will actually apply changes to extensions.ini which will - // then be put into the in-memory database when we next fail to load the - // real thing - try { - shutdownManager(); - } catch (e) { - // We're expecting an error here. - } - startupManager(false); - - // Shouldn't have seen any startup changes - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - - [a1, a2, a3, a4, a5, a6, a7, t1, t2] = - yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"]); - - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_false(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_true(a5.isActive); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - - // After allowing access to the original DB things should go back to as - // they were previously - try { - shutdownManager(); - } catch (e) { - // We're expecting an error here. - } - do_print("Unlocking " + gExtensionsJSON.path); - yield file.close(); - gExtensionsJSON.permissions = filePermissions; - startupManager(); - - - // Shouldn't have seen any startup changes - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - - [a1, a2, a3, a4, a5, a6, a7, t1, t2] = - yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"]); - - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_false(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_true(a5.isActive); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - - try { - shutdownManager(); - } catch (e) { - // We're expecting an error here. - } -}); - - -function run_test() { - run_next_test(); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_locked2.js b/toolkit/mozapps/webextensions/test/xpcshell/test_locked2.js deleted file mode 100644 index 4a62c585f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_locked2.js +++ /dev/null @@ -1,297 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that we handle a locked database when there are extension changes -// in progress - -Components.utils.import("resource://gre/modules/osfile.jsm"); - -// Will be left alone -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Will be enabled -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "1.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Will be disabled -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "1.0", - name: "Test 3", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Will be uninstalled -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "1.0", - name: "Test 4", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - - -// Will be updated -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "1.0", - name: "Test 5", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -add_task(function*() { - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - - // Make it look like add-on 5 was installed some time in the past so the update is - // detected - let path = getFileForAddon(profileDir, addon5.id).path; - yield promiseSetExtensionModifiedTime(path, Date.now() - (60000)); - - // Startup the profile and setup the initial state - startupManager(); - - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - - let a1, a2, a3, a4, a5, a6; - - [a2] = yield promiseAddonsByIDs(["addon2@tests.mozilla.org"]); - a2.userDisabled = true; - - restartManager(); - - [a1, a2, a3, a4, a5] = - yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"]); - - a2.userDisabled = false; - a3.userDisabled = true; - a4.uninstall(); - - yield promiseInstallAllFiles([do_get_addon("test_locked2_5"), - do_get_addon("test_locked2_6")]); - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_false(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_ENABLE); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_true(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_DISABLE); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_true(a4.isActive); - do_check_false(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_UNINSTALL); - do_check_true(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_eq(a5.version, "1.0"); - do_check_true(a5.isActive); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_UPGRADE); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - // Open another handle on the JSON DB with as much Unix and Windows locking - // as we can to simulate some other process interfering with it - shutdownManager(); - do_print("Locking " + gExtensionsJSON.path); - let options = { - winShare: 0 - }; - if (OS.Constants.libc.O_EXLOCK) - options.unixFlags = OS.Constants.libc.O_EXLOCK; - - let file = yield OS.File.open(gExtensionsJSON.path, {read:true, write:true, existing:true}, options); - - let filePermissions = gExtensionsJSON.permissions; - if (!OS.Constants.Win) { - gExtensionsJSON.permissions = 0; - } - startupManager(false); - - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - - [a1, a2, a3, a4, a5, a6] = - yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org"]); - - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_false(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_true(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_eq(a4, null); - - do_check_neq(a5, null); - do_check_eq(a5.version, "2.0"); - do_check_true(a5.isActive); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a6.id)); - - // After allowing access to the original DB things should still be - // back how they were before the lock - let shutdownError; - try { - shutdownManager(); - } catch (e) { - shutdownError = e; - } - yield file.close(); - gExtensionsJSON.permissions = filePermissions; - startupManager(); - - // On Unix, we can save the DB even when the original file wasn't - // readable, so our changes were saved. On Windows, - // these things happened when we had no access to the database so - // they are seen as external changes when we get the database back - if (shutdownError) { - do_print("Previous XPI save failed"); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, - ["addon6@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, - ["addon4@tests.mozilla.org"]); - } - else { - do_print("Previous XPI save succeeded"); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - } - - [a1, a2, a3, a4, a5, a6] = - yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org"]); - - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_false(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_true(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_eq(a4, null); - - do_check_neq(a5, null); - do_check_eq(a5.version, "2.0"); - do_check_true(a5.isActive); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a6.id)); -}); - -function run_test() { - run_next_test(); -} - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_locked_strictcompat.js b/toolkit/mozapps/webextensions/test/xpcshell/test_locked_strictcompat.js deleted file mode 100644 index 9e17b4c8b..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_locked_strictcompat.js +++ /dev/null @@ -1,567 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that we rebuild something sensible from a corrupt database - -Components.utils.import("resource://testing-common/httpd.js"); -Components.utils.import("resource://gre/modules/osfile.jsm"); - -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; -mapFile("/data/test_corrupt.rdf", testserver); -testserver.registerDirectory("/addons/", do_get_file("addons")); - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true); - -// Will be enabled -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Will be disabled -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "1.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Will get a compatibility update and be enabled -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "1.0", - name: "Test 3", - updateURL: "http://localhost:" + gPort + "/data/test_corrupt.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Will get a compatibility update and be disabled -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "1.0", - name: "Test 4", - updateURL: "http://localhost:" + gPort + "/data/test_corrupt.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Stays incompatible -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "1.0", - name: "Test 5", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Enabled bootstrapped -var addon6 = { - id: "addon6@tests.mozilla.org", - version: "1.0", - name: "Test 6", - bootstrap: "true", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// Disabled bootstrapped -var addon7 = { - id: "addon7@tests.mozilla.org", - version: "1.0", - name: "Test 7", - bootstrap: "true", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// The default theme -var theme1 = { - id: "theme1@tests.mozilla.org", - version: "1.0", - name: "Theme 1", - internalName: "classic/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -// The selected theme -var theme2 = { - id: "theme2@tests.mozilla.org", - version: "1.0", - name: "Theme 2", - internalName: "test/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -add_task(function* init() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - writeInstallRDFForExtension(addon6, profileDir); - writeInstallRDFForExtension(addon7, profileDir); - writeInstallRDFForExtension(theme1, profileDir); - writeInstallRDFForExtension(theme2, profileDir); - - // Startup the profile and setup the initial state - startupManager(); - - // New profile so new add-ons are ignored - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - - let a1, a2, a3, a4, a5, a6, a7, t1, t2; - - [a2, a3, a4, a7, t2] = - yield promiseAddonsByIDs(["addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme2@tests.mozilla.org"]); - - // Set up the initial state - let deferredUpdateFinished = Promise.defer(); - - a2.userDisabled = true; - a4.userDisabled = true; - a7.userDisabled = true; - t2.userDisabled = false; - a3.findUpdates({ - onUpdateFinished: function() { - a4.findUpdates({ - onUpdateFinished: function() { - deferredUpdateFinished.resolve(); - } - }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - } - }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - yield deferredUpdateFinished.promise; -}); - -add_task(function* run_test_1() { - let a1, a2, a3, a4, a5, a6, a7, t1, t2; - - restartManager(); - [a1, a2, a3, a4, a5, a6, a7, t1, t2] = - yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"]); - - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_false(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_false(a5.isActive); - do_check_false(a5.userDisabled); - do_check_true(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - - // Open another handle on the JSON DB with as much Unix and Windows locking - // as we can to simulate some other process interfering with it - shutdownManager(); - do_print("Locking " + gExtensionsJSON.path); - let options = { - winShare: 0 - }; - if (OS.Constants.libc.O_EXLOCK) - options.unixFlags = OS.Constants.libc.O_EXLOCK; - - let file = yield OS.File.open(gExtensionsJSON.path, {read:true, write:true, existing:true}, options); - - let filePermissions = gExtensionsJSON.permissions; - if (!OS.Constants.Win) { - gExtensionsJSON.permissions = 0; - } - startupManager(false); - - // Shouldn't have seen any startup changes - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - - // Accessing the add-ons should open and recover the database - [a1, a2, a3, a4, a5, a6, a7, t1, t2] = - yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"]); - - // Should be correctly recovered - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - // Should be correctly recovered - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - // The compatibility update won't be recovered but it should still be - // active for this session - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_false(a3.userDisabled); - do_check_true(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_DISABLE); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - - // The compatibility update won't be recovered and it will not have been - // able to tell that it was previously userDisabled - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_false(a4.userDisabled); - do_check_true(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_false(a5.isActive); - do_check_false(a5.userDisabled); - do_check_true(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - // Should be correctly recovered - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - - // Should be correctly recovered - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - - // Restarting will actually apply changes to extensions.ini which will - // then be put into the in-memory database when we next fail to load the - // real thing - try { - shutdownManager(); - } catch (e) { - // We're expecting an error here. - } - startupManager(false); - - // Shouldn't have seen any startup changes - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - - [a1, a2, a3, a4, a5, a6, a7, t1, t2] = - yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"]); - - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_false(a3.userDisabled); - do_check_true(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_false(a4.userDisabled); - do_check_true(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_false(a5.isActive); - do_check_false(a5.userDisabled); - do_check_true(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - - // After allowing access to the original DB things should go back to as - // back how they were before the lock - let shutdownError; - try { - shutdownManager(); - } catch (e) { - shutdownError = e; - } - do_print("Unlocking " + gExtensionsJSON.path); - yield file.close(); - gExtensionsJSON.permissions = filePermissions; - startupManager(false); - - // Shouldn't have seen any startup changes - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - - [a1, a2, a3, a4, a5, a6, a7, t1, t2] = - yield promiseAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"]); - - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_false(a3.userDisabled); - // On Unix, we may be able to save our changes over the locked DB so we - // remember that this extension was changed to disabled. On Windows we - // couldn't replace the old DB so we read the older version of the DB - // where the extension is enabled - if (shutdownError) { - do_print("XPI save failed"); - do_check_true(a3.isActive); - do_check_false(a3.appDisabled); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - } - else { - do_print("XPI save succeeded"); - do_check_false(a3.isActive); - do_check_true(a3.appDisabled); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - } - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - // The reverse of the platform difference for a3 - Unix should - // stay the same as the last iteration because the save succeeded, - // Windows should still say userDisabled - if (OS.Constants.Win) { - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - } - else { - do_check_false(a4.userDisabled); - do_check_true(a4.appDisabled); - } - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a5, null); - do_check_false(a5.isActive); - do_check_false(a5.userDisabled); - do_check_true(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - - try { - shutdownManager(); - } catch (e) { - // An error is expected here. - } -}); - -function run_test() { - run_next_test(); -} - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_manifest.js b/toolkit/mozapps/webextensions/test/xpcshell/test_manifest.js deleted file mode 100644 index 85279ba5d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_manifest.js +++ /dev/null @@ -1,562 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This tests that all properties are read from the install manifests and that -// items are correctly enabled/disabled based on them (blocklist tests are -// elsewhere) - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - const profileDir = gProfD.clone(); - profileDir.append("extensions"); - - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - optionsURL: "chrome://test/content/options.xul", - aboutURL: "chrome://test/content/about.xul", - iconURL: "chrome://test/skin/icon.png", - icon64URL: "chrome://test/skin/icon64.png", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - description: "Test Description", - creator: "Test Creator", - homepageURL: "http://www.example.com", - developer: [ - "Test Developer 1", - "Test Developer 2" - ], - translator: [ - "Test Translator 1", - "Test Translator 2" - ], - contributor: [ - "Test Contributor 1", - "Test Contributor 2" - ] - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon2@tests.mozilla.org", - version: "1.0", - updateURL: "https://www.foo.com", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 2" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon3@tests.mozilla.org", - version: "1.0", - updateURL: "http://www.foo.com", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 3" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon4@tests.mozilla.org", - version: "1.0", - updateURL: "http://www.foo.com", - updateKey: "foo", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 4" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon5@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "*" - }], - name: "Test Addon 5" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon6@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0", - maxVersion: "1" - }], - name: "Test Addon 6" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon7@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0", - maxVersion: "0" - }], - name: "Test Addon 7" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon8@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1.1", - maxVersion: "*" - }], - name: "Test Addon 8" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon9@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1.9.2", - maxVersion: "1.9.*" - }], - name: "Test Addon 9" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon10@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1.9.2.1", - maxVersion: "1.9.*" - }], - name: "Test Addon 10" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon11@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1.9", - maxVersion: "1.9.2" - }], - name: "Test Addon 11" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon12@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1.9", - maxVersion: "1.9.1.*" - }], - name: "Test Addon 12" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon13@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1.9", - maxVersion: "1.9.*" - }, { - id: "xpcshell@tests.mozilla.org", - minVersion: "0", - maxVersion: "0.5" - }], - name: "Test Addon 13" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon14@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1.9", - maxVersion: "1.9.1" - }, { - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 14" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon15@tests.mozilla.org", - version: "1.0", - updateKey: "foo", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 15" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon16@tests.mozilla.org", - version: "1.0", - updateKey: "foo", - updateURL: "https://www.foo.com", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 16" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon17@tests.mozilla.org", - version: "1.0", - optionsURL: "chrome://test/content/options.xul", - optionsType: "2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 17" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon18@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 18" - }, profileDir, undefined, "options.xul"); - - writeInstallRDFForExtension({ - id: "addon19@tests.mozilla.org", - version: "1.0", - optionsType: "99", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 19" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon20@tests.mozilla.org", - version: "1.0", - optionsType: "1", - optionsURL: "chrome://test/content/options.xul", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 20" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon21@tests.mozilla.org", - version: "1.0", - optionsType: "3", - optionsURL: "chrome://test/content/options.xul", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 21" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon22@tests.mozilla.org", - version: "1.0", - optionsType: "2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 22" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon23@tests.mozilla.org", - version: "1.0", - optionsType: "2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 23" - }, profileDir, undefined, "options.xul"); - - writeInstallRDFForExtension({ - id: "addon24@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 24" - }, profileDir, undefined, "options.xul"); - - writeInstallRDFForExtension({ - id: "addon25@tests.mozilla.org", - version: "1.0", - optionsType: "3", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 25" - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon26@tests.mozilla.org", - version: "1.0", - optionsType: "4", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 26" - }, profileDir, undefined, "options.xul"); - - do_test_pending(); - startupManager(); - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "addon8@tests.mozilla.org", - "addon9@tests.mozilla.org", - "addon10@tests.mozilla.org", - "addon11@tests.mozilla.org", - "addon12@tests.mozilla.org", - "addon13@tests.mozilla.org", - "addon14@tests.mozilla.org", - "addon15@tests.mozilla.org", - "addon16@tests.mozilla.org", - "addon17@tests.mozilla.org", - "addon18@tests.mozilla.org", - "addon19@tests.mozilla.org", - "addon20@tests.mozilla.org", - "addon21@tests.mozilla.org", - "addon22@tests.mozilla.org", - "addon23@tests.mozilla.org", - "addon24@tests.mozilla.org", - "addon25@tests.mozilla.org", - "addon26@tests.mozilla.org"], - function([a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, - a21, a22, a23, a24, a25, a26]) { - - do_check_neq(a1, null); - do_check_eq(a1.id, "addon1@tests.mozilla.org"); - do_check_eq(a1.type, "extension"); - do_check_eq(a1.version, "1.0"); - do_check_eq(a1.optionsURL, "chrome://test/content/options.xul"); - do_check_eq(a1.optionsType, AddonManager.OPTIONS_TYPE_DIALOG); - do_check_eq(a1.aboutURL, "chrome://test/content/about.xul"); - do_check_eq(a1.iconURL, "chrome://test/skin/icon.png"); - do_check_eq(a1.icon64URL, "chrome://test/skin/icon64.png"); - do_check_eq(a1.icons[32], "chrome://test/skin/icon.png"); - do_check_eq(a1.icons[64], "chrome://test/skin/icon64.png"); - do_check_eq(a1.name, "Test Addon 1"); - do_check_eq(a1.description, "Test Description"); - do_check_eq(a1.creator, "Test Creator"); - do_check_eq(a1.homepageURL, "http://www.example.com"); - do_check_eq(a1.developers[0], "Test Developer 1"); - do_check_eq(a1.developers[1], "Test Developer 2"); - do_check_eq(a1.translators[0], "Test Translator 1"); - do_check_eq(a1.translators[1], "Test Translator 2"); - do_check_eq(a1.contributors[0], "Test Contributor 1"); - do_check_eq(a1.contributors[1], "Test Contributor 2"); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_true(a1.isCompatible); - do_check_true(a1.providesUpdatesSecurely); - do_check_eq(a1.blocklistState, AM_Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - - do_check_neq(a2, null); - do_check_eq(a2.id, "addon2@tests.mozilla.org"); - do_check_true(a2.isActive); - do_check_false(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_true(a2.providesUpdatesSecurely); - - do_check_neq(a3, null); - do_check_eq(a3.id, "addon3@tests.mozilla.org"); - do_check_false(a3.isActive); - do_check_false(a3.userDisabled); - do_check_true(a3.appDisabled); - do_check_false(a3.providesUpdatesSecurely); - - do_check_neq(a4, null); - do_check_eq(a4.id, "addon4@tests.mozilla.org"); - do_check_true(a4.isActive); - do_check_false(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_true(a4.providesUpdatesSecurely); - - do_check_neq(a5, null); - do_check_true(a5.isActive); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_true(a5.isCompatible); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_true(a6.isCompatible); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_false(a7.userDisabled); - do_check_true(a7.appDisabled); - do_check_false(a7.isCompatible); - - do_check_neq(a8, null); - do_check_false(a8.isActive); - do_check_false(a8.userDisabled); - do_check_true(a8.appDisabled); - do_check_false(a8.isCompatible); - - do_check_neq(a9, null); - do_check_true(a9.isActive); - do_check_false(a9.userDisabled); - do_check_false(a9.appDisabled); - do_check_true(a9.isCompatible); - - do_check_neq(a10, null); - do_check_false(a10.isActive); - do_check_false(a10.userDisabled); - do_check_true(a10.appDisabled); - do_check_false(a10.isCompatible); - - do_check_neq(a11, null); - do_check_true(a11.isActive); - do_check_false(a11.userDisabled); - do_check_false(a11.appDisabled); - do_check_true(a11.isCompatible); - - do_check_neq(a12, null); - do_check_false(a12.isActive); - do_check_false(a12.userDisabled); - do_check_true(a12.appDisabled); - do_check_false(a12.isCompatible); - - do_check_neq(a13, null); - do_check_false(a13.isActive); - do_check_false(a13.userDisabled); - do_check_true(a13.appDisabled); - do_check_false(a13.isCompatible); - - do_check_neq(a14, null); - do_check_true(a14.isActive); - do_check_false(a14.userDisabled); - do_check_false(a14.appDisabled); - do_check_true(a14.isCompatible); - - do_check_neq(a15, null); - do_check_true(a15.isActive); - do_check_false(a15.userDisabled); - do_check_false(a15.appDisabled); - do_check_true(a15.isCompatible); - do_check_true(a15.providesUpdatesSecurely); - - do_check_neq(a16, null); - do_check_true(a16.isActive); - do_check_false(a16.userDisabled); - do_check_false(a16.appDisabled); - do_check_true(a16.isCompatible); - do_check_true(a16.providesUpdatesSecurely); - - do_check_neq(a17, null); - do_check_true(a17.isActive); - do_check_false(a17.userDisabled); - do_check_false(a17.appDisabled); - do_check_true(a17.isCompatible); - do_check_eq(a17.optionsURL, "chrome://test/content/options.xul"); - do_check_eq(a17.optionsType, AddonManager.OPTIONS_TYPE_INLINE); - - do_check_neq(a18, null); - do_check_true(a18.isActive); - do_check_false(a18.userDisabled); - do_check_false(a18.appDisabled); - do_check_true(a18.isCompatible); - if (Services.prefs.getBoolPref("extensions.alwaysUnpack")) { - do_check_eq(a18.optionsURL, Services.io.newFileURI(profileDir).spec + - "addon18@tests.mozilla.org/options.xul"); - } else { - do_check_eq(a18.optionsURL, "jar:" + Services.io.newFileURI(profileDir).spec + - "addon18@tests.mozilla.org.xpi!/options.xul"); - } - do_check_eq(a18.optionsType, AddonManager.OPTIONS_TYPE_INLINE); - - do_check_eq(a19, null); - - do_check_neq(a20, null); - do_check_true(a20.isActive); - do_check_false(a20.userDisabled); - do_check_false(a20.appDisabled); - do_check_true(a20.isCompatible); - do_check_eq(a20.optionsURL, "chrome://test/content/options.xul"); - do_check_eq(a20.optionsType, AddonManager.OPTIONS_TYPE_DIALOG); - - do_check_neq(a21, null); - do_check_true(a21.isActive); - do_check_false(a21.userDisabled); - do_check_false(a21.appDisabled); - do_check_true(a21.isCompatible); - do_check_eq(a21.optionsURL, "chrome://test/content/options.xul"); - do_check_eq(a21.optionsType, AddonManager.OPTIONS_TYPE_TAB); - - do_check_neq(a22, null); - do_check_eq(a22.optionsType, null); - do_check_eq(a22.optionsURL, null); - - do_check_neq(a23, null); - do_check_eq(a23.optionsType, AddonManager.OPTIONS_TYPE_INLINE); - do_check_neq(a23.optionsURL, null); - - do_check_neq(a24, null); - do_check_eq(a24.optionsType, AddonManager.OPTIONS_TYPE_INLINE); - do_check_neq(a24.optionsURL, null); - - do_check_neq(a25, null); - do_check_eq(a25.optionsType, null); - do_check_eq(a25.optionsURL, null); - - do_check_neq(a26, null); - do_check_eq(a26.optionsType, AddonManager.OPTIONS_TYPE_INLINE_INFO); - do_check_neq(a26.optionsURL, null); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_mapURIToAddonID.js b/toolkit/mozapps/webextensions/test/xpcshell/test_mapURIToAddonID.js deleted file mode 100644 index 1dd05064e..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_mapURIToAddonID.js +++ /dev/null @@ -1,347 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that add-ons URIs can be mapped to add-on IDs -// -Components.utils.import("resource://gre/modules/Services.jsm"); - -// Enable loading extensions from the user scopes -Services.prefs.setIntPref("extensions.enabledScopes", - AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); -const userExtDir = gProfD.clone(); -userExtDir.append("extensions2"); -userExtDir.append(gAppInfo.ID); -registerDirectory("XREUSysExt", userExtDir.parent); - -BootstrapMonitor.init(); - -function TestProvider(result) { - this.result = result; -} -TestProvider.prototype = { - uri: Services.io.newURI("hellow://world", null, null), - id: "valid@id", - startup: function() {}, - shutdown: function() {}, - mapURIToAddonID: function(aURI) { - if (aURI.spec === this.uri.spec) { - return this.id; - } - throw Components.Exception("Not mapped", this.result); - } -}; - -function TestProviderNoMap() {} -TestProviderNoMap.prototype = { - startup: function() {}, - shutdown: function() {} -}; - -function check_mapping(uri, id) { - do_check_eq(AddonManager.mapURIToAddonID(uri), id); - let svc = Components.classes["@mozilla.org/addons/integration;1"]. - getService(Components.interfaces.amIAddonManager); - let val = {}; - do_check_true(svc.mapURIToAddonID(uri, val)); - do_check_eq(val.value, id); -} - -function getActiveVersion() { - return Services.prefs.getIntPref("bootstraptest.active_version"); -} - -function run_test() { - do_test_pending(); - - run_test_early(); -} - -function run_test_early() { - startupManager(); - - installAllFiles([do_get_addon("test_chromemanifest_1")], function() { - restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(addon) { - let uri = addon.getResourceURI("."); - let id = addon.id; - check_mapping(uri, id); - - shutdownManager(); - - // Force an early call, to check that mappings will get correctly - // initialized when the manager actually starts up. - // See bug 957089 - - // First force-initialize the XPIProvider. - let s = Components.utils.import( - "resource://gre/modules/addons/XPIProvider.jsm", {}); - - // Make the early API call. - // AddonManager still misses its provider and so doesn't work yet. - do_check_null(AddonManager.mapURIToAddonID(uri)); - // But calling XPIProvider directly works immediately - do_check_eq(s.XPIProvider.mapURIToAddonID(uri), id); - - // Actually start up the manager. - startupManager(false); - - // Check that the mapping is there now. - check_mapping(uri, id); - do_check_eq(s.XPIProvider.mapURIToAddonID(uri), id); - - run_test_nomapping(); - }); - }); -} - -function run_test_nomapping() { - do_check_eq(AddonManager.mapURIToAddonID(TestProvider.prototype.uri), null); - try { - let svc = Components.classes["@mozilla.org/addons/integration;1"]. - getService(Components.interfaces.amIAddonManager); - let val = {}; - do_check_false(svc.mapURIToAddonID(TestProvider.prototype.uri, val)); - } - catch (ex) { - do_throw(ex); - } - - run_test_1(); -} - - -// Tests that add-on URIs are mappable after an install -function run_test_1() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_1"), function(install) { - ensure_test_completed(); - - let addon = install.addon; - prepare_test({ - "bootstrap1@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], function() { - let uri = addon.getResourceURI("."); - check_mapping(uri, addon.id); - - BootstrapMonitor.promiseAddonStartup("bootstrap1@tests.mozilla.org").then(function() { - run_test_2(uri); - }); - }); - install.install(); - }); -} - -// Tests that add-on URIs are still mappable, even after the add-on gets -// disabled in-session. -function run_test_2(uri) { - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { - prepare_test({ - "bootstrap1@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ] - }); - - b1.userDisabled = true; - ensure_test_completed(); - - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(newb1) { - do_check_true(newb1.userDisabled); - check_mapping(uri, newb1.id); - - do_execute_soon(() => run_test_3(uri)); - }); - }); -} - -// Tests that add-on URIs are mappable if the add-on was never started in a -// session -function run_test_3(uri) { - restartManager(); - - check_mapping(uri, "bootstrap1@tests.mozilla.org"); - - run_test_4(); -} - -// Tests that add-on URIs are mappable after a restart + reenable -function run_test_4() { - restartManager(); - - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { - prepare_test({ - "bootstrap1@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - b1.userDisabled = false; - ensure_test_completed(); - - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(newb1) { - let uri = newb1.getResourceURI("."); - check_mapping(uri, newb1.id); - - do_execute_soon(run_test_5); - }); - }); -} - -// Tests that add-on URIs are mappable after a restart -function run_test_5() { - restartManager(); - - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { - let uri = b1.getResourceURI("."); - check_mapping(uri, b1.id); - - do_execute_soon(run_test_6); - }); -} - -// Tests that add-on URIs are mappable after being uninstalled -function run_test_6() { - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { - prepare_test({ - "bootstrap1@tests.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ] - }); - - let uri = b1.getResourceURI("."); - b1.uninstall(); - ensure_test_completed(); - - check_mapping(uri, b1.id); - - restartManager(); - do_execute_soon(run_test_7); - }); -} - -// Tests that add-on URIs are mappable for add-ons detected at startup -function run_test_7() { - shutdownManager(); - - manuallyInstall(do_get_addon("test_bootstrap1_1"), profileDir, "bootstrap1@tests.mozilla.org"); - - startupManager(); - - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { - let uri = b1.getResourceURI("."); - check_mapping(uri, b1.id); - - do_execute_soon(run_test_8); - }); -} - -// Tests that temporary addon-on URIs are mappable after install and uninstall -function run_test_8() { - prepare_test({ - "bootstrap2@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onExternalInstall", - ], function(b2) { - let uri = b2.getResourceURI("."); - check_mapping(uri, b2.id); - - prepare_test({ - "bootstrap2@tests.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ] - }); - - b2.uninstall(); - ensure_test_completed(); - - check_mapping(uri, b2.id); - - do_execute_soon(run_test_invalidarg); - }); - AddonManager.installTemporaryAddon(do_get_addon("test_bootstrap2_1")); -} - -// Tests that the AddonManager will bail when mapURIToAddonID is called with an -// invalid argument -function run_test_invalidarg() { - restartManager(); - - let tests = [undefined, - null, - 1, - "string", - "chrome://global/content/", - function() {} - ]; - for (var test of tests) { - try { - AddonManager.mapURIToAddonID(test); - throw new Error("Shouldn't be able to map the URI in question"); - } - catch (ex) { - if (ex.result) { - do_check_eq(ex.result, Components.results.NS_ERROR_INVALID_ARG); - } else { - do_throw(ex); - } - } - } - - run_test_provider(); -} - -// Tests that custom providers are correctly handled -function run_test_provider() { - restartManager(); - - const provider = new TestProvider(Components.results.NS_ERROR_NOT_AVAILABLE); - AddonManagerPrivate.registerProvider(provider); - - check_mapping(provider.uri, provider.id); - - let u2 = provider.uri.clone(); - u2.path = "notmapped"; - do_check_eq(AddonManager.mapURIToAddonID(u2), null); - - AddonManagerPrivate.unregisterProvider(provider); - - run_test_provider_nomap(); -} - -// Tests that custom providers are correctly handled, even not implementing -// mapURIToAddonID -function run_test_provider_nomap() { - restartManager(); - - const provider = new TestProviderNoMap(); - AddonManagerPrivate.registerProvider(provider); - - do_check_eq(AddonManager.mapURIToAddonID(TestProvider.prototype.uri), null); - - AddonManagerPrivate.unregisterProvider(provider); - - do_test_finished(); -} - - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_metadata_update.js b/toolkit/mozapps/webextensions/test/xpcshell/test_metadata_update.js deleted file mode 100644 index dbf5db485..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_metadata_update.js +++ /dev/null @@ -1,159 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -/* - * Test whether we need to block start-up to check add-on compatibility, - * based on how long since the last succesful metadata ping. - * All tests depend on having one add-on installed in the profile - */ - - -const URI_EXTENSION_UPDATE_DIALOG = "chrome://mozapps/content/extensions/update.xul"; -const PREF_EM_SHOW_MISMATCH_UI = "extensions.showMismatchUI"; - -// Constants copied from AddonRepository.jsm -const PREF_METADATA_LASTUPDATE = "extensions.getAddons.cache.lastUpdate"; -const PREF_METADATA_UPDATETHRESHOLD_SEC = "extensions.getAddons.cache.updateThreshold"; -const DEFAULT_METADATA_UPDATETHRESHOLD_SEC = 172800; // two days - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); -// None of this works without the add-on repository cache -Services.prefs.setBoolPref("extensions.getAddons.cache.enabled", true); - -var Cc = Components.classes; -var Ci = Components.interfaces; -var Cu = Components.utils; -var Cr = Components.results; - -Cu.import("resource://testing-common/MockRegistrar.jsm"); -var testserver; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// This will be called to show the compatibility update dialog. -var WindowWatcher = { - expected: false, - - openWindow: function(parent, url, name, features, args) { - do_check_true(Services.startup.interrupted); - do_check_eq(url, URI_EXTENSION_UPDATE_DIALOG); - do_check_true(this.expected); - this.expected = false; - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -} - -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - -// Return Date.now() in seconds, rounded -function now() { - return Math.round(Date.now() / 1000); -} - -// First time with a new profile, so we don't have a cache.lastUpdate pref -add_task(function* checkFirstMetadata() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - Services.prefs.setBoolPref(PREF_EM_SHOW_MISMATCH_UI, true); - - // Create and configure the HTTP server. - testserver = createHttpServer(); - testserver.registerDirectory("/data/", do_get_file("data")); - testserver.registerDirectory("/addons/", do_get_file("addons")); - gPort = testserver.identity.primaryPort; - const BASE_URL = "http://localhost:" + gPort; - const GETADDONS_RESULTS = BASE_URL + "/data/test_AddonRepository_cache.xml"; - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_RESULTS); - - // Put an add-on in our profile so the metadata check will have something to do - var min1max2 = { - id: "min1max2@tests.mozilla.org", - version: "1.0", - name: "Test addon compatible with v1->v2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }; - writeInstallRDFForExtension(min1max2, profileDir); - - startupManager(); - - // Make sure that updating metadata for the first time sets the lastUpdate preference - yield AddonRepository.repopulateCache(); - do_print("Update done, getting last update"); - let lastUpdate = Services.prefs.getIntPref(PREF_METADATA_LASTUPDATE); - do_check_true(lastUpdate > 0); - - // Make sure updating metadata again updates the preference - let oldUpdate = lastUpdate - 2 * DEFAULT_METADATA_UPDATETHRESHOLD_SEC; - Services.prefs.setIntPref(PREF_METADATA_LASTUPDATE, oldUpdate); - yield AddonRepository.repopulateCache(); - do_check_neq(oldUpdate, Services.prefs.getIntPref(PREF_METADATA_LASTUPDATE)); -}); - -// First upgrade with no lastUpdate pref and no add-ons changing shows UI -add_task(function* upgrade_no_lastupdate() { - Services.prefs.clearUserPref(PREF_METADATA_LASTUPDATE); - - WindowWatcher.expected = true; - yield promiseRestartManager("2"); - do_check_false(WindowWatcher.expected); -}); - -// Upgrade with lastUpdate more than default threshold and no add-ons changing shows UI -add_task(function* upgrade_old_lastupdate() { - let oldEnough = now() - DEFAULT_METADATA_UPDATETHRESHOLD_SEC - 1000; - Services.prefs.setIntPref(PREF_METADATA_LASTUPDATE, oldEnough); - - WindowWatcher.expected = true; - // upgrade, downgrade, it has the same effect on the code path under test - yield promiseRestartManager("1"); - do_check_false(WindowWatcher.expected); -}); - -// Upgrade with lastUpdate less than default threshold and no add-ons changing doesn't show -add_task(function* upgrade_young_lastupdate() { - let notOldEnough = now() - DEFAULT_METADATA_UPDATETHRESHOLD_SEC + 1000; - Services.prefs.setIntPref(PREF_METADATA_LASTUPDATE, notOldEnough); - - WindowWatcher.expected = false; - yield promiseRestartManager("2"); - do_check_false(WindowWatcher.expected); -}); - -// Repeat more-than and less-than but with updateThreshold preference set -// Upgrade with lastUpdate more than pref threshold and no add-ons changing shows UI -const TEST_UPDATETHRESHOLD_SEC = 50000; -add_task(function* upgrade_old_pref_lastupdate() { - Services.prefs.setIntPref(PREF_METADATA_UPDATETHRESHOLD_SEC, TEST_UPDATETHRESHOLD_SEC); - - let oldEnough = now() - TEST_UPDATETHRESHOLD_SEC - 1000; - Services.prefs.setIntPref(PREF_METADATA_LASTUPDATE, oldEnough); - - WindowWatcher.expected = true; - yield promiseRestartManager("1"); - do_check_false(WindowWatcher.expected); -}); - -// Upgrade with lastUpdate less than pref threshold and no add-ons changing doesn't show -add_task(function* upgrade_young_pref_lastupdate() { - let notOldEnough = now() - TEST_UPDATETHRESHOLD_SEC + 1000; - Services.prefs.setIntPref(PREF_METADATA_LASTUPDATE, notOldEnough); - - WindowWatcher.expected = false; - yield promiseRestartManager("2"); - do_check_false(WindowWatcher.expected); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_migrate1.js b/toolkit/mozapps/webextensions/test/xpcshell/test_migrate1.js deleted file mode 100644 index 8c13593b9..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_migrate1.js +++ /dev/null @@ -1,231 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that we migrate data from the old rdf style database - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "2.0", - name: "Test 2", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "2.0", - name: "Test 3", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "2.0", - name: "Test 4", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "2.0", - name: "Test 5", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var theme1 = { - id: "theme1@tests.mozilla.org", - version: "1.0", - name: "Theme 1", - type: 4, - internalName: "theme1/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}; - -var theme2 = { - id: "theme2@tests.mozilla.org", - version: "1.0", - name: "Theme 2", - type: 4, - internalName: "theme2/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - writeInstallRDFForExtension(theme1, profileDir); - writeInstallRDFForExtension(theme2, profileDir); - - let stagedXPIs = profileDir.clone(); - stagedXPIs.append("staged-xpis"); - stagedXPIs.append("addon6@tests.mozilla.org"); - stagedXPIs.create(AM_Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY); - - let addon6 = do_get_addon("test_migrate6"); - addon6.copyTo(stagedXPIs, "tmp.xpi"); - stagedXPIs = stagedXPIs.parent; - - stagedXPIs.append("addon7@tests.mozilla.org"); - stagedXPIs.create(AM_Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY); - - let addon7 = do_get_addon("test_migrate7"); - addon7.copyTo(stagedXPIs, "tmp.xpi"); - stagedXPIs = stagedXPIs.parent; - - stagedXPIs.append("addon8@tests.mozilla.org"); - stagedXPIs.create(AM_Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY); - let addon8 = do_get_addon("test_migrate8"); - addon8.copyTo(stagedXPIs, "tmp.xpi"); - stagedXPIs = stagedXPIs.parent; - - let old = do_get_file("data/test_migrate.rdf"); - old.copyTo(gProfD, "extensions.rdf"); - - let oldCache = gProfD.clone(); - oldCache.append("extensions.cache"); - oldCache.create(AM_Ci.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); - - // Theme state is determined by the selected theme pref - Services.prefs.setCharPref("general.skins.selectedSkin", "theme1/1.0"); - - Services.prefs.setCharPref("extensions.lastAppVersion", "1"); - - startupManager(); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); - - do_check_false(oldCache.exists()); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "addon8@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([a1, a2, a3, - a4, a5, a6, - a7, a8, t1, - t2]) { - // addon1 was user and app enabled in the old extensions.rdf - do_check_neq(a1, null); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_true(a1.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_false(a1.hasBinaryComponents); - do_check_true(a1.seen); - - // addon2 was user disabled and app enabled in the old extensions.rdf - do_check_neq(a2, null); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_false(a2.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - do_check_false(a2.hasBinaryComponents); - do_check_true(a2.seen); - - // addon3 was pending user disable and app disabled in the old extensions.rdf - do_check_neq(a3, null); - do_check_true(a3.userDisabled); - do_check_true(a3.appDisabled); - do_check_false(a3.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - do_check_false(a3.hasBinaryComponents); - do_check_true(a3.seen); - - // addon4 was pending user enable and app disabled in the old extensions.rdf - do_check_neq(a4, null); - do_check_false(a4.userDisabled); - do_check_true(a4.appDisabled); - do_check_false(a4.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - do_check_false(a4.hasBinaryComponents); - do_check_true(a4.seen); - - // addon5 was disabled and compatible but a new version has been installed - // since, it should still be disabled but should be incompatible - do_check_neq(a5, null); - do_check_true(a5.userDisabled); - do_check_true(a5.appDisabled); - do_check_false(a5.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a5.id)); - do_check_false(a5.hasBinaryComponents); - do_check_true(a5.seen); - - // addon6, addon7 and addon8 will have been lost as they were staged in the - // pre-Firefox 4.0 directory - do_check_eq(a6, null); - do_check_eq(a7, null); - do_check_eq(a8, null); - - // Theme 1 was previously enabled - do_check_neq(t1, null); - do_check_false(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_true(t1.isActive); - do_check_true(isThemeInAddonsList(profileDir, t1.id)); - do_check_false(hasFlag(t1.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_true(t1.seen); - - // Theme 2 was previously disabled - do_check_neq(t2, null); - do_check_true(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_false(t2.isActive); - do_check_false(isThemeInAddonsList(profileDir, t2.id)); - do_check_true(hasFlag(t2.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_true(t2.seen); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_migrate2.js b/toolkit/mozapps/webextensions/test/xpcshell/test_migrate2.js deleted file mode 100644 index cc7336713..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_migrate2.js +++ /dev/null @@ -1,267 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that we migrate data from SQLITE databases -// Note that since the database doesn't contain the foreignInstall field we -// should just assume that no add-ons in the user profile were foreignInstalls - -// Enable loading extensions from the user and system scopes -Services.prefs.setIntPref("extensions.enabledScopes", - AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER + - AddonManager.SCOPE_SYSTEM); - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "2.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "2.0", - name: "Test 3", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "2.0", - name: "Test 4", - strictCompatibility: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "2.0", - name: "Test 5", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0", - maxVersion: "0" - }] -}; - -var addon6 = { - id: "addon6@tests.mozilla.org", - version: "2.0", - name: "Test 6", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0", - maxVersion: "0" - }] -}; - -var addon7 = { - id: "addon7@tests.mozilla.org", - version: "2.0", - name: "Test 7", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon8 = { - id: "addon8@tests.mozilla.org", - version: "2.0", - name: "Test 8", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); -const profileDir = gProfD.clone(); -profileDir.append("extensions"); -const globalDir = gProfD.clone(); -globalDir.append("extensions2"); -globalDir.append(gAppInfo.ID); -registerDirectory("XRESysSExtPD", globalDir.parent); -const userDir = gProfD.clone(); -userDir.append("extensions3"); -userDir.append(gAppInfo.ID); -registerDirectory("XREUSysExt", userDir.parent); - -function run_test() { - do_test_pending(); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - writeInstallRDFForExtension(addon6, profileDir); - writeInstallRDFForExtension(addon7, globalDir); - writeInstallRDFForExtension(addon8, userDir); - - // Write out a minimal database - let dbfile = gProfD.clone(); - dbfile.append("extensions.sqlite"); - let db = AM_Cc["@mozilla.org/storage/service;1"]. - getService(AM_Ci.mozIStorageService). - openDatabase(dbfile); - db.createTable("addon", "internal_id INTEGER PRIMARY KEY AUTOINCREMENT, " + - "id TEXT, location TEXT, version TEXT, active INTEGER, " + - "userDisabled INTEGER, installDate INTEGER"); - db.createTable("targetApplication", "addon_internal_id INTEGER, " + - "id TEXT, minVersion TEXT, maxVersion TEXT"); - let stmt = db.createStatement("INSERT INTO addon VALUES (NULL, :id, :location, " + - ":version, :active, :userDisabled, :installDate)"); - - let internal_ids = {}; - - [["addon1@tests.mozilla.org", "app-profile", "1.0", "1", "0", "0"], - ["addon2@tests.mozilla.org", "app-profile", "2.0", "0", "1", "0"], - ["addon3@tests.mozilla.org", "app-profile", "2.0", "1", "1", "0"], - ["addon4@tests.mozilla.org", "app-profile", "2.0", "0", "0", "0"], - ["addon5@tests.mozilla.org", "app-profile", "2.0", "1", "0", "0"], - ["addon6@tests.mozilla.org", "app-profile", "1.0", "0", "1", "0"], - ["addon7@tests.mozilla.org", "app-system-share", "1.0", "1", "0", "0"], - ["addon8@tests.mozilla.org", "app-system-user", "1.0", "1", "0", "0"]].forEach(function(a) { - stmt.params.id = a[0]; - stmt.params.location = a[1]; - stmt.params.version = a[2]; - stmt.params.active = a[3]; - stmt.params.userDisabled = a[4]; - stmt.params.installDate = a[5]; - stmt.execute(); - internal_ids[a[0]] = db.lastInsertRowID; - }); - stmt.finalize(); - - // Add updated target application into for addon5 - stmt = db.createStatement("INSERT INTO targetApplication VALUES " + - "(:internal_id, :id, :minVersion, :maxVersion)"); - stmt.params.internal_id = internal_ids["addon5@tests.mozilla.org"]; - stmt.params.id = "xpcshell@tests.mozilla.org"; - stmt.params.minVersion = "0"; - stmt.params.maxVersion = "1"; - stmt.execute(); - - // Add updated target application into for addon6 - stmt.params.internal_id = internal_ids["addon6@tests.mozilla.org"]; - stmt.params.id = "xpcshell@tests.mozilla.org"; - stmt.params.minVersion = "0"; - stmt.params.maxVersion = "1"; - stmt.execute(); - stmt.finalize(); - - db.schemaVersion = 10000; - Services.prefs.setIntPref("extensions.databaseSchema", 14); - db.close(); - - startupManager(); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "addon8@tests.mozilla.org"], - function([a1, a2, a3, a4, a5, a6, a7, a8]) { - // addon1 was enabled in the database - do_check_neq(a1, null); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_true(a1.isActive); - do_check_false(a1.strictCompatibility); - do_check_false(a1.foreignInstall); - do_check_true(a1.seen); - // addon2 was disabled in the database - do_check_neq(a2, null); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_false(a2.isActive); - do_check_false(a2.strictCompatibility); - do_check_false(a2.foreignInstall); - do_check_true(a2.seen); - // addon3 was pending-disable in the database - do_check_neq(a3, null); - do_check_true(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_false(a3.isActive); - do_check_false(a3.strictCompatibility); - do_check_false(a3.foreignInstall); - do_check_true(a3.seen); - // addon4 was pending-enable in the database - do_check_neq(a4, null); - do_check_false(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_true(a4.isActive); - do_check_true(a4.strictCompatibility); - do_check_false(a4.foreignInstall); - do_check_true(a4.seen); - // addon5 was enabled in the database but needed a compatibility update - do_check_neq(a5, null); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_true(a5.isActive); - do_check_false(a5.strictCompatibility); - do_check_false(a5.foreignInstall); - do_check_true(a5.seen); - // addon6 was disabled and compatible but a new version has been installed - // since, it should still be disabled but should be incompatible - do_check_neq(a6, null); - do_check_true(a6.userDisabled); - do_check_true(a6.appDisabled); - do_check_false(a6.isActive); - do_check_false(a6.strictCompatibility); - do_check_false(a6.foreignInstall); - do_check_true(a6.seen); - // addon7 is in the global install location so should be a foreignInstall - do_check_neq(a7, null); - do_check_false(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_true(a7.isActive); - do_check_false(a7.strictCompatibility); - do_check_true(a7.foreignInstall); - do_check_true(a7.seen); - // addon8 is in the user install location so should be a foreignInstall - do_check_neq(a8, null); - do_check_false(a8.userDisabled); - do_check_false(a8.appDisabled); - do_check_true(a8.isActive); - do_check_false(a8.strictCompatibility); - do_check_true(a8.foreignInstall); - do_check_true(a8.seen); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_migrate3.js b/toolkit/mozapps/webextensions/test/xpcshell/test_migrate3.js deleted file mode 100644 index 71bd66603..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_migrate3.js +++ /dev/null @@ -1,229 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that we migrate data from the old extensions.rdf database. This -// matches test_migrate1.js however it runs with a lightweight theme selected -// so the themes should appear disabled. - -Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm"); - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "2.0", - name: "Test 2", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "2.0", - name: "Test 3", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "2.0", - name: "Test 4", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "2.0", - name: "Test 5", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var theme1 = { - id: "theme1@tests.mozilla.org", - version: "1.0", - name: "Theme 1", - type: 4, - internalName: "theme1/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}; - -var theme2 = { - id: "theme2@tests.mozilla.org", - version: "1.0", - name: "Theme 2", - type: 4, - internalName: "theme2/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - writeInstallRDFForExtension(theme1, profileDir); - writeInstallRDFForExtension(theme2, profileDir); - - // Cannot use the LightweightThemeManager before AddonManager has been started - // so inject the correct prefs - Services.prefs.setCharPref("lightweightThemes.usedThemes", JSON.stringify([{ - id: "1", - version: "1", - name: "Test LW Theme", - description: "A test theme", - author: "Mozilla", - homepageURL: "http://localhost/data/index.html", - headerURL: "http://localhost/data/header.png", - footerURL: "http://localhost/data/footer.png", - previewURL: "http://localhost/data/preview.png", - iconURL: "http://localhost/data/icon.png" - }])); - Services.prefs.setCharPref("lightweightThemes.selectedThemeID", "1"); - - let stagedXPIs = profileDir.clone(); - stagedXPIs.append("staged-xpis"); - stagedXPIs.append("addon6@tests.mozilla.org"); - stagedXPIs.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0o755); - - let addon6 = do_get_addon("test_migrate6"); - addon6.copyTo(stagedXPIs, "tmp.xpi"); - stagedXPIs = stagedXPIs.parent; - - stagedXPIs.append("addon7@tests.mozilla.org"); - stagedXPIs.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0o755); - - let addon7 = do_get_addon("test_migrate7"); - addon7.copyTo(stagedXPIs, "tmp.xpi"); - stagedXPIs = stagedXPIs.parent; - - let old = do_get_file("data/test_migrate.rdf"); - old.copyTo(gProfD, "extensions.rdf"); - - // Theme state is determined by the selected theme pref - Services.prefs.setCharPref("general.skins.selectedSkin", "theme1/1.0"); - - startupManager(); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([a1, a2, a3, - a4, a5, a6, - a7, t1, t2]) { - // addon1 was user and app enabled in the old extensions.rdf - do_check_neq(a1, null); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_true(a1.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_true(a1.seen); - - // addon2 was user disabled and app enabled in the old extensions.rdf - do_check_neq(a2, null); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_false(a2.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - do_check_true(a2.seen); - - // addon3 was pending user disable and app disabled in the old extensions.rdf - do_check_neq(a3, null); - do_check_true(a3.userDisabled); - do_check_true(a3.appDisabled); - do_check_false(a3.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - do_check_true(a3.seen); - - // addon4 was pending user enable and app disabled in the old extensions.rdf - do_check_neq(a4, null); - do_check_false(a4.userDisabled); - do_check_true(a4.appDisabled); - do_check_false(a4.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - do_check_true(a4.seen); - - // addon5 was disabled and compatible but a new version has been installed - // since, it should still be disabled but should be incompatible - do_check_neq(a5, null); - do_check_true(a5.userDisabled); - do_check_true(a5.appDisabled); - do_check_false(a5.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a5.id)); - do_check_true(a5.seen); - - // addon6 and addon7 will have been lost as they were staged in the - // pre-Firefox 4.0 directory - do_check_eq(a6, null); - do_check_eq(a7, null); - - // Theme 1 was previously disabled - do_check_neq(t1, null); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_false(t1.isActive); - do_check_true(isThemeInAddonsList(profileDir, t1.id)); - do_check_true(hasFlag(t1.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_true(t1.seen); - - // Theme 2 was previously disabled - do_check_neq(t2, null); - do_check_true(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_false(t2.isActive); - do_check_false(isThemeInAddonsList(profileDir, t2.id)); - do_check_true(hasFlag(t2.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_true(t2.seen); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_migrate4.js b/toolkit/mozapps/webextensions/test/xpcshell/test_migrate4.js deleted file mode 100644 index fad015886..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_migrate4.js +++ /dev/null @@ -1,321 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that we migrate data from a previous version of the JSON database - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -Components.utils.import("resource://testing-common/httpd.js"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; -mapFile("/data/test_migrate4.rdf", testserver); -testserver.registerDirectory("/addons/", do_get_file("addons")); - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}; - -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "2.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}; - -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "2.0", - name: "Test 3", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}; - -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "2.0", - name: "Test 4", - strictCompatibility: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}; - -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "2.0", - name: "Test 5", - updateURL: "http://localhost:" + gPort + "/data/test_migrate4.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0", - maxVersion: "1" - }] -}; - -var addon6 = { - id: "addon6@tests.mozilla.org", - version: "1.0", - name: "Test 6", - updateURL: "http://localhost:" + gPort + "/data/test_migrate4.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0", - maxVersion: "1" - }] -}; - -var defaultTheme = { - id: "default@tests.mozilla.org", - version: "1.0", - name: "Default", - internalName: "classic/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -var oldSyncGUIDs = {}; - -function prepare_profile() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - writeInstallRDFForExtension(addon6, profileDir); - writeInstallRDFForExtension(defaultTheme, profileDir); - - startupManager(); - installAllFiles([do_get_addon("test_migrate8"), do_get_addon("test_migrate9")], - function() { - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon9@tests.mozilla.org"], - function([a1, a2, a3, a4, a5, a6, a9]) { - a1.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DEFAULT; - a2.userDisabled = true; - a2.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE; - a3.applyBackgroundUpdates = AddonManager.AUTOUPDATE_ENABLE; - a4.userDisabled = true; - a6.userDisabled = true; - a9.userDisabled = false; - - for (let addon of [a1, a2, a3, a4, a5, a6]) { - oldSyncGUIDs[addon.id] = addon.syncGUID; - } - - a6.findUpdates({ - onUpdateAvailable: function(aAddon, aInstall6) { - AddonManager.getInstallForURL("http://localhost:" + gPort + "/addons/test_migrate4_7.xpi", function(aInstall7) { - completeAllInstalls([aInstall6, aInstall7], function() { - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org"], - function([a1_2, a2_2, a3_2, a4_2, a5_2, a6_2]) { - a3_2.userDisabled = true; - a4_2.userDisabled = false; - - a5_2.findUpdates({ - onUpdateFinished: function() { - do_execute_soon(perform_migration); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); - }, "application/x-xpinstall"); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); -} - -function perform_migration() { - shutdownManager(); - - // Turn on disabling for all scopes - Services.prefs.setIntPref("extensions.autoDisableScopes", 15); - - changeXPIDBVersion(1, data => { - // Delete the seen property from all add-ons to make sure it defaults to true - for (let addon of data.addons) { - delete addon.seen; - } - }); - Services.prefs.setIntPref("extensions.databaseSchema", 1); - - gAppInfo.version = "2" - startupManager(true); - test_results(); -} - -function test_results() { - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "addon8@tests.mozilla.org", - "addon9@tests.mozilla.org"], - function([a1, a2, a3, a4, a5, a6, a7, a8, a9]) { - // addon1 was enabled - do_check_neq(a1, null); - do_check_eq(a1.syncGUID, oldSyncGUIDs[a1.id]); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_true(a1.isActive); - do_check_eq(a1.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DEFAULT); - do_check_true(a1.foreignInstall); - do_check_true(a1.seen); - do_check_false(a1.hasBinaryComponents); - do_check_false(a1.strictCompatibility); - - // addon2 was disabled - do_check_neq(a2, null); - do_check_eq(a2.syncGUID, oldSyncGUIDs[a2.id]); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_false(a2.isActive); - do_check_eq(a2.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DISABLE); - do_check_true(a2.foreignInstall); - do_check_true(a2.seen); - do_check_false(a2.hasBinaryComponents); - do_check_false(a2.strictCompatibility); - - // addon3 was pending-disable in the database - do_check_neq(a3, null); - do_check_eq(a3.syncGUID, oldSyncGUIDs[a3.id]); - do_check_true(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_false(a3.isActive); - do_check_eq(a3.applyBackgroundUpdates, AddonManager.AUTOUPDATE_ENABLE); - do_check_true(a3.foreignInstall); - do_check_true(a3.seen); - do_check_false(a3.hasBinaryComponents); - do_check_false(a3.strictCompatibility); - - // addon4 was pending-enable in the database - do_check_neq(a4, null); - do_check_eq(a4.syncGUID, oldSyncGUIDs[a4.id]); - do_check_false(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_true(a4.isActive); - do_check_eq(a4.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DEFAULT); - do_check_true(a4.foreignInstall); - do_check_true(a4.seen); - do_check_false(a4.hasBinaryComponents); - do_check_true(a4.strictCompatibility); - - // addon5 was enabled in the database but needed a compatibility update - do_check_neq(a5, null); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_true(a5.isActive); - do_check_eq(a4.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DEFAULT); - do_check_true(a5.foreignInstall); - do_check_true(a5.seen); - do_check_false(a5.hasBinaryComponents); - do_check_false(a5.strictCompatibility); - - // addon6 was disabled and compatible but a new version has been installed - do_check_neq(a6, null); - do_check_eq(a6.syncGUID, oldSyncGUIDs[a6.id]); - do_check_eq(a6.version, "2.0"); - do_check_true(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_false(a6.isActive); - do_check_eq(a6.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DEFAULT); - do_check_true(a6.foreignInstall); - do_check_true(a6.seen); - do_check_eq(a6.sourceURI.spec, "http://localhost:" + gPort + "/addons/test_migrate4_6.xpi"); - do_check_eq(a6.releaseNotesURI.spec, "http://example.com/updateInfo.xhtml"); - do_check_false(a6.hasBinaryComponents); - do_check_false(a6.strictCompatibility); - - // addon7 was installed manually - do_check_neq(a7, null); - do_check_eq(a7.version, "1.0"); - do_check_false(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_true(a7.isActive); - do_check_eq(a7.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DEFAULT); - do_check_false(a7.foreignInstall); - do_check_true(a7.seen); - do_check_eq(a7.sourceURI.spec, "http://localhost:" + gPort + "/addons/test_migrate4_7.xpi"); - do_check_eq(a7.releaseNotesURI, null); - do_check_false(a7.hasBinaryComponents); - do_check_false(a7.strictCompatibility); - - // addon8 was enabled and has binary components - do_check_neq(a8, null); - do_check_false(a8.userDisabled); - do_check_false(a8.appDisabled); - do_check_true(a8.isActive); - do_check_false(a8.foreignInstall); - do_check_true(a8.seen); - do_check_true(a8.hasBinaryComponents); - do_check_false(a8.strictCompatibility); - - // addon9 is the active theme - do_check_neq(a9, null); - do_check_false(a9.userDisabled); - do_check_false(a9.appDisabled); - do_check_true(a9.isActive); - do_check_false(a9.foreignInstall); - do_check_true(a9.seen); - do_check_false(a9.hasBinaryComponents); - do_check_true(a9.strictCompatibility); - - testserver.stop(do_test_finished); - }); -} - -function run_test() { - do_test_pending(); - - prepare_profile(); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_migrate5.js b/toolkit/mozapps/webextensions/test/xpcshell/test_migrate5.js deleted file mode 100644 index 885cd5a7c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_migrate5.js +++ /dev/null @@ -1,139 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that we fail to migrate but still start up ok when there is a SQLITE database -// with no useful data in it. - -const PREF_GENERAL_SKINS_SELECTEDSKIN = "general.skins.selectedSkin"; - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "2.0", - name: "Test 5", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0", - maxVersion: "0" - }] -}; - -var defaultTheme = { - id: "default@tests.mozilla.org", - version: "2.0", - name: "Default theme", - internalName: "classic/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var theme1 = { - id: "theme1@tests.mozilla.org", - version: "2.0", - name: "Test theme", - internalName: "theme1/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(defaultTheme, profileDir); - writeInstallRDFForExtension(theme1, profileDir); - - Services.prefs.setCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN, "theme1/1.0"); - - // Write out a broken database (no userDisabled field) - let dbfile = gProfD.clone(); - dbfile.append("extensions.sqlite"); - let db = AM_Cc["@mozilla.org/storage/service;1"]. - getService(AM_Ci.mozIStorageService). - openDatabase(dbfile); - db.createTable("addon", "internal_id INTEGER PRIMARY KEY AUTOINCREMENT, " + - "id TEXT, location TEXT, version TEXT, active INTEGER, " + - "installDate INTEGER"); - db.createTable("targetApplication", "addon_internal_id INTEGER, " + - "id TEXT, minVersion TEXT, maxVersion TEXT"); - let stmt = db.createStatement("INSERT INTO addon VALUES (NULL, :id, :location, " + - ":version, :active, :installDate)"); - - let internal_ids = {}; - - [["addon1@tests.mozilla.org", "app-profile", "1.0", "1", "0"], - ["addon2@tests.mozilla.org", "app-profile", "2.0", "0", "0"], - ["default@tests.mozilla.org", "app-profile", "2.0", "1", "0"], - ["theme1@tests.mozilla.org", "app-profile", "2.0", "0", "0"]].forEach(function(a) { - stmt.params.id = a[0]; - stmt.params.location = a[1]; - stmt.params.version = a[2]; - stmt.params.active = a[3]; - stmt.params.installDate = a[4]; - stmt.execute(); - internal_ids[a[0]] = db.lastInsertRowID; - }); - stmt.finalize(); - - db.schemaVersion = 100; - Services.prefs.setIntPref("extensions.databaseSchema", 100); - db.close(); - - startupManager(); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "default@tests.mozilla.org", - "theme1@tests.mozilla.org"], - function([a1, a2, d, t1]) { - do_check_neq(a1, null); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_true(a1.isActive); - - do_check_neq(a2, null); - do_check_false(a2.userDisabled); - do_check_true(a2.appDisabled); - do_check_false(a2.isActive); - - // Should have enabled the selected theme - do_check_neq(t1, null); - do_check_false(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_true(t1.isActive); - - do_check_neq(d, null); - do_check_true(d.userDisabled); - do_check_false(d.appDisabled); - do_check_false(d.isActive); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_migrateAddonRepository.js b/toolkit/mozapps/webextensions/test/xpcshell/test_migrateAddonRepository.js deleted file mode 100644 index d9cfc8790..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_migrateAddonRepository.js +++ /dev/null @@ -1,127 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const EXPECTED_SCHEMA_VERSION = 4; -var dbfile; - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - // Write out a minimal database. - dbfile = gProfD.clone(); - dbfile.append("addons.sqlite"); - let db = AM_Cc["@mozilla.org/storage/service;1"]. - getService(AM_Ci.mozIStorageService). - openDatabase(dbfile); - - db.createTable("addon", - "internal_id INTEGER PRIMARY KEY AUTOINCREMENT, " + - "id TEXT UNIQUE, " + - "type TEXT, " + - "name TEXT, " + - "version TEXT, " + - "creator TEXT, " + - "creatorURL TEXT, " + - "description TEXT, " + - "fullDescription TEXT, " + - "developerComments TEXT, " + - "eula TEXT, " + - "iconURL TEXT, " + - "homepageURL TEXT, " + - "supportURL TEXT, " + - "contributionURL TEXT, " + - "contributionAmount TEXT, " + - "averageRating INTEGER, " + - "reviewCount INTEGER, " + - "reviewURL TEXT, " + - "totalDownloads INTEGER, " + - "weeklyDownloads INTEGER, " + - "dailyUsers INTEGER, " + - "sourceURI TEXT, " + - "repositoryStatus INTEGER, " + - "size INTEGER, " + - "updateDate INTEGER"); - - db.createTable("developer", - "addon_internal_id INTEGER, " + - "num INTEGER, " + - "name TEXT, " + - "url TEXT, " + - "PRIMARY KEY (addon_internal_id, num)"); - - db.createTable("screenshot", - "addon_internal_id INTEGER, " + - "num INTEGER, " + - "url TEXT, " + - "thumbnailURL TEXT, " + - "caption TEXT, " + - "PRIMARY KEY (addon_internal_id, num)"); - - let insertStmt = db.createStatement("INSERT INTO addon (id) VALUES (:id)"); - insertStmt.params.id = "test1@tests.mozilla.org"; - insertStmt.execute(); - insertStmt.finalize(); - - insertStmt = db.createStatement("INSERT INTO screenshot VALUES " + - "(:addon_internal_id, :num, :url, :thumbnailURL, :caption)"); - - insertStmt.params.addon_internal_id = 1; - insertStmt.params.num = 0; - insertStmt.params.url = "http://localhost/full1-1.png"; - insertStmt.params.thumbnailURL = "http://localhost/thumbnail1-1.png"; - insertStmt.params.caption = "Caption 1 - 1"; - insertStmt.execute(); - insertStmt.finalize(); - - db.schemaVersion = 1; - db.close(); - - - Services.prefs.setBoolPref("extensions.getAddons.cache.enabled", true); - AddonRepository.getCachedAddonByID("test1@tests.mozilla.org", function (aAddon) { - do_check_neq(aAddon, null); - do_check_eq(aAddon.screenshots.length, 1); - do_check_true(aAddon.screenshots[0].width === null); - do_check_true(aAddon.screenshots[0].height === null); - do_check_true(aAddon.screenshots[0].thumbnailWidth === null); - do_check_true(aAddon.screenshots[0].thumbnailHeight === null); - do_check_eq(aAddon.iconURL, undefined); - do_check_eq(JSON.stringify(aAddon.icons), "{}"); - AddonRepository.shutdown().then( - function checkAfterRepoShutdown() { - // Check the DB schema has changed once AddonRepository has freed it. - db = AM_Cc["@mozilla.org/storage/service;1"]. - getService(AM_Ci.mozIStorageService). - openDatabase(dbfile); - do_check_eq(db.schemaVersion, EXPECTED_SCHEMA_VERSION); - do_check_true(db.indexExists("developer_idx")); - do_check_true(db.indexExists("screenshot_idx")); - do_check_true(db.indexExists("compatibility_override_idx")); - do_check_true(db.tableExists("compatibility_override")); - do_check_true(db.indexExists("icon_idx")); - do_check_true(db.tableExists("icon")); - - // Check the trigger is working - db.executeSimpleSQL("INSERT INTO addon (id, type, name) VALUES('test_addon', 'extension', 'Test Addon')"); - let internalID = db.lastInsertRowID; - db.executeSimpleSQL("INSERT INTO compatibility_override (addon_internal_id, num, type) VALUES('" + internalID + "', '1', 'incompatible')"); - - let selectStmt = db.createStatement("SELECT COUNT(*) AS count FROM compatibility_override"); - selectStmt.executeStep(); - do_check_eq(selectStmt.row.count, 1); - selectStmt.reset(); - - db.executeSimpleSQL("DELETE FROM addon"); - selectStmt.executeStep(); - do_check_eq(selectStmt.row.count, 0); - selectStmt.finalize(); - - db.close(); - do_test_finished(); - }, - do_report_unexpected_exception - ); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_migrate_max_version.js b/toolkit/mozapps/webextensions/test/xpcshell/test_migrate_max_version.js deleted file mode 100644 index 171ac411e..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_migrate_max_version.js +++ /dev/null @@ -1,103 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that we don't migrate data from SQLITE if -// the "extensions.databaseSchema" preference shows we've -// already upgraded to JSON - -// Enable loading extensions from the user and system scopes -Services.prefs.setIntPref("extensions.enabledScopes", - AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER + - AddonManager.SCOPE_SYSTEM); - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - writeInstallRDFForExtension(addon1, profileDir); - - // Write out a minimal database - let dbfile = gProfD.clone(); - dbfile.append("extensions.sqlite"); - let db = AM_Cc["@mozilla.org/storage/service;1"]. - getService(AM_Ci.mozIStorageService). - openDatabase(dbfile); - db.createTable("addon", "internal_id INTEGER PRIMARY KEY AUTOINCREMENT, " + - "id TEXT, location TEXT, version TEXT, active INTEGER, " + - "userDisabled INTEGER, installDate INTEGER"); - db.createTable("targetApplication", "addon_internal_id INTEGER, " + - "id TEXT, minVersion TEXT, maxVersion TEXT"); - let stmt = db.createStatement("INSERT INTO addon VALUES (NULL, :id, :location, " + - ":version, :active, :userDisabled, :installDate)"); - - let internal_ids = {}; - - let a = ["addon1@tests.mozilla.org", "app-profile", "1.0", "0", "1", "0"]; - stmt.params.id = a[0]; - stmt.params.location = a[1]; - stmt.params.version = a[2]; - stmt.params.active = a[3]; - stmt.params.userDisabled = a[4]; - stmt.params.installDate = a[5]; - stmt.execute(); - internal_ids[a[0]] = db.lastInsertRowID; - stmt.finalize(); - - db.schemaVersion = 14; - Services.prefs.setIntPref("extensions.databaseSchema", 14); - db.close(); - - startupManager(); - run_next_test(); -} - -add_test(function before_rebuild() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", - function check_before_rebuild (a1) { - // First check that it migrated OK once - // addon1 was disabled in the database - do_check_neq(a1, null); - do_check_true(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_false(a1.isActive); - do_check_false(a1.strictCompatibility); - do_check_false(a1.foreignInstall); - - run_next_test(); - }); -}); - -// now shut down, remove the JSON database, -// start up again, and make sure the data didn't migrate this time -add_test(function rebuild_again() { - shutdownManager(); - gExtensionsJSON.remove(true); - startupManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", - function check_after_rebuild(a1) { - // addon1 was rebuilt from extensions directory, - // so it appears enabled as a foreign install - do_check_neq(a1, null); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_true(a1.isActive); - do_check_false(a1.strictCompatibility); - do_check_true(a1.foreignInstall); - - run_next_test(); - }); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_multiprocessCompatible.js b/toolkit/mozapps/webextensions/test/xpcshell/test_multiprocessCompatible.js deleted file mode 100644 index 4cd103fa6..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_multiprocessCompatible.js +++ /dev/null @@ -1,120 +0,0 @@ -Components.utils.import("resource://testing-common/httpd.js"); -var gServer; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); - -function build_test(multiprocessCompatible, bootstrap, updateMultiprocessCompatible) { - return function* () { - dump("Running test" + - " multiprocessCompatible: " + multiprocessCompatible + - " bootstrap: " + bootstrap + - " updateMultiprocessCompatible: " + updateMultiprocessCompatible + - "\n"); - - let addonData = { - id: "addon@tests.mozilla.org", - name: "Test Add-on", - version: "1.0", - multiprocessCompatible, - bootstrap, - updateURL: "http://localhost:" + gPort + "/updaterdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] - } - - gServer.registerPathHandler("/updaterdf", function(request, response) { - let updateData = {}; - updateData[addonData.id] = [{ - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] - }]; - - if (updateMultiprocessCompatible !== undefined) { - updateData[addonData.id][0].multiprocessCompatible = updateMultiprocessCompatible; - } - - response.setStatusLine(request.httpVersion, 200, "OK"); - response.write(createUpdateRDF(updateData)); - }); - - let expectedMPC = updateMultiprocessCompatible === undefined ? - multiprocessCompatible : - updateMultiprocessCompatible; - - let xpifile = createTempXPIFile(addonData); - let install = yield new Promise(resolve => AddonManager.getInstallForFile(xpifile, resolve)); - do_check_eq(install.addon.multiprocessCompatible, !!multiprocessCompatible); - do_check_eq(install.addon.mpcOptedOut, multiprocessCompatible === false) - yield promiseCompleteAllInstalls([install]); - - if (!bootstrap) { - yield promiseRestartManager(); - do_check_true(isExtensionInAddonsList(profileDir, addonData.id)); - do_check_eq(isItemMarkedMPIncompatible(addonData.id), !multiprocessCompatible); - } - - let addon = yield promiseAddonByID(addonData.id); - do_check_neq(addon, null); - do_check_eq(addon.multiprocessCompatible, !!multiprocessCompatible); - do_check_eq(addon.mpcOptedOut, multiprocessCompatible === false); - - yield promiseFindAddonUpdates(addon); - - // Should have applied the compatibility change - do_check_eq(addon.multiprocessCompatible, !!expectedMPC); - yield promiseRestartManager(); - - addon = yield promiseAddonByID(addonData.id); - // Should have persisted the compatibility change - do_check_eq(addon.multiprocessCompatible, !!expectedMPC); - if (!bootstrap) { - do_check_true(isExtensionInAddonsList(profileDir, addonData.id)); - do_check_eq(isItemMarkedMPIncompatible(addonData.id), !multiprocessCompatible); - } - - addon.uninstall(); - yield promiseRestartManager(); - - gServer.registerPathHandler("/updaterdf", null); - } -} - -/* Builds a set of tests to run the same steps for every combination of: - * The add-on being restartless - * The initial add-on supporting multiprocess - * The update saying the add-on should or should not support multiprocess (or not say anything at all) - */ -for (let bootstrap of [false, true]) { - for (let multiprocessCompatible of [undefined, false, true]) { - for (let updateMultiprocessCompatible of [undefined, false, true]) { - add_task(build_test(multiprocessCompatible, bootstrap, updateMultiprocessCompatible)); - } - } -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - startupManager(); - - // Create and configure the HTTP server. - gServer = new HttpServer(); - gServer.registerDirectory("/data/", gTmpD); - gServer.start(-1); - gPort = gServer.identity.primaryPort; - - run_next_test(); -} - -function end_test() { - gServer.stop(do_test_finished); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_no_addons.js b/toolkit/mozapps/webextensions/test/xpcshell/test_no_addons.js deleted file mode 100644 index a2ea5301e..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_no_addons.js +++ /dev/null @@ -1,98 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Test startup and restart when no add-ons are installed -// bug 944006 - -Components.utils.import("resource://gre/modules/Promise.jsm"); - -// Load XPI Provider to get schema version ID -var XPIScope = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm"); -const DB_SCHEMA = XPIScope.DB_SCHEMA; - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -function run_test() { - // Kick off the task-based tests... - run_next_test(); -} - -// Test for a preference to either exist with a specified value, or not exist at all -function checkPending() { - try { - do_check_false(Services.prefs.getBoolPref("extensions.pendingOperations")); - } - catch (e) { - // OK - } -} - -function checkString(aPref, aValue) { - try { - do_check_eq(Services.prefs.getCharPref(aPref), aValue) - } - catch (e) { - // OK - } -} - -// Make sure all our extension state is empty/nonexistent -function check_empty_state() { - do_check_false(gExtensionsJSON.exists()); - do_check_false(gExtensionsINI.exists()); - - do_check_eq(Services.prefs.getIntPref("extensions.databaseSchema"), DB_SCHEMA); - - checkString("extensions.bootstrappedAddons", "{}"); - checkString("extensions.installCache", "[]"); - checkPending(); -} - -// After first run with no add-ons, we expect: -// no extensions.json is created -// no extensions.ini -// database schema version preference is set -// bootstrap add-ons preference is not found -// add-on directory state preference is an empty array -// no pending operations -add_task(function* first_run() { - startupManager(); - check_empty_state(); - yield true; -}); - -// Now do something that causes a DB load, and re-check -function* trigger_db_load() { - let addonDefer = Promise.defer(); - AddonManager.getAddonsByTypes(['extension'], addonDefer.resolve); - let addonList = yield addonDefer.promise; - - do_check_eq(addonList.length, 0); - check_empty_state(); - - yield true; -} -add_task(trigger_db_load); - -// Now restart the manager and check again -add_task(function* restart_and_recheck() { - restartManager(); - check_empty_state(); - yield true; -}); - -// and reload the DB again -add_task(trigger_db_load); - -// When we start up with no DB and an old database schema, we should update the -// schema number but not create a database -add_task(function upgrade_schema_version() { - shutdownManager(); - Services.prefs.setIntPref("extensions.databaseSchema", 1); - - startupManager(); - do_check_eq(Services.prefs.getIntPref("extensions.databaseSchema"), DB_SCHEMA); - check_empty_state(); -}); - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_nodisable_hidden.js b/toolkit/mozapps/webextensions/test/xpcshell/test_nodisable_hidden.js deleted file mode 100644 index 2d11e9c5b..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_nodisable_hidden.js +++ /dev/null @@ -1,107 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This test verifies that hidden add-ons cannot be user disabled. - -// for normal add-ons -const profileDir = FileUtils.getDir("ProfD", ["extensions"]); -// for system add-ons -const distroDir = FileUtils.getDir("ProfD", ["sysfeatures"], true); -registerDirectory("XREAppFeat", distroDir); - -const NORMAL_ID = "normal@tests.mozilla.org"; -const SYSTEM_ID = "system@tests.mozilla.org"; - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42"); - -// normal add-ons can be user disabled. -add_task(function*() { - - writeInstallRDFToDir({ - id: NORMAL_ID, - version: "1.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test disabling hidden add-ons, non-hidden add-on case.", - }, profileDir, NORMAL_ID); - - startupManager(); - - let addon = yield promiseAddonByID(NORMAL_ID); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test disabling hidden add-ons, non-hidden add-on case."); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_false(addon.userDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - - // normal add-ons can be disabled by the user. - addon.userDisabled = true; - - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test disabling hidden add-ons, non-hidden add-on case."); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.userDisabled); - do_check_false(addon.isActive); - do_check_eq(addon.type, "extension"); - - addon.uninstall(); - - shutdownManager(); -}); - -// system add-ons can never be user disabled. -add_task(function*() { - - writeInstallRDFToDir({ - id: SYSTEM_ID, - version: "1.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test disabling hidden add-ons, hidden system add-on case.", - }, distroDir, SYSTEM_ID); - - startupManager(); - - let addon = yield promiseAddonByID(SYSTEM_ID); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test disabling hidden add-ons, hidden system add-on case."); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_false(addon.userDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - - // system add-ons cannot be disabled by the user. - try { - addon.userDisabled = true; - do_throw("Expected addon.userDisabled on a hidden add-on to throw!"); - } catch (e) { - do_check_eq(e.message, `Cannot disable hidden add-on ${SYSTEM_ID}`); - } - - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test disabling hidden add-ons, hidden system add-on case."); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_false(addon.userDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - - shutdownManager(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_onPropertyChanged_appDisabled.js b/toolkit/mozapps/webextensions/test/xpcshell/test_onPropertyChanged_appDisabled.js deleted file mode 100644 index f9b7da073..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_onPropertyChanged_appDisabled.js +++ /dev/null @@ -1,66 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0.1", - maxVersion: "0.2" - }] - }, profileDir); - - startupManager(); - - AddonManager.strictCompatibility = false; - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - do_check_neq(aAddon, null); - aAddon.userDisabled = true; - do_execute_soon(run_test_1); - }); -} - -function run_test_1() { - restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - do_check_neq(aAddon, null); - do_check_true(aAddon.userDisabled); - do_check_false(aAddon.isActive); - do_check_false(aAddon.appDisabled); - - prepare_test({ - "addon1@tests.mozilla.org": [ - ["onPropertyChanged", ["appDisabled"]] - ] - }, [], run_test_2); - - AddonManager.strictCompatibility = true; - }); -} - -function run_test_2() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - do_check_neq(aAddon, null); - do_check_true(aAddon.userDisabled); - do_check_false(aAddon.isActive); - do_check_true(aAddon.appDisabled); - - prepare_test({ - "addon1@tests.mozilla.org": [ - ["onPropertyChanged", ["appDisabled"]] - ] - }, [], callback_soon(do_test_finished)); - - AddonManager.strictCompatibility = false; - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_overrideblocklist.js b/toolkit/mozapps/webextensions/test/xpcshell/test_overrideblocklist.js deleted file mode 100644 index c39e432bd..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_overrideblocklist.js +++ /dev/null @@ -1,200 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const KEY_PROFILEDIR = "ProfD"; -const KEY_APPDIR = "XCurProcD"; -const FILE_BLOCKLIST = "blocklist.xml"; - -const PREF_BLOCKLIST_ENABLED = "extensions.blocklist.enabled"; - -const OLD = do_get_file("data/test_overrideblocklist/old.xml"); -const NEW = do_get_file("data/test_overrideblocklist/new.xml"); -const ANCIENT = do_get_file("data/test_overrideblocklist/ancient.xml"); -const OLD_TSTAMP = 1296046918000; -const NEW_TSTAMP = 1396046918000; - -const gAppDir = FileUtils.getFile(KEY_APPDIR, []); - -var oldAddon = { - id: "old@tests.mozilla.org", - version: 1 -} -var newAddon = { - id: "new@tests.mozilla.org", - version: 1 -} -var ancientAddon = { - id: "ancient@tests.mozilla.org", - version: 1 -} -var invalidAddon = { - id: "invalid@tests.mozilla.org", - version: 1 -} - -function incrementAppVersion() { - gAppInfo.version = "" + (parseInt(gAppInfo.version) + 1); -} - -function clearBlocklists() { - let blocklist = FileUtils.getFile(KEY_APPDIR, [FILE_BLOCKLIST]); - if (blocklist.exists()) - blocklist.remove(true); - - blocklist = FileUtils.getFile(KEY_PROFILEDIR, [FILE_BLOCKLIST]); - if (blocklist.exists()) - blocklist.remove(true); -} - -function reloadBlocklist() { - Services.prefs.setBoolPref(PREF_BLOCKLIST_ENABLED, false); - Services.prefs.setBoolPref(PREF_BLOCKLIST_ENABLED, true); -} - -function copyToApp(file) { - file.clone().copyTo(gAppDir, FILE_BLOCKLIST); -} - -function copyToProfile(file, tstamp) { - file = file.clone(); - file.copyTo(gProfD, FILE_BLOCKLIST); - file = gProfD.clone(); - file.append(FILE_BLOCKLIST); - file.lastModifiedTime = tstamp; -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - let appBlocklist = FileUtils.getFile(KEY_APPDIR, [FILE_BLOCKLIST]); - if (appBlocklist.exists()) { - try { - appBlocklist.moveTo(gAppDir, "blocklist.old"); - } - catch (e) { - todo(false, "Aborting test due to unmovable blocklist file: " + e); - return; - } - do_register_cleanup(function() { - clearBlocklists(); - appBlocklist.moveTo(gAppDir, FILE_BLOCKLIST); - }); - } - - run_next_test(); -} - -// On first run whataver is in the app dir should get copied to the profile -add_test(function test_copy() { - clearBlocklists(); - copyToApp(OLD); - - incrementAppVersion(); - startupManager(); - - reloadBlocklist(); - let blocklist = AM_Cc["@mozilla.org/extensions/blocklist;1"]. - getService(AM_Ci.nsIBlocklistService); - do_check_false(blocklist.isAddonBlocklisted(invalidAddon)); - do_check_false(blocklist.isAddonBlocklisted(ancientAddon)); - do_check_true(blocklist.isAddonBlocklisted(oldAddon)); - do_check_false(blocklist.isAddonBlocklisted(newAddon)); - - shutdownManager(); - - run_next_test(); -}); - -// An ancient blocklist should be ignored -add_test(function test_ancient() { - clearBlocklists(); - copyToApp(ANCIENT); - copyToProfile(OLD, OLD_TSTAMP); - - incrementAppVersion(); - startupManager(); - - reloadBlocklist(); - let blocklist = AM_Cc["@mozilla.org/extensions/blocklist;1"]. - getService(AM_Ci.nsIBlocklistService); - do_check_false(blocklist.isAddonBlocklisted(invalidAddon)); - do_check_false(blocklist.isAddonBlocklisted(ancientAddon)); - do_check_true(blocklist.isAddonBlocklisted(oldAddon)); - do_check_false(blocklist.isAddonBlocklisted(newAddon)); - - shutdownManager(); - - run_next_test(); -}); - -// A new blocklist should override an old blocklist -add_test(function test_override() { - clearBlocklists(); - copyToApp(NEW); - copyToProfile(OLD, OLD_TSTAMP); - - incrementAppVersion(); - startupManager(); - - reloadBlocklist(); - let blocklist = AM_Cc["@mozilla.org/extensions/blocklist;1"]. - getService(AM_Ci.nsIBlocklistService); - do_check_false(blocklist.isAddonBlocklisted(invalidAddon)); - do_check_false(blocklist.isAddonBlocklisted(ancientAddon)); - do_check_false(blocklist.isAddonBlocklisted(oldAddon)); - do_check_true(blocklist.isAddonBlocklisted(newAddon)); - - shutdownManager(); - - run_next_test(); -}); - -// An old blocklist shouldn't override a new blocklist -add_test(function test_retain() { - clearBlocklists(); - copyToApp(OLD); - copyToProfile(NEW, NEW_TSTAMP); - - incrementAppVersion(); - startupManager(); - - reloadBlocklist(); - let blocklist = AM_Cc["@mozilla.org/extensions/blocklist;1"]. - getService(AM_Ci.nsIBlocklistService); - do_check_false(blocklist.isAddonBlocklisted(invalidAddon)); - do_check_false(blocklist.isAddonBlocklisted(ancientAddon)); - do_check_false(blocklist.isAddonBlocklisted(oldAddon)); - do_check_true(blocklist.isAddonBlocklisted(newAddon)); - - shutdownManager(); - - run_next_test(); -}); - -// A missing blocklist in the profile should still load an app-shipped blocklist -add_test(function test_missing() { - clearBlocklists(); - copyToApp(OLD); - copyToProfile(NEW, NEW_TSTAMP); - - incrementAppVersion(); - startupManager(); - shutdownManager(); - - let blocklist = FileUtils.getFile(KEY_PROFILEDIR, [FILE_BLOCKLIST]); - blocklist.remove(true); - startupManager(false); - - reloadBlocklist(); - blocklist = AM_Cc["@mozilla.org/extensions/blocklist;1"]. - getService(AM_Ci.nsIBlocklistService); - do_check_false(blocklist.isAddonBlocklisted(invalidAddon)); - do_check_false(blocklist.isAddonBlocklisted(ancientAddon)); - do_check_true(blocklist.isAddonBlocklisted(oldAddon)); - do_check_false(blocklist.isAddonBlocklisted(newAddon)); - - shutdownManager(); - - run_next_test(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_pass_symbol.js b/toolkit/mozapps/webextensions/test/xpcshell/test_pass_symbol.js deleted file mode 100644 index 657601e45..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_pass_symbol.js +++ /dev/null @@ -1,43 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const PASS_PREF = "symboltest.instanceid.pass"; -const FAIL_BOGUS_PREF = "symboltest.instanceid.fail_bogus"; -const FAIL_ID_PREF = "symboltest.instanceid.fail_bogus"; -const ADDON_ID = "test_symbol@tests.mozilla.org"; - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42"); -startupManager(); - -BootstrapMonitor.init(); - -// symbol is passed when add-on is installed -add_task(function*() { - for (let pref of [PASS_PREF, FAIL_BOGUS_PREF, FAIL_ID_PREF]) - Services.prefs.clearUserPref(pref); - - yield promiseInstallAllFiles([do_get_addon("test_symbol")], true); - - let addon = yield promiseAddonByID(ADDON_ID); - - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Symbol"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - - // most of the test is in bootstrap.js in the addon because BootstrapMonitor - // currently requires the objects in `data` to be serializable, and we - // need a real reference to the symbol to test this. - do_execute_soon(function() { - // give the startup time to run - do_check_true(Services.prefs.getBoolPref(PASS_PREF)); - do_check_true(Services.prefs.getBoolPref(FAIL_BOGUS_PREF)); - do_check_true(Services.prefs.getBoolPref(FAIL_ID_PREF)); - }); - - yield promiseRestartManager(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_permissions.js b/toolkit/mozapps/webextensions/test/xpcshell/test_permissions.js deleted file mode 100644 index 48fef406f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_permissions.js +++ /dev/null @@ -1,86 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -Components.utils.import("resource://gre/modules/NetUtil.jsm"); - -// Checks that permissions set in preferences are correctly imported but can -// be removed by the user. - -const XPI_MIMETYPE = "application/x-xpinstall"; - -function newPrincipal(uri) { - return Services.scriptSecurityManager.createCodebasePrincipal(NetUtil.newURI(uri), {}); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - Services.prefs.setCharPref("xpinstall.whitelist.add", "https://test1.com,https://test2.com"); - Services.prefs.setCharPref("xpinstall.whitelist.add.36", "https://test3.com,https://www.test4.com"); - Services.prefs.setCharPref("xpinstall.whitelist.add.test5", "https://test5.com"); - - Services.perms.add(NetUtil.newURI("https://www.test9.com"), "install", - AM_Ci.nsIPermissionManager.ALLOW_ACTION); - - startupManager(); - - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("http://test1.com"))); - do_check_true(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://test1.com"))); - do_check_true(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://www.test2.com"))); - do_check_true(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://test3.com"))); - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://test4.com"))); - do_check_true(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://www.test4.com"))); - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("http://www.test5.com"))); - do_check_true(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://www.test5.com"))); - - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("http://www.test6.com"))); - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://www.test6.com"))); - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://test7.com"))); - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://www.test8.com"))); - - // This should remain unaffected - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("http://www.test9.com"))); - do_check_true(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://www.test9.com"))); - - Services.perms.removeAll(); - - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://test1.com"))); - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://www.test2.com"))); - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://test3.com"))); - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://www.test4.com"))); - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://www.test5.com"))); - - // Upgrade the application and verify that the permissions are still not there - restartManager("2"); - - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://test1.com"))); - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://www.test2.com"))); - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://test3.com"))); - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://www.test4.com"))); - do_check_false(AddonManager.isInstallAllowed(XPI_MIMETYPE, - newPrincipal("https://www.test5.com"))); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_permissions_prefs.js b/toolkit/mozapps/webextensions/test/xpcshell/test_permissions_prefs.js deleted file mode 100644 index 576f04a65..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_permissions_prefs.js +++ /dev/null @@ -1,74 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that xpinstall.[whitelist|blacklist].add preferences are emptied when -// converted into permissions. - -const PREF_XPI_WHITELIST_PERMISSIONS = "xpinstall.whitelist.add"; -const PREF_XPI_BLACKLIST_PERMISSIONS = "xpinstall.blacklist.add"; - -function newPrincipal(uri) { - return Services.scriptSecurityManager.createCodebasePrincipal(NetUtil.newURI(uri), {}); -} - -function do_check_permission_prefs(preferences) { - // Check preferences were emptied - for (let pref of preferences) { - try { - do_check_eq(Services.prefs.getCharPref(pref), ""); - } - catch (e) { - // Successfully emptied - } - } -} - -function clear_imported_preferences_cache() { - let scope = Components.utils.import("resource://gre/modules/PermissionsUtils.jsm", {}); - scope.gImportedPrefBranches.clear(); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - // Create own preferences to test - Services.prefs.setCharPref("xpinstall.whitelist.add.EMPTY", ""); - Services.prefs.setCharPref("xpinstall.whitelist.add.TEST", "http://whitelist.example.com"); - Services.prefs.setCharPref("xpinstall.blacklist.add.EMPTY", ""); - Services.prefs.setCharPref("xpinstall.blacklist.add.TEST", "http://blacklist.example.com"); - - // Get list of preferences to check - var whitelistPreferences = Services.prefs.getChildList(PREF_XPI_WHITELIST_PERMISSIONS, {}); - var blacklistPreferences = Services.prefs.getChildList(PREF_XPI_BLACKLIST_PERMISSIONS, {}); - var preferences = whitelistPreferences.concat(blacklistPreferences); - - startupManager(); - - // Permissions are imported lazily - act as thought we're checking an install, - // to trigger on-deman importing of the permissions. - AddonManager.isInstallAllowed("application/x-xpinstall", newPrincipal("http://example.com/file.xpi")); - do_check_permission_prefs(preferences); - - - // Import can also be triggerred by an observer notification by any other area - // of code, such as a permissions management UI. - - // First, request to flush all permissions - clear_imported_preferences_cache(); - Services.prefs.setCharPref("xpinstall.whitelist.add.TEST2", "https://whitelist2.example.com"); - Services.obs.notifyObservers(null, "flush-pending-permissions", "install"); - do_check_permission_prefs(preferences); - - // Then, request to flush just install permissions - clear_imported_preferences_cache(); - Services.prefs.setCharPref("xpinstall.whitelist.add.TEST3", "https://whitelist3.example.com"); - Services.obs.notifyObservers(null, "flush-pending-permissions", ""); - do_check_permission_prefs(preferences); - - // And a request to flush some other permissions sholdn't flush install permissions - clear_imported_preferences_cache(); - Services.prefs.setCharPref("xpinstall.whitelist.add.TEST4", "https://whitelist4.example.com"); - Services.obs.notifyObservers(null, "flush-pending-permissions", "lolcats"); - do_check_eq(Services.prefs.getCharPref("xpinstall.whitelist.add.TEST4"), "https://whitelist4.example.com"); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_pluginBlocklistCtp.js b/toolkit/mozapps/webextensions/test/xpcshell/test_pluginBlocklistCtp.js deleted file mode 100644 index 563b7434c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_pluginBlocklistCtp.js +++ /dev/null @@ -1,182 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -const nsIBLS = Components.interfaces.nsIBlocklistService; -Components.utils.import("resource://testing-common/httpd.js"); - -var gBlocklistService = null; -var gNotifier = null; -var gNextTest = null; -var gPluginHost = null; - -var gServer = new HttpServer(); -gServer.start(-1); -gPort = gServer.identity.primaryPort; -mapFile("/data/test_pluginBlocklistCtp.xml", gServer); -mapFile("/data/test_pluginBlocklistCtpUndo.xml", gServer); - -var PLUGINS = [{ - // severity=0, vulnerabilitystatus=0 -> outdated - name: "test_plugin_0", - version: "5", - disabled: false, - blocklisted: false -}, -{ - // severity=0, vulnerabilitystatus=1 -> update available - name: "test_plugin_1", - version: "5", - disabled: false, - blocklisted: false -}, -{ - // severity=0, vulnerabilitystatus=2 -> no update - name: "test_plugin_2", - version: "5", - disabled: false, - blocklisted: false -}, -{ - // no severity field -> severity=3 by default -> hardblock - name: "test_plugin_3", - version: "5", - disabled: false, - blocklisted: false -}, -{ - // severity=1, vulnerabilitystatus=2 -> softblock - name: "test_plugin_4", - version: "5", - disabled: false, - blocklisted: false -}, -{ - // not in the blocklist -> not blocked - name: "test_plugin_5", - version: "5", - disabled: false, - blocklisted: false -}]; - -function test_basic() { - var blocklist = Components.classes["@mozilla.org/extensions/blocklist;1"].getService(nsIBLS); - - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[0], "1", "1.9") == nsIBLS.STATE_OUTDATED); - - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[1], "1", "1.9") == nsIBLS.STATE_VULNERABLE_UPDATE_AVAILABLE); - - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[2], "1", "1.9") == nsIBLS.STATE_VULNERABLE_NO_UPDATE); - - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[3], "1", "1.9") == nsIBLS.STATE_BLOCKED); - - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[4], "1", "1.9") == nsIBLS.STATE_SOFTBLOCKED); - - do_check_true(blocklist.getPluginBlocklistState(PLUGINS[5], "1", "1.9") == nsIBLS.STATE_NOT_BLOCKED); - - gNextTest = test_is_not_clicktoplay; - do_execute_soon(gNextTest); -} - -function get_test_plugin() { - var pluginHost = Components.classes["@mozilla.org/plugin/host;1"].getService(Components.interfaces.nsIPluginHost); - for (var plugin of pluginHost.getPluginTags()) { - if (plugin.name == "Test Plug-in") - return plugin; - } - do_check_true(false); - return null; -} - -// At this time, the blocklist does not have an entry for the test plugin, -// so it shouldn't be click-to-play. -function test_is_not_clicktoplay() { - var plugin = get_test_plugin(); - var blocklistState = gBlocklistService.getPluginBlocklistState(plugin, "1", "1.9"); - do_check_neq(blocklistState, Components.interfaces.nsIBlocklistService.STATE_VULNERABLE_UPDATE_AVAILABLE); - do_check_neq(blocklistState, Components.interfaces.nsIBlocklistService.STATE_VULNERABLE_NO_UPDATE); - - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + gPort + "/data/test_pluginBlocklistCtpUndo.xml"); - gNextTest = test_is_clicktoplay; - gNotifier.notify(null); -} - -// Here, we've updated the blocklist to have a block for the test plugin, -// so it should be click-to-play. -function test_is_clicktoplay() { - var plugin = get_test_plugin(); - var blocklistState = gBlocklistService.getPluginBlocklistState(plugin, "1", "1.9"); - do_check_eq(blocklistState, Components.interfaces.nsIBlocklistService.STATE_VULNERABLE_NO_UPDATE); - - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + gPort + "/data/test_pluginBlocklistCtp.xml"); - gNextTest = test_is_not_clicktoplay2; - gNotifier.notify(null); -} - -// But now we've removed that entry from the blocklist (really we've gone back -// to the old one), so the plugin shouldn't be click-to-play any more. -function test_is_not_clicktoplay2() { - var plugin = get_test_plugin(); - var blocklistState = gBlocklistService.getPluginBlocklistState(plugin, "1", "1.9"); - do_check_neq(blocklistState, Components.interfaces.nsIBlocklistService.STATE_VULNERABLE_UPDATE_AVAILABLE); - do_check_neq(blocklistState, Components.interfaces.nsIBlocklistService.STATE_VULNERABLE_NO_UPDATE); - - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + gPort + "/data/test_pluginBlocklistCtpUndo.xml"); - gNextTest = test_disable_blocklist; - gNotifier.notify(null); -} - -// Test that disabling the blocklist when a plugin is ctp-blocklisted will -// result in the plugin not being click-to-play. -function test_disable_blocklist() { - var plugin = get_test_plugin(); - var blocklistState = gBlocklistService.getPluginBlocklistState(plugin, "1", "1.9"); - do_check_eq(blocklistState, Components.interfaces.nsIBlocklistService.STATE_VULNERABLE_NO_UPDATE); - - gNextTest = null; - Services.prefs.setBoolPref("extensions.blocklist.enabled", false); - blocklistState = gBlocklistService.getPluginBlocklistState(plugin, "1", "1.9"); - do_check_neq(blocklistState, Components.interfaces.nsIBlocklistService.STATE_VULNERABLE_NO_UPDATE); - do_check_neq(blocklistState, Components.interfaces.nsIBlocklistService.STATE_VULNERABLE_UPDATE_AVAILABLE); - - // it should still be possible to make a plugin click-to-play via the pref - // and setting that plugin's enabled state to click-to-play - Services.prefs.setBoolPref("plugins.click_to_play", true); - let previousEnabledState = plugin.enabledState; - plugin.enabledState = Components.interfaces.nsIPluginTag.STATE_CLICKTOPLAY; - do_check_eq(gPluginHost.getStateForType("application/x-test"), Components.interfaces.nsIPluginTag.STATE_CLICKTOPLAY); - // clean up plugin state - plugin.enabledState = previousEnabledState; - - gServer.stop(do_test_finished); -} - -// Observe "blocklist-updated" so we know when to advance to the next test -function observer() { - if (gNextTest) - do_execute_soon(gNextTest); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + gPort + "/data/test_pluginBlocklistCtp.xml"); - Services.prefs.setBoolPref("plugin.load_flash_only", false); - startupManager(); - - gPluginHost = Components.classes["@mozilla.org/plugin/host;1"].getService(Components.interfaces.nsIPluginHost); - gBlocklistService = Components.classes["@mozilla.org/extensions/blocklist;1"].getService(Components.interfaces.nsIBlocklistService); - gNotifier = Components.classes["@mozilla.org/extensions/blocklist;1"].getService(Components.interfaces.nsITimerCallback); - Services.obs.addObserver(observer, "blocklist-updated", false); - - do_register_cleanup(function() { - Services.prefs.clearUserPref("extensions.blocklist.url"); - Services.prefs.clearUserPref("extensions.blocklist.enabled"); - Services.prefs.clearUserPref("plugins.click_to_play"); - Services.obs.removeObserver(observer, "blocklist-updated"); - }); - - gNextTest = test_basic; - do_test_pending(); - gNotifier.notify(null); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_pluginInfoURL.js b/toolkit/mozapps/webextensions/test/xpcshell/test_pluginInfoURL.js deleted file mode 100644 index e5acb28a4..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_pluginInfoURL.js +++ /dev/null @@ -1,90 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -var Ci = Components.interfaces; -Components.utils.import("resource://gre/modules/Services.jsm"); - -/** - * MockPlugin mimics the behaviour of a plugin. - */ -function MockPlugin(name, version, enabledState) { - this.name = name; - this.version = version; - this.enabledState = enabledState; -} - -MockPlugin.prototype = { - get blocklisted() { - let bls = Services.blocklist; - return bls.getPluginBlocklistState(this) == bls.STATE_BLOCKED; - }, - - get disabled() { - return this.enabledState == Ci.nsIPluginTag.STATE_DISABLED; - } -}; - -// The mocked blocked plugin used to test the blocklist. -const PLUGINS = [ - new MockPlugin('test_with_infoURL', '5', Ci.nsIPluginTag.STATE_ENABLED), - new MockPlugin('test_with_altInfoURL', '5', Ci.nsIPluginTag.STATE_ENABLED), - new MockPlugin('test_no_infoURL', '5', Ci.nsIPluginTag.STATE_ENABLED), - new MockPlugin('test_newVersion', '1', Ci.nsIPluginTag.STATE_ENABLED), - new MockPlugin('test_newVersion', '3', Ci.nsIPluginTag.STATE_ENABLED) -]; - -/** - * The entry point of the unit tests, which is also responsible of - * copying the blocklist file to the profile folder. - */ -function run_test() { - copyBlocklistToProfile(do_get_file('data/pluginInfoURL_block.xml')); - - createAppInfo('xpcshell@tests.mozilla.org', 'XPCShell', '3', '8'); - startupManager(); - - run_next_test(); -} - -/** - * Test that the blocklist service correctly loads and returns the infoURL for - * a plugin that matches the first entry in the blocklist. - */ -add_task(function* test_infoURL() { - // The testInfoURL must match the value within the - // <infoURL> tag in pluginInfoURL_block.xml. - let testInfoURL = 'http://test.url.com/'; - - Assert.strictEqual(Services.blocklist.getPluginInfoURL(PLUGINS[0]), - testInfoURL, 'Should be the provided url when an infoURL tag is available'); -}); - -/** - * Test that the blocklist service correctly loads and returns the infoURL for - * a plugin that partially matches an earlier entry in the blocklist. - */ -add_task(function* test_altInfoURL() { - let altTestInfoURL = 'http://alt.test.url.com/'; - - Assert.strictEqual(Services.blocklist.getPluginInfoURL(PLUGINS[1]), - altTestInfoURL, 'Should be the alternative infoURL'); -}); - -/** - * Test that the blocklist service correctly returns null - * if the infoURL tag is missing in the blocklist.xml file. - */ -add_task(function* test_infoURL_missing() { - Assert.strictEqual(Services.blocklist.getPluginInfoURL(PLUGINS[2]), null, - 'Should be null when no infoURL tag is available.'); -}); - -add_task(function* test_intoURL_newVersion() { - let testInfoURL = 'http://test.url2.com/'; - Assert.strictEqual(Services.blocklist.getPluginInfoURL(PLUGINS[3]), - testInfoURL, 'Old plugin should match'); - Assert.strictEqual(Services.blocklist.getPluginInfoURL(PLUGINS[4]), - null, 'New plugin should not match'); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_pluginchange.js b/toolkit/mozapps/webextensions/test/xpcshell/test_pluginchange.js deleted file mode 100644 index 05e17b35e..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_pluginchange.js +++ /dev/null @@ -1,283 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const LIST_UPDATED_TOPIC = "plugins-list-updated"; - -// We need to use the same algorithm for generating IDs for plugins -var { getIDHashForString } = Components.utils.import("resource://gre/modules/addons/PluginProvider.jsm"); -var { MockRegistrar } = Components.utils.import("resource://testing-common/MockRegistrar.jsm"); - -function PluginTag(name, description) { - this.name = name; - this.description = description; -} - -PluginTag.prototype = { - name: null, - description: null, - version: "1.0", - filename: null, - fullpath: null, - disabled: false, - blocklisted: false, - clicktoplay: false, - - mimeTypes: [], - - getMimeTypes: function(count) { - count.value = this.mimeTypes.length; - return this.mimeTypes; - } -}; - -const PLUGINS = [ - // A standalone plugin - new PluginTag("Java", "A mock Java plugin"), - - // A plugin made up of two plugin files - new PluginTag("Flash", "A mock Flash plugin"), - new PluginTag("Flash", "A mock Flash plugin") -]; - -const gPluginHost = { - // nsIPluginHost - getPluginTags: function(count) { - count.value = PLUGINS.length; - return PLUGINS; - }, - - QueryInterface: XPCOMUtils.generateQI([AM_Ci.nsIPluginHost]) -}; - -MockRegistrar.register("@mozilla.org/plugin/host;1", gPluginHost); - -// This verifies that when the list of plugins changes the add-ons manager -// correctly updates -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - Services.prefs.setBoolPref("media.gmp-provider.enabled", false); - - startupManager(); - AddonManager.addAddonListener(AddonListener); - AddonManager.addInstallListener(InstallListener); - - run_test_1(); -} - -function end_test() { - do_execute_soon(do_test_finished); -} - -function sortAddons(addons) { - addons.sort(function(a, b) { - return a.name.localeCompare(b.name); - }); -} - -// Basic check that the mock object works -function run_test_1() { - AddonManager.getAddonsByTypes(["plugin"], function(addons) { - sortAddons(addons); - - do_check_eq(addons.length, 2); - - do_check_eq(addons[0].name, "Flash"); - do_check_false(addons[0].userDisabled); - do_check_eq(addons[1].name, "Java"); - do_check_false(addons[1].userDisabled); - - run_test_2(); - }); -} - -// No change to the list should not trigger any events or changes in the API -function run_test_2() { - // Reorder the list a bit - let tag = PLUGINS[0]; - PLUGINS[0] = PLUGINS[2]; - PLUGINS[2] = PLUGINS[1]; - PLUGINS[1] = tag; - - Services.obs.notifyObservers(null, LIST_UPDATED_TOPIC, null); - - AddonManager.getAddonsByTypes(["plugin"], function(addons) { - sortAddons(addons); - - do_check_eq(addons.length, 2); - - do_check_eq(addons[0].name, "Flash"); - do_check_false(addons[0].userDisabled); - do_check_eq(addons[1].name, "Java"); - do_check_false(addons[1].userDisabled); - - run_test_3(); - }); -} - -// Tests that a newly detected plugin shows up in the API and sends out events -function run_test_3() { - let tag = new PluginTag("Quicktime", "A mock Quicktime plugin"); - PLUGINS.push(tag); - let id = getIDHashForString(tag.name + tag.description); - - let test_params = {}; - test_params[id] = [ - ["onInstalling", false], - "onInstalled" - ]; - - prepare_test(test_params, [ - "onExternalInstall" - ]); - - Services.obs.notifyObservers(null, LIST_UPDATED_TOPIC, null); - - ensure_test_completed(); - - AddonManager.getAddonsByTypes(["plugin"], function(addons) { - sortAddons(addons); - - do_check_eq(addons.length, 3); - - do_check_eq(addons[0].name, "Flash"); - do_check_false(addons[0].userDisabled); - do_check_eq(addons[1].name, "Java"); - do_check_false(addons[1].userDisabled); - do_check_eq(addons[2].name, "Quicktime"); - do_check_false(addons[2].userDisabled); - - run_test_4(); - }); -} - -// Tests that a removed plugin disappears from in the API and sends out events -function run_test_4() { - let tag = PLUGINS.splice(1, 1)[0]; - let id = getIDHashForString(tag.name + tag.description); - - let test_params = {}; - test_params[id] = [ - ["onUninstalling", false], - "onUninstalled" - ]; - - prepare_test(test_params); - - Services.obs.notifyObservers(null, LIST_UPDATED_TOPIC, null); - - ensure_test_completed(); - - AddonManager.getAddonsByTypes(["plugin"], function(addons) { - sortAddons(addons); - - do_check_eq(addons.length, 2); - - do_check_eq(addons[0].name, "Flash"); - do_check_false(addons[0].userDisabled); - do_check_eq(addons[1].name, "Quicktime"); - do_check_false(addons[1].userDisabled); - - run_test_5(); - }); -} - -// Removing part of the flash plugin should have no effect -function run_test_5() { - PLUGINS.splice(0, 1); - - Services.obs.notifyObservers(null, LIST_UPDATED_TOPIC, null); - - ensure_test_completed(); - - AddonManager.getAddonsByTypes(["plugin"], function(addons) { - sortAddons(addons); - - do_check_eq(addons.length, 2); - - do_check_eq(addons[0].name, "Flash"); - do_check_false(addons[0].userDisabled); - do_check_eq(addons[1].name, "Quicktime"); - do_check_false(addons[1].userDisabled); - - run_test_6(); - }); -} - -// Replacing flash should be detected -function run_test_6() { - let oldTag = PLUGINS.splice(0, 1)[0]; - let newTag = new PluginTag("Flash 2", "A new crash-free Flash!"); - newTag.disabled = true; - PLUGINS.push(newTag); - - let test_params = {}; - test_params[getIDHashForString(oldTag.name + oldTag.description)] = [ - ["onUninstalling", false], - "onUninstalled" - ]; - test_params[getIDHashForString(newTag.name + newTag.description)] = [ - ["onInstalling", false], - "onInstalled" - ]; - - prepare_test(test_params, [ - "onExternalInstall" - ]); - - Services.obs.notifyObservers(null, LIST_UPDATED_TOPIC, null); - - ensure_test_completed(); - - AddonManager.getAddonsByTypes(["plugin"], function(addons) { - sortAddons(addons); - - do_check_eq(addons.length, 2); - - do_check_eq(addons[0].name, "Flash 2"); - do_check_true(addons[0].userDisabled); - do_check_eq(addons[1].name, "Quicktime"); - do_check_false(addons[1].userDisabled); - - run_test_7(); - }); -} - -// If new tags are detected and the disabled state changes then we should send -// out appropriate notifications -function run_test_7() { - PLUGINS[0] = new PluginTag("Quicktime", "A mock Quicktime plugin"); - PLUGINS[0].disabled = true; - PLUGINS[1] = new PluginTag("Flash 2", "A new crash-free Flash!"); - - let test_params = {}; - test_params[getIDHashForString(PLUGINS[0].name + PLUGINS[0].description)] = [ - ["onDisabling", false], - "onDisabled" - ]; - test_params[getIDHashForString(PLUGINS[1].name + PLUGINS[1].description)] = [ - ["onEnabling", false], - "onEnabled" - ]; - - prepare_test(test_params); - - Services.obs.notifyObservers(null, LIST_UPDATED_TOPIC, null); - - ensure_test_completed(); - - AddonManager.getAddonsByTypes(["plugin"], function(addons) { - sortAddons(addons); - - do_check_eq(addons.length, 2); - - do_check_eq(addons[0].name, "Flash 2"); - do_check_false(addons[0].userDisabled); - do_check_eq(addons[1].name, "Quicktime"); - do_check_true(addons[1].userDisabled); - - end_test(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_plugins.js b/toolkit/mozapps/webextensions/test/xpcshell/test_plugins.js deleted file mode 100644 index 3f0ac7ebe..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_plugins.js +++ /dev/null @@ -1,210 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -var TEST_PLUGIN_DESCRIPTION = "Flash plug-in for testing purposes."; - -// This verifies that plugins exist and can be enabled and disabled. -var gID = null; - -function setTestPluginState(state) { - let tags = AM_Cc["@mozilla.org/plugin/host;1"].getService(AM_Ci.nsIPluginHost) - .getPluginTags(); - for (let tag of tags) { - do_print("Checking tag: " + tag.description); - if (tag.description == TEST_PLUGIN_DESCRIPTION) { - tag.enabledState = state; - return; - } - } - throw Error("No plugin tag found for the test plugin"); -} - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - Services.prefs.setBoolPref("plugins.click_to_play", true); - Services.prefs.setBoolPref("plugin.load_flash_only", false); - - setTestPluginState(AM_Ci.nsIPluginTag.STATE_CLICKTOPLAY); - - startupManager(); - AddonManager.addAddonListener(AddonListener); - AddonManager.addInstallListener(InstallListener); - - run_test_1(); -} - -// Finds the test plugin library -function get_test_plugin() { - var pluginEnum = Services.dirsvc.get("APluginsDL", AM_Ci.nsISimpleEnumerator); - while (pluginEnum.hasMoreElements()) { - let dir = pluginEnum.getNext().QueryInterface(AM_Ci.nsILocalFile); - let plugin = dir.clone(); - // OSX plugin - plugin.append("npswftest.plugin"); - if (plugin.exists()) { - plugin.normalize(); - return plugin; - } - plugin = dir.clone(); - // *nix plugin - plugin.append("libnpswftest.so"); - if (plugin.exists()) { - plugin.normalize(); - return plugin; - } - // Windows plugin - plugin = dir.clone(); - plugin.append("npswftest.dll"); - if (plugin.exists()) { - plugin.normalize(); - return plugin; - } - } - return null; -} - -function getFileSize(aFile) { - if (!aFile.isDirectory()) - return aFile.fileSize; - - let size = 0; - let entries = aFile.directoryEntries.QueryInterface(AM_Ci.nsIDirectoryEnumerator); - let entry; - while (entry = entries.nextFile) - size += getFileSize(entry); - entries.close(); - return size; -} - -function getPluginLastModifiedTime(aPluginFile) { - // On OS X we use the bundle contents last modified time as using - // the package directories modified date may be outdated. - // See bug 313700. - try { - let localFileMac = aPluginFile.QueryInterface(AM_Ci.nsILocalFileMac); - if (localFileMac) { - return localFileMac.bundleContentsLastModifiedTime; - } - } catch (e) { - } - - return aPluginFile.lastModifiedTime; -} - -// Tests that the test plugin exists -function run_test_1() { - var testPlugin = get_test_plugin(); - do_check_neq(testPlugin, null); - - AddonManager.getAddonsByTypes(["plugin"], function(addons) { - do_check_true(addons.length > 0); - - addons.forEach(function(p) { - if (p.description == TEST_PLUGIN_DESCRIPTION) - gID = p.id; - }); - - do_check_neq(gID, null); - - AddonManager.getAddonByID(gID, function(p) { - do_check_neq(p, null); - do_check_eq(p.name, "Shockwave Flash"); - do_check_eq(p.description, TEST_PLUGIN_DESCRIPTION); - do_check_eq(p.creator, null); - do_check_eq(p.version, "1.0.0.0"); - do_check_eq(p.type, "plugin"); - do_check_eq(p.userDisabled, "askToActivate"); - do_check_false(p.appDisabled); - do_check_true(p.isActive); - do_check_true(p.isCompatible); - do_check_true(p.providesUpdatesSecurely); - do_check_eq(p.blocklistState, 0); - do_check_eq(p.permissions, AddonManager.PERM_CAN_DISABLE | AddonManager.PERM_CAN_ENABLE); - do_check_eq(p.pendingOperations, 0); - do_check_true(p.size > 0); - do_check_eq(p.size, getFileSize(testPlugin)); - do_check_true(p.updateDate > 0); - do_check_true("isCompatibleWith" in p); - do_check_true("findUpdates" in p); - - let lastModifiedTime = getPluginLastModifiedTime(testPlugin); - do_check_eq(p.updateDate.getTime(), lastModifiedTime); - do_check_eq(p.installDate.getTime(), lastModifiedTime); - - run_test_2(p); - }); - }); -} - -// Tests that disabling a plugin works -function run_test_2(p) { - let test = {}; - test[gID] = [ - ["onDisabling", false], - "onDisabled", - ["onPropertyChanged", ["userDisabled"]] - ]; - prepare_test(test); - - p.userDisabled = true; - - ensure_test_completed(); - - do_check_true(p.userDisabled); - do_check_false(p.appDisabled); - do_check_false(p.isActive); - - AddonManager.getAddonByID(gID, function(p2) { - do_check_neq(p2, null); - do_check_true(p2.userDisabled); - do_check_false(p2.appDisabled); - do_check_false(p2.isActive); - do_check_eq(p2.name, "Shockwave Flash"); - - run_test_3(p2); - }); -} - -// Tests that enabling a plugin works -function run_test_3(p) { - let test = {}; - test[gID] = [ - ["onEnabling", false], - "onEnabled" - ]; - prepare_test(test); - - p.userDisabled = false; - - ensure_test_completed(); - - do_check_false(p.userDisabled); - do_check_false(p.appDisabled); - do_check_true(p.isActive); - - AddonManager.getAddonByID(gID, function(p2) { - do_check_neq(p2, null); - do_check_false(p2.userDisabled); - do_check_false(p2.appDisabled); - do_check_true(p2.isActive); - do_check_eq(p2.name, "Shockwave Flash"); - - do_execute_soon(run_test_4); - }); -} - -// Verify that after a restart the test plugin has the same ID -function run_test_4() { - restartManager(); - - AddonManager.getAddonByID(gID, function(p) { - do_check_neq(p, null); - do_check_eq(p.name, "Shockwave Flash"); - - Services.prefs.clearUserPref("plugins.click_to_play"); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_pref_properties.js b/toolkit/mozapps/webextensions/test/xpcshell/test_pref_properties.js deleted file mode 100644 index c6a10e7c1..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_pref_properties.js +++ /dev/null @@ -1,221 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -// Tests the preference-related properties of AddonManager -// eg: AddonManager.checkCompatibility, AddonManager.updateEnabled, etc - -var gManagerEventsListener = { - seenEvents: [], - init: function() { - let events = ["onCompatibilityModeChanged", "onCheckUpdateSecurityChanged", - "onUpdateModeChanged"]; - events.forEach(function(aEvent) { - this[aEvent] = function() { - do_print("Saw event " + aEvent); - this.seenEvents.push(aEvent); - } - }, this); - AddonManager.addManagerListener(this); - // Try to add twice, to test that the second time silently fails. - AddonManager.addManagerListener(this); - }, - shutdown: function() { - AddonManager.removeManagerListener(this); - }, - expect: function(aEvents) { - this.expectedEvents = aEvents; - }, - checkExpected: function() { - do_print("Checking expected events..."); - while (this.expectedEvents.length > 0) { - let event = this.expectedEvents.pop(); - do_print("Looking for expected event " + event); - let matchingEvents = this.seenEvents.filter(function(aSeenEvent) { - return aSeenEvent == event; - }); - do_check_eq(matchingEvents.length, 1); - } - this.seenEvents = []; - } -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - Services.prefs.setBoolPref("extensions.update.enabled", true); - Services.prefs.setBoolPref("extensions.update.autoUpdateDefault", true); - Services.prefs.setBoolPref("extensions.strictCompatibility", true); - Services.prefs.setBoolPref("extensions.checkUpdatesecurity", true); - - startupManager(); - gManagerEventsListener.init(); - - - // AddonManager.updateEnabled - gManagerEventsListener.expect(["onUpdateModeChanged"]); - AddonManager.updateEnabled = false; - gManagerEventsListener.checkExpected(); - do_check_false(AddonManager.updateEnabled); - do_check_false(Services.prefs.getBoolPref("extensions.update.enabled")); - - gManagerEventsListener.expect([]); - AddonManager.updateEnabled = false; - gManagerEventsListener.checkExpected(); - do_check_false(AddonManager.updateEnabled); - do_check_false(Services.prefs.getBoolPref("extensions.update.enabled")); - - gManagerEventsListener.expect(["onUpdateModeChanged"]); - AddonManager.updateEnabled = true; - gManagerEventsListener.checkExpected(); - do_check_true(AddonManager.updateEnabled); - do_check_true(Services.prefs.getBoolPref("extensions.update.enabled")); - - gManagerEventsListener.expect([]); - AddonManager.updateEnabled = true; - gManagerEventsListener.checkExpected(); - do_check_true(AddonManager.updateEnabled); - do_check_true(Services.prefs.getBoolPref("extensions.update.enabled")); - - // AddonManager.autoUpdateDefault - gManagerEventsListener.expect(["onUpdateModeChanged"]); - AddonManager.autoUpdateDefault = false; - gManagerEventsListener.checkExpected(); - do_check_false(AddonManager.autoUpdateDefault); - do_check_false(Services.prefs.getBoolPref("extensions.update.autoUpdateDefault")); - - gManagerEventsListener.expect([]); - AddonManager.autoUpdateDefault = false; - gManagerEventsListener.checkExpected(); - do_check_false(AddonManager.autoUpdateDefault); - do_check_false(Services.prefs.getBoolPref("extensions.update.autoUpdateDefault")); - - gManagerEventsListener.expect(["onUpdateModeChanged"]); - AddonManager.autoUpdateDefault = true; - gManagerEventsListener.checkExpected(); - do_check_true(AddonManager.autoUpdateDefault); - do_check_true(Services.prefs.getBoolPref("extensions.update.autoUpdateDefault")); - - gManagerEventsListener.expect([]); - AddonManager.autoUpdateDefault = true; - gManagerEventsListener.checkExpected(); - do_check_true(AddonManager.autoUpdateDefault); - do_check_true(Services.prefs.getBoolPref("extensions.update.autoUpdateDefault")); - - // AddonManager.strictCompatibility - gManagerEventsListener.expect(["onCompatibilityModeChanged"]); - AddonManager.strictCompatibility = false; - gManagerEventsListener.checkExpected(); - do_check_false(AddonManager.strictCompatibility); - do_check_false(Services.prefs.getBoolPref("extensions.strictCompatibility")); - - gManagerEventsListener.expect([]); - AddonManager.strictCompatibility = false; - gManagerEventsListener.checkExpected(); - do_check_false(AddonManager.strictCompatibility); - do_check_false(Services.prefs.getBoolPref("extensions.strictCompatibility")); - - gManagerEventsListener.expect(["onCompatibilityModeChanged"]); - AddonManager.strictCompatibility = true; - gManagerEventsListener.checkExpected(); - do_check_true(AddonManager.strictCompatibility); - do_check_true(Services.prefs.getBoolPref("extensions.strictCompatibility")); - - gManagerEventsListener.expect([]); - AddonManager.strictCompatibility = true; - gManagerEventsListener.checkExpected(); - do_check_true(AddonManager.strictCompatibility); - do_check_true(Services.prefs.getBoolPref("extensions.strictCompatibility")); - - - // AddonManager.checkCompatibility - if (isNightlyChannel()) { - var version = "nightly"; - } else { - version = Services.appinfo.version.replace(/^([^\.]+\.[0-9]+[a-z]*).*/gi, "$1"); - } - const COMPATIBILITY_PREF = "extensions.checkCompatibility." + version; - - gManagerEventsListener.expect(["onCompatibilityModeChanged"]); - AddonManager.checkCompatibility = false; - gManagerEventsListener.checkExpected(); - do_check_false(AddonManager.checkCompatibility); - do_check_false(Services.prefs.getBoolPref(COMPATIBILITY_PREF)); - - gManagerEventsListener.expect([]); - AddonManager.checkCompatibility = false; - gManagerEventsListener.checkExpected(); - do_check_false(AddonManager.checkCompatibility); - do_check_false(Services.prefs.getBoolPref(COMPATIBILITY_PREF)); - - gManagerEventsListener.expect(["onCompatibilityModeChanged"]); - AddonManager.checkCompatibility = true; - gManagerEventsListener.checkExpected(); - do_check_true(AddonManager.checkCompatibility); - do_check_false(Services.prefs.prefHasUserValue(COMPATIBILITY_PREF)); - - gManagerEventsListener.expect([]); - AddonManager.checkCompatibility = true; - gManagerEventsListener.checkExpected(); - do_check_true(AddonManager.checkCompatibility); - do_check_false(Services.prefs.prefHasUserValue(COMPATIBILITY_PREF)); - - - // AddonManager.checkUpdateSecurity - gManagerEventsListener.expect(["onCheckUpdateSecurityChanged"]); - AddonManager.checkUpdateSecurity = false; - gManagerEventsListener.checkExpected(); - do_check_false(AddonManager.checkUpdateSecurity); - if (AddonManager.checkUpdateSecurityDefault) - do_check_false(Services.prefs.getBoolPref("extensions.checkUpdateSecurity")); - else - do_check_false(Services.prefs.prefHasUserValue("extensions.checkUpdateSecurity")); - - gManagerEventsListener.expect([]); - AddonManager.checkUpdateSecurity = false; - gManagerEventsListener.checkExpected(); - do_check_false(AddonManager.checkUpdateSecurity); - if (AddonManager.checkUpdateSecurityDefault) - do_check_false(Services.prefs.getBoolPref("extensions.checkUpdateSecurity")); - else - do_check_false(Services.prefs.prefHasUserValue("extensions.checkUpdateSecurity")); - - gManagerEventsListener.expect(["onCheckUpdateSecurityChanged"]); - AddonManager.checkUpdateSecurity = true; - gManagerEventsListener.checkExpected(); - do_check_true(AddonManager.checkUpdateSecurity); - if (!AddonManager.checkUpdateSecurityDefault) - do_check_true(Services.prefs.getBoolPref("extensions.checkUpdateSecurity")); - else - do_check_false(Services.prefs.prefHasUserValue("extensions.checkUpdateSecurity")); - - gManagerEventsListener.expect([]); - AddonManager.checkUpdateSecurity = true; - gManagerEventsListener.checkExpected(); - do_check_true(AddonManager.checkUpdateSecurity); - if (!AddonManager.checkUpdateSecurityDefault) - do_check_true(Services.prefs.getBoolPref("extensions.checkUpdateSecurity")); - else - do_check_false(Services.prefs.prefHasUserValue("extensions.checkUpdateSecurity")); - - gManagerEventsListener.shutdown(); - - // AddonManager.hotfixID - let hotfixID = "hotfix@tests.mozilla.org"; - Services.prefs.setCharPref("extensions.hotfix.id", hotfixID); - do_check_eq(AddonManager.hotfixID, hotfixID); - // Change the pref and make sure the property is updated - hotfixID = "hotfix2@tests.mozilla.org"; - Services.prefs.setCharPref("extensions.hotfix.id", hotfixID); - do_check_eq(AddonManager.hotfixID, hotfixID); - // Test an invalid pref value - hotfixID = 99; - Services.prefs.deleteBranch("extensions.hotfix.id"); - Services.prefs.setIntPref("extensions.hotfix.id", hotfixID); - do_check_eq(AddonManager.hotfixID, null); - Services.prefs.clearUserPref("extensions.hotfix.id"); - - // After removing the listener, ensure we get no further events. - gManagerEventsListener.expect([]); - AddonManager.updateEnabled = false; - gManagerEventsListener.checkExpected(); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_provider_markSafe.js b/toolkit/mozapps/webextensions/test/xpcshell/test_provider_markSafe.js deleted file mode 100644 index 228eb7d34..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_provider_markSafe.js +++ /dev/null @@ -1,49 +0,0 @@ -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -var startupOrder = []; - -function mockAddonProvider(name) { - let mockProvider = { - markSafe: false, - apiAccessed: false, - - startup() { - if (this.markSafe) - AddonManagerPrivate.markProviderSafe(this); - - let uri = Services.io.newURI("beard://long", null, null); - AddonManager.isInstallEnabled("made-up-mimetype"); - }, - supportsMimetype(mimetype) { - this.apiAccessed = true; - return false; - }, - - get name() { - return name; - }, - }; - - return mockProvider; -} - -function run_test() { - run_next_test(); -} - -add_task(function* testMarkSafe() { - do_print("Starting with provider normally"); - let provider = mockAddonProvider("Mock1"); - AddonManagerPrivate.registerProvider(provider); - startupManager(); - ok(!provider.apiAccessed, "Provider API should not have been accessed"); - AddonManagerPrivate.unregisterProvider(provider); - yield promiseShutdownManager(); - - do_print("Starting with provider that marks itself safe"); - provider.apiAccessed = false; - provider.markSafe = true; - AddonManagerPrivate.registerProvider(provider); - startupManager(); - ok(provider.apiAccessed, "Provider API should have been accessed"); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_provider_shutdown.js b/toolkit/mozapps/webextensions/test/xpcshell/test_provider_shutdown.js deleted file mode 100644 index d210eb81d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_provider_shutdown.js +++ /dev/null @@ -1,99 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Verify that we report shutdown status for Addon Manager providers -// and AddonRepository correctly. - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -// Make a mock AddonRepository that just lets us hang shutdown. -// Needs two promises - one to let us know that AM has called shutdown, -// and one for us to let AM know that shutdown is done. -function mockAddonProvider(aName) { - let mockProvider = { - donePromise: null, - doneResolve: null, - doneReject: null, - shutdownPromise: null, - shutdownResolve: null, - - get name() { - return aName; - }, - - shutdown() { - this.shutdownResolve(); - return this.donePromise; - }, - }; - mockProvider.donePromise = new Promise((resolve, reject) => { - mockProvider.doneResolve = resolve; - mockProvider.doneReject = reject; - }); - mockProvider.shutdownPromise = new Promise((resolve, reject) => { - mockProvider.shutdownResolve = resolve; - }); - return mockProvider; -} - -function run_test() { - run_next_test(); -} - -// Helper to find a particular shutdown blocker's status in the JSON blob -function findInStatus(aStatus, aName) { - for (let {name, state} of aStatus.state) { - if (name == aName) { - return state; - } - } - return null; -} - -/* - * Make sure we report correctly when an add-on provider or AddonRepository block shutdown - */ -add_task(function* blockRepoShutdown() { - // Reach into the AddonManager scope and inject our mock AddonRepository - let realAddonRepo = AMscope.AddonRepository; - // the mock provider behaves enough like AddonRepository for the purpose of this test - let mockRepo = mockAddonProvider("Mock repo"); - AMscope.AddonRepository = mockRepo; - - let mockProvider = mockAddonProvider("Mock provider"); - - startupManager(); - AddonManagerPrivate.registerProvider(mockProvider); - - // Start shutting the manager down - let managerDown = promiseShutdownManager(); - - // Wait for manager to call provider shutdown. - yield mockProvider.shutdownPromise; - // check AsyncShutdown state - let status = MockAsyncShutdown.status(); - equal(findInStatus(status[0], "Mock provider"), "(none)"); - equal(status[1].name, "AddonRepository: async shutdown"); - equal(status[1].state, "pending"); - // let the provider finish - mockProvider.doneResolve(); - - // Wait for manager to call repo shutdown and start waiting for it - yield mockRepo.shutdownPromise; - // Check the shutdown state - status = MockAsyncShutdown.status(); - equal(status[0].name, "AddonManager: Waiting for providers to shut down."); - equal(status[0].state, "Complete"); - equal(status[1].name, "AddonRepository: async shutdown"); - equal(status[1].state, "in progress"); - - // Now finish our shutdown, and wait for the manager to wrap up - mockRepo.doneResolve(); - yield managerDown; - - // Check the shutdown state again - status = MockAsyncShutdown.status(); - equal(status[0].name, "AddonRepository: async shutdown"); - equal(status[0].state, "done"); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_provider_unsafe_access_shutdown.js b/toolkit/mozapps/webextensions/test/xpcshell/test_provider_unsafe_access_shutdown.js deleted file mode 100644 index f90e38292..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_provider_unsafe_access_shutdown.js +++ /dev/null @@ -1,64 +0,0 @@ -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -var shutdownOrder = []; - -function mockAddonProvider(name) { - let mockProvider = { - hasShutdown: false, - unsafeAccess: false, - - shutdownCallback: null, - - startup() { }, - shutdown() { - this.hasShutdown = true; - shutdownOrder.push(this.name); - if (this.shutdownCallback) - return this.shutdownCallback(); - return undefined; - }, - getAddonByID(id, callback) { - if (this.hasShutdown) { - this.unsafeAccess = true; - } - callback(null); - }, - - get name() { - return name; - }, - }; - - return mockProvider; -} - -function run_test() { - run_next_test(); -} - -add_task(function* unsafeProviderShutdown() { - let firstProvider = mockAddonProvider("Mock1"); - AddonManagerPrivate.registerProvider(firstProvider); - let secondProvider = mockAddonProvider("Mock2"); - AddonManagerPrivate.registerProvider(secondProvider); - - startupManager(); - - let shutdownPromise = null; - yield new Promise(resolve => { - secondProvider.shutdownCallback = function() { - return new Promise(shutdownResolve => { - AddonManager.getAddonByID("does-not-exist", () => { - shutdownResolve(); - resolve(); - }); - }); - }; - - shutdownPromise = promiseShutdownManager(); - }); - yield shutdownPromise; - - equal(shutdownOrder.join(","), ["Mock1", "Mock2"].join(","), "Mock providers should have shutdown in expected order"); - ok(!firstProvider.unsafeAccess, "First registered mock provider should not have been accessed unsafely"); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_provider_unsafe_access_startup.js b/toolkit/mozapps/webextensions/test/xpcshell/test_provider_unsafe_access_startup.js deleted file mode 100644 index 1193ddfe4..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_provider_unsafe_access_startup.js +++ /dev/null @@ -1,55 +0,0 @@ -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -var startupOrder = []; - -function mockAddonProvider(name) { - let mockProvider = { - hasStarted: false, - unsafeAccess: false, - - startupCallback: null, - - startup() { - this.hasStarted = true; - startupOrder.push(this.name); - if (this.startupCallback) - this.startupCallback(); - }, - getAddonByID(id, callback) { - if (!this.hasStarted) { - this.unsafeAccess = true; - } - callback(null); - }, - - get name() { - return name; - }, - }; - - return mockProvider; -} - -function run_test() { - run_next_test(); -} - -add_task(function* unsafeProviderStartup() { - let secondProvider = null; - - yield new Promise(resolve => { - let firstProvider = mockAddonProvider("Mock1"); - firstProvider.startupCallback = function() { - AddonManager.getAddonByID("does-not-exist", resolve); - }; - AddonManagerPrivate.registerProvider(firstProvider); - - secondProvider = mockAddonProvider("Mock2"); - AddonManagerPrivate.registerProvider(secondProvider); - - startupManager(); - }); - - equal(startupOrder.join(","), ["Mock1", "Mock2"].join(","), "Mock providers should have hasStarted in expected order"); - ok(!secondProvider.unsafeAccess, "Second registered mock provider should not have been accessed unsafely"); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_proxies.js b/toolkit/mozapps/webextensions/test/xpcshell/test_proxies.js deleted file mode 100644 index 7b28c78f2..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_proxies.js +++ /dev/null @@ -1,240 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests the semantics of extension proxy files and symlinks - -Components.utils.import("resource://gre/modules/AppConstants.jsm"); -Components.utils.import("resource://gre/modules/osfile.jsm"); - -var ADDONS = [ - { - id: "proxy1@tests.mozilla.org", - dirId: "proxy1@tests.mozilla.com", - type: "proxy" - }, - { - id: "proxy2@tests.mozilla.org", - type: "proxy" - }, - { - id: "symlink1@tests.mozilla.org", - dirId: "symlink1@tests.mozilla.com", - type: "symlink" - }, - { - id: "symlink2@tests.mozilla.org", - type: "symlink" - } -]; - -var METADATA = { - version: "2.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -} - -const ios = AM_Cc["@mozilla.org/network/io-service;1"].getService(AM_Ci.nsIIOService); - -const LocalFile = Components.Constructor("@mozilla.org/file/local;1", - "nsILocalFile", "initWithPath"); -const Process = Components.Constructor("@mozilla.org/process/util;1", - "nsIProcess", "init"); - -const gHaveSymlinks = AppConstants.platform != "win"; - - -function createSymlink(aSource, aDest) { - if (aSource instanceof AM_Ci.nsIFile) - aSource = aSource.path; - if (aDest instanceof AM_Ci.nsIFile) - aDest = aDest.path; - - return OS.File.unixSymLink(aSource, aDest); -} - -function writeFile(aData, aFile) { - if (!aFile.parent.exists()) - aFile.parent.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0o755); - - var fos = AM_Cc["@mozilla.org/network/file-output-stream;1"]. - createInstance(AM_Ci.nsIFileOutputStream); - fos.init(aFile, - FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_TRUNCATE, - FileUtils.PERMS_FILE, 0); - fos.write(aData, aData.length); - fos.close(); -} - -function checkAddonsExist() { - for (let addon of ADDONS) { - let file = addon.directory.clone(); - file.append("install.rdf"); - do_check_true(file.exists(), Components.stack.caller); - } -} - - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2"); - - add_task(run_proxy_tests); - - if (gHaveSymlinks) - add_task(run_symlink_tests); - - run_next_test(); -} - -function* run_proxy_tests() { - if (!gHaveSymlinks) { - ADDONS = ADDONS.filter(a => a.type != "symlink"); - } - - for (let addon of ADDONS) { - addon.directory = gTmpD.clone(); - addon.directory.append(addon.id); - - addon.proxyFile = profileDir.clone(); - addon.proxyFile.append(addon.dirId || addon.id); - - METADATA.id = addon.id; - METADATA.name = addon.id; - writeInstallRDFToDir(METADATA, gTmpD); - - if (addon.type == "proxy") { - writeFile(addon.directory.path, addon.proxyFile) - } - else if (addon.type == "symlink") { - yield createSymlink(addon.directory, addon.proxyFile) - } - } - - startupManager(); - - // Check that all add-ons original sources still exist after invalid - // add-ons have been removed at startup. - checkAddonsExist(); - - return new Promise(resolve => { - AddonManager.getAddonsByIDs(ADDONS.map(addon => addon.id), resolve); - }).then(addons => { - try { - for (let [i, addon] of addons.entries()) { - // Ensure that valid proxied add-ons were installed properly on - // platforms that support the installation method. - print(ADDONS[i].id, - ADDONS[i].dirId, - ADDONS[i].dirId != null, - ADDONS[i].type == "symlink"); - do_check_eq(addon == null, - ADDONS[i].dirId != null); - - if (addon != null) { - let fixURL = url => { - if (AppConstants.platform == "macosx") - return url.replace(RegExp(`^file:///private/`), "file:///"); - return url; - }; - - // Check that proxied add-ons do not have upgrade permissions. - do_check_eq(addon.permissions & AddonManager.PERM_CAN_UPGRADE, 0); - - // Check that getResourceURI points to the right place. - do_check_eq(ios.newFileURI(ADDONS[i].directory).spec, - fixURL(addon.getResourceURI().spec), - `Base resource URL resolves as expected`); - - let file = ADDONS[i].directory.clone(); - file.append("install.rdf"); - - do_check_eq(ios.newFileURI(file).spec, - fixURL(addon.getResourceURI("install.rdf").spec), - `Resource URLs resolve as expected`); - - addon.uninstall(); - } - } - - // Check that original sources still exist after explicit uninstall. - restartManager(); - checkAddonsExist(); - - shutdownManager(); - - // Check that all of the proxy files have been removed and remove - // the original targets. - for (let addon of ADDONS) { - equal(addon.proxyFile.exists(), addon.dirId != null, - `Proxy file ${addon.proxyFile.path} should exist?`); - addon.directory.remove(true); - try { - addon.proxyFile.remove(false); - } catch (e) {} - } - } - catch (e) { - do_throw(e); - } - }); -} - -function* run_symlink_tests() { - // Check that symlinks are not followed out of a directory tree - // when deleting an add-on. - - METADATA.id = "unpacked@test.mozilla.org"; - METADATA.name = METADATA.id; - METADATA.unpack = "true"; - - let tempDirectory = gTmpD.clone(); - tempDirectory.append(METADATA.id); - - let tempFile = tempDirectory.clone(); - tempFile.append("test.txt"); - tempFile.create(AM_Ci.nsIFile.NORMAL_FILE_TYPE, 0o644); - - let addonDirectory = profileDir.clone(); - addonDirectory.append(METADATA.id); - - writeInstallRDFToDir(METADATA, profileDir); - - let symlink = addonDirectory.clone(); - symlink.append(tempDirectory.leafName); - yield createSymlink(tempDirectory, symlink); - - // Make sure that the symlink was created properly. - let file = symlink.clone(); - file.append(tempFile.leafName); - file.normalize(); - do_check_eq(file.path.replace(/^\/private\//, "/"), tempFile.path); - - startupManager(); - - return new Promise(resolve => { - AddonManager.getAddonByID(METADATA.id, resolve); - }).then(addon => { - do_check_neq(addon, null); - - addon.uninstall(); - - restartManager(); - shutdownManager(); - - // Check that the install directory is gone. - do_check_false(addonDirectory.exists()); - - // Check that the temp file is not gone. - do_check_true(tempFile.exists()); - - tempDirectory.remove(true); - }); -} - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_proxy.js b/toolkit/mozapps/webextensions/test/xpcshell/test_proxy.js deleted file mode 100644 index c35870c9b..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_proxy.js +++ /dev/null @@ -1,106 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const ID = "proxy1@tests.mozilla.org"; - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42"); -startupManager(); - -BootstrapMonitor.init(); - -// Ensure that a proxy file to an add-on with a valid manifest works. -add_task(function*() { - let tempdir = gTmpD.clone(); - writeInstallRDFToDir({ - id: ID, - version: "1.0", - bootstrap: true, - unpack: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Bootstrap 1 (proxy)", - }, tempdir, ID, "bootstrap.js"); - - let unpackedAddon = tempdir.clone(); - unpackedAddon.append(ID); - do_get_file("data/test_proxy/bootstrap.js") - .copyTo(unpackedAddon, "bootstrap.js"); - - // create proxy file in profile/extensions dir - let extensionsDir = gProfD.clone(); - extensionsDir.append("extensions"); - let proxyFile = writeProxyFileToDir(extensionsDir, unpackedAddon, ID); - - yield promiseRestartManager(); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - let addon = yield promiseAddonByID(ID); - - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Bootstrap 1 (proxy)"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - do_check_true(proxyFile.exists()); - - addon.uninstall(); - unpackedAddon.remove(true); - - yield promiseRestartManager(); -}); - - -// Ensure that a proxy file to an add-on is not removed even -// if the manifest file is invalid. See bug 1195353. -add_task(function*() { - let tempdir = gTmpD.clone(); - - // use a mismatched ID to make this install.rdf invalid - writeInstallRDFToDir({ - id: "bad-proxy1@tests.mozilla.org", - version: "1.0", - bootstrap: true, - unpack: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Bootstrap 1 (proxy)", - }, tempdir, ID, "bootstrap.js"); - - let unpackedAddon = tempdir.clone(); - unpackedAddon.append(ID); - do_get_file("data/test_proxy/bootstrap.js") - .copyTo(unpackedAddon, "bootstrap.js"); - - // create proxy file in profile/extensions dir - let extensionsDir = gProfD.clone(); - extensionsDir.append("extensions"); - let proxyFile = writeProxyFileToDir(extensionsDir, unpackedAddon, ID); - - yield promiseRestartManager(); - - BootstrapMonitor.checkAddonNotInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID, "1.0"); - - let addon = yield promiseAddonByID(ID); - do_check_eq(addon, null); - - do_check_true(proxyFile.exists()); - - unpackedAddon.remove(true); - proxyFile.remove(true); - - yield promiseRestartManager(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_registry.js b/toolkit/mozapps/webextensions/test/xpcshell/test_registry.js deleted file mode 100644 index eab7af6b6..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_registry.js +++ /dev/null @@ -1,158 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that extensions installed through the registry work as expected -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -// Enable loading extensions from the user and system scopes -Services.prefs.setIntPref("extensions.enabledScopes", - AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER + - AddonManager.SCOPE_SYSTEM); - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "2.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}; - -const addon1Dir = writeInstallRDFForExtension(addon1, gProfD, "addon1"); -const addon2Dir = writeInstallRDFForExtension(addon2, gProfD, "addon2"); - -let registry; - -function run_test() { - // This test only works where there is a registry. - if (!("nsIWindowsRegKey" in AM_Ci)) - return; - - registry = new MockRegistry(); - do_register_cleanup(() => { - registry.shutdown(); - }); - - do_test_pending(); - - run_test_1(); -} - -// Tests whether basic registry install works -function run_test_1() { - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon1@tests.mozilla.org", addon1Dir.path); - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon2@tests.mozilla.org", addon2Dir.path); - - startupManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], function([a1, a2]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_eq(a1.scope, AddonManager.SCOPE_SYSTEM); - - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_eq(a2.scope, AddonManager.SCOPE_USER); - - do_execute_soon(run_test_2); - }); -} - -// Tests whether uninstalling from the registry works -function run_test_2() { - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon1@tests.mozilla.org", null); - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon2@tests.mozilla.org", null); - - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], function([a1, a2]) { - do_check_eq(a1, null); - do_check_eq(a2, null); - - do_execute_soon(run_test_3); - }); -} - -// Checks that the ID in the registry must match that in the install manifest -function run_test_3() { - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon1@tests.mozilla.org", addon2Dir.path); - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon2@tests.mozilla.org", addon1Dir.path); - - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], function([a1, a2]) { - do_check_eq(a1, null); - do_check_eq(a2, null); - - do_execute_soon(run_test_4); - }); -} - -// Tests whether an extension's ID can change without its directory changing -function run_test_4() { - // Restarting with bad items in the registry should not force an EM restart - restartManager(); - - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon1@tests.mozilla.org", null); - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon2@tests.mozilla.org", null); - - restartManager(); - - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon1@tests.mozilla.org", addon1Dir.path); - restartManager(); - - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon1@tests.mozilla.org", null); - registry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER, - "SOFTWARE\\Mozilla\\XPCShell\\Extensions", - "addon2@tests.mozilla.org", addon1Dir.path); - writeInstallRDFForExtension(addon2, gProfD, "addon1"); - - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], function([a1, a2]) { - do_check_eq(a1, null); - do_check_neq(a2, null); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_reload.js b/toolkit/mozapps/webextensions/test/xpcshell/test_reload.js deleted file mode 100644 index 5873d1980..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_reload.js +++ /dev/null @@ -1,235 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42"); - -const sampleAddon = { - id: "webextension1@tests.mozilla.org", - name: "webextension_1", -} - -const manifestSample = { - id: "bootstrap1@tests.mozilla.org", - version: "1.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], -}; - -const { Management } = Components.utils.import("resource://gre/modules/Extension.jsm", {}); - -function promiseAddonStartup() { - return new Promise(resolve => { - let listener = (extension) => { - Management.off("startup", listener); - resolve(extension); - }; - - Management.on("startup", listener); - }); -} - -function* installAddon(fixtureName, addonID) { - yield promiseInstallAllFiles([do_get_addon(fixtureName)]); - return promiseAddonByID(addonID); -} - -function* tearDownAddon(addon) { - addon.uninstall(); - yield promiseShutdownManager(); -} - -add_task(function* test_reloading_a_temp_addon() { - yield promiseRestartManager(); - yield AddonManager.installTemporaryAddon(do_get_addon(sampleAddon.name)); - const addon = yield promiseAddonByID(sampleAddon.id) - - var receivedOnUninstalled = false; - var receivedOnUninstalling = false; - var receivedOnInstalled = false; - var receivedOnInstalling = false; - - const onReload = new Promise(resolve => { - const listener = { - onUninstalling: (addonObj) => { - if (addonObj.id === sampleAddon.id) { - receivedOnUninstalling = true; - } - }, - onUninstalled: (addonObj) => { - if (addonObj.id === sampleAddon.id) { - receivedOnUninstalled = true; - } - }, - onInstalling: (addonObj) => { - receivedOnInstalling = true; - equal(addonObj.id, sampleAddon.id); - }, - onInstalled: (addonObj) => { - receivedOnInstalled = true; - equal(addonObj.id, sampleAddon.id); - // This should be the last event called. - AddonManager.removeAddonListener(listener); - resolve(); - }, - } - AddonManager.addAddonListener(listener); - }); - - yield addon.reload(); - yield onReload; - - // Make sure reload() doesn't trigger uninstall events. - equal(receivedOnUninstalled, false, "reload should not trigger onUninstalled"); - equal(receivedOnUninstalling, false, "reload should not trigger onUninstalling"); - - // Make sure reload() triggers install events, like an upgrade. - equal(receivedOnInstalling, true, "reload should trigger onInstalling"); - equal(receivedOnInstalled, true, "reload should trigger onInstalled"); - - yield tearDownAddon(addon); -}); - -add_task(function* test_can_reload_permanent_addon() { - yield promiseRestartManager(); - const addon = yield installAddon(sampleAddon.name, sampleAddon.id); - - let disabledCalled = false; - let enabledCalled = false; - AddonManager.addAddonListener({ - onDisabled: (aAddon) => { - do_check_false(enabledCalled); - disabledCalled = true - }, - onEnabled: (aAddon) => { - do_check_true(disabledCalled); - enabledCalled = true - } - }) - - yield addon.reload(); - - do_check_true(disabledCalled); - do_check_true(enabledCalled); - - notEqual(addon, null); - equal(addon.appDisabled, false); - equal(addon.userDisabled, false); - - yield tearDownAddon(addon); -}); - -add_task(function* test_reload_to_invalid_version_fails() { - yield promiseRestartManager(); - let tempdir = gTmpD.clone(); - - // The initial version of the add-on will be compatible, and will therefore load - const addonId = "invalid_version_cannot_be_reloaded@tests.mozilla.org"; - let manifest = { - name: "invalid_version_cannot_be_reloaded", - description: "test invalid_version_cannot_be_reloaded", - manifest_version: 2, - version: "1.0", - applications: { - gecko: { - id: addonId, - } - }, - }; - - let addonDir = yield promiseWriteWebManifestForExtension(manifest, tempdir, "invalid_version"); - yield AddonManager.installTemporaryAddon(addonDir); - yield promiseAddonStartup(); - - let addon = yield promiseAddonByID(addonId); - notEqual(addon, null); - equal(addon.id, addonId); - equal(addon.version, "1.0"); - equal(addon.appDisabled, false); - equal(addon.userDisabled, false); - addonDir.remove(true); - - // update the manifest to make the add-on version incompatible, so the reload will reject - manifest.applications.gecko.strict_min_version = "1"; - manifest.applications.gecko.strict_max_version = "1"; - manifest.version = "2.0"; - - addonDir = yield promiseWriteWebManifestForExtension(manifest, tempdir, "invalid_version", false); - let expectedMsg = new RegExp("Add-on invalid_version_cannot_be_reloaded@tests.mozilla.org is not compatible with application version. " + - "add-on minVersion: 1. add-on maxVersion: 1."); - - yield Assert.rejects(addon.reload(), - expectedMsg, - "Reload rejects when application version does not fall between minVersion and maxVersion"); - - let reloadedAddon = yield promiseAddonByID(addonId); - notEqual(reloadedAddon, null); - equal(reloadedAddon.id, addonId); - equal(reloadedAddon.version, "1.0"); - equal(reloadedAddon.appDisabled, false); - equal(reloadedAddon.userDisabled, false); - - yield tearDownAddon(reloadedAddon); - addonDir.remove(true); -}); - -add_task(function* test_manifest_changes_are_refreshed() { - yield promiseRestartManager(); - let tempdir = gTmpD.clone(); - - const unpackedAddon = writeInstallRDFToDir( - Object.assign({}, manifestSample, { - name: "Test Bootstrap 1", - }), tempdir, manifestSample.id, "bootstrap.js"); - - yield AddonManager.installTemporaryAddon(unpackedAddon); - const addon = yield promiseAddonByID(manifestSample.id); - notEqual(addon, null); - equal(addon.name, "Test Bootstrap 1"); - - writeInstallRDFToDir(Object.assign({}, manifestSample, { - name: "Test Bootstrap 1 (reloaded)", - }), tempdir, manifestSample.id); - - yield addon.reload(); - - const reloadedAddon = yield promiseAddonByID(manifestSample.id); - notEqual(reloadedAddon, null); - equal(reloadedAddon.name, "Test Bootstrap 1 (reloaded)"); - - yield tearDownAddon(reloadedAddon); - unpackedAddon.remove(true); -}); - -add_task(function* test_reload_fails_on_installation_errors() { - yield promiseRestartManager(); - let tempdir = gTmpD.clone(); - - const unpackedAddon = writeInstallRDFToDir( - Object.assign({}, manifestSample, { - name: "Test Bootstrap 1", - }), tempdir, manifestSample.id, "bootstrap.js"); - - yield AddonManager.installTemporaryAddon(unpackedAddon); - const addon = yield promiseAddonByID(manifestSample.id); - notEqual(addon, null); - - // Trigger an installation error with an empty manifest. - writeInstallRDFToDir({}, tempdir, manifestSample.id); - - yield Assert.rejects(addon.reload(), /No ID in install manifest/); - - // The old add-on should be active. I.E. the broken reload will not - // disturb it. - const oldAddon = yield promiseAddonByID(manifestSample.id); - notEqual(oldAddon, null); - equal(oldAddon.isActive, true); - equal(oldAddon.name, "Test Bootstrap 1"); - - yield tearDownAddon(addon); - unpackedAddon.remove(true); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_safemode.js b/toolkit/mozapps/webextensions/test/xpcshell/test_safemode.js deleted file mode 100644 index 05647f807..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_safemode.js +++ /dev/null @@ -1,115 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -Components.utils.import("resource://gre/modules/NetUtil.jsm"); - -// Tests that extensions behave correctly in safe mode - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - optionsURL: "chrome://foo/content/options.xul", - aboutURL: "chrome://foo/content/about.xul", - iconURL: "chrome://foo/content/icon.png", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -var gIconURL = null; - -// Sets up the profile by installing an add-on. -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - gAppInfo.inSafeMode = true; - - startupManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { - do_check_eq(a1, null); - do_check_not_in_crash_annotation(addon1.id, addon1.version); - - writeInstallRDFForExtension(addon1, profileDir, addon1.id, "icon.png"); - gIconURL = do_get_addon_root_uri(profileDir.clone(), addon1.id) + "icon.png"; - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(newa1) { - do_check_neq(newa1, null); - do_check_false(newa1.isActive); - do_check_false(newa1.userDisabled); - do_check_eq(newa1.aboutURL, null); - do_check_eq(newa1.optionsURL, null); - do_check_eq(newa1.iconURL, gIconURL); - do_check_true(isExtensionInAddonsList(profileDir, newa1.id)); - do_check_true(hasFlag(newa1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(newa1.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_eq(newa1.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_NONE); - do_check_not_in_crash_annotation(addon1.id, addon1.version); - - run_test_1(); - }); - })); -} - -// Disabling an add-on should work -function run_test_1() { - prepare_test({ - "addon1@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ] - }); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_false(hasFlag(a1.operationsRequiringRestart, - AddonManager.OP_NEEDS_RESTART_DISABLE)); - a1.userDisabled = true; - do_check_false(a1.isActive); - do_check_eq(a1.aboutURL, null); - do_check_eq(a1.optionsURL, null); - do_check_eq(a1.iconURL, gIconURL); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_eq(a1.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_NONE); - do_check_not_in_crash_annotation(addon1.id, addon1.version); - - ensure_test_completed(); - - run_test_2(); - }); -} - -// Enabling an add-on should happen without restart but not become active. -function run_test_2() { - prepare_test({ - "addon1@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - a1.userDisabled = false; - do_check_false(a1.isActive); - do_check_eq(a1.aboutURL, null); - do_check_eq(a1.optionsURL, null); - do_check_eq(a1.iconURL, gIconURL); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_eq(a1.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_NONE); - do_check_not_in_crash_annotation(addon1.id, addon1.version); - - ensure_test_completed(); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_schema_change.js b/toolkit/mozapps/webextensions/test/xpcshell/test_schema_change.js deleted file mode 100644 index 3d386f663..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_schema_change.js +++ /dev/null @@ -1,317 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -BootstrapMonitor.init(); - -const PREF_DB_SCHEMA = "extensions.databaseSchema"; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "49"); -startupManager(); - -/** - * Schema change with no application update reloads metadata. - */ -add_task(function* schema_change() { - const ID = "schema-change@tests.mozilla.org"; - - let xpiFile = createTempXPIFile({ - id: ID, - name: "Test Add-on", - version: "1.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1.9.2" - }] - }); - - yield promiseInstallAllFiles([xpiFile]); - - let addon = yield promiseAddonByID(ID); - - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.version, "1.0", "Got the expected version"); - - yield shutdownManager(); - - xpiFile = createTempXPIFile({ - id: ID, - name: "Test Add-on 2", - version: "2.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1.9.2" - }] - }); - - Services.prefs.setIntPref(PREF_DB_SCHEMA, 0); - - let file = profileDir.clone(); - file.append(`${ID}.xpi`); - - // Make sure the timestamp is unchanged, so it is not re-scanned for that reason. - let timestamp = file.lastModifiedTime; - xpiFile.moveTo(profileDir, `${ID}.xpi`); - - file.lastModifiedTime = timestamp; - - yield startupManager(); - - addon = yield promiseAddonByID(ID); - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.version, "2.0", "Got the expected version"); - - let waitUninstall = promiseAddonEvent("onUninstalled"); - addon.uninstall(); - yield waitUninstall; -}); - -/** - * Application update with no schema change does not reload metadata. - */ -add_task(function* schema_change() { - const ID = "schema-change@tests.mozilla.org"; - - let xpiFile = createTempXPIFile({ - id: ID, - name: "Test Add-on", - version: "1.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }); - - yield promiseInstallAllFiles([xpiFile]); - - let addon = yield promiseAddonByID(ID); - - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.version, "1.0", "Got the expected version"); - - yield shutdownManager(); - - xpiFile = createTempXPIFile({ - id: ID, - name: "Test Add-on 2", - version: "2.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }); - - gAppInfo.version = "2"; - let file = profileDir.clone(); - file.append(`${ID}.xpi`); - - // Make sure the timestamp is unchanged, so it is not re-scanned for that reason. - let timestamp = file.lastModifiedTime; - xpiFile.moveTo(profileDir, `${ID}.xpi`); - - file.lastModifiedTime = timestamp; - - yield startupManager(); - - addon = yield promiseAddonByID(ID); - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.version, "1.0", "Got the expected version"); - - let waitUninstall = promiseAddonEvent("onUninstalled"); - addon.uninstall(); - yield waitUninstall; -}); - -/** - * App update and a schema change causes a reload of the manifest. - */ -add_task(function* schema_change_app_update() { - const ID = "schema-change@tests.mozilla.org"; - - let xpiFile = createTempXPIFile({ - id: ID, - name: "Test Add-on", - version: "1.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }); - - yield promiseInstallAllFiles([xpiFile]); - - let addon = yield promiseAddonByID(ID); - - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.version, "1.0", "Got the expected version"); - - yield shutdownManager(); - - xpiFile = createTempXPIFile({ - id: ID, - name: "Test Add-on 2", - version: "2.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] - }); - - gAppInfo.version = "3"; - Services.prefs.setIntPref(PREF_DB_SCHEMA, 0); - - let file = profileDir.clone(); - file.append(`${ID}.xpi`); - - // Make sure the timestamp is unchanged, so it is not re-scanned for that reason. - let timestamp = file.lastModifiedTime; - xpiFile.moveTo(profileDir, `${ID}.xpi`); - - file.lastModifiedTime = timestamp; - - yield startupManager(); - - addon = yield promiseAddonByID(ID); - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.appDisabled, false); - equal(addon.version, "2.0", "Got the expected version"); - - let waitUninstall = promiseAddonEvent("onUninstalled"); - addon.uninstall(); - yield waitUninstall; -}); - -/** - * No schema change, no manifest reload. - */ -add_task(function* schema_change() { - const ID = "schema-change@tests.mozilla.org"; - - let xpiFile = createTempXPIFile({ - id: ID, - name: "Test Add-on", - version: "1.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1.9.2" - }] - }); - - yield promiseInstallAllFiles([xpiFile]); - - let addon = yield promiseAddonByID(ID); - - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.version, "1.0", "Got the expected version"); - - yield shutdownManager(); - - xpiFile = createTempXPIFile({ - id: ID, - name: "Test Add-on 2", - version: "2.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1.9.2" - }] - }); - - let file = profileDir.clone(); - file.append(`${ID}.xpi`); - - // Make sure the timestamp is unchanged, so it is not re-scanned for that reason. - let timestamp = file.lastModifiedTime; - xpiFile.moveTo(profileDir, `${ID}.xpi`); - - file.lastModifiedTime = timestamp; - - yield startupManager(); - - addon = yield promiseAddonByID(ID); - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.version, "1.0", "Got the expected version"); - - let waitUninstall = promiseAddonEvent("onUninstalled"); - addon.uninstall(); - yield waitUninstall; -}); - -/** - * Modified timestamp on the XPI causes a reload of the manifest. - */ -add_task(function* schema_change() { - const ID = "schema-change@tests.mozilla.org"; - - let xpiFile = createTempXPIFile({ - id: ID, - name: "Test Add-on", - version: "1.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1.9.2" - }] - }); - - yield promiseInstallAllFiles([xpiFile]); - - let addon = yield promiseAddonByID(ID); - - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.version, "1.0", "Got the expected version"); - - yield shutdownManager(); - - xpiFile = createTempXPIFile({ - id: ID, - name: "Test Add-on 2", - version: "2.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1.9.2" - }] - }); - - xpiFile.moveTo(profileDir, `${ID}.xpi`); - - let file = profileDir.clone(); - file.append(`${ID}.xpi`); - - // Set timestamp in the future so manifest is re-scanned. - let timestamp = new Date(Date.now() + 60000); - xpiFile.moveTo(profileDir, `${ID}.xpi`); - - file.lastModifiedTime = timestamp; - - yield startupManager(); - - addon = yield promiseAddonByID(ID); - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.version, "2.0", "Got the expected version"); - - let waitUninstall = promiseAddonEvent("onUninstalled"); - addon.uninstall(); - yield waitUninstall; -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_seen.js b/toolkit/mozapps/webextensions/test/xpcshell/test_seen.js deleted file mode 100644 index e499e7339..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_seen.js +++ /dev/null @@ -1,211 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const ID = "bootstrap1@tests.mozilla.org"; - -let profileDir = gProfD.clone(); -profileDir.append("extensions"); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); -startupManager(); - -// By default disable add-ons from the profile -Services.prefs.setIntPref("extensions.autoDisableScopes", AddonManager.SCOPE_PROFILE); - -// Installing an add-on through the API should mark it as seen -add_task(function*() { - let install = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_1"), resolve)); - yield promiseCompleteAllInstalls([install]); - do_check_eq(install.state, AddonManager.STATE_INSTALLED); - do_check_false(hasFlag(install.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - - let addon = install.addon; - do_check_eq(addon.version, "1.0"); - do_check_false(addon.foreignInstall); - do_check_true(addon.seen); - - yield promiseRestartManager(); - - addon = yield promiseAddonByID(ID); - do_check_false(addon.foreignInstall); - do_check_true(addon.seen); - - // Installing an update should retain that - install = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_2"), resolve)); - yield promiseCompleteAllInstalls([install]); - do_check_eq(install.state, AddonManager.STATE_INSTALLED); - do_check_false(hasFlag(install.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - - addon = install.addon; - do_check_eq(addon.version, "2.0"); - do_check_false(addon.foreignInstall); - do_check_true(addon.seen); - - yield promiseRestartManager(); - - addon = yield promiseAddonByID(ID); - do_check_false(addon.foreignInstall); - do_check_true(addon.seen); - - addon.uninstall(); - yield promiseShutdownManager(); -}); - -// Sideloading an add-on should mark it as unseen -add_task(function*() { - let path = manuallyInstall(do_get_addon("test_bootstrap1_1"), profileDir, ID); - // Make sure the startup code will detect sideloaded updates - setExtensionModifiedTime(path, Date.now() - 10000); - - startupManager(); - - let addon = yield promiseAddonByID(ID); - do_check_eq(addon.version, "1.0"); - do_check_true(addon.foreignInstall); - do_check_false(addon.seen); - - yield promiseRestartManager(); - - addon = yield promiseAddonByID(ID); - do_check_true(addon.foreignInstall); - do_check_false(addon.seen); - - yield promiseShutdownManager(); - - // Sideloading an update shouldn't change the state - manuallyUninstall(profileDir, ID); - manuallyInstall(do_get_addon("test_bootstrap1_2"), profileDir, ID); - setExtensionModifiedTime(path, Date.now()); - - startupManager(); - - addon = yield promiseAddonByID(ID); - do_check_eq(addon.version, "2.0"); - do_check_true(addon.foreignInstall); - do_check_false(addon.seen); - - addon.uninstall(); - yield promiseShutdownManager(); -}); - -// Sideloading an add-on should mark it as unseen -add_task(function*() { - let path = manuallyInstall(do_get_addon("test_bootstrap1_1"), profileDir, ID); - // Make sure the startup code will detect sideloaded updates - setExtensionModifiedTime(path, Date.now() - 10000); - - startupManager(); - - let addon = yield promiseAddonByID(ID); - do_check_eq(addon.version, "1.0"); - do_check_true(addon.foreignInstall); - do_check_false(addon.seen); - - yield promiseRestartManager(); - - addon = yield promiseAddonByID(ID); - do_check_true(addon.foreignInstall); - do_check_false(addon.seen); - - // Updating through the API shouldn't change the state - let install = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_2"), resolve)); - yield promiseCompleteAllInstalls([install]); - do_check_eq(install.state, AddonManager.STATE_INSTALLED); - do_check_false(hasFlag(install.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - - addon = install.addon; - do_check_true(addon.foreignInstall); - do_check_false(addon.seen); - - yield promiseRestartManager(); - - addon = yield promiseAddonByID(ID); - do_check_eq(addon.version, "2.0"); - do_check_true(addon.foreignInstall); - do_check_false(addon.seen); - - addon.uninstall(); - yield promiseShutdownManager(); -}); - -// Sideloading an add-on should mark it as unseen -add_task(function*() { - let path = manuallyInstall(do_get_addon("test_bootstrap1_1"), profileDir, ID); - // Make sure the startup code will detect sideloaded updates - setExtensionModifiedTime(path, Date.now() - 10000); - - startupManager(); - - let addon = yield promiseAddonByID(ID); - do_check_eq(addon.version, "1.0"); - do_check_true(addon.foreignInstall); - do_check_false(addon.seen); - addon.markAsSeen(); - do_check_true(addon.seen); - - yield promiseRestartManager(); - - addon = yield promiseAddonByID(ID); - do_check_true(addon.foreignInstall); - do_check_true(addon.seen); - - yield promiseShutdownManager(); - - // Sideloading an update shouldn't change the state - manuallyUninstall(profileDir, ID); - manuallyInstall(do_get_addon("test_bootstrap1_2"), profileDir, ID); - setExtensionModifiedTime(path, Date.now()); - - startupManager(); - - addon = yield promiseAddonByID(ID); - do_check_eq(addon.version, "2.0"); - do_check_true(addon.foreignInstall); - do_check_true(addon.seen); - - addon.uninstall(); - yield promiseShutdownManager(); -}); - -// Sideloading an add-on should mark it as unseen -add_task(function*() { - let path = manuallyInstall(do_get_addon("test_bootstrap1_1"), profileDir, ID); - // Make sure the startup code will detect sideloaded updates - setExtensionModifiedTime(path, Date.now() - 10000); - - startupManager(); - - let addon = yield promiseAddonByID(ID); - do_check_eq(addon.version, "1.0"); - do_check_true(addon.foreignInstall); - do_check_false(addon.seen); - addon.markAsSeen(); - do_check_true(addon.seen); - - yield promiseRestartManager(); - - addon = yield promiseAddonByID(ID); - do_check_true(addon.foreignInstall); - do_check_true(addon.seen); - - // Updating through the API shouldn't change the state - let install = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_2"), resolve)); - yield promiseCompleteAllInstalls([install]); - do_check_eq(install.state, AddonManager.STATE_INSTALLED); - do_check_false(hasFlag(install.addon.pendingOperations, AddonManager.PENDING_INSTALL)); - - addon = install.addon; - do_check_true(addon.foreignInstall); - do_check_true(addon.seen); - - yield promiseRestartManager(); - - addon = yield promiseAddonByID(ID); - do_check_eq(addon.version, "2.0"); - do_check_true(addon.foreignInstall); - do_check_true(addon.seen); - - addon.uninstall(); - yield promiseShutdownManager(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_seen_newprofile.js b/toolkit/mozapps/webextensions/test/xpcshell/test_seen_newprofile.js deleted file mode 100644 index 43ee18594..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_seen_newprofile.js +++ /dev/null @@ -1,41 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const ID = "bootstrap1@tests.mozilla.org"; - -Services.prefs.setIntPref("extensions.enabledScopes", - AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_SYSTEM); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -BootstrapMonitor.init(); - -const globalDir = gProfD.clone(); -globalDir.append("extensions2"); -globalDir.append(gAppInfo.ID); -registerDirectory("XRESysSExtPD", globalDir.parent); -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// By default disable add-ons from the system -Services.prefs.setIntPref("extensions.autoDisableScopes", AddonManager.SCOPE_SYSTEM); - -// When new add-ons already exist in a system location when starting with a new -// profile they should be marked as already seen. -add_task(function*() { - manuallyInstall(do_get_addon("test_bootstrap1_1"), globalDir, ID); - - startupManager(); - - let addon = yield promiseAddonByID(ID); - do_check_true(addon.foreignInstall); - do_check_true(addon.seen); - do_check_true(addon.userDisabled); - do_check_false(addon.isActive); - - BootstrapMonitor.checkAddonInstalled(ID); - BootstrapMonitor.checkAddonNotStarted(ID); - - yield promiseShutdownManager(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_shutdown.js b/toolkit/mozapps/webextensions/test/xpcshell/test_shutdown.js deleted file mode 100644 index 725887bc1..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_shutdown.js +++ /dev/null @@ -1,85 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Verify that API functions fail if the Add-ons Manager isn't initialised. - -const IGNORE = ["getPreferredIconURL", "escapeAddonURI", - "shouldAutoUpdate", "getStartupChanges", - "addTypeListener", "removeTypeListener", - "addAddonListener", "removeAddonListener", - "addInstallListener", "removeInstallListener", - "addManagerListener", "removeManagerListener", - "mapURIToAddonID", "shutdown", "init", - "stateToString", "errorToString", "getUpgradeListener", - "addUpgradeListener", "removeUpgradeListener"]; - -const IGNORE_PRIVATE = ["AddonAuthor", "AddonCompatibilityOverride", - "AddonScreenshot", "AddonType", "startup", "shutdown", - "registerProvider", "unregisterProvider", - "addStartupChange", "removeStartupChange", - "recordTimestamp", "recordSimpleMeasure", - "recordException", "getSimpleMeasures", "simpleTimer", - "setTelemetryDetails", "getTelemetryDetails", - "callNoUpdateListeners", "backgroundUpdateTimerHandler", - "hasUpgradeListener", "getUpgradeListener"]; - -function test_functions() { - for (let prop in AddonManager) { - if (IGNORE.indexOf(prop) != -1) - continue; - if (typeof AddonManager[prop] != "function") - continue; - - let args = []; - - // Getter functions need a callback and in some cases not having one will - // throw before checking if the add-ons manager is initialized so pass in - // an empty one. - if (prop.startsWith("get")) { - // For now all getter functions with more than one argument take the - // callback in the second argument. - if (AddonManager[prop].length > 1) { - args.push(undefined, () => {}); - } - else { - args.push(() => {}); - } - } - - try { - do_print("AddonManager." + prop); - AddonManager[prop](...args); - do_throw(prop + " did not throw an exception"); - } - catch (e) { - if (e.result != Components.results.NS_ERROR_NOT_INITIALIZED) - do_throw(prop + " threw an unexpected exception: " + e); - } - } - - for (let prop in AddonManagerPrivate) { - if (typeof AddonManagerPrivate[prop] != "function") - continue; - if (IGNORE_PRIVATE.indexOf(prop) != -1) - continue; - - try { - do_print("AddonManagerPrivate." + prop); - AddonManagerPrivate[prop](); - do_throw(prop + " did not throw an exception"); - } - catch (e) { - if (e.result != Components.results.NS_ERROR_NOT_INITIALIZED) - do_throw(prop + " threw an unexpected exception: " + e); - } - } -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - test_functions(); - startupManager(); - shutdownManager(); - test_functions(); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_inject.js b/toolkit/mozapps/webextensions/test/xpcshell/test_signed_inject.js deleted file mode 100644 index 3b96f40ba..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_inject.js +++ /dev/null @@ -1,382 +0,0 @@ -// Enable signature checks for these tests -gUseRealCertChecks = true; -// Disable update security -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); - -const DATA = "data/signing_checks/"; -const ADDONS = { - bootstrap: { - unsigned: "unsigned_bootstrap_2.xpi", - badid: "signed_bootstrap_badid_2.xpi", - signed: "signed_bootstrap_2.xpi", - preliminary: "preliminary_bootstrap_2.xpi", - }, - nonbootstrap: { - unsigned: "unsigned_nonbootstrap_2.xpi", - badid: "signed_nonbootstrap_badid_2.xpi", - signed: "signed_nonbootstrap_2.xpi", - } -}; -const ID = "test@tests.mozilla.org"; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// Deletes a file from the test add-on in the profile -function breakAddon(file) { - if (TEST_UNPACKED) { - file.append("test.txt"); - file.remove(true); - } - else { - var zipW = AM_Cc["@mozilla.org/zipwriter;1"]. - createInstance(AM_Ci.nsIZipWriter); - zipW.open(file, FileUtils.MODE_RDWR | FileUtils.MODE_APPEND); - zipW.removeEntry("test.txt", false); - zipW.close(); - } -} - -function resetPrefs() { - Services.prefs.setIntPref("bootstraptest.active_version", -1); - Services.prefs.setIntPref("bootstraptest.installed_version", -1); - Services.prefs.setIntPref("bootstraptest.startup_reason", -1); - Services.prefs.setIntPref("bootstraptest.shutdown_reason", -1); - Services.prefs.setIntPref("bootstraptest.install_reason", -1); - Services.prefs.setIntPref("bootstraptest.uninstall_reason", -1); - Services.prefs.setIntPref("bootstraptest.startup_oldversion", -1); - Services.prefs.setIntPref("bootstraptest.shutdown_newversion", -1); - Services.prefs.setIntPref("bootstraptest.install_oldversion", -1); - Services.prefs.setIntPref("bootstraptest.uninstall_newversion", -1); -} - -function clearCache(file) { - if (TEST_UNPACKED) - return; - - Services.obs.notifyObservers(file, "flush-cache-entry", null); -} - -function getActiveVersion() { - return Services.prefs.getIntPref("bootstraptest.active_version"); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "4", "4"); - - // Start and stop the manager to initialise everything in the profile before - // actual testing - startupManager(); - shutdownManager(); - resetPrefs(); - - run_next_test(); -} - -// Injecting into profile (bootstrap) -add_task(function*() { - let file = manuallyInstall(do_get_file(DATA + ADDONS.bootstrap.unsigned), profileDir, ID); - - startupManager(); - - // Currently we leave the sideloaded add-on there but just don't run it - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_true(addon.appDisabled); - do_check_false(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_MISSING); - do_check_eq(getActiveVersion(), -1); - - addon.uninstall(); - yield promiseShutdownManager(); - resetPrefs(); - - do_check_false(file.exists()); - clearCache(file); -}); - -add_task(function*() { - let file = manuallyInstall(do_get_file(DATA + ADDONS.bootstrap.signed), profileDir, ID); - breakAddon(file); - - startupManager(); - - // Currently we leave the sideloaded add-on there but just don't run it - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_true(addon.appDisabled); - do_check_false(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_BROKEN); - do_check_eq(getActiveVersion(), -1); - - addon.uninstall(); - yield promiseShutdownManager(); - resetPrefs(); - - do_check_false(file.exists()); - clearCache(file); -}); - -add_task(function*() { - let file = manuallyInstall(do_get_file(DATA + ADDONS.bootstrap.badid), profileDir, ID); - - startupManager(); - - // Currently we leave the sideloaded add-on there but just don't run it - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_true(addon.appDisabled); - do_check_false(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_BROKEN); - do_check_eq(getActiveVersion(), -1); - - addon.uninstall(); - yield promiseShutdownManager(); - resetPrefs(); - - do_check_false(file.exists()); - clearCache(file); -}); - -// Installs a signed add-on then modifies it in place breaking its signing -add_task(function*() { - let file = manuallyInstall(do_get_file(DATA + ADDONS.bootstrap.signed), profileDir, ID); - - // Make it appear to come from the past so when we modify it later it is - // detected during startup. Obviously malware can bypass this method of - // detection but the periodic scan will catch that - yield promiseSetExtensionModifiedTime(file.path, Date.now() - 600000); - - startupManager(); - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_SIGNED); - do_check_eq(getActiveVersion(), 2); - - yield promiseShutdownManager(); - do_check_eq(getActiveVersion(), 0); - - clearCache(file); - breakAddon(file); - resetPrefs(); - - startupManager(); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_true(addon.appDisabled); - do_check_false(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_BROKEN); - do_check_eq(getActiveVersion(), -1); - - let ids = AddonManager.getStartupChanges(AddonManager.STARTUP_CHANGE_DISABLED); - do_check_eq(ids.length, 1); - do_check_eq(ids[0], ID); - - addon.uninstall(); - yield promiseShutdownManager(); - resetPrefs(); - - do_check_false(file.exists()); - clearCache(file); -}); - -// Injecting into profile (non-bootstrap) -add_task(function*() { - let file = manuallyInstall(do_get_file(DATA + ADDONS.nonbootstrap.unsigned), profileDir, ID); - - startupManager(); - - // Currently we leave the sideloaded add-on there but just don't run it - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_true(addon.appDisabled); - do_check_false(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_MISSING); - do_check_false(isExtensionInAddonsList(profileDir, ID)); - - addon.uninstall(); - yield promiseRestartManager(); - yield promiseShutdownManager(); - - do_check_false(file.exists()); - clearCache(file); -}); - -add_task(function*() { - let file = manuallyInstall(do_get_file(DATA + ADDONS.nonbootstrap.signed), profileDir, ID); - breakAddon(file); - - startupManager(); - - // Currently we leave the sideloaded add-on there but just don't run it - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_true(addon.appDisabled); - do_check_false(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_BROKEN); - do_check_false(isExtensionInAddonsList(profileDir, ID)); - - addon.uninstall(); - yield promiseRestartManager(); - yield promiseShutdownManager(); - - do_check_false(file.exists()); - clearCache(file); -}); - -add_task(function*() { - let file = manuallyInstall(do_get_file(DATA + ADDONS.nonbootstrap.badid), profileDir, ID); - - startupManager(); - - // Currently we leave the sideloaded add-on there but just don't run it - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_true(addon.appDisabled); - do_check_false(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_BROKEN); - do_check_false(isExtensionInAddonsList(profileDir, ID)); - - addon.uninstall(); - yield promiseRestartManager(); - yield promiseShutdownManager(); - - do_check_false(file.exists()); - clearCache(file); -}); - -// Installs a signed add-on then modifies it in place breaking its signing -add_task(function*() { - let file = manuallyInstall(do_get_file(DATA + ADDONS.nonbootstrap.signed), profileDir, ID); - - // Make it appear to come from the past so when we modify it later it is - // detected during startup. Obviously malware can bypass this method of - // detection but the periodic scan will catch that - yield promiseSetExtensionModifiedTime(file.path, Date.now() - 60000); - - startupManager(); - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_SIGNED); - do_check_true(isExtensionInAddonsList(profileDir, ID)); - - yield promiseShutdownManager(); - - clearCache(file); - breakAddon(file); - - startupManager(); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_true(addon.appDisabled); - do_check_false(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_BROKEN); - do_check_false(isExtensionInAddonsList(profileDir, ID)); - - let ids = AddonManager.getStartupChanges(AddonManager.STARTUP_CHANGE_DISABLED); - do_check_eq(ids.length, 1); - do_check_eq(ids[0], ID); - - addon.uninstall(); - yield promiseRestartManager(); - yield promiseShutdownManager(); - - do_check_false(file.exists()); - clearCache(file); -}); - -// Stage install then modify before startup (non-bootstrap) -add_task(function*() { - startupManager(); - yield promiseInstallAllFiles([do_get_file(DATA + ADDONS.nonbootstrap.signed)]); - yield promiseShutdownManager(); - - let staged = profileDir.clone(); - staged.append("staged"); - staged.append(do_get_expected_addon_name(ID)); - do_check_true(staged.exists()); - - breakAddon(staged); - startupManager(); - - // Should have refused to install the broken staged version - let addon = yield promiseAddonByID(ID); - do_check_eq(addon, null); - - clearCache(staged); - - yield promiseShutdownManager(); -}); - -// Manufacture staged install (bootstrap) -add_task(function*() { - let stage = profileDir.clone(); - stage.append("staged"); - - let file = manuallyInstall(do_get_file(DATA + ADDONS.bootstrap.signed), stage, ID); - breakAddon(file); - - startupManager(); - - // Should have refused to install the broken staged version - let addon = yield promiseAddonByID(ID); - do_check_eq(addon, null); - do_check_eq(getActiveVersion(), -1); - - do_check_false(file.exists()); - clearCache(file); - - yield promiseShutdownManager(); - resetPrefs(); -}); - -// Preliminarily-signed sideloaded add-ons should work -add_task(function*() { - let file = manuallyInstall(do_get_file(DATA + ADDONS.bootstrap.preliminary), profileDir, ID); - - startupManager(); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_PRELIMINARY); - do_check_eq(getActiveVersion(), 2); - - addon.uninstall(); - yield promiseShutdownManager(); - resetPrefs(); - - do_check_false(file.exists()); - clearCache(file); -}); - -// Preliminarily-signed sideloaded add-ons should work via staged install -add_task(function*() { - let stage = profileDir.clone(); - stage.append("staged"); - - let file = manuallyInstall(do_get_file(DATA + ADDONS.bootstrap.preliminary), stage, ID); - - startupManager(); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_PRELIMINARY); - do_check_eq(getActiveVersion(), 2); - - addon.uninstall(); - yield promiseShutdownManager(); - resetPrefs(); - - do_check_false(file.exists()); - clearCache(file); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_install.js b/toolkit/mozapps/webextensions/test/xpcshell/test_signed_install.js deleted file mode 100644 index 19b07ac16..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_install.js +++ /dev/null @@ -1,265 +0,0 @@ -// Enable signature checks for these tests -gUseRealCertChecks = true; -// Disable update security -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); - -const DATA = "data/signing_checks/"; -const ADDONS = { - bootstrap: { - unsigned: "unsigned_bootstrap_2.xpi", - badid: "signed_bootstrap_badid_2.xpi", - preliminary: "preliminary_bootstrap_2.xpi", - signed: "signed_bootstrap_2.xpi", - }, -}; -const WORKING = "signed_bootstrap_1.xpi"; -const ID = "test@tests.mozilla.org"; - -var gServer = createHttpServer(4444); - -// Creates an add-on with a broken signature by changing an existing file -function createBrokenAddonModify(file) { - let brokenFile = gTmpD.clone(); - brokenFile.append("broken.xpi"); - file.copyTo(brokenFile.parent, brokenFile.leafName); - - var stream = AM_Cc["@mozilla.org/io/string-input-stream;1"]. - createInstance(AM_Ci.nsIStringInputStream); - stream.setData("FOOBAR", -1); - var zipW = AM_Cc["@mozilla.org/zipwriter;1"]. - createInstance(AM_Ci.nsIZipWriter); - zipW.open(brokenFile, FileUtils.MODE_RDWR | FileUtils.MODE_APPEND); - zipW.removeEntry("test.txt", false); - zipW.addEntryStream("test.txt", 0, AM_Ci.nsIZipWriter.COMPRESSION_NONE, - stream, false); - zipW.close(); - - return brokenFile; -} - -// Creates an add-on with a broken signature by adding a new file -function createBrokenAddonAdd(file) { - let brokenFile = gTmpD.clone(); - brokenFile.append("broken.xpi"); - file.copyTo(brokenFile.parent, brokenFile.leafName); - - var stream = AM_Cc["@mozilla.org/io/string-input-stream;1"]. - createInstance(AM_Ci.nsIStringInputStream); - stream.setData("FOOBAR", -1); - var zipW = AM_Cc["@mozilla.org/zipwriter;1"]. - createInstance(AM_Ci.nsIZipWriter); - zipW.open(brokenFile, FileUtils.MODE_RDWR | FileUtils.MODE_APPEND); - zipW.addEntryStream("test2.txt", 0, AM_Ci.nsIZipWriter.COMPRESSION_NONE, - stream, false); - zipW.close(); - - return brokenFile; -} - -// Creates an add-on with a broken signature by removing an existing file -function createBrokenAddonRemove(file) { - let brokenFile = gTmpD.clone(); - brokenFile.append("broken.xpi"); - file.copyTo(brokenFile.parent, brokenFile.leafName); - - var stream = AM_Cc["@mozilla.org/io/string-input-stream;1"]. - createInstance(AM_Ci.nsIStringInputStream); - stream.setData("FOOBAR", -1); - var zipW = AM_Cc["@mozilla.org/zipwriter;1"]. - createInstance(AM_Ci.nsIZipWriter); - zipW.open(brokenFile, FileUtils.MODE_RDWR | FileUtils.MODE_APPEND); - zipW.removeEntry("test.txt", false); - zipW.close(); - - return brokenFile; -} - -function createInstall(url) { - return new Promise(resolve => { - AddonManager.getInstallForURL(url, resolve, "application/x-xpinstall"); - }); -} - -function serveUpdateRDF(leafName) { - gServer.registerPathHandler("/update.rdf", function(request, response) { - let updateData = {}; - updateData[ID] = [{ - version: "2.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "4", - maxVersion: "6", - updateLink: "http://localhost:4444/" + leafName - }] - }]; - - response.setStatusLine(request.httpVersion, 200, "OK"); - response.write(createUpdateRDF(updateData)); - }); -} - - -function* test_install_broken(file, expectedError) { - gServer.registerFile("/" + file.leafName, file); - - let install = yield createInstall("http://localhost:4444/" + file.leafName); - yield promiseCompleteAllInstalls([install]); - - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(install.error, expectedError); - do_check_eq(install.addon, null); - - gServer.registerFile("/" + file.leafName, null); -} - -function* test_install_working(file, expectedSignedState) { - gServer.registerFile("/" + file.leafName, file); - - let install = yield createInstall("http://localhost:4444/" + file.leafName); - yield promiseCompleteAllInstalls([install]); - - do_check_eq(install.state, AddonManager.STATE_INSTALLED); - do_check_neq(install.addon, null); - do_check_eq(install.addon.signedState, expectedSignedState); - - gServer.registerFile("/" + file.leafName, null); - - install.addon.uninstall(); -} - -function* test_update_broken(file, expectedError) { - // First install the older version - yield promiseInstallAllFiles([do_get_file(DATA + WORKING)]); - - gServer.registerFile("/" + file.leafName, file); - serveUpdateRDF(file.leafName); - - let addon = yield promiseAddonByID(ID); - let update = yield promiseFindAddonUpdates(addon); - let install = update.updateAvailable; - yield promiseCompleteAllInstalls([install]); - - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(install.error, expectedError); - do_check_eq(install.addon, null); - - gServer.registerFile("/" + file.leafName, null); - gServer.registerPathHandler("/update.rdf", null); - - addon.uninstall(); -} - -function* test_update_working(file, expectedSignedState) { - // First install the older version - yield promiseInstallAllFiles([do_get_file(DATA + WORKING)]); - - gServer.registerFile("/" + file.leafName, file); - serveUpdateRDF(file.leafName); - - let addon = yield promiseAddonByID(ID); - let update = yield promiseFindAddonUpdates(addon); - let install = update.updateAvailable; - yield promiseCompleteAllInstalls([install]); - - do_check_eq(install.state, AddonManager.STATE_INSTALLED); - do_check_neq(install.addon, null); - do_check_eq(install.addon.signedState, expectedSignedState); - - gServer.registerFile("/" + file.leafName, null); - gServer.registerPathHandler("/update.rdf", null); - - install.addon.uninstall(); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "4", "4"); - startupManager(); - - run_next_test(); -} - -// Try to install a broken add-on -add_task(function*() { - let file = createBrokenAddonModify(do_get_file(DATA + ADDONS.bootstrap.signed)); - yield test_install_broken(file, AddonManager.ERROR_CORRUPT_FILE); - file.remove(true); -}); - -add_task(function*() { - let file = createBrokenAddonAdd(do_get_file(DATA + ADDONS.bootstrap.signed)); - yield test_install_broken(file, AddonManager.ERROR_CORRUPT_FILE); - file.remove(true); -}); - -add_task(function*() { - let file = createBrokenAddonRemove(do_get_file(DATA + ADDONS.bootstrap.signed)); - yield test_install_broken(file, AddonManager.ERROR_CORRUPT_FILE); - file.remove(true); -}); - -// Try to install an add-on with an incorrect ID -add_task(function*() { - let file = do_get_file(DATA + ADDONS.bootstrap.badid); - yield test_install_broken(file, AddonManager.ERROR_CORRUPT_FILE); -}); - -// Try to install an unsigned add-on -add_task(function*() { - let file = do_get_file(DATA + ADDONS.bootstrap.unsigned); - yield test_install_broken(file, AddonManager.ERROR_SIGNEDSTATE_REQUIRED); -}); - -// Try to install a preliminarily reviewed add-on -add_task(function*() { - let file = do_get_file(DATA + ADDONS.bootstrap.preliminary); - yield test_install_working(file, AddonManager.SIGNEDSTATE_PRELIMINARY); -}); - -// Try to install a signed add-on -add_task(function*() { - let file = do_get_file(DATA + ADDONS.bootstrap.signed); - yield test_install_working(file, AddonManager.SIGNEDSTATE_SIGNED); -}); - -// Try to update to a broken add-on -add_task(function*() { - let file = createBrokenAddonModify(do_get_file(DATA + ADDONS.bootstrap.signed)); - yield test_update_broken(file, AddonManager.ERROR_CORRUPT_FILE); - file.remove(true); -}); - -add_task(function*() { - let file = createBrokenAddonAdd(do_get_file(DATA + ADDONS.bootstrap.signed)); - yield test_update_broken(file, AddonManager.ERROR_CORRUPT_FILE); - file.remove(true); -}); - -add_task(function*() { - let file = createBrokenAddonRemove(do_get_file(DATA + ADDONS.bootstrap.signed)); - yield test_update_broken(file, AddonManager.ERROR_CORRUPT_FILE); - file.remove(true); -}); - -// Try to update to an add-on with an incorrect ID -add_task(function*() { - let file = do_get_file(DATA + ADDONS.bootstrap.badid); - yield test_update_broken(file, AddonManager.ERROR_CORRUPT_FILE); -}); - -// Try to update to an unsigned add-on -add_task(function*() { - let file = do_get_file(DATA + ADDONS.bootstrap.unsigned); - yield test_update_broken(file, AddonManager.ERROR_SIGNEDSTATE_REQUIRED); -}); - -// Try to update to a preliminarily reviewed add-on -add_task(function*() { - let file = do_get_file(DATA + ADDONS.bootstrap.preliminary); - yield test_update_working(file, AddonManager.SIGNEDSTATE_PRELIMINARY); -}); - -// Try to update to a signed add-on -add_task(function*() { - let file = do_get_file(DATA + ADDONS.bootstrap.signed); - yield test_update_working(file, AddonManager.SIGNEDSTATE_SIGNED); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_long.js b/toolkit/mozapps/webextensions/test/xpcshell/test_signed_long.js deleted file mode 100644 index b74d7804a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_long.js +++ /dev/null @@ -1,49 +0,0 @@ -// Disable update security -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); - -gUseRealCertChecks = true; - -const DATA = "data/signing_checks/"; - -const ID_63 = "123456789012345678901234567890123456789012345@tests.mozilla.org" -const ID_64 = "1234567890123456789012345678901234567890123456@tests.mozilla.org" -const ID_65 = "12345678901234567890123456789012345678901234568@tests.mozilla.org" - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - startupManager(); - - run_next_test(); -} - -// Installs the cases that should be working -add_task(function* test_working() { - yield promiseInstallAllFiles([do_get_file(DATA + "long_63_plain.xpi"), - do_get_file(DATA + "long_64_plain.xpi"), - do_get_file(DATA + "long_65_hash.xpi")]); - - let addons = yield promiseAddonsByIDs([ID_63, ID_64, ID_65]); - - for (let addon of addons) { - do_check_neq(addon, null); - do_check_true(addon.signedState > AddonManager.SIGNEDSTATE_MISSING); - - addon.uninstall(); - } -}); - -// Checks the cases that should be broken -add_task(function* test_broken() { - function promiseInstallForFile(file) { - return new Promise(resolve => AddonManager.getInstallForFile(file, resolve)); - } - - let promises = [promiseInstallForFile(do_get_file(DATA + "long_63_hash.xpi")), - promiseInstallForFile(do_get_file(DATA + "long_64_hash.xpi"))]; - let installs = yield Promise.all(promises); - - for (let install of installs) { - do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); - do_check_eq(install.error, AddonManager.ERROR_CORRUPT_FILE); - } -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_migrate.js b/toolkit/mozapps/webextensions/test/xpcshell/test_signed_migrate.js deleted file mode 100644 index 97e2ff79f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_migrate.js +++ /dev/null @@ -1,194 +0,0 @@ -// Enable signature checks for these tests -gUseRealCertChecks = true; -// Disable update security -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -// Allow attempting to show the compatibility UI which should not happen -Services.prefs.setBoolPref("extensions.showMismatchUI", true); - -const DATA = "data/signing_checks/"; -const ADDONS = { - bootstrap: { - unsigned: "unsigned_bootstrap_2.xpi", - badid: "signed_bootstrap_badid_2.xpi", - signed: "signed_bootstrap_2.xpi", - }, - nonbootstrap: { - unsigned: "unsigned_nonbootstrap_2.xpi", - badid: "signed_nonbootstrap_badid_2.xpi", - signed: "signed_nonbootstrap_2.xpi", - } -}; -const ID = "test@tests.mozilla.org"; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// Override the window watcher -var WindowWatcher = { - sawAddon: false, - - openWindow: function(parent, url, name, features, args) { - let ids = args.QueryInterface(AM_Ci.nsIVariant); - this.sawAddon = ids.indexOf(ID) >= 0; - }, - - QueryInterface: function(iid) { - if (iid.equals(AM_Ci.nsIWindowWatcher) - || iid.equals(AM_Ci.nsISupports)) - return this; - - throw Components.results.NS_ERROR_NO_INTERFACE; - } -} - -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - -function resetPrefs() { - Services.prefs.setIntPref("bootstraptest.active_version", -1); - Services.prefs.setIntPref("bootstraptest.installed_version", -1); - Services.prefs.setIntPref("bootstraptest.startup_reason", -1); - Services.prefs.setIntPref("bootstraptest.shutdown_reason", -1); - Services.prefs.setIntPref("bootstraptest.install_reason", -1); - Services.prefs.setIntPref("bootstraptest.uninstall_reason", -1); - Services.prefs.setIntPref("bootstraptest.startup_oldversion", -1); - Services.prefs.setIntPref("bootstraptest.shutdown_newversion", -1); - Services.prefs.setIntPref("bootstraptest.install_oldversion", -1); - Services.prefs.setIntPref("bootstraptest.uninstall_newversion", -1); -} - -function getActiveVersion() { - return Services.prefs.getIntPref("bootstraptest.active_version"); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "4", "4"); - - // Start and stop the manager to initialise everything in the profile before - // actual testing - startupManager(); - shutdownManager(); - resetPrefs(); - - run_next_test(); -} - -// Removes the signedState field from add-ons in the json database to make it -// look like the database was written with an older version of the application -function stripDB() { - let jData = loadJSON(gExtensionsJSON); - jData.schemaVersion--; - - for (let addon of jData.addons) - delete addon.signedState; - - saveJSON(jData, gExtensionsJSON); -} - -function* test_breaking_migrate(addons, test, expectedSignedState) { - // Startup as the old version - gAppInfo.version = "4"; - startupManager(true); - - // Install the signed add-on - yield promiseInstallAllFiles([do_get_file(DATA + addons.signed)]); - // Restart to let non-restartless add-ons install fully - yield promiseRestartManager(); - yield promiseShutdownManager(); - resetPrefs(); - stripDB(); - - // Now replace it with the version to test. Doing this so quickly shouldn't - // trigger the file modification code to detect the change by itself. - manuallyUninstall(profileDir, ID); - manuallyInstall(do_get_file(DATA + addons[test]), profileDir, ID); - - // Update the application - gAppInfo.version = "5"; - startupManager(true); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_true(addon.appDisabled); - do_check_false(addon.isActive); - do_check_eq(addon.signedState, expectedSignedState); - - // Add-on shouldn't be active - if (addons == ADDONS.bootstrap) - do_check_eq(getActiveVersion(), -1); - else - do_check_false(isExtensionInAddonsList(profileDir, ID)); - - // Should have flagged the change during startup - let changes = AddonManager.getStartupChanges(AddonManager.STARTUP_CHANGE_DISABLED); - do_check_eq(changes.length, 1); - do_check_eq(changes[0], ID); - - // Shouldn't have checked for updates for the add-on - do_check_false(WindowWatcher.sawAddon); - WindowWatcher.sawAddon = false; - - addon.uninstall(); - // Restart to let non-restartless add-ons uninstall fully - yield promiseRestartManager(); - yield shutdownManager(); - resetPrefs(); -} - -function* test_working_migrate(addons, test, expectedSignedState) { - // Startup as the old version - gAppInfo.version = "4"; - startupManager(true); - - // Install the signed add-on - yield promiseInstallAllFiles([do_get_file(DATA + addons.signed)]); - // Restart to let non-restartless add-ons install fully - yield promiseRestartManager(); - yield promiseShutdownManager(); - resetPrefs(); - stripDB(); - - // Now replace it with the version to test. Doing this so quickly shouldn't - // trigger the file modification code to detect the change by itself. - manuallyUninstall(profileDir, ID); - manuallyInstall(do_get_file(DATA + addons[test]), profileDir, ID); - - // Update the application - gAppInfo.version = "5"; - startupManager(true); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.signedState, expectedSignedState); - - if (addons == ADDONS.bootstrap) - do_check_eq(getActiveVersion(), 2); - else - do_check_true(isExtensionInAddonsList(profileDir, ID)); - - // Shouldn't have checked for updates for the add-on - do_check_false(WindowWatcher.sawAddon); - WindowWatcher.sawAddon = false; - - addon.uninstall(); - // Restart to let non-restartless add-ons uninstall fully - yield promiseRestartManager(); - yield shutdownManager(); - resetPrefs(); -} - -add_task(function*() { - yield test_breaking_migrate(ADDONS.bootstrap, "unsigned", AddonManager.SIGNEDSTATE_MISSING); - yield test_breaking_migrate(ADDONS.nonbootstrap, "unsigned", AddonManager.SIGNEDSTATE_MISSING); -}); - -add_task(function*() { - yield test_breaking_migrate(ADDONS.bootstrap, "badid", AddonManager.SIGNEDSTATE_BROKEN); - yield test_breaking_migrate(ADDONS.nonbootstrap, "badid", AddonManager.SIGNEDSTATE_BROKEN); -}); - -add_task(function*() { - yield test_working_migrate(ADDONS.bootstrap, "signed", AddonManager.SIGNEDSTATE_SIGNED); - yield test_working_migrate(ADDONS.nonbootstrap, "signed", AddonManager.SIGNEDSTATE_SIGNED); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_multi.js b/toolkit/mozapps/webextensions/test/xpcshell/test_signed_multi.js deleted file mode 100644 index 01de29088..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_multi.js +++ /dev/null @@ -1,55 +0,0 @@ -// Enable signature checks for these tests -gUseRealCertChecks = true; -// Disable update security -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); - -const DATA = "data/signing_checks/"; - -// Each multi-package XPI contains one valid theme and one other add-on that -// has the following error state: -const ADDONS = { - "multi_signed.xpi": 0, - "multi_badid.xpi": AddonManager.ERROR_CORRUPT_FILE, - "multi_broken.xpi": AddonManager.ERROR_CORRUPT_FILE, - "multi_unsigned.xpi": AddonManager.ERROR_SIGNEDSTATE_REQUIRED, -}; - -function createInstall(filename) { - return new Promise(resolve => { - AddonManager.getInstallForFile(do_get_file(DATA + filename), resolve, "application/x-xpinstall"); - }); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "4", "4"); - startupManager(); - - run_next_test(); -} - -function* test_addon(filename) { - do_print("Testing " + filename); - - let install = yield createInstall(filename); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_eq(install.error, 0); - - do_check_neq(install.linkedInstalls, null); - do_check_eq(install.linkedInstalls.length, 1); - - let linked = install.linkedInstalls[0]; - do_print(linked.state); - do_check_eq(linked.error, ADDONS[filename]); - if (linked.error == 0) { - do_check_eq(linked.state, AddonManager.STATE_DOWNLOADED); - linked.cancel(); - } - else { - do_check_eq(linked.state, AddonManager.STATE_DOWNLOAD_FAILED); - } - - install.cancel(); -} - -for (let filename of Object.keys(ADDONS)) - add_task(test_addon.bind(null, filename)); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_updatepref.js b/toolkit/mozapps/webextensions/test/xpcshell/test_signed_updatepref.js deleted file mode 100644 index eb1bb78b3..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_updatepref.js +++ /dev/null @@ -1,136 +0,0 @@ -// Disable update security -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -gUseRealCertChecks = true; - -const DATA = "data/signing_checks/"; -const ID = "test@tests.mozilla.org"; - -Components.utils.import("resource://testing-common/httpd.js"); -var gServer = new HttpServer(); -gServer.start(); - -gServer.registerPathHandler("/update.rdf", function(request, response) { - let updateData = {}; - updateData[ID] = [{ - version: "2.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "4", - maxVersion: "6" - }] - }]; - - response.setStatusLine(request.httpVersion, 200, "OK"); - response.write(createUpdateRDF(updateData)); -}); - -const SERVER = "127.0.0.1:" + gServer.identity.primaryPort; -Services.prefs.setCharPref("extensions.update.background.url", "http://" + SERVER + "/update.rdf"); - -function verifySignatures() { - return new Promise(resolve => { - let observer = (subject, topic, data) => { - Services.obs.removeObserver(observer, "xpi-signature-changed"); - resolve(JSON.parse(data)); - } - Services.obs.addObserver(observer, "xpi-signature-changed", false); - - do_print("Verifying signatures"); - let XPIscope = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm"); - XPIscope.XPIProvider.verifySignatures(); - }); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "4", "4"); - - // Start and stop the manager to initialise everything in the profile before - // actual testing - startupManager(); - shutdownManager(); - - run_next_test(); -} - -// Updating the pref without changing the app version won't disable add-ons -// immediately but will after a signing check -add_task(function*() { - Services.prefs.setBoolPref(PREF_XPI_SIGNATURES_REQUIRED, false); - startupManager(); - - // Install the signed add-on - yield promiseInstallAllFiles([do_get_file(DATA + "unsigned_bootstrap_2.xpi")]); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_MISSING); - - yield promiseShutdownManager(); - - Services.prefs.setBoolPref(PREF_XPI_SIGNATURES_REQUIRED, true); - - startupManager(); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_MISSING); - - // Update checks shouldn't affect the add-on - yield AddonManagerInternal.backgroundUpdateCheck(); - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_MISSING); - - let changes = yield verifySignatures(); - - do_check_eq(changes.disabled.length, 1); - do_check_eq(changes.disabled[0], ID); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_true(addon.appDisabled); - do_check_false(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_MISSING); - - addon.uninstall(); - - yield promiseShutdownManager(); -}); - -// Updating the pref with changing the app version will disable add-ons -// immediately -add_task(function*() { - Services.prefs.setBoolPref(PREF_XPI_SIGNATURES_REQUIRED, false); - startupManager(); - - // Install the signed add-on - yield promiseInstallAllFiles([do_get_file(DATA + "unsigned_bootstrap_2.xpi")]); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_MISSING); - - yield promiseShutdownManager(); - - Services.prefs.setBoolPref(PREF_XPI_SIGNATURES_REQUIRED, true); - gAppInfo.version = 5.0 - startupManager(true); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_true(addon.appDisabled); - do_check_false(addon.isActive); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_MISSING); - - addon.uninstall(); - - yield promiseShutdownManager(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_verify.js b/toolkit/mozapps/webextensions/test/xpcshell/test_signed_verify.js deleted file mode 100644 index 0b5b30d89..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_signed_verify.js +++ /dev/null @@ -1,234 +0,0 @@ -// Enable signature checks for these tests -gUseRealCertChecks = true; -// Disable update security -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); - -const DATA = "data/signing_checks/"; -const GOOD = [ - ["signed_bootstrap_2.xpi", AddonManager.SIGNEDSTATE_SIGNED], - ["signed_nonbootstrap_2.xpi", AddonManager.SIGNEDSTATE_SIGNED] -]; -const BAD = [ - ["unsigned_bootstrap_2.xpi", AddonManager.SIGNEDSTATE_MISSING], - ["signed_bootstrap_badid_2.xpi", AddonManager.SIGNEDSTATE_BROKEN], - ["unsigned_nonbootstrap_2.xpi", AddonManager.SIGNEDSTATE_MISSING], - ["signed_nonbootstrap_badid_2.xpi", AddonManager.SIGNEDSTATE_BROKEN], -]; -const ID = "test@tests.mozilla.org"; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function verifySignatures() { - return new Promise(resolve => { - let observer = (subject, topic, data) => { - Services.obs.removeObserver(observer, "xpi-signature-changed"); - resolve(JSON.parse(data)); - } - Services.obs.addObserver(observer, "xpi-signature-changed", false); - - do_print("Verifying signatures"); - let XPIscope = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm"); - XPIscope.XPIProvider.verifySignatures(); - }); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "4", "4"); - - run_next_test(); -} - -function verify_no_change([startFile, startState], [endFile, endState]) { - add_task(function*() { - do_print("A switch from " + startFile + " to " + endFile + " should cause no change."); - - // Install the first add-on - manuallyInstall(do_get_file(DATA + startFile), profileDir, ID); - startupManager(); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - let wasAppDisabled = addon.appDisabled; - do_check_neq(addon.appDisabled, addon.isActive); - do_check_eq(addon.pendingOperations, AddonManager.PENDING_NONE); - do_check_eq(addon.signedState, startState); - - // Swap in the files from the next add-on - manuallyUninstall(profileDir, ID); - manuallyInstall(do_get_file(DATA + endFile), profileDir, ID); - - let events = { - [ID]: [] - }; - - if (startState != endState) - events[ID].unshift(["onPropertyChanged", ["signedState"]]); - - prepare_test(events); - - // Trigger the check - let changes = yield verifySignatures(); - do_check_eq(changes.enabled.length, 0); - do_check_eq(changes.disabled.length, 0); - - do_check_eq(addon.appDisabled, wasAppDisabled); - do_check_neq(addon.appDisabled, addon.isActive); - do_check_eq(addon.pendingOperations, AddonManager.PENDING_NONE); - do_check_eq(addon.signedState, endState); - - // Remove the add-on and restart to let it go away - manuallyUninstall(profileDir, ID); - yield promiseRestartManager(); - yield promiseShutdownManager(); - }); -} - -function verify_enables([startFile, startState], [endFile, endState]) { - add_task(function*() { - do_print("A switch from " + startFile + " to " + endFile + " should enable the add-on."); - - // Install the first add-on - manuallyInstall(do_get_file(DATA + startFile), profileDir, ID); - startupManager(); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_false(addon.isActive); - do_check_eq(addon.pendingOperations, AddonManager.PENDING_NONE); - do_check_eq(addon.signedState, startState); - - // Swap in the files from the next add-on - manuallyUninstall(profileDir, ID); - manuallyInstall(do_get_file(DATA + endFile), profileDir, ID); - - let needsRestart = hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_ENABLE); - do_print(needsRestart); - - let events = {}; - if (!needsRestart) { - events[ID] = [ - ["onPropertyChanged", ["appDisabled"]], - ["onEnabling", false], - "onEnabled" - ]; - } - else { - events[ID] = [ - ["onPropertyChanged", ["appDisabled"]], - "onEnabling" - ]; - } - - if (startState != endState) - events[ID].unshift(["onPropertyChanged", ["signedState"]]); - - prepare_test(events); - - // Trigger the check - let changes = yield verifySignatures(); - do_check_eq(changes.enabled.length, 1); - do_check_eq(changes.enabled[0], ID); - do_check_eq(changes.disabled.length, 0); - - do_check_false(addon.appDisabled); - if (needsRestart) - do_check_neq(addon.pendingOperations, AddonManager.PENDING_NONE); - else - do_check_true(addon.isActive); - do_check_eq(addon.signedState, endState); - - ensure_test_completed(); - - // Remove the add-on and restart to let it go away - manuallyUninstall(profileDir, ID); - yield promiseRestartManager(); - yield promiseShutdownManager(); - }); -} - -function verify_disables([startFile, startState], [endFile, endState]) { - add_task(function*() { - do_print("A switch from " + startFile + " to " + endFile + " should disable the add-on."); - - // Install the first add-on - manuallyInstall(do_get_file(DATA + startFile), profileDir, ID); - startupManager(); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_true(addon.isActive); - do_check_eq(addon.pendingOperations, AddonManager.PENDING_NONE); - do_check_eq(addon.signedState, startState); - - let needsRestart = hasFlag(addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_DISABLE); - - // Swap in the files from the next add-on - manuallyUninstall(profileDir, ID); - manuallyInstall(do_get_file(DATA + endFile), profileDir, ID); - - let events = {}; - if (!needsRestart) { - events[ID] = [ - ["onPropertyChanged", ["appDisabled"]], - ["onDisabling", false], - "onDisabled" - ]; - } - else { - events[ID] = [ - ["onPropertyChanged", ["appDisabled"]], - "onDisabling" - ]; - } - - if (startState != endState) - events[ID].unshift(["onPropertyChanged", ["signedState"]]); - - prepare_test(events); - - // Trigger the check - let changes = yield verifySignatures(); - do_check_eq(changes.enabled.length, 0); - do_check_eq(changes.disabled.length, 1); - do_check_eq(changes.disabled[0], ID); - - do_check_true(addon.appDisabled); - if (needsRestart) - do_check_neq(addon.pendingOperations, AddonManager.PENDING_NONE); - else - do_check_false(addon.isActive); - do_check_eq(addon.signedState, endState); - - ensure_test_completed(); - - // Remove the add-on and restart to let it go away - manuallyUninstall(profileDir, ID); - yield promiseRestartManager(); - yield promiseShutdownManager(); - }); -} - -for (let start of GOOD) { - for (let end of BAD) { - verify_disables(start, end); - } -} - -for (let start of BAD) { - for (let end of GOOD) { - verify_enables(start, end); - } -} - -for (let start of GOOD) { - for (let end of GOOD.filter(f => f != start)) { - verify_no_change(start, end); - } -} - -for (let start of BAD) { - for (let end of BAD.filter(f => f != start)) { - verify_no_change(start, end); - } -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_softblocked.js b/toolkit/mozapps/webextensions/test/xpcshell/test_softblocked.js deleted file mode 100644 index 260b536e1..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_softblocked.js +++ /dev/null @@ -1,109 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const { utils: Cu, interfaces: Ci, classes: Cc, results: Cr } = Components; - -const URI_EXTENSION_BLOCKLIST_DIALOG = "chrome://mozapps/content/extensions/blocklist.xul"; - -Cu.import("resource://gre/modules/NetUtil.jsm"); -Cu.import("resource://testing-common/MockRegistrar.jsm"); - -// Allow insecure updates -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false) - -const testserver = createHttpServer(); -gPort = testserver.identity.primaryPort; -testserver.registerDirectory("/data/", do_get_file("data")); - -// Don't need the full interface, attempts to call other methods will just -// throw which is just fine -var WindowWatcher = { - openWindow: function(parent, url, name, features, openArgs) { - // Should be called to list the newly blocklisted items - do_check_eq(url, URI_EXTENSION_BLOCKLIST_DIALOG); - - // Simulate auto-disabling any softblocks - var list = openArgs.wrappedJSObject.list; - list.forEach(function(aItem) { - if (!aItem.blocked) - aItem.disable = true; - }); - - // run the code after the blocklist is closed - Services.obs.notifyObservers(null, "addon-blocklist-closed", null); - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -}; - -MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function load_blocklist(aFile) { - return new Promise((resolve, reject) => { - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "blocklist-updated"); - - resolve(); - }, "blocklist-updated", false); - - Services.prefs.setCharPref("extensions.blocklist.url", `http://localhost:${gPort}/data/${aFile}`); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); - }); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - run_next_test(); -} - -// Tests that an appDisabled add-on that becomes softBlocked remains disabled -// when becoming appEnabled -add_task(function* () { - writeInstallRDFForExtension({ - id: "softblock1@tests.mozilla.org", - version: "1.0", - name: "Softblocked add-on", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "3" - }] - }, profileDir); - - startupManager(); - - let s1 = yield promiseAddonByID("softblock1@tests.mozilla.org"); - - // Make sure to mark it as previously enabled. - s1.userDisabled = false; - - do_check_false(s1.softDisabled); - do_check_true(s1.appDisabled); - do_check_false(s1.isActive); - - yield load_blocklist("test_softblocked1.xml"); - - do_check_true(s1.softDisabled); - do_check_true(s1.appDisabled); - do_check_false(s1.isActive); - - yield promiseRestartManager("2"); - - s1 = yield promiseAddonByID("softblock1@tests.mozilla.org"); - - do_check_true(s1.softDisabled); - do_check_false(s1.appDisabled); - do_check_false(s1.isActive); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_sourceURI.js b/toolkit/mozapps/webextensions/test/xpcshell/test_sourceURI.js deleted file mode 100644 index db5e4f7cc..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_sourceURI.js +++ /dev/null @@ -1,66 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -Components.utils.import("resource://testing-common/httpd.js"); -var gServer = new HttpServer(); -gServer.start(-1); - -const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled"; - -const PORT = gServer.identity.primaryPort; -const BASE_URL = "http://localhost:" + PORT; -const DEFAULT_URL = "about:blank"; - -var addon = { - id: "addon@tests.mozilla.org", - version: "1.0", - name: "Test", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function backgroundUpdate(aCallback) { - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "addons-background-update-complete"); - aCallback(); - }, "addons-background-update-complete", false); - - AddonManagerPrivate.backgroundUpdateCheck(); -} - -function run_test() { - do_test_pending(); - - mapUrlToFile("/cache.xml", do_get_file("data/test_sourceURI.xml"), gServer); - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, BASE_URL + "/cache.xml"); - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS_PERFORMANCE, BASE_URL + "/cache.xml"); - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - writeInstallRDFForExtension(addon, profileDir); - startupManager(); - - AddonManager.getAddonByID("addon@tests.mozilla.org", function(a) { - do_check_neq(a, null); - do_check_eq(a.sourceURI, null); - - backgroundUpdate(function() { - restartManager(); - - AddonManager.getAddonByID("addon@tests.mozilla.org", function(a2) { - do_check_neq(a2, null); - do_check_neq(a2.sourceURI, null); - do_check_eq(a2.sourceURI.spec, "http://www.example.com/testaddon.xpi"); - - do_test_finished(); - }); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_startup.js b/toolkit/mozapps/webextensions/test/xpcshell/test_startup.js deleted file mode 100644 index fdd00c1ad..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_startup.js +++ /dev/null @@ -1,932 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies startup detection of added/removed/changed items and install -// location priorities - -// Enable loading extensions from the user and system scopes -Services.prefs.setIntPref("extensions.enabledScopes", - AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER + - AddonManager.SCOPE_SYSTEM); - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }, { // Repeated target application entries should be ignored - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }] -}; - -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "2.0", - name: "Test 2", - targetApplications: [{ // Bad target application entries should be ignored - minVersion: "3", - maxVersion: "4" - }, { - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] -}; - -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "3.0", - name: "Test 3", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1.9.2", - maxVersion: "1.9.2.*" - }] -}; - -// Should be ignored because it has no ID -var addon4 = { - version: "4.0", - name: "Test 4", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Should be ignored because it has no version -var addon5 = { - id: "addon5@tests.mozilla.org", - name: "Test 5", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Should be ignored because it has an invalid type -var addon6 = { - id: "addon6@tests.mozilla.org", - version: "3.0", - name: "Test 6", - type: 5, - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1.9.2", - maxVersion: "1.9.2.*" - }] -}; - -// Should be ignored because it has an invalid type -var addon7 = { - id: "addon7@tests.mozilla.org", - version: "3.0", - name: "Test 3", - type: "extension", - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "1.9.2", - maxVersion: "1.9.2.*" - }] -}; - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -const globalDir = gProfD.clone(); -globalDir.append("extensions2"); -globalDir.append(gAppInfo.ID); -registerDirectory("XRESysSExtPD", globalDir.parent); -const userDir = gProfD.clone(); -userDir.append("extensions3"); -userDir.append(gAppInfo.ID); -registerDirectory("XREUSysExt", userDir.parent); -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -var gCachePurged = false; - -// Set up the profile -function run_test() { - do_test_pending("test_startup main"); - - let obs = AM_Cc["@mozilla.org/observer-service;1"]. - getService(AM_Ci.nsIObserverService); - obs.addObserver({ - observe: function(aSubject, aTopic, aData) { - gCachePurged = true; - } - }, "startupcache-invalidate", false); - - startupManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); - - do_check_false(gExtensionsJSON.exists()); - - do_check_false(gExtensionsINI.exists()); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org"], - function([a1, a2, a3, a4, a5, a6, a7]) { - - do_check_eq(a1, null); - do_check_not_in_crash_annotation(addon1.id, addon1.version); - do_check_eq(a2, null); - do_check_not_in_crash_annotation(addon2.id, addon2.version); - do_check_eq(a3, null); - do_check_not_in_crash_annotation(addon3.id, addon3.version); - do_check_eq(a4, null); - do_check_eq(a5, null); - - do_execute_soon(run_test_1); - }); -} - -function end_test() { - do_test_finished("test_startup main"); -} - -// Try to install all the items into the profile -function run_test_1() { - writeInstallRDFForExtension(addon1, profileDir); - var dest = writeInstallRDFForExtension(addon2, profileDir); - // Attempt to make this look like it was added some time in the past so - // the change in run_test_2 makes the last modified time change. - setExtensionModifiedTime(dest, dest.lastModifiedTime - 5000); - - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir, "addon4@tests.mozilla.org"); - writeInstallRDFForExtension(addon5, profileDir); - writeInstallRDFForExtension(addon6, profileDir); - writeInstallRDFForExtension(addon7, profileDir); - - gCachePurged = false; - restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, ["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); - do_check_true(gCachePurged); - - do_print("Checking for " + gExtensionsINI.path); - do_check_true(gExtensionsINI.exists()); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org"], - function([a1, a2, a3, a4, a5, a6, a7]) { - - do_check_neq(a1, null); - do_check_eq(a1.id, "addon1@tests.mozilla.org"); - do_check_neq(a1.syncGUID, null); - do_check_true(a1.syncGUID.length >= 9); - do_check_eq(a1.version, "1.0"); - do_check_eq(a1.name, "Test 1"); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon1.id, addon1.version); - do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); - do_check_eq(a1.sourceURI, null); - do_check_true(a1.foreignInstall); - do_check_false(a1.userDisabled); - do_check_true(a1.seen); - - do_check_neq(a2, null); - do_check_eq(a2.id, "addon2@tests.mozilla.org"); - do_check_neq(a2.syncGUID, null); - do_check_true(a2.syncGUID.length >= 9); - do_check_eq(a2.version, "2.0"); - do_check_eq(a2.name, "Test 2"); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon2.id, addon2.version); - do_check_eq(a2.scope, AddonManager.SCOPE_PROFILE); - do_check_eq(a2.sourceURI, null); - do_check_true(a2.foreignInstall); - do_check_false(a1.userDisabled); - do_check_true(a1.seen); - - do_check_neq(a3, null); - do_check_eq(a3.id, "addon3@tests.mozilla.org"); - do_check_neq(a3.syncGUID, null); - do_check_true(a3.syncGUID.length >= 9); - do_check_eq(a3.version, "3.0"); - do_check_eq(a3.name, "Test 3"); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - do_check_true(hasFlag(a3.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_true(hasFlag(a3.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon3.id, addon3.version); - do_check_eq(a3.scope, AddonManager.SCOPE_PROFILE); - do_check_eq(a3.sourceURI, null); - do_check_true(a3.foreignInstall); - do_check_false(a1.userDisabled); - do_check_true(a1.seen); - - do_check_eq(a4, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); - dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon4@tests.mozilla.org")); - do_check_false(dest.exists()); - - do_check_eq(a5, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); - dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon5@tests.mozilla.org")); - do_check_false(dest.exists()); - - do_check_eq(a6, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon6@tests.mozilla.org")); - dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon6@tests.mozilla.org")); - do_check_false(dest.exists()); - - do_check_eq(a7, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon7@tests.mozilla.org")); - dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon7@tests.mozilla.org")); - do_check_false(dest.exists()); - - AddonManager.getAddonsByTypes(["extension"], function(extensionAddons) { - do_check_eq(extensionAddons.length, 3); - - do_execute_soon(run_test_2); - }); - }); -} - -// Test that modified items are detected and items in other install locations -// are ignored -function run_test_2() { - addon1.version = "1.1"; - writeInstallRDFForExtension(addon1, userDir); - addon2.version="2.1"; - writeInstallRDFForExtension(addon2, profileDir); - addon2.version="2.2"; - writeInstallRDFForExtension(addon2, globalDir); - addon2.version="2.3"; - writeInstallRDFForExtension(addon2, userDir); - var dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon3@tests.mozilla.org")); - dest.remove(true); - - gCachePurged = false; - restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon3@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); - do_check_true(gCachePurged); - - do_check_true(gExtensionsINI.exists()); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - - do_check_neq(a1, null); - do_check_eq(a1.id, "addon1@tests.mozilla.org"); - do_check_eq(a1.version, "1.0"); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_false(isExtensionInAddonsList(userDir, a1.id)); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon1.id, a1.version); - do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); - do_check_true(a1.foreignInstall); - - do_check_neq(a2, null); - do_check_eq(a2.id, "addon2@tests.mozilla.org"); - do_check_eq(a2.version, "2.1"); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - do_check_false(isExtensionInAddonsList(userDir, a2.id)); - do_check_false(isExtensionInAddonsList(globalDir, a2.id)); - do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon2.id, a2.version); - do_check_eq(a2.scope, AddonManager.SCOPE_PROFILE); - do_check_true(a2.foreignInstall); - - do_check_eq(a3, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); - do_check_not_in_crash_annotation(addon3.id, addon3.version); - - do_check_eq(a4, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); - - do_check_eq(a5, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); - - do_execute_soon(run_test_3); - }); -} - -// Check that removing items from the profile reveals their hidden versions. -function run_test_3() { - var dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); - dest.remove(true); - dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); - dest.remove(true); - writeInstallRDFForExtension(addon3, profileDir, "addon4@tests.mozilla.org"); - - gCachePurged = false; - restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); - do_check_true(gCachePurged); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - - do_check_neq(a1, null); - do_check_eq(a1.id, "addon1@tests.mozilla.org"); - do_check_eq(a1.version, "1.1"); - do_check_false(isExtensionInAddonsList(profileDir, a1.id)); - do_check_true(isExtensionInAddonsList(userDir, a1.id)); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon1.id, a1.version); - do_check_eq(a1.scope, AddonManager.SCOPE_USER); - - do_check_neq(a2, null); - do_check_eq(a2.id, "addon2@tests.mozilla.org"); - do_check_eq(a2.version, "2.3"); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - do_check_true(isExtensionInAddonsList(userDir, a2.id)); - do_check_false(isExtensionInAddonsList(globalDir, a2.id)); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon2.id, a2.version); - do_check_eq(a2.scope, AddonManager.SCOPE_USER); - - do_check_eq(a3, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); - - do_check_eq(a4, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); - - do_check_eq(a5, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); - - dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon4@tests.mozilla.org")); - do_check_false(dest.exists()); - - do_execute_soon(run_test_4); - }); -} - -// Test that disabling an install location works -function run_test_4() { - Services.prefs.setIntPref("extensions.enabledScopes", AddonManager.SCOPE_SYSTEM); - - gCachePurged = false; - restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon1@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); - do_check_true(gCachePurged); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - - do_check_eq(a1, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(userDir, "addon1@tests.mozilla.org")); - - do_check_neq(a2, null); - do_check_eq(a2.id, "addon2@tests.mozilla.org"); - do_check_eq(a2.version, "2.2"); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - do_check_false(isExtensionInAddonsList(userDir, a2.id)); - do_check_true(isExtensionInAddonsList(globalDir, a2.id)); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon2.id, a2.version); - do_check_eq(a2.scope, AddonManager.SCOPE_SYSTEM); - - do_execute_soon(run_test_5); - }); -} - -// Switching disabled locations works -function run_test_5() { - Services.prefs.setIntPref("extensions.enabledScopes", AddonManager.SCOPE_USER); - - gCachePurged = false; - restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, ["addon1@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); - do_check_true(gCachePurged); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - - do_check_neq(a1, null); - do_check_eq(a1.id, "addon1@tests.mozilla.org"); - do_check_eq(a1.version, "1.1"); - do_check_false(isExtensionInAddonsList(profileDir, a1.id)); - do_check_true(isExtensionInAddonsList(userDir, a1.id)); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon1.id, a1.version); - do_check_eq(a1.scope, AddonManager.SCOPE_USER); - - do_check_neq(a2, null); - do_check_eq(a2.id, "addon2@tests.mozilla.org"); - do_check_eq(a2.version, "2.3"); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - do_check_true(isExtensionInAddonsList(userDir, a2.id)); - do_check_false(isExtensionInAddonsList(globalDir, a2.id)); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon2.id, a2.version); - do_check_eq(a2.scope, AddonManager.SCOPE_USER); - - do_execute_soon(run_test_6); - }); -} - -// Resetting the pref makes everything visible again -function run_test_6() { - Services.prefs.clearUserPref("extensions.enabledScopes"); - - gCachePurged = false; - restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); - do_check_true(gCachePurged); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - - do_check_neq(a1, null); - do_check_eq(a1.id, "addon1@tests.mozilla.org"); - do_check_eq(a1.version, "1.1"); - do_check_false(isExtensionInAddonsList(profileDir, a1.id)); - do_check_true(isExtensionInAddonsList(userDir, a1.id)); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon1.id, a1.version); - do_check_eq(a1.scope, AddonManager.SCOPE_USER); - - do_check_neq(a2, null); - do_check_eq(a2.id, "addon2@tests.mozilla.org"); - do_check_eq(a2.version, "2.3"); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - do_check_true(isExtensionInAddonsList(userDir, a2.id)); - do_check_false(isExtensionInAddonsList(globalDir, a2.id)); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon2.id, a2.version); - do_check_eq(a2.scope, AddonManager.SCOPE_USER); - - do_execute_soon(run_test_7); - }); -} - -// Check that items in the profile hide the others again. -function run_test_7() { - addon1.version = "1.2"; - writeInstallRDFForExtension(addon1, profileDir); - var dest = userDir.clone(); - dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); - dest.remove(true); - - gCachePurged = false; - restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); - do_check_true(gCachePurged); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - - do_check_neq(a1, null); - do_check_eq(a1.id, "addon1@tests.mozilla.org"); - do_check_eq(a1.version, "1.2"); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_false(isExtensionInAddonsList(userDir, a1.id)); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon1.id, a1.version); - do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); - - do_check_neq(a2, null); - do_check_eq(a2.id, "addon2@tests.mozilla.org"); - do_check_eq(a2.version, "2.2"); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - do_check_false(isExtensionInAddonsList(userDir, a2.id)); - do_check_true(isExtensionInAddonsList(globalDir, a2.id)); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon2.id, a2.version); - do_check_eq(a2.scope, AddonManager.SCOPE_SYSTEM); - - do_check_eq(a3, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); - - do_check_eq(a4, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); - - do_check_eq(a5, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); - - do_execute_soon(run_test_8); - }); -} - -// Disabling all locations still leaves the profile working -function run_test_8() { - Services.prefs.setIntPref("extensions.enabledScopes", 0); - - gCachePurged = false; - restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); - do_check_true(gCachePurged); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - - do_check_neq(a1, null); - do_check_eq(a1.id, "addon1@tests.mozilla.org"); - do_check_eq(a1.version, "1.2"); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_false(isExtensionInAddonsList(userDir, a1.id)); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_in_crash_annotation(addon1.id, a1.version); - do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); - - do_check_eq(a2, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon2@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(userDir, "addon2@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(globalDir, "addon2@tests.mozilla.org")); - - do_execute_soon(run_test_9); - }); -} - -// More hiding and revealing -function run_test_9() { - Services.prefs.clearUserPref("extensions.enabledScopes", 0); - - var dest = userDir.clone(); - dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); - dest.remove(true); - dest = globalDir.clone(); - dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); - dest.remove(true); - addon2.version = "2.4"; - writeInstallRDFForExtension(addon2, profileDir); - - gCachePurged = false; - restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, ["addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); - do_check_true(gCachePurged); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - - do_check_neq(a1, null); - do_check_eq(a1.id, "addon1@tests.mozilla.org"); - do_check_eq(a1.version, "1.2"); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_false(isExtensionInAddonsList(userDir, a1.id)); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); - - do_check_neq(a2, null); - do_check_eq(a2.id, "addon2@tests.mozilla.org"); - do_check_eq(a2.version, "2.4"); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - do_check_false(isExtensionInAddonsList(userDir, a2.id)); - do_check_false(isExtensionInAddonsList(globalDir, a2.id)); - do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_eq(a2.scope, AddonManager.SCOPE_PROFILE); - - do_check_eq(a3, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); - - do_check_eq(a4, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); - - do_check_eq(a5, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); - - do_execute_soon(run_test_10); - }); -} - -// Checks that a removal from one location and an addition in another location -// for the same item is handled -function run_test_10() { - var dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); - dest.remove(true); - addon1.version = "1.3"; - writeInstallRDFForExtension(addon1, userDir); - - gCachePurged = false; - restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon1@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); - do_check_true(gCachePurged); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - - do_check_neq(a1, null); - do_check_eq(a1.id, "addon1@tests.mozilla.org"); - do_check_eq(a1.version, "1.3"); - do_check_false(isExtensionInAddonsList(profileDir, a1.id)); - do_check_true(isExtensionInAddonsList(userDir, a1.id)); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_eq(a1.scope, AddonManager.SCOPE_USER); - - do_check_neq(a2, null); - do_check_eq(a2.id, "addon2@tests.mozilla.org"); - do_check_eq(a2.version, "2.4"); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - do_check_false(isExtensionInAddonsList(userDir, a2.id)); - do_check_false(isExtensionInAddonsList(globalDir, a2.id)); - do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); - do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); - do_check_eq(a2.scope, AddonManager.SCOPE_PROFILE); - - do_check_eq(a3, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); - - do_check_eq(a4, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); - - do_check_eq(a5, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); - - do_execute_soon(run_test_11); - }); -} - -// This should remove any remaining items -function run_test_11() { - var dest = userDir.clone(); - dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); - dest.remove(true); - dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); - dest.remove(true); - - gCachePurged = false; - restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); - do_check_true(gCachePurged); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - - do_check_eq(a1, null); - do_check_eq(a2, null); - do_check_eq(a3, null); - do_check_eq(a4, null); - do_check_eq(a5, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(profileDir, "addon2@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(userDir, "addon1@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(userDir, "addon2@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(userDir, "addon3@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(userDir, "addon4@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(userDir, "addon5@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(globalDir, "addon1@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(globalDir, "addon2@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(globalDir, "addon3@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(globalDir, "addon4@tests.mozilla.org")); - do_check_false(isExtensionInAddonsList(globalDir, "addon5@tests.mozilla.org")); - do_check_not_in_crash_annotation(addon1.id, addon1.version); - do_check_not_in_crash_annotation(addon2.id, addon2.version); - - do_execute_soon(run_test_12); - }); -} - -// Test that auto-disabling for specific scopes works -function run_test_12() { - Services.prefs.setIntPref("extensions.autoDisableScopes", AddonManager.SCOPE_USER); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, userDir); - writeInstallRDFForExtension(addon3, globalDir); - - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - callback_soon(function([a1, a2, a3, a4, a5]) { - do_check_neq(a1, null); - do_check_false(a1.userDisabled); - do_check_true(a1.seen); - do_check_true(a1.isActive); - - do_check_neq(a2, null); - do_check_true(a2.userDisabled); - do_check_false(a2.seen); - do_check_false(a2.isActive); - - do_check_neq(a3, null); - do_check_false(a3.userDisabled); - do_check_true(a3.seen); - do_check_true(a3.isActive); - - var dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); - dest.remove(true); - dest = userDir.clone(); - dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); - dest.remove(true); - dest = globalDir.clone(); - dest.append(do_get_expected_addon_name("addon3@tests.mozilla.org")); - dest.remove(true); - - restartManager(); - - Services.prefs.setIntPref("extensions.autoDisableScopes", AddonManager.SCOPE_SYSTEM); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, userDir); - writeInstallRDFForExtension(addon3, globalDir); - - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1_2, a2_2, a3_2, a4_2, a5_2]) { - do_check_neq(a1_2, null); - do_check_false(a1_2.userDisabled); - do_check_true(a1_2.seen); - do_check_true(a1_2.isActive); - - do_check_neq(a2_2, null); - do_check_false(a2_2.userDisabled); - do_check_true(a2_2.seen); - do_check_true(a2_2.isActive); - - do_check_neq(a3_2, null); - do_check_true(a3_2.userDisabled); - do_check_false(a3_2.seen); - do_check_false(a3_2.isActive); - - var dest2 = profileDir.clone(); - dest2.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); - dest2.remove(true); - dest2 = userDir.clone(); - dest2.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); - dest2.remove(true); - dest2 = globalDir.clone(); - dest2.append(do_get_expected_addon_name("addon3@tests.mozilla.org")); - dest2.remove(true); - - restartManager(); - - Services.prefs.setIntPref("extensions.autoDisableScopes", AddonManager.SCOPE_USER + AddonManager.SCOPE_SYSTEM); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, userDir); - writeInstallRDFForExtension(addon3, globalDir); - - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1_3, a2_3, a3_3, a4_3, a5_3]) { - do_check_neq(a1_3, null); - do_check_false(a1_3.userDisabled); - do_check_true(a1_3.seen); - do_check_true(a1_3.isActive); - - do_check_neq(a2_3, null); - do_check_true(a2_3.userDisabled); - do_check_false(a2_3.seen); - do_check_false(a2_3.isActive); - - do_check_neq(a3_3, null); - do_check_true(a3_3.userDisabled); - do_check_false(a3_3.seen); - do_check_false(a3_3.isActive); - - do_execute_soon(end_test); - }); - }); - })); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_strictcompatibility.js b/toolkit/mozapps/webextensions/test/xpcshell/test_strictcompatibility.js deleted file mode 100644 index cb6704936..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_strictcompatibility.js +++ /dev/null @@ -1,203 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -// Tests AddonManager.strictCompatibility and it's related preference, -// extensions.strictCompatibility, and the strictCompatibility option in -// install.rdf - - -// Always compatible -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Incompatible in strict compatibility mode -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "1.0", - name: "Test 2", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0.7", - maxVersion: "0.8" - }] -}; - -// Theme - always uses strict compatibility, so is always incompatible -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "1.0", - name: "Test 3", - internalName: "test-theme-3", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0.8", - maxVersion: "0.9" - }] -}; - -// Opt-in to strict compatibility - always incompatible -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "1.0", - name: "Test 4", - strictCompatibility: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0.8", - maxVersion: "0.9" - }] -}; - -// Addon from the future - would be marked as compatibile-by-default, -// but minVersion is higher than the app version -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "1.0", - name: "Test 5", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "3", - maxVersion: "5" - }] -}; - -// Extremely old addon - maxVersion is less than the mimimum compat version -// set in extensions.minCompatibleVersion -var addon6 = { - id: "addon6@tests.mozilla.org", - version: "1.0", - name: "Test 6", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0.1", - maxVersion: "0.2" - }] -}; - -// Dictionary - incompatible in strict compatibility mode -var addon7= { - id: "addon7@tests.mozilla.org", - version: "1.0", - name: "Test 7", - type: "64", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0.8", - maxVersion: "0.9" - }] -}; - - - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - - -function do_check_compat_status(aStrict, aAddonCompat, aCallback) { - do_check_eq(AddonManager.strictCompatibility, aStrict); - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org"], - function([a1, a2, a3, a4, a5, a6, a7]) { - do_check_neq(a1, null); - do_check_eq(a1.isCompatible, aAddonCompat[0]); - do_check_eq(a1.appDisabled, !aAddonCompat[0]); - do_check_false(a1.strictCompatibility); - - do_check_neq(a2, null); - do_check_eq(a2.isCompatible, aAddonCompat[1]); - do_check_eq(a2.appDisabled, !aAddonCompat[1]); - do_check_false(a2.strictCompatibility); - - do_check_neq(a3, null); - do_check_eq(a3.isCompatible, aAddonCompat[2]); - do_check_eq(a3.appDisabled, !aAddonCompat[2]); - do_check_true(a3.strictCompatibility); - - do_check_neq(a4, null); - do_check_eq(a4.isCompatible, aAddonCompat[3]); - do_check_eq(a4.appDisabled, !aAddonCompat[3]); - do_check_true(a4.strictCompatibility); - - do_check_neq(a5, null); - do_check_eq(a5.isCompatible, aAddonCompat[4]); - do_check_eq(a5.appDisabled, !aAddonCompat[4]); - do_check_false(a5.strictCompatibility); - - do_check_neq(a6, null); - do_check_eq(a6.isCompatible, aAddonCompat[5]); - do_check_eq(a6.appDisabled, !aAddonCompat[5]); - do_check_false(a6.strictCompatibility); - - do_check_neq(a7, null); - do_check_eq(a7.isCompatible, aAddonCompat[6]); - do_check_eq(a7.appDisabled, !aAddonCompat[6]); - do_check_false(a7.strictCompatibility); - - do_execute_soon(aCallback); - }); -} - - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - writeInstallRDFForExtension(addon6, profileDir); - writeInstallRDFForExtension(addon7, profileDir); - - Services.prefs.setCharPref(PREF_EM_MIN_COMPAT_APP_VERSION, "0.1"); - - startupManager(); - - // Should default to enabling strict compat. - do_check_compat_status(true, [true, false, false, false, false, false, false], run_test_1); -} - -function run_test_1() { - do_print("Test 1"); - Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); - do_check_compat_status(false, [true, true, false, false, false, true, true], run_test_2); -} - -function run_test_2() { - do_print("Test 2"); - restartManager(); - do_check_compat_status(false, [true, true, false, false, false, true, true], run_test_3); -} - -function run_test_3() { - do_print("Test 3"); - Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true); - do_check_compat_status(true, [true, false, false, false, false, false, false], run_test_4); -} - -function run_test_4() { - do_print("Test 4"); - restartManager(); - do_check_compat_status(true, [true, false, false, false, false, false, false], run_test_5); -} - -function run_test_5() { - do_print("Test 5"); - Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); - Services.prefs.setCharPref(PREF_EM_MIN_COMPAT_APP_VERSION, "0.4"); - do_check_compat_status(false, [true, true, false, false, false, false, true], do_test_finished); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_switch_os.js b/toolkit/mozapps/webextensions/test/xpcshell/test_switch_os.js deleted file mode 100644 index 552d7cfae..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_switch_os.js +++ /dev/null @@ -1,52 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -Components.utils.import("resource://gre/modules/AppConstants.jsm"); - -const ID = "bootstrap1@tests.mozilla.org"; - -BootstrapMonitor.init(); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -add_task(function*() { - startupManager(); - - let install = yield new Promise(resolve => AddonManager.getInstallForFile(do_get_addon("test_bootstrap1_1"), resolve)); - yield promiseCompleteAllInstalls([install]); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - - BootstrapMonitor.checkAddonStarted(ID); - do_check_false(addon.userDisabled); - do_check_true(addon.isActive); - - yield promiseShutdownManager(); - - BootstrapMonitor.checkAddonNotStarted(ID); - - let jData = loadJSON(gExtensionsJSON); - - for (let addonInstance of jData.addons) { - if (addonInstance.id == ID) { - // Set to something that would be an invalid descriptor for this platform - addonInstance.descriptor = AppConstants.platform == "win" ? "/foo/bar" : "C:\\foo\\bar"; - } - } - - saveJSON(jData, gExtensionsJSON); - - startupManager(); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - - BootstrapMonitor.checkAddonStarted(ID); - do_check_false(addon.userDisabled); - do_check_true(addon.isActive); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_syncGUID.js b/toolkit/mozapps/webextensions/test/xpcshell/test_syncGUID.js deleted file mode 100644 index 385f58405..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_syncGUID.js +++ /dev/null @@ -1,156 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -Components.utils.import("resource://gre/modules/Services.jsm"); - -// restartManager() mucks with XPIProvider.jsm importing, so we hack around. -this.__defineGetter__("XPIProvider", function () { - let scope = {}; - return Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", scope) - .XPIProvider; -}); - -const addonId = "addon1@tests.mozilla.org"; - -function run_test() { - Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9"); - startupManager(); - - run_next_test(); -} - -const UUID_PATTERN = /^\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}$/i; - -add_test(function test_getter_and_setter() { - // Our test add-on requires a restart. - let listener = { - onInstallEnded: function onInstallEnded() { - AddonManager.removeInstallListener(listener); - // never restart directly inside an onInstallEnded handler! - do_execute_soon(function getter_setter_install_ended() { - restartManager(); - - AddonManager.getAddonByID(addonId, function(addon) { - - do_check_neq(addon, null); - do_check_neq(addon.syncGUID, null); - do_check_true(UUID_PATTERN.test(addon.syncGUID)); - - let oldGUID = addon.SyncGUID; - let newGUID = "foo"; - - addon.syncGUID = newGUID; - do_check_eq(newGUID, addon.syncGUID); - - // Verify change made it to DB. - AddonManager.getAddonByID(addonId, function(newAddon) { - do_check_neq(newAddon, null); - do_check_eq(newGUID, newAddon.syncGUID); - }); - - run_next_test(); - }); - }); - } - }; - - AddonManager.addInstallListener(listener); - - AddonManager.getInstallForFile(do_get_addon("test_install1"), - function(install) { - install.install(); - }); -}); - -add_test(function test_fetch_by_guid_unknown_guid() { - XPIProvider.getAddonBySyncGUID("XXXX", function(addon) { - do_check_eq(null, addon); - run_next_test(); - }); -}); - -// Ensure setting an extension to an existing syncGUID results in error. -add_test(function test_error_on_duplicate_syncguid_insert() { - const installNames = ["test_install1", "test_install2_1"]; - const installIDs = ["addon1@tests.mozilla.org", "addon2@tests.mozilla.org"]; - - let installCount = 0; - - let listener = { - onInstallEnded: function onInstallEnded() { - installCount++; - - if (installCount == installNames.length) { - AddonManager.removeInstallListener(listener); - do_execute_soon(function duplicate_syncguid_install_ended() { - restartManager(); - - AddonManager.getAddonsByIDs(installIDs, callback_soon(function(addons) { - let initialGUID = addons[1].syncGUID; - - try { - addons[1].syncGUID = addons[0].syncGUID; - do_throw("Should not get here."); - } - catch (e) { - do_check_true(e.message.startsWith("Addon sync GUID conflict")); - restartManager(); - - AddonManager.getAddonByID(installIDs[1], function(addon) { - do_check_eq(initialGUID, addon.syncGUID); - run_next_test(); - }); - } - })); - }); - } - } - }; - - AddonManager.addInstallListener(listener); - let getInstallCB = function(install) { install.install(); }; - - for (let name of installNames) { - AddonManager.getInstallForFile(do_get_addon(name), getInstallCB); - } -}); - -add_test(function test_fetch_by_guid_known_guid() { - AddonManager.getAddonByID(addonId, function(addon) { - do_check_neq(null, addon); - do_check_neq(null, addon.syncGUID); - - let syncGUID = addon.syncGUID; - - XPIProvider.getAddonBySyncGUID(syncGUID, function(newAddon) { - do_check_neq(null, newAddon); - do_check_eq(syncGUID, newAddon.syncGUID); - - run_next_test(); - }); - }); -}); - -add_test(function test_addon_manager_get_by_sync_guid() { - AddonManager.getAddonByID(addonId, function(addon) { - do_check_neq(null, addon.syncGUID); - - let syncGUID = addon.syncGUID; - - AddonManager.getAddonBySyncGUID(syncGUID, function(newAddon) { - do_check_neq(null, newAddon); - do_check_eq(addon.id, newAddon.id); - do_check_eq(syncGUID, newAddon.syncGUID); - - AddonManager.getAddonBySyncGUID("DOES_NOT_EXIST", function(missing) { - do_check_eq(undefined, missing); - - run_next_test(); - }); - }); - }); -}); - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_system_delay_update.js b/toolkit/mozapps/webextensions/test/xpcshell/test_system_delay_update.js deleted file mode 100644 index 35964c663..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_system_delay_update.js +++ /dev/null @@ -1,461 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that delaying a system add-on update works. - -Components.utils.import("resource://testing-common/httpd.js"); -const profileDir = gProfD.clone(); -profileDir.append("extensions"); -const tempdir = gTmpD.clone(); - -const PREF_SYSTEM_ADDON_SET = "extensions.systemAddonSet"; -const PREF_SYSTEM_ADDON_UPDATE_URL = "extensions.systemAddon.update.url"; - -const IGNORE_ID = "system_delay_ignore@tests.mozilla.org"; -const COMPLETE_ID = "system_delay_complete@tests.mozilla.org"; -const DEFER_ID = "system_delay_defer@tests.mozilla.org"; -const DEFER_ALSO_ID = "system_delay_defer_also@tests.mozilla.org"; -const NORMAL_ID = "system1@tests.mozilla.org"; - - -const TEST_IGNORE_PREF = "delaytest.ignore"; - -const distroDir = FileUtils.getDir("ProfD", ["sysfeatures"], true); -registerDirectory("XREAppFeat", distroDir); - -let testserver = new HttpServer(); -testserver.registerDirectory("/data/", do_get_file("data/system_addons")); -testserver.start(); -let root = `${testserver.identity.primaryScheme}://${testserver.identity.primaryHost}:${testserver.identity.primaryPort}/data/`; -Services.prefs.setCharPref(PREF_SYSTEM_ADDON_UPDATE_URL, root + "update.xml"); - - -// Note that we would normally use BootstrapMonitor but it currently requires -// the objects in `data` to be serializable, and we need a real reference to the -// `instanceID` symbol to test. - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42"); - -function promiseInstallPostponed(addonID1, addonID2) { - return new Promise((resolve, reject) => { - let seen = []; - let listener = { - onInstallFailed: () => { - AddonManager.removeInstallListener(listener); - reject("extension installation should not have failed"); - }, - onInstallEnded: (install) => { - AddonManager.removeInstallListener(listener); - reject(`extension installation should not have ended for ${install.addon.id}`); - }, - onInstallPostponed: (install) => { - seen.push(install.addon.id); - if (seen.includes(addonID1) && seen.includes(addonID2)) { - AddonManager.removeInstallListener(listener); - resolve(); - } - } - }; - - AddonManager.addInstallListener(listener); - }); -} - -function promiseInstallResumed(addonID1, addonID2) { - return new Promise((resolve, reject) => { - let seenPostponed = []; - let seenEnded = []; - let listener = { - onInstallFailed: () => { - AddonManager.removeInstallListener(listener); - reject("extension installation should not have failed"); - }, - onInstallEnded: (install) => { - seenEnded.push(install.addon.id); - if ((seenEnded.includes(addonID1) && seenEnded.includes(addonID2)) && - (seenPostponed.includes(addonID1) && seenPostponed.includes(addonID2))) { - AddonManager.removeInstallListener(listener); - resolve(); - } - }, - onInstallPostponed: (install) => { - seenPostponed.push(install.addon.id); - } - }; - - AddonManager.addInstallListener(listener); - }); -} - -function promiseInstallDeferred(addonID1, addonID2) { - return new Promise((resolve, reject) => { - let seenEnded = []; - let listener = { - onInstallFailed: () => { - AddonManager.removeInstallListener(listener); - reject("extension installation should not have failed"); - }, - onInstallEnded: (install) => { - seenEnded.push(install.addon.id); - if (seenEnded.includes(addonID1) && seenEnded.includes(addonID2)) { - AddonManager.removeInstallListener(listener); - resolve(); - } - }, - onInstallPostponed: (install) => { - AddonManager.removeInstallListener(listener); - reject(`extension installation should not have been postponed for ${install.addon.id}`); - } - }; - - AddonManager.addInstallListener(listener); - }); -} - - -// add-on registers upgrade listener, and ignores update. -add_task(function*() { - // discard system addon updates - Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, ""); - - do_get_file("data/system_addons/system_delay_ignore.xpi").copyTo(distroDir, "system_delay_ignore@tests.mozilla.org.xpi"); - do_get_file("data/system_addons/system1_1.xpi").copyTo(distroDir, "system1@tests.mozilla.org.xpi"); - - startupManager(); - let updateList = [ - { id: IGNORE_ID, version: "2.0", path: "system_delay_ignore_2.xpi" }, - { id: NORMAL_ID, version: "2.0", path: "system1_2.xpi" }, - ]; - - let postponed = promiseInstallPostponed(IGNORE_ID, NORMAL_ID); - yield installSystemAddons(yield buildSystemAddonUpdates(updateList, root), testserver); - yield postponed; - - // addon upgrade has been delayed. - let addon_postponed = yield promiseAddonByID(IGNORE_ID, NORMAL_ID); - do_check_neq(addon_postponed, null); - do_check_eq(addon_postponed.version, "1.0"); - do_check_eq(addon_postponed.name, "System Test Delay Update Ignore"); - do_check_true(addon_postponed.isCompatible); - do_check_false(addon_postponed.appDisabled); - do_check_true(addon_postponed.isActive); - do_check_eq(addon_postponed.type, "extension"); - do_check_true(Services.prefs.getBoolPref(TEST_IGNORE_PREF)); - - // other addons in the set are delayed as well. - addon_postponed = yield promiseAddonByID(NORMAL_ID); - do_check_neq(addon_postponed, null); - do_check_eq(addon_postponed.version, "1.0"); - do_check_eq(addon_postponed.name, "System Add-on 1"); - do_check_true(addon_postponed.isCompatible); - do_check_false(addon_postponed.appDisabled); - do_check_true(addon_postponed.isActive); - do_check_eq(addon_postponed.type, "extension"); - - // restarting allows upgrades to proceed - yield promiseRestartManager(); - - let addon_upgraded = yield promiseAddonByID(IGNORE_ID); - do_check_neq(addon_upgraded, null); - do_check_eq(addon_upgraded.version, "2.0"); - do_check_eq(addon_upgraded.name, "System Test Delay Update Ignore"); - do_check_true(addon_upgraded.isCompatible); - do_check_false(addon_upgraded.appDisabled); - do_check_true(addon_upgraded.isActive); - do_check_eq(addon_upgraded.type, "extension"); - - addon_upgraded = yield promiseAddonByID(NORMAL_ID); - do_check_neq(addon_upgraded, null); - do_check_eq(addon_upgraded.version, "2.0"); - do_check_eq(addon_upgraded.name, "System Add-on 1"); - do_check_true(addon_upgraded.isCompatible); - do_check_false(addon_upgraded.appDisabled); - do_check_true(addon_upgraded.isActive); - do_check_eq(addon_upgraded.type, "extension"); - - yield shutdownManager(); -}); - -// add-on registers upgrade listener, and allows update. -add_task(function*() { - // discard system addon updates - Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, ""); - - do_get_file("data/system_addons/system_delay_complete.xpi").copyTo(distroDir, "system_delay_complete@tests.mozilla.org.xpi"); - do_get_file("data/system_addons/system1_1.xpi").copyTo(distroDir, "system1@tests.mozilla.org.xpi"); - - startupManager(); - - let updateList = [ - { id: COMPLETE_ID, version: "2.0", path: "system_delay_complete_2.xpi" }, - { id: NORMAL_ID, version: "2.0", path: "system1_2.xpi" }, - ]; - - // initial state - let addon_allowed = yield promiseAddonByID(COMPLETE_ID); - do_check_neq(addon_allowed, null); - do_check_eq(addon_allowed.version, "1.0"); - do_check_eq(addon_allowed.name, "System Test Delay Update Complete"); - do_check_true(addon_allowed.isCompatible); - do_check_false(addon_allowed.appDisabled); - do_check_true(addon_allowed.isActive); - do_check_eq(addon_allowed.type, "extension"); - - addon_allowed = yield promiseAddonByID(NORMAL_ID); - do_check_neq(addon_allowed, null); - do_check_eq(addon_allowed.version, "1.0"); - do_check_eq(addon_allowed.name, "System Add-on 1"); - do_check_true(addon_allowed.isCompatible); - do_check_false(addon_allowed.appDisabled); - do_check_true(addon_allowed.isActive); - do_check_eq(addon_allowed.type, "extension"); - - let resumed = promiseInstallResumed(COMPLETE_ID, NORMAL_ID); - yield installSystemAddons(yield buildSystemAddonUpdates(updateList, root), testserver); - - // update is initially postponed, then resumed - yield resumed; - - // addon upgrade has been allowed - addon_allowed = yield promiseAddonByID(COMPLETE_ID); - do_check_neq(addon_allowed, null); - do_check_eq(addon_allowed.version, "2.0"); - do_check_eq(addon_allowed.name, "System Test Delay Update Complete"); - do_check_true(addon_allowed.isCompatible); - do_check_false(addon_allowed.appDisabled); - do_check_true(addon_allowed.isActive); - do_check_eq(addon_allowed.type, "extension"); - - // other upgrades in the set are allowed as well - addon_allowed = yield promiseAddonByID(NORMAL_ID); - do_check_neq(addon_allowed, null); - do_check_eq(addon_allowed.version, "2.0"); - do_check_eq(addon_allowed.name, "System Add-on 1"); - do_check_true(addon_allowed.isCompatible); - do_check_false(addon_allowed.appDisabled); - do_check_true(addon_allowed.isActive); - do_check_eq(addon_allowed.type, "extension"); - - // restarting changes nothing - yield promiseRestartManager(); - - let addon_upgraded = yield promiseAddonByID(COMPLETE_ID); - do_check_neq(addon_upgraded, null); - do_check_eq(addon_upgraded.version, "2.0"); - do_check_eq(addon_upgraded.name, "System Test Delay Update Complete"); - do_check_true(addon_upgraded.isCompatible); - do_check_false(addon_upgraded.appDisabled); - do_check_true(addon_upgraded.isActive); - do_check_eq(addon_upgraded.type, "extension"); - - addon_upgraded = yield promiseAddonByID(NORMAL_ID); - do_check_neq(addon_upgraded, null); - do_check_eq(addon_upgraded.version, "2.0"); - do_check_eq(addon_upgraded.name, "System Add-on 1"); - do_check_true(addon_upgraded.isCompatible); - do_check_false(addon_upgraded.appDisabled); - do_check_true(addon_upgraded.isActive); - do_check_eq(addon_upgraded.type, "extension"); - - yield shutdownManager(); -}); - -// add-on registers upgrade listener, initially defers update then allows upgrade -add_task(function*() { - // discard system addon updates - Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, ""); - - do_get_file("data/system_addons/system_delay_defer.xpi").copyTo(distroDir, "system_delay_defer@tests.mozilla.org.xpi"); - do_get_file("data/system_addons/system1_1.xpi").copyTo(distroDir, "system1@tests.mozilla.org.xpi"); - - startupManager(); - - let updateList = [ - { id: DEFER_ID, version: "2.0", path: "system_delay_defer_2.xpi" }, - { id: NORMAL_ID, version: "2.0", path: "system1_2.xpi" }, - ]; - - let postponed = promiseInstallPostponed(DEFER_ID, NORMAL_ID); - yield installSystemAddons(yield buildSystemAddonUpdates(updateList, root), testserver); - yield postponed; - - // upgrade is initially postponed - let addon_postponed = yield promiseAddonByID(DEFER_ID); - do_check_neq(addon_postponed, null); - do_check_eq(addon_postponed.version, "1.0"); - do_check_eq(addon_postponed.name, "System Test Delay Update Defer"); - do_check_true(addon_postponed.isCompatible); - do_check_false(addon_postponed.appDisabled); - do_check_true(addon_postponed.isActive); - do_check_eq(addon_postponed.type, "extension"); - - // other addons in the set are postponed as well. - addon_postponed = yield promiseAddonByID(NORMAL_ID); - do_check_neq(addon_postponed, null); - do_check_eq(addon_postponed.version, "1.0"); - do_check_eq(addon_postponed.name, "System Add-on 1"); - do_check_true(addon_postponed.isCompatible); - do_check_false(addon_postponed.appDisabled); - do_check_true(addon_postponed.isActive); - do_check_eq(addon_postponed.type, "extension"); - - let deferred = promiseInstallDeferred(DEFER_ID, NORMAL_ID); - // add-on will not allow upgrade until fake event fires - AddonManagerPrivate.callAddonListeners("onFakeEvent"); - - yield deferred; - - // addon upgrade has been allowed - let addon_allowed = yield promiseAddonByID(DEFER_ID); - do_check_neq(addon_allowed, null); - do_check_eq(addon_allowed.version, "2.0"); - do_check_eq(addon_allowed.name, "System Test Delay Update Defer"); - do_check_true(addon_allowed.isCompatible); - do_check_false(addon_allowed.appDisabled); - do_check_true(addon_allowed.isActive); - do_check_eq(addon_allowed.type, "extension"); - - // other addons in the set are allowed as well. - addon_allowed = yield promiseAddonByID(NORMAL_ID); - do_check_neq(addon_allowed, null); - do_check_eq(addon_allowed.version, "2.0"); - do_check_eq(addon_allowed.name, "System Add-on 1"); - do_check_true(addon_allowed.isCompatible); - do_check_false(addon_allowed.appDisabled); - do_check_true(addon_allowed.isActive); - do_check_eq(addon_allowed.type, "extension"); - - // restarting changes nothing - yield promiseRestartManager(); - - let addon_upgraded = yield promiseAddonByID(DEFER_ID); - do_check_neq(addon_upgraded, null); - do_check_eq(addon_upgraded.version, "2.0"); - do_check_eq(addon_upgraded.name, "System Test Delay Update Defer"); - do_check_true(addon_upgraded.isCompatible); - do_check_false(addon_upgraded.appDisabled); - do_check_true(addon_upgraded.isActive); - do_check_eq(addon_upgraded.type, "extension"); - - addon_upgraded = yield promiseAddonByID(NORMAL_ID); - do_check_neq(addon_upgraded, null); - do_check_eq(addon_upgraded.version, "2.0"); - do_check_eq(addon_upgraded.name, "System Add-on 1"); - do_check_true(addon_upgraded.isCompatible); - do_check_false(addon_upgraded.appDisabled); - do_check_true(addon_upgraded.isActive); - do_check_eq(addon_upgraded.type, "extension"); - - yield shutdownManager(); -}); - -// multiple add-ons registers upgrade listeners, initially defers then each unblock in turn. -add_task(function*() { - // discard system addon updates. - Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, ""); - - do_get_file("data/system_addons/system_delay_defer.xpi").copyTo(distroDir, "system_delay_defer@tests.mozilla.org.xpi"); - do_get_file("data/system_addons/system_delay_defer_also.xpi").copyTo(distroDir, "system_delay_defer_also@tests.mozilla.org.xpi"); - - startupManager(); - - let updateList = [ - { id: DEFER_ID, version: "2.0", path: "system_delay_defer_2.xpi" }, - { id: DEFER_ALSO_ID, version: "2.0", path: "system_delay_defer_also_2.xpi" }, - ]; - - let postponed = promiseInstallPostponed(DEFER_ID, DEFER_ALSO_ID); - yield installSystemAddons(yield buildSystemAddonUpdates(updateList, root), testserver); - yield postponed; - - // upgrade is initially postponed - let addon_postponed = yield promiseAddonByID(DEFER_ID); - do_check_neq(addon_postponed, null); - do_check_eq(addon_postponed.version, "1.0"); - do_check_eq(addon_postponed.name, "System Test Delay Update Defer"); - do_check_true(addon_postponed.isCompatible); - do_check_false(addon_postponed.appDisabled); - do_check_true(addon_postponed.isActive); - do_check_eq(addon_postponed.type, "extension"); - - // other addons in the set are postponed as well. - addon_postponed = yield promiseAddonByID(DEFER_ALSO_ID); - do_check_neq(addon_postponed, null); - do_check_eq(addon_postponed.version, "1.0"); - do_check_eq(addon_postponed.name, "System Test Delay Update Defer Also"); - do_check_true(addon_postponed.isCompatible); - do_check_false(addon_postponed.appDisabled); - do_check_true(addon_postponed.isActive); - do_check_eq(addon_postponed.type, "extension"); - - let deferred = promiseInstallDeferred(DEFER_ID, DEFER_ALSO_ID); - // add-on will not allow upgrade until fake event fires - AddonManagerPrivate.callAddonListeners("onFakeEvent"); - - // Upgrade blockers still present. - addon_postponed = yield promiseAddonByID(DEFER_ID); - do_check_neq(addon_postponed, null); - do_check_eq(addon_postponed.version, "1.0"); - do_check_eq(addon_postponed.name, "System Test Delay Update Defer"); - do_check_true(addon_postponed.isCompatible); - do_check_false(addon_postponed.appDisabled); - do_check_true(addon_postponed.isActive); - do_check_eq(addon_postponed.type, "extension"); - - addon_postponed = yield promiseAddonByID(DEFER_ALSO_ID); - do_check_neq(addon_postponed, null); - do_check_eq(addon_postponed.version, "1.0"); - do_check_eq(addon_postponed.name, "System Test Delay Update Defer Also"); - do_check_true(addon_postponed.isCompatible); - do_check_false(addon_postponed.appDisabled); - do_check_true(addon_postponed.isActive); - do_check_eq(addon_postponed.type, "extension"); - - AddonManagerPrivate.callAddonListeners("onOtherFakeEvent"); - - yield deferred; - - // addon upgrade has been allowed - let addon_allowed = yield promiseAddonByID(DEFER_ID); - do_check_neq(addon_allowed, null); - do_check_eq(addon_allowed.version, "2.0"); - do_check_eq(addon_allowed.name, "System Test Delay Update Defer"); - do_check_true(addon_allowed.isCompatible); - do_check_false(addon_allowed.appDisabled); - do_check_true(addon_allowed.isActive); - do_check_eq(addon_allowed.type, "extension"); - - // other addons in the set are allowed as well. - addon_allowed = yield promiseAddonByID(DEFER_ALSO_ID); - do_check_neq(addon_allowed, null); - // do_check_eq(addon_allowed.version, "2.0"); - do_check_eq(addon_allowed.name, "System Test Delay Update Defer Also"); - do_check_true(addon_allowed.isCompatible); - do_check_false(addon_allowed.appDisabled); - do_check_true(addon_allowed.isActive); - do_check_eq(addon_allowed.type, "extension"); - - // restarting changes nothing - yield promiseRestartManager(); - - let addon_upgraded = yield promiseAddonByID(DEFER_ID); - do_check_neq(addon_upgraded, null); - do_check_eq(addon_upgraded.version, "2.0"); - do_check_eq(addon_upgraded.name, "System Test Delay Update Defer"); - do_check_true(addon_upgraded.isCompatible); - do_check_false(addon_upgraded.appDisabled); - do_check_true(addon_upgraded.isActive); - do_check_eq(addon_upgraded.type, "extension"); - - addon_upgraded = yield promiseAddonByID(DEFER_ALSO_ID); - do_check_neq(addon_upgraded, null); - do_check_eq(addon_upgraded.version, "2.0"); - do_check_eq(addon_upgraded.name, "System Test Delay Update Defer Also"); - do_check_true(addon_upgraded.isCompatible); - do_check_false(addon_upgraded.appDisabled); - do_check_true(addon_upgraded.isActive); - do_check_eq(addon_upgraded.type, "extension"); - - yield shutdownManager(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_system_reset.js b/toolkit/mozapps/webextensions/test/xpcshell/test_system_reset.js deleted file mode 100644 index 31b7e5783..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_system_reset.js +++ /dev/null @@ -1,418 +0,0 @@ -// Tests that we reset to the default system add-ons correctly when switching -// application versions -const PREF_SYSTEM_ADDON_SET = "extensions.systemAddonSet"; - -BootstrapMonitor.init(); - -const updatesDir = FileUtils.getDir("ProfD", ["features"]); - -// Build the test sets -var dir = FileUtils.getDir("ProfD", ["sysfeatures", "app1"], true); -do_get_file("data/system_addons/system1_1.xpi").copyTo(dir, "system1@tests.mozilla.org.xpi"); -do_get_file("data/system_addons/system2_1.xpi").copyTo(dir, "system2@tests.mozilla.org.xpi"); - -dir = FileUtils.getDir("ProfD", ["sysfeatures", "app2"], true); -do_get_file("data/system_addons/system1_2.xpi").copyTo(dir, "system1@tests.mozilla.org.xpi"); -do_get_file("data/system_addons/system3_1.xpi").copyTo(dir, "system3@tests.mozilla.org.xpi"); - -dir = FileUtils.getDir("ProfD", ["sysfeatures", "app3"], true); -do_get_file("data/system_addons/system1_1_badcert.xpi").copyTo(dir, "system1@tests.mozilla.org.xpi"); -do_get_file("data/system_addons/system3_1.xpi").copyTo(dir, "system3@tests.mozilla.org.xpi"); - -const distroDir = FileUtils.getDir("ProfD", ["sysfeatures", "app0"], true); -registerDirectory("XREAppFeat", distroDir); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "0"); - -function makeUUID() { - let uuidGen = AM_Cc["@mozilla.org/uuid-generator;1"]. - getService(AM_Ci.nsIUUIDGenerator); - return uuidGen.generateUUID().toString(); -} - -function* check_installed(conditions) { - for (let i = 0; i < conditions.length; i++) { - let condition = conditions[i]; - let id = "system" + (i + 1) + "@tests.mozilla.org"; - let addon = yield promiseAddonByID(id); - - if (!("isUpgrade" in condition) || !("version" in condition)) { - throw Error("condition must contain isUpgrade and version"); - } - let isUpgrade = conditions[i].isUpgrade; - let version = conditions[i].version; - - let expectedDir = isUpgrade ? updatesDir : distroDir; - - if (version) { - // Add-on should be installed - do_check_neq(addon, null); - do_check_eq(addon.version, version); - do_check_true(addon.isActive); - do_check_false(addon.foreignInstall); - do_check_true(addon.hidden); - do_check_true(addon.isSystem); - do_check_false(hasFlag(addon.permissions, AddonManager.PERM_CAN_UPGRADE)); - if (isUpgrade) { - do_check_true(hasFlag(addon.permissions, AddonManager.PERM_CAN_UNINSTALL)); - } else { - do_check_false(hasFlag(addon.permissions, AddonManager.PERM_CAN_UNINSTALL)); - } - - // Verify the add-ons file is in the right place - let file = expectedDir.clone(); - file.append(id + ".xpi"); - do_check_true(file.exists()); - do_check_true(file.isFile()); - - let uri = addon.getResourceURI(null); - do_check_true(uri instanceof AM_Ci.nsIFileURL); - do_check_eq(uri.file.path, file.path); - - if (isUpgrade) { - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_SYSTEM); - } - - // Verify the add-on actually started - BootstrapMonitor.checkAddonStarted(id, version); - } - else { - if (isUpgrade) { - // Add-on should not be installed - do_check_eq(addon, null); - } - else { - // Either add-on should not be installed or it shouldn't be active - do_check_true(!addon || !addon.isActive); - } - - BootstrapMonitor.checkAddonNotStarted(id); - - if (addon) - BootstrapMonitor.checkAddonInstalled(id); - else - BootstrapMonitor.checkAddonNotInstalled(id); - } - } -} - -// Test with a missing features directory -add_task(function* test_missing_app_dir() { - startupManager(); - - let conditions = [ - { isUpgrade: false, version: null }, - { isUpgrade: false, version: null }, - { isUpgrade: false, version: null }, - ]; - - yield check_installed(conditions); - - do_check_false(updatesDir.exists()); - - yield promiseShutdownManager(); -}); - -// Add some features in a new version -add_task(function* test_new_version() { - gAppInfo.version = "1"; - distroDir.leafName = "app1"; - startupManager(); - - let conditions = [ - { isUpgrade: false, version: "1.0" }, - { isUpgrade: false, version: "1.0" }, - { isUpgrade: false, version: null }, - ]; - - yield check_installed(conditions); - - do_check_false(updatesDir.exists()); - - yield promiseShutdownManager(); -}); - -// Another new version swaps one feature and upgrades another -add_task(function* test_upgrade() { - gAppInfo.version = "2"; - distroDir.leafName = "app2"; - startupManager(); - - let conditions = [ - { isUpgrade: false, version: "2.0" }, - { isUpgrade: false, version: null }, - { isUpgrade: false, version: "1.0" }, - ]; - - yield check_installed(conditions); - - do_check_false(updatesDir.exists()); - - yield promiseShutdownManager(); -}); - -// Downgrade -add_task(function* test_downgrade() { - gAppInfo.version = "1"; - distroDir.leafName = "app1"; - startupManager(); - - let conditions = [ - { isUpgrade: false, version: "1.0" }, - { isUpgrade: false, version: "1.0" }, - { isUpgrade: false, version: null }, - ]; - - yield check_installed(conditions); - - do_check_false(updatesDir.exists()); - - yield promiseShutdownManager(); -}); - -// Fake a mid-cycle install -add_task(function* test_updated() { - // Create a random dir to install into - let dirname = makeUUID(); - FileUtils.getDir("ProfD", ["features", dirname], true); - updatesDir.append(dirname); - - // Copy in the system add-ons - let file = do_get_file("data/system_addons/system2_2.xpi"); - file.copyTo(updatesDir, "system2@tests.mozilla.org.xpi"); - file = do_get_file("data/system_addons/system3_2.xpi"); - file.copyTo(updatesDir, "system3@tests.mozilla.org.xpi"); - - // Inject it into the system set - let addonSet = { - schema: 1, - directory: updatesDir.leafName, - addons: { - "system2@tests.mozilla.org": { - version: "2.0" - }, - "system3@tests.mozilla.org": { - version: "2.0" - }, - } - }; - Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, JSON.stringify(addonSet)); - - startupManager(false); - - let conditions = [ - { isUpgrade: false, version: "1.0" }, - { isUpgrade: true, version: "2.0" }, - { isUpgrade: true, version: "2.0" }, - ]; - - yield check_installed(conditions); - - yield promiseShutdownManager(); -}); - -// Entering safe mode should disable the updated system add-ons and use the -// default system add-ons -add_task(function* safe_mode_disabled() { - gAppInfo.inSafeMode = true; - startupManager(false); - - let conditions = [ - { isUpgrade: false, version: "1.0" }, - { isUpgrade: false, version: "1.0" }, - { isUpgrade: false, version: null }, - ]; - - yield check_installed(conditions); - - yield promiseShutdownManager(); -}); - -// Leaving safe mode should re-enable the updated system add-ons -add_task(function* normal_mode_enabled() { - gAppInfo.inSafeMode = false; - startupManager(false); - - let conditions = [ - { isUpgrade: false, version: "1.0" }, - { isUpgrade: true, version: "2.0" }, - { isUpgrade: true, version: "2.0" }, - ]; - - yield check_installed(conditions); - - yield promiseShutdownManager(); -}); - -// An additional add-on in the directory should be ignored -add_task(function* test_skips_additional() { - // Copy in the system add-ons - let file = do_get_file("data/system_addons/system4_1.xpi"); - file.copyTo(updatesDir, "system4@tests.mozilla.org.xpi"); - - startupManager(false); - - let conditions = [ - { isUpgrade: false, version: "1.0" }, - { isUpgrade: true, version: "2.0" }, - { isUpgrade: true, version: "2.0" }, - ]; - - yield check_installed(conditions); - - yield promiseShutdownManager(); -}); - -// Missing add-on should revert to the default set -add_task(function* test_revert() { - manuallyUninstall(updatesDir, "system2@tests.mozilla.org"); - - // With the add-on physically gone from disk we won't see uninstall events - BootstrapMonitor.clear("system2@tests.mozilla.org"); - - startupManager(false); - - // With system add-on 2 gone the updated set is now invalid so it reverts to - // the default set which is system add-ons 1 and 2. - let conditions = [ - { isUpgrade: false, version: "1.0" }, - { isUpgrade: false, version: "1.0" }, - { isUpgrade: false, version: null }, - ]; - - yield check_installed(conditions); - - yield promiseShutdownManager(); -}); - -// Putting it back will make the set work again -add_task(function* test_reuse() { - let file = do_get_file("data/system_addons/system2_2.xpi"); - file.copyTo(updatesDir, "system2@tests.mozilla.org.xpi"); - - startupManager(false); - - let conditions = [ - { isUpgrade: false, version: "1.0" }, - { isUpgrade: true, version: "2.0" }, - { isUpgrade: true, version: "2.0" }, - ]; - - yield check_installed(conditions); - - yield promiseShutdownManager(); -}); - -// Making the pref corrupt should revert to the default set -add_task(function* test_corrupt_pref() { - Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, "foo"); - - startupManager(false); - - let conditions = [ - { isUpgrade: false, version: "1.0" }, - { isUpgrade: false, version: "1.0" }, - { isUpgrade: false, version: null }, - ]; - - yield check_installed(conditions); - - yield promiseShutdownManager(); -}); - -// An add-on with a bad certificate should cause us to use the default set -add_task(function* test_bad_profile_cert() { - let file = do_get_file("data/system_addons/system1_1_badcert.xpi"); - file.copyTo(updatesDir, "system1@tests.mozilla.org.xpi"); - - // Inject it into the system set - let addonSet = { - schema: 1, - directory: updatesDir.leafName, - addons: { - "system1@tests.mozilla.org": { - version: "2.0" - }, - "system2@tests.mozilla.org": { - version: "1.0" - }, - "system3@tests.mozilla.org": { - version: "1.0" - }, - } - }; - Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, JSON.stringify(addonSet)); - - startupManager(false); - - let conditions = [ - { isUpgrade: false, version: "1.0" }, - { isUpgrade: false, version: "1.0" }, - { isUpgrade: false, version: null }, - ]; - - yield check_installed(conditions); - - yield promiseShutdownManager(); -}); - -// Switching to app defaults that contain a bad certificate should still work -add_task(function* test_bad_app_cert() { - gAppInfo.version = "3"; - distroDir.leafName = "app3"; - startupManager(); - - // Add-on will still be present - let addon = yield promiseAddonByID("system1@tests.mozilla.org"); - do_check_neq(addon, null); - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - let conditions = [ - { isUpgrade: false, version: "1.0" }, - { isUpgrade: false, version: null }, - { isUpgrade: false, version: "1.0" }, - ]; - - yield check_installed(conditions); - - yield promiseShutdownManager(); -}); - -// A failed upgrade should revert to the default set. -add_task(function* test_updated() { - // Create a random dir to install into - let dirname = makeUUID(); - FileUtils.getDir("ProfD", ["features", dirname], true); - updatesDir.append(dirname); - - // Copy in the system add-ons - let file = do_get_file("data/system_addons/system2_2.xpi"); - file.copyTo(updatesDir, "system2@tests.mozilla.org.xpi"); - file = do_get_file("data/system_addons/system_failed_update.xpi"); - file.copyTo(updatesDir, "system_failed_update@tests.mozilla.org.xpi"); - - // Inject it into the system set - let addonSet = { - schema: 1, - directory: updatesDir.leafName, - addons: { - "system2@tests.mozilla.org": { - version: "2.0" - }, - "system_failed_update@tests.mozilla.org": { - version: "1.0" - }, - } - }; - Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, JSON.stringify(addonSet)); - - startupManager(false); - - let conditions = [ - { isUpgrade: false, version: "1.0" }, - ]; - - yield check_installed(conditions); - - yield promiseShutdownManager(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_system_update.js b/toolkit/mozapps/webextensions/test/xpcshell/test_system_update.js deleted file mode 100644 index c8e314427..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_system_update.js +++ /dev/null @@ -1,788 +0,0 @@ -// Tests that we reset to the default system add-ons correctly when switching -// application versions -const PREF_SYSTEM_ADDON_SET = "extensions.systemAddonSet"; -const PREF_SYSTEM_ADDON_UPDATE_URL = "extensions.systemAddon.update.url"; -const PREF_XPI_STATE = "extensions.xpiState"; -const PREF_APP_UPDATE_ENABLED = "app.update.enabled"; - -Components.utils.import("resource://testing-common/httpd.js"); -const { computeHash } = Components.utils.import("resource://gre/modules/addons/ProductAddonChecker.jsm"); - -BootstrapMonitor.init(); - -const updatesDir = FileUtils.getDir("ProfD", ["features"], false); - -function getCurrentUpdatesDir() { - let dir = updatesDir.clone(); - let set = JSON.parse(Services.prefs.getCharPref(PREF_SYSTEM_ADDON_SET)); - dir.append(set.directory); - return dir; -} - -function clearUpdatesDir() { - // Delete any existing directories - if (updatesDir.exists()) - updatesDir.remove(true); - - Services.prefs.clearUserPref(PREF_SYSTEM_ADDON_SET); -} - -function buildPrefilledUpdatesDir() { - clearUpdatesDir(); - - // Build the test set - let dir = FileUtils.getDir("ProfD", ["features", "prefilled"], true); - - do_get_file("data/system_addons/system2_2.xpi").copyTo(dir, "system2@tests.mozilla.org.xpi"); - do_get_file("data/system_addons/system3_2.xpi").copyTo(dir, "system3@tests.mozilla.org.xpi"); - - // Mark these in the past so the startup file scan notices when files have changed properly - FileUtils.getFile("ProfD", ["features", "prefilled", "system2@tests.mozilla.org.xpi"]).lastModifiedTime -= 10000; - FileUtils.getFile("ProfD", ["features", "prefilled", "system3@tests.mozilla.org.xpi"]).lastModifiedTime -= 10000; - - Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, JSON.stringify({ - schema: 1, - directory: dir.leafName, - addons: { - "system2@tests.mozilla.org": { - version: "2.0" - }, - "system3@tests.mozilla.org": { - version: "2.0" - }, - } - })); -} - -let dir = FileUtils.getDir("ProfD", ["sysfeatures", "hidden"], true); -do_get_file("data/system_addons/system1_1.xpi").copyTo(dir, "system1@tests.mozilla.org.xpi"); -do_get_file("data/system_addons/system2_1.xpi").copyTo(dir, "system2@tests.mozilla.org.xpi"); - -dir = FileUtils.getDir("ProfD", ["sysfeatures", "prefilled"], true); -do_get_file("data/system_addons/system2_2.xpi").copyTo(dir, "system2@tests.mozilla.org.xpi"); -do_get_file("data/system_addons/system3_2.xpi").copyTo(dir, "system3@tests.mozilla.org.xpi"); - -const distroDir = FileUtils.getDir("ProfD", ["sysfeatures", "empty"], true); -registerDirectory("XREAppFeat", distroDir); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2"); - -var testserver = new HttpServer(); -testserver.registerDirectory("/data/", do_get_file("data/system_addons")); -testserver.start(); -var root = testserver.identity.primaryScheme + "://" + - testserver.identity.primaryHost + ":" + - testserver.identity.primaryPort + "/data/" -Services.prefs.setCharPref(PREF_SYSTEM_ADDON_UPDATE_URL, root + "update.xml"); - -function makeUUID() { - let uuidGen = AM_Cc["@mozilla.org/uuid-generator;1"]. - getService(AM_Ci.nsIUUIDGenerator); - return uuidGen.generateUUID().toString(); -} - -function* check_installed(conditions) { - for (let i = 0; i < conditions.length; i++) { - let condition = conditions[i]; - let id = "system" + (i + 1) + "@tests.mozilla.org"; - let addon = yield promiseAddonByID(id); - - if (!("isUpgrade" in condition) || !("version" in condition)) { - throw Error("condition must contain isUpgrade and version"); - } - let isUpgrade = conditions[i].isUpgrade; - let version = conditions[i].version; - - let expectedDir = isUpgrade ? getCurrentUpdatesDir() : distroDir; - - if (version) { - do_print(`Checking state of add-on ${id}, expecting version ${version}`); - - // Add-on should be installed - do_check_neq(addon, null); - do_check_eq(addon.version, version); - do_check_true(addon.isActive); - do_check_false(addon.foreignInstall); - do_check_true(addon.hidden); - do_check_true(addon.isSystem); - - // Verify the add-ons file is in the right place - let file = expectedDir.clone(); - file.append(id + ".xpi"); - do_check_true(file.exists()); - do_check_true(file.isFile()); - - let uri = addon.getResourceURI(null); - do_check_true(uri instanceof AM_Ci.nsIFileURL); - do_check_eq(uri.file.path, file.path); - - if (isUpgrade) { - do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_SYSTEM); - } - - // Verify the add-on actually started - BootstrapMonitor.checkAddonStarted(id, version); - } - else { - do_print(`Checking state of add-on ${id}, expecting it to be missing`); - - if (isUpgrade) { - // Add-on should not be installed - do_check_eq(addon, null); - } - - BootstrapMonitor.checkAddonNotStarted(id); - - if (addon) - BootstrapMonitor.checkAddonInstalled(id); - else - BootstrapMonitor.checkAddonNotInstalled(id); - } - } -} - - -/** - * Defines the set of initial conditions to run each test against. Each should - * define the following properties: - * - * setup: A task to setup the profile into the initial state. - * initialState: The initial expected system add-on state after setup has run. - */ -const TEST_CONDITIONS = { - // Runs tests with no updated or default system add-ons initially installed - blank: { - setup: function*() { - clearUpdatesDir(); - distroDir.leafName = "empty"; - }, - initialState: [ - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null} - ], - }, - // Runs tests with default system add-ons installed - withAppSet: { - setup: function*() { - clearUpdatesDir(); - distroDir.leafName = "prefilled"; - }, - initialState: [ - { isUpgrade: false, version: null}, - { isUpgrade: false, version: "2.0"}, - { isUpgrade: false, version: "2.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null} - ] - }, - - // Runs tests with updated system add-ons installed - withProfileSet: { - setup: function*() { - buildPrefilledUpdatesDir(); - distroDir.leafName = "empty"; - }, - initialState: [ - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "2.0"}, - { isUpgrade: true, version: "2.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null} - ] - }, - - // Runs tests with both default and updated system add-ons installed - withBothSets: { - setup: function*() { - buildPrefilledUpdatesDir(); - distroDir.leafName = "hidden"; - }, - initialState: [ - { isUpgrade: false, version: "1.0"}, - { isUpgrade: true, version: "2.0"}, - { isUpgrade: true, version: "2.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null} - ] - }, -}; - - -/** - * The tests to run. Each test must define an updateList or test. The following - * properties are used: - * - * updateList: The set of add-ons the server should respond with. - * test: A function to run to perform the update check (replaces - * updateList) - * fails: An optional property, if true the update check is expected to - * fail. - * finalState: An optional property, the expected final state of system add-ons, - * if missing the test condition's initialState is used. - */ -const TESTS = { - // Test that a blank response does nothing - blank: { - updateList: null, - }, - - // Test that an empty list removes existing updates, leaving defaults. - empty: { - updateList: [], - finalState: { - blank: [ - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null} - ], - withAppSet: [ - { isUpgrade: false, version: null}, - { isUpgrade: false, version: "2.0"}, - { isUpgrade: false, version: "2.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null} - ], - withProfileSet: [ - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null} - ], - withBothSets: [ - { isUpgrade: false, version: "1.0"}, - { isUpgrade: false, version: "1.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - // Set this to `true` to so `verify_state()` expects a blank profile dir - { isUpgrade: true, version: null} - ] - }, - }, - // Tests that a new set of system add-ons gets installed - newset: { - updateList: [ - { id: "system4@tests.mozilla.org", version: "1.0", path: "system4_1.xpi" }, - { id: "system5@tests.mozilla.org", version: "1.0", path: "system5_1.xpi" } - ], - finalState: { - blank: [ - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "1.0"}, - { isUpgrade: true, version: "1.0"} - ], - withAppSet: [ - { isUpgrade: false, version: null}, - { isUpgrade: false, version: "2.0"}, - { isUpgrade: false, version: "2.0"}, - { isUpgrade: true, version: "1.0"}, - { isUpgrade: true, version: "1.0"} - ], - withProfileSet: [ - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "1.0"}, - { isUpgrade: true, version: "1.0"} - ], - withBothSets: [ - { isUpgrade: false, version: "1.0"}, - { isUpgrade: false, version: "1.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "1.0"}, - { isUpgrade: true, version: "1.0"} - ] - } - }, - - // Tests that an upgraded set of system add-ons gets installed - upgrades: { - updateList: [ - { id: "system2@tests.mozilla.org", version: "3.0", path: "system2_3.xpi" }, - { id: "system3@tests.mozilla.org", version: "3.0", path: "system3_3.xpi" } - ], - finalState: { - blank: [ - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null} - ], - withAppSet: [ - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null} - ], - withProfileSet: [ - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null} - ], - withBothSets: [ - { isUpgrade: false, version: "1.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: false, version: null} - ] - } - }, - - // Tests that a set of system add-ons, some new, some existing gets installed - overlapping: { - updateList: [ - { id: "system1@tests.mozilla.org", version: "2.0", path: "system1_2.xpi" }, - { id: "system2@tests.mozilla.org", version: "2.0", path: "system2_2.xpi" }, - { id: "system3@tests.mozilla.org", version: "3.0", path: "system3_3.xpi" }, - { id: "system4@tests.mozilla.org", version: "1.0", path: "system4_1.xpi" } - ], - finalState: { - blank: [ - { isUpgrade: true, version: "2.0"}, - { isUpgrade: true, version: "2.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: true, version: "1.0"}, - { isUpgrade: false, version: null} - ], - withAppSet: [ - { isUpgrade: true, version: "2.0"}, - { isUpgrade: true, version: "2.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: true, version: "1.0"}, - { isUpgrade: false, version: null} - ], - withProfileSet: [ - { isUpgrade: true, version: "2.0"}, - { isUpgrade: true, version: "2.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: true, version: "1.0"}, - { isUpgrade: false, version: null} - ], - withBothSets: [ - { isUpgrade: true, version: "2.0"}, - { isUpgrade: true, version: "2.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: true, version: "1.0"}, - { isUpgrade: false, version: null} - ] - } - }, - - // Specifying an incorrect version should stop us updating anything - badVersion: { - fails: true, - updateList: [ - { id: "system2@tests.mozilla.org", version: "4.0", path: "system2_3.xpi" }, - { id: "system3@tests.mozilla.org", version: "3.0", path: "system3_3.xpi" } - ], - }, - - // Specifying an invalid size should stop us updating anything - badSize: { - fails: true, - updateList: [ - { id: "system2@tests.mozilla.org", version: "3.0", path: "system2_3.xpi", size: 2 }, - { id: "system3@tests.mozilla.org", version: "3.0", path: "system3_3.xpi" } - ], - }, - - // Specifying an incorrect hash should stop us updating anything - badHash: { - fails: true, - updateList: [ - { id: "system2@tests.mozilla.org", version: "3.0", path: "system2_3.xpi" }, - { id: "system3@tests.mozilla.org", version: "3.0", path: "system3_3.xpi", hashFunction: "sha1", hashValue: "205a4c49bd513ebd30594e380c19e86bba1f83e2" } - ], - }, - - // Correct sizes and hashes should work - checkSizeHash: { - updateList: [ - { id: "system2@tests.mozilla.org", version: "3.0", path: "system2_3.xpi", size: 4697 }, - { id: "system3@tests.mozilla.org", version: "3.0", path: "system3_3.xpi", hashFunction: "sha1", hashValue: "a4c7198d56deb315511c02937fd96c696de6cb84" }, - { id: "system5@tests.mozilla.org", version: "1.0", path: "system5_1.xpi", size: 4691, hashFunction: "sha1", hashValue: "6887b916a1a9a5338b0df4181f6187f5396861eb" } - ], - finalState: { - blank: [ - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "1.0"} - ], - withAppSet: [ - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "1.0"} - ], - withProfileSet: [ - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "1.0"} - ], - withBothSets: [ - { isUpgrade: false, version: "1.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: true, version: "3.0"}, - { isUpgrade: false, version: null}, - { isUpgrade: true, version: "1.0"} - ] - } - }, - - // A bad certificate should stop updates - badCert: { - fails: true, - updateList: [ - { id: "system1@tests.mozilla.org", version: "1.0", path: "system1_1_badcert.xpi" }, - { id: "system3@tests.mozilla.org", version: "1.0", path: "system3_1.xpi" } - ], - }, - - // An unpacked add-on should stop updates. - notPacked: { - fails: true, - updateList: [ - { id: "system6@tests.mozilla.org", version: "1.0", path: "system6_1_unpack.xpi" }, - { id: "system3@tests.mozilla.org", version: "1.0", path: "system3_1.xpi" } - ], - }, - - // A non-bootstrap add-on should stop updates. - notBootstrap: { - fails: true, - updateList: [ - { id: "system6@tests.mozilla.org", version: "1.0", path: "system6_2_notBootstrap.xpi" }, - { id: "system3@tests.mozilla.org", version: "1.0", path: "system3_1.xpi" } - ], - }, - - // A non-multiprocess add-on should stop updates. - notMultiprocess: { - fails: true, - updateList: [ - { id: "system6@tests.mozilla.org", version: "1.0", path: "system6_3_notMultiprocess.xpi" }, - { id: "system3@tests.mozilla.org", version: "1.0", path: "system3_1.xpi" } - ], - } -} - -add_task(function* setup() { - // Initialise the profile - startupManager(); - yield promiseShutdownManager(); -}) - -function* get_directories() { - let subdirs = []; - - if (yield OS.File.exists(updatesDir.path)) { - let iterator = new OS.File.DirectoryIterator(updatesDir.path); - yield iterator.forEach(entry => { - if (entry.isDir) { - subdirs.push(entry); - } - }); - iterator.close(); - } - - return subdirs; -} - -function* setup_conditions(setup) { - do_print("Clearing existing database."); - Services.prefs.clearUserPref(PREF_SYSTEM_ADDON_SET); - distroDir.leafName = "empty"; - startupManager(false); - yield promiseShutdownManager(); - - do_print("Setting up conditions."); - yield setup.setup(); - - startupManager(false); - - // Make sure the initial state is correct - do_print("Checking initial state."); - yield check_installed(setup.initialState); -} - -function* verify_state(initialState, finalState = undefined, alreadyUpgraded = false) { - let expectedDirs = 0; - - // If the initial state was using the profile set then that directory will - // still exist. - - if (initialState.some(a => a.isUpgrade)) { - expectedDirs++; - } - - if (finalState == undefined) { - finalState = initialState; - } - else if (finalState.some(a => a.isUpgrade)) { - // If the new state is using the profile then that directory will exist. - expectedDirs++; - } - - // Since upgrades are restartless now, the previous update dir hasn't been removed. - if (alreadyUpgraded) { - expectedDirs++; - } - - do_print("Checking final state."); - - let dirs = yield get_directories(); - do_check_eq(dirs.length, expectedDirs); - - yield check_installed(...finalState); - - // Check that the new state is active after a restart - yield promiseRestartManager(); - yield check_installed(finalState); -} - -function* exec_test(setupName, testName) { - let setup = TEST_CONDITIONS[setupName]; - let test = TESTS[testName]; - - yield setup_conditions(setup); - - try { - if ("test" in test) { - yield test.test(); - } - else { - yield installSystemAddons(yield buildSystemAddonUpdates(test.updateList, root), testserver); - } - - if (test.fails) { - do_throw("Expected this test to fail"); - } - } - catch (e) { - if (!test.fails) { - do_throw(e); - } - } - - // some tests have a different expected combination of default - // and updated add-ons. - if (test.finalState && setupName in test.finalState) { - yield verify_state(setup.initialState, test.finalState[setupName]); - } - else { - yield verify_state(setup.initialState, test.finalState); - } - - yield promiseShutdownManager(); -} - -add_task(function*() { - for (let setup of Object.keys(TEST_CONDITIONS)) { - for (let test of Object.keys(TESTS)) { - do_print("Running test " + setup + " " + test); - - yield exec_test(setup, test); - } - } -}); - -// Some custom tests -// Test that the update check is performed as part of the regular add-on update -// check -add_task(function* test_addon_update() { - yield setup_conditions(TEST_CONDITIONS.blank); - - yield updateAllSystemAddons(yield buildSystemAddonUpdates([ - { id: "system2@tests.mozilla.org", version: "2.0", path: "system2_2.xpi" }, - { id: "system3@tests.mozilla.org", version: "2.0", path: "system3_2.xpi" } - ], root), testserver); - - yield verify_state(TEST_CONDITIONS.blank.initialState, [ - {isUpgrade: false, version: null}, - {isUpgrade: true, version: "2.0"}, - {isUpgrade: true, version: "2.0"}, - {isUpgrade: false, version: null}, - {isUpgrade: false, version: null} - ]); - - yield promiseShutdownManager(); -}); - -// Disabling app updates should block system add-on updates -add_task(function* test_app_update_disabled() { - yield setup_conditions(TEST_CONDITIONS.blank); - - Services.prefs.setBoolPref(PREF_APP_UPDATE_ENABLED, false); - yield updateAllSystemAddons(yield buildSystemAddonUpdates([ - { id: "system2@tests.mozilla.org", version: "2.0", path: "system2_2.xpi" }, - { id: "system3@tests.mozilla.org", version: "2.0", path: "system3_2.xpi" } - ], root), testserver); - Services.prefs.clearUserPref(PREF_APP_UPDATE_ENABLED); - - yield verify_state(TEST_CONDITIONS.blank.initialState); - - yield promiseShutdownManager(); -}); - -// Safe mode should block system add-on updates -add_task(function* test_safe_mode() { - gAppInfo.inSafeMode = true; - - yield setup_conditions(TEST_CONDITIONS.blank); - - Services.prefs.setBoolPref(PREF_APP_UPDATE_ENABLED, false); - yield updateAllSystemAddons(yield buildSystemAddonUpdates([ - { id: "system2@tests.mozilla.org", version: "2.0", path: "system2_2.xpi" }, - { id: "system3@tests.mozilla.org", version: "2.0", path: "system3_2.xpi" } - ], root), testserver); - Services.prefs.clearUserPref(PREF_APP_UPDATE_ENABLED); - - yield verify_state(TEST_CONDITIONS.blank.initialState); - - yield promiseShutdownManager(); - - gAppInfo.inSafeMode = false; -}); - -// Tests that a set that matches the default set does nothing -add_task(function* test_match_default() { - yield setup_conditions(TEST_CONDITIONS.withAppSet); - - yield installSystemAddons(yield buildSystemAddonUpdates([ - { id: "system2@tests.mozilla.org", version: "2.0", path: "system2_2.xpi" }, - { id: "system3@tests.mozilla.org", version: "2.0", path: "system3_2.xpi" } - ], root), testserver); - - // Shouldn't have installed an updated set - yield verify_state(TEST_CONDITIONS.withAppSet.initialState); - - yield promiseShutdownManager(); -}); - -// Tests that a set that matches the hidden default set works -add_task(function* test_match_default_revert() { - yield setup_conditions(TEST_CONDITIONS.withBothSets); - - yield installSystemAddons(yield buildSystemAddonUpdates([ - { id: "system1@tests.mozilla.org", version: "1.0", path: "system1_1.xpi" }, - { id: "system2@tests.mozilla.org", version: "1.0", path: "system2_1.xpi" } - ], root), testserver); - - // This should revert to the default set instead of installing new versions - // into an updated set. - yield verify_state(TEST_CONDITIONS.withBothSets.initialState, [ - {isUpgrade: false, version: "1.0"}, - {isUpgrade: false, version: "1.0"}, - {isUpgrade: false, version: null}, - {isUpgrade: false, version: null}, - {isUpgrade: false, version: null} - ]); - - yield promiseShutdownManager(); -}); - -// Tests that a set that matches the current set works -add_task(function* test_match_current() { - yield setup_conditions(TEST_CONDITIONS.withBothSets); - - yield installSystemAddons(yield buildSystemAddonUpdates([ - { id: "system2@tests.mozilla.org", version: "2.0", path: "system2_2.xpi" }, - { id: "system3@tests.mozilla.org", version: "2.0", path: "system3_2.xpi" } - ], root), testserver); - - // This should remain with the current set instead of creating a new copy - let set = JSON.parse(Services.prefs.getCharPref(PREF_SYSTEM_ADDON_SET)); - do_check_eq(set.directory, "prefilled"); - - yield verify_state(TEST_CONDITIONS.withBothSets.initialState); - - yield promiseShutdownManager(); -}); - -// Tests that a set with a minor change doesn't re-download existing files -add_task(function* test_no_download() { - yield setup_conditions(TEST_CONDITIONS.withBothSets); - - // The missing file here is unneeded since there is a local version already - yield installSystemAddons(yield buildSystemAddonUpdates([ - { id: "system2@tests.mozilla.org", version: "2.0", path: "missing.xpi" }, - { id: "system4@tests.mozilla.org", version: "1.0", path: "system4_1.xpi" } - ], root), testserver); - - yield verify_state(TEST_CONDITIONS.withBothSets.initialState, [ - {isUpgrade: false, version: "1.0"}, - {isUpgrade: true, version: "2.0"}, - {isUpgrade: false, version: null}, - {isUpgrade: true, version: "1.0"}, - {isUpgrade: false, version: null} - ]); - - yield promiseShutdownManager(); -}); - -// Tests that a second update before a restart works -add_task(function* test_double_update() { - yield setup_conditions(TEST_CONDITIONS.withAppSet); - - yield installSystemAddons(yield buildSystemAddonUpdates([ - { id: "system2@tests.mozilla.org", version: "2.0", path: "system2_2.xpi" }, - { id: "system3@tests.mozilla.org", version: "1.0", path: "system3_1.xpi" } - ], root), testserver); - - yield installSystemAddons(yield buildSystemAddonUpdates([ - { id: "system3@tests.mozilla.org", version: "2.0", path: "system3_2.xpi" }, - { id: "system4@tests.mozilla.org", version: "1.0", path: "system4_1.xpi" } - ], root), testserver); - - yield verify_state(TEST_CONDITIONS.withAppSet.initialState, [ - {isUpgrade: false, version: null}, - {isUpgrade: false, version: "2.0"}, - {isUpgrade: true, version: "2.0"}, - {isUpgrade: true, version: "1.0"}, - {isUpgrade: false, version: null} - ], true); - - yield promiseShutdownManager(); -}); - -// A second update after a restart will delete the original unused set -add_task(function* test_update_purges() { - yield setup_conditions(TEST_CONDITIONS.withBothSets); - - yield installSystemAddons(yield buildSystemAddonUpdates([ - { id: "system2@tests.mozilla.org", version: "2.0", path: "system2_2.xpi" }, - { id: "system3@tests.mozilla.org", version: "1.0", path: "system3_1.xpi" } - ], root), testserver); - - yield verify_state(TEST_CONDITIONS.withBothSets.initialState, [ - {isUpgrade: false, version: "1.0"}, - {isUpgrade: true, version: "2.0"}, - {isUpgrade: true, version: "1.0"}, - {isUpgrade: false, version: null}, - {isUpgrade: false, version: null} - ]); - - yield installSystemAddons(yield buildSystemAddonUpdates(null), testserver); - - let dirs = yield get_directories(); - do_check_eq(dirs.length, 1); - - yield promiseShutdownManager(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_targetPlatforms.js b/toolkit/mozapps/webextensions/test/xpcshell/test_targetPlatforms.js deleted file mode 100644 index ef4f2aee5..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_targetPlatforms.js +++ /dev/null @@ -1,146 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that the targetPlatform entries are checked when deciding -// if an add-on is incompatible. - -// No targetPlatforms so should be compatible -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Matches the OS -var addon2 = { - id: "addon2@tests.mozilla.org", - version: "1.0", - name: "Test 2", - targetPlatforms: [ - "XPCShell", - "WINNT_x86", - "XPCShell" - ], - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Matches the OS and ABI -var addon3 = { - id: "addon3@tests.mozilla.org", - version: "1.0", - name: "Test 3", - targetPlatforms: [ - "WINNT", - "XPCShell_noarch-spidermonkey" - ], - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Doesn't match -var addon4 = { - id: "addon4@tests.mozilla.org", - version: "1.0", - name: "Test 4", - targetPlatforms: [ - "WINNT_noarch-spidermonkey", - "Darwin", - "WINNT_noarch-spidermonkey" - ], - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -// Matches the OS but since a different entry specifies ABI this doesn't match. -var addon5 = { - id: "addon5@tests.mozilla.org", - version: "1.0", - name: "Test 5", - targetPlatforms: [ - "XPCShell", - "XPCShell_foo" - ], - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// Set up the profile -function run_test() { - do_test_pending(); - - writeInstallRDFForExtension(addon1, profileDir); - writeInstallRDFForExtension(addon2, profileDir); - writeInstallRDFForExtension(addon3, profileDir); - writeInstallRDFForExtension(addon4, profileDir); - writeInstallRDFForExtension(addon5, profileDir); - - restartManager(); - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org"], - function([a1, a2, a3, a4, a5]) { - - do_check_neq(a1, null); - do_check_false(a1.appDisabled); - do_check_true(a1.isPlatformCompatible); - do_check_true(a1.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_in_crash_annotation(addon1.id, addon1.version); - - do_check_neq(a2, null); - do_check_false(a2.appDisabled); - do_check_true(a2.isPlatformCompatible); - do_check_true(a2.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - do_check_in_crash_annotation(addon2.id, addon2.version); - - do_check_neq(a3, null); - do_check_false(a3.appDisabled); - do_check_true(a3.isPlatformCompatible); - do_check_true(a3.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - do_check_in_crash_annotation(addon3.id, addon3.version); - - do_check_neq(a4, null); - do_check_true(a4.appDisabled); - do_check_false(a4.isPlatformCompatible); - do_check_false(a4.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - do_check_not_in_crash_annotation(addon4.id, addon4.version); - - do_check_neq(a5, null); - do_check_true(a5.appDisabled); - do_check_false(a5.isPlatformCompatible); - do_check_false(a5.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a5.id)); - do_check_not_in_crash_annotation(addon5.id, addon5.version); - - do_execute_soon(do_test_finished); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_temporary.js b/toolkit/mozapps/webextensions/test/xpcshell/test_temporary.js deleted file mode 100644 index ec9e25a0b..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_temporary.js +++ /dev/null @@ -1,760 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const ID = "bootstrap1@tests.mozilla.org"; -const sampleRDFManifest = { - id: ID, - version: "1.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Bootstrap 1 (temporary)", -}; - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42"); -startupManager(); - -const {Management} = Components.utils.import("resource://gre/modules/Extension.jsm", {}); - -function promiseAddonStartup() { - return new Promise(resolve => { - let listener = (extension) => { - Management.off("startup", listener); - resolve(extension); - }; - - Management.on("startup", listener); - }); -} - -BootstrapMonitor.init(); - -// Partial list of bootstrap reasons from XPIProvider.jsm -const BOOTSTRAP_REASONS = { - ADDON_INSTALL: 5, - ADDON_UPGRADE: 7, - ADDON_DOWNGRADE: 8, -}; - -function waitForBootstrapEvent(expectedEvent, addonId) { - return new Promise(resolve => { - const observer = { - observe: (subject, topic, data) => { - const info = JSON.parse(data); - const targetAddonId = info.data.id; - if (targetAddonId === addonId && info.event === expectedEvent) { - resolve(info); - Services.obs.removeObserver(observer); - } else { - do_print( - `Ignoring bootstrap event: ${info.event} for ${targetAddonId}`); - } - }, - }; - Services.obs.addObserver(observer, "bootstrapmonitor-event", false); - }); -} - -// Install a temporary add-on with no existing add-on present. -// Restart and make sure it has gone away. -add_task(function*() { - let extInstallCalled = false; - AddonManager.addInstallListener({ - onExternalInstall: (aInstall) => { - do_check_eq(aInstall.id, ID); - do_check_eq(aInstall.version, "1.0"); - extInstallCalled = true; - }, - }); - - let installingCalled = false; - let installedCalled = false; - AddonManager.addAddonListener({ - onInstalling: (aInstall) => { - do_check_eq(aInstall.id, ID); - do_check_eq(aInstall.version, "1.0"); - installingCalled = true; - }, - onInstalled: (aInstall) => { - do_check_eq(aInstall.id, ID); - do_check_eq(aInstall.version, "1.0"); - installedCalled = true; - }, - onInstallStarted: (aInstall) => { - do_throw("onInstallStarted called unexpectedly"); - } - }); - - yield AddonManager.installTemporaryAddon(do_get_addon("test_bootstrap1_1")); - - do_check_true(extInstallCalled); - do_check_true(installingCalled); - do_check_true(installedCalled); - - const install = BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - equal(install.reason, BOOTSTRAP_REASONS.ADDON_INSTALL); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - let addon = yield promiseAddonByID(ID); - - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Bootstrap 1"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - yield promiseRestartManager(); - - BootstrapMonitor.checkAddonNotInstalled(ID); - BootstrapMonitor.checkAddonNotStarted(ID); - - addon = yield promiseAddonByID(ID); - do_check_eq(addon, null); - - yield promiseRestartManager(); -}); - -// Install a temporary add-on over the top of an existing add-on. -// Restart and make sure the existing add-on comes back. -add_task(function*() { - yield promiseInstallAllFiles([do_get_addon("test_bootstrap1_1")], true); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - let addon = yield promiseAddonByID(ID); - - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Bootstrap 1"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - let tempdir = gTmpD.clone(); - - // test that an unpacked add-on works too - writeInstallRDFToDir({ - id: ID, - version: "3.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Bootstrap 1 (temporary)", - }, tempdir, "bootstrap1@tests.mozilla.org", "bootstrap.js"); - - let unpacked_addon = tempdir.clone(); - unpacked_addon.append(ID); - do_get_file("data/test_temporary/bootstrap.js") - .copyTo(unpacked_addon, "bootstrap.js"); - - yield AddonManager.installTemporaryAddon(unpacked_addon); - - BootstrapMonitor.checkAddonInstalled(ID, "3.0"); - BootstrapMonitor.checkAddonStarted(ID, "3.0"); - - addon = yield promiseAddonByID(ID); - - // temporary add-on is installed and started - do_check_neq(addon, null); - do_check_eq(addon.version, "3.0"); - do_check_eq(addon.name, "Test Bootstrap 1 (temporary)"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - restartManager(); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - addon = yield promiseAddonByID(ID); - - // existing add-on is back - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Bootstrap 1"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - unpacked_addon.remove(true); - - // on Windows XPI files will be locked by the JAR cache, skip this test there. - if (!("nsIWindowsRegKey" in Components.interfaces)) { - // test that a packed (XPI) add-on works - writeInstallRDFToXPI({ - id: ID, - version: "2.0", - bootstrap: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Bootstrap 1 (temporary)", - }, tempdir, "bootstrap1@tests.mozilla.org"); - - let packed_addon = tempdir.clone(); - packed_addon.append(ID + ".xpi"); - - yield AddonManager.installTemporaryAddon(packed_addon); - - addon = yield promiseAddonByID(ID); - - // temporary add-on is installed and started - do_check_neq(addon, null); - do_check_eq(addon.version, "2.0"); - do_check_eq(addon.name, "Test Bootstrap 1 (temporary)"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - restartManager(); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - addon = yield promiseAddonByID(ID); - - // existing add-on is back - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Bootstrap 1"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - packed_addon.remove(false); - - // test that a webextension works - let webext = createTempWebExtensionFile({ - manifest: { - version: "4.0", - name: "Test WebExtension 1 (temporary)", - applications: { - gecko: { - id: ID - } - } - } - }); - - yield Promise.all([ - AddonManager.installTemporaryAddon(webext), - promiseAddonStartup(), - ]); - addon = yield promiseAddonByID(ID); - - // temporary add-on is installed and started - do_check_neq(addon, null); - do_check_eq(addon.version, "4.0"); - do_check_eq(addon.name, "Test WebExtension 1 (temporary)"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - // test that re-loading a webextension works, using the same filename - webext.remove(false); - webext = createTempWebExtensionFile({ - manifest: { - version: "5.0", - name: "Test WebExtension 1 (temporary)", - applications: { - gecko: { - id: ID - } - } - } - }); - - yield Promise.all([ - AddonManager.installTemporaryAddon(webext), - promiseAddonStartup(), - ]); - addon = yield promiseAddonByID(ID); - - // temporary add-on is installed and started - do_check_neq(addon, null); - do_check_eq(addon.version, "5.0"); - do_check_eq(addon.name, "Test WebExtension 1 (temporary)"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - restartManager(); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - addon = yield promiseAddonByID(ID); - - // existing add-on is back - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Bootstrap 1"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - } - - // remove original add-on - addon.uninstall(); - - BootstrapMonitor.checkAddonNotInstalled(ID); - BootstrapMonitor.checkAddonNotStarted(ID); - - yield promiseRestartManager(); -}); - -// Install a temporary add-on over the top of an existing add-on. -// Uninstall it and make sure the existing add-on comes back. -add_task(function*() { - yield promiseInstallAllFiles([do_get_addon("test_bootstrap1_1")], true); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - let tempdir = gTmpD.clone(); - writeInstallRDFToDir({ - id: ID, - version: "2.0", - bootstrap: true, - unpack: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Bootstrap 1 (temporary)", - }, tempdir); - - let unpacked_addon = tempdir.clone(); - unpacked_addon.append(ID); - - let extInstallCalled = false; - AddonManager.addInstallListener({ - onExternalInstall: (aInstall) => { - do_check_eq(aInstall.id, ID); - do_check_eq(aInstall.version, "2.0"); - extInstallCalled = true; - }, - }); - - let installingCalled = false; - let installedCalled = false; - AddonManager.addAddonListener({ - onInstalling: (aInstall) => { - do_check_eq(aInstall.id, ID); - if (!installingCalled) - do_check_eq(aInstall.version, "2.0"); - installingCalled = true; - }, - onInstalled: (aInstall) => { - do_check_eq(aInstall.id, ID); - if (!installedCalled) - do_check_eq(aInstall.version, "2.0"); - installedCalled = true; - }, - onInstallStarted: (aInstall) => { - do_throw("onInstallStarted called unexpectedly"); - } - }); - - yield AddonManager.installTemporaryAddon(unpacked_addon); - - do_check_true(extInstallCalled); - do_check_true(installingCalled); - do_check_true(installedCalled); - - let addon = yield promiseAddonByID(ID); - - BootstrapMonitor.checkAddonNotInstalled(ID); - BootstrapMonitor.checkAddonNotStarted(ID); - - // temporary add-on is installed and started - do_check_neq(addon, null); - do_check_eq(addon.version, "2.0"); - do_check_eq(addon.name, "Test Bootstrap 1 (temporary)"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - addon.uninstall(); - - addon = yield promiseAddonByID(ID); - - BootstrapMonitor.checkAddonInstalled(ID); - BootstrapMonitor.checkAddonStarted(ID); - - // existing add-on is back - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Bootstrap 1"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - unpacked_addon.remove(true); - addon.uninstall(); - - BootstrapMonitor.checkAddonNotInstalled(ID); - BootstrapMonitor.checkAddonNotStarted(ID); - - yield promiseRestartManager(); -}); - -// Install a temporary add-on as a version upgrade over the top of an -// existing temporary add-on. -add_task(function*() { - const tempdir = gTmpD.clone(); - - writeInstallRDFToDir(sampleRDFManifest, tempdir, - "bootstrap1@tests.mozilla.org", "bootstrap.js"); - - const unpackedAddon = tempdir.clone(); - unpackedAddon.append(ID); - do_get_file("data/test_temporary/bootstrap.js") - .copyTo(unpackedAddon, "bootstrap.js"); - - yield AddonManager.installTemporaryAddon(unpackedAddon); - - // Increment the version number, re-install it, and make sure it - // gets marked as an upgrade. - writeInstallRDFToDir(Object.assign({}, sampleRDFManifest, { - version: "2.0" - }), tempdir, "bootstrap1@tests.mozilla.org"); - - const onUninstall = waitForBootstrapEvent("uninstall", ID); - const onInstall = waitForBootstrapEvent("install", ID); - yield AddonManager.installTemporaryAddon(unpackedAddon); - - const uninstall = yield onUninstall; - equal(uninstall.data.version, "1.0"); - equal(uninstall.reason, BOOTSTRAP_REASONS.ADDON_UPGRADE); - - const install = yield onInstall; - equal(install.data.version, "2.0"); - equal(install.reason, BOOTSTRAP_REASONS.ADDON_UPGRADE); - - const addon = yield promiseAddonByID(ID); - addon.uninstall(); - - unpackedAddon.remove(true); - yield promiseRestartManager(); -}); - -// Install a temporary add-on as a version downgrade over the top of an -// existing temporary add-on. -add_task(function*() { - const tempdir = gTmpD.clone(); - - writeInstallRDFToDir(sampleRDFManifest, tempdir, - "bootstrap1@tests.mozilla.org", "bootstrap.js"); - - const unpackedAddon = tempdir.clone(); - unpackedAddon.append(ID); - do_get_file("data/test_temporary/bootstrap.js") - .copyTo(unpackedAddon, "bootstrap.js"); - - yield AddonManager.installTemporaryAddon(unpackedAddon); - - // Decrement the version number, re-install, and make sure - // it gets marked as a downgrade. - writeInstallRDFToDir(Object.assign({}, sampleRDFManifest, { - version: "0.8" - }), tempdir, "bootstrap1@tests.mozilla.org"); - - const onUninstall = waitForBootstrapEvent("uninstall", ID); - const onInstall = waitForBootstrapEvent("install", ID); - yield AddonManager.installTemporaryAddon(unpackedAddon); - - const uninstall = yield onUninstall; - equal(uninstall.data.version, "1.0"); - equal(uninstall.reason, BOOTSTRAP_REASONS.ADDON_DOWNGRADE); - - const install = yield onInstall; - equal(install.data.version, "0.8"); - equal(install.reason, BOOTSTRAP_REASONS.ADDON_DOWNGRADE); - - const addon = yield promiseAddonByID(ID); - addon.uninstall(); - - unpackedAddon.remove(true); - yield promiseRestartManager(); -}); - -// Installing a temporary add-on over an existing add-on with the same -// version number should be installed as an upgrade. -add_task(function*() { - const tempdir = gTmpD.clone(); - - writeInstallRDFToDir(sampleRDFManifest, tempdir, - "bootstrap1@tests.mozilla.org", "bootstrap.js"); - - const unpackedAddon = tempdir.clone(); - unpackedAddon.append(ID); - do_get_file("data/test_temporary/bootstrap.js") - .copyTo(unpackedAddon, "bootstrap.js"); - - const onInitialInstall = waitForBootstrapEvent("install", ID); - yield AddonManager.installTemporaryAddon(unpackedAddon); - - const initialInstall = yield onInitialInstall; - equal(initialInstall.data.version, "1.0"); - equal(initialInstall.reason, BOOTSTRAP_REASONS.ADDON_INSTALL); - - // Install it again. - const onUninstall = waitForBootstrapEvent("uninstall", ID); - const onInstall = waitForBootstrapEvent("install", ID); - yield AddonManager.installTemporaryAddon(unpackedAddon); - - const uninstall = yield onUninstall; - equal(uninstall.data.version, "1.0"); - equal(uninstall.reason, BOOTSTRAP_REASONS.ADDON_UPGRADE); - - const reInstall = yield onInstall; - equal(reInstall.data.version, "1.0"); - equal(reInstall.reason, BOOTSTRAP_REASONS.ADDON_UPGRADE); - - const addon = yield promiseAddonByID(ID); - addon.uninstall(); - - unpackedAddon.remove(true); - yield promiseRestartManager(); -}); - -// Install a temporary add-on over the top of an existing disabled add-on. -// After restart, the existing add-on should continue to be installed and disabled. -add_task(function*() { - yield promiseInstallAllFiles([do_get_addon("test_bootstrap1_1")], true); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - let addon = yield promiseAddonByID(ID); - - addon.userDisabled = true; - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID); - - let tempdir = gTmpD.clone(); - writeInstallRDFToDir({ - id: ID, - version: "2.0", - bootstrap: true, - unpack: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Bootstrap 1 (temporary)", - }, tempdir, "bootstrap1@tests.mozilla.org", "bootstrap.js"); - - let unpacked_addon = tempdir.clone(); - unpacked_addon.append(ID); - do_get_file("data/test_temporary/bootstrap.js") - .copyTo(unpacked_addon, "bootstrap.js"); - - let extInstallCalled = false; - AddonManager.addInstallListener({ - onExternalInstall: (aInstall) => { - do_check_eq(aInstall.id, ID); - do_check_eq(aInstall.version, "2.0"); - extInstallCalled = true; - }, - }); - - yield AddonManager.installTemporaryAddon(unpacked_addon); - - do_check_true(extInstallCalled); - - let tempAddon = yield promiseAddonByID(ID); - - BootstrapMonitor.checkAddonInstalled(ID, "2.0"); - BootstrapMonitor.checkAddonStarted(ID); - - // temporary add-on is installed and started - do_check_neq(tempAddon, null); - do_check_eq(tempAddon.version, "2.0"); - do_check_eq(tempAddon.name, "Test Bootstrap 1 (temporary)"); - do_check_true(tempAddon.isCompatible); - do_check_false(tempAddon.appDisabled); - do_check_true(tempAddon.isActive); - do_check_eq(tempAddon.type, "extension"); - do_check_eq(tempAddon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - tempAddon.uninstall(); - unpacked_addon.remove(true); - - addon.userDisabled = false; - addon = yield promiseAddonByID(ID); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID); - - // existing add-on is back - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Bootstrap 1"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - addon.uninstall(); - - BootstrapMonitor.checkAddonNotInstalled(ID); - BootstrapMonitor.checkAddonNotStarted(ID); - - yield promiseRestartManager(); -}); - -// Installing a temporary add-on over a non-restartless add-on should fail. -add_task(function*() { - yield promiseInstallAllFiles([do_get_addon("test_install1")], true); - - let non_restartless_ID = "addon1@tests.mozilla.org"; - - BootstrapMonitor.checkAddonNotInstalled(non_restartless_ID); - BootstrapMonitor.checkAddonNotStarted(non_restartless_ID); - - restartManager(); - - BootstrapMonitor.checkAddonNotInstalled(non_restartless_ID); - BootstrapMonitor.checkAddonNotStarted(non_restartless_ID); - - let addon = yield promiseAddonByID(non_restartless_ID); - - // non-restartless add-on is installed and started - do_check_neq(addon, null); - do_check_eq(addon.id, non_restartless_ID); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test 1"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - let tempdir = gTmpD.clone(); - writeInstallRDFToDir({ - id: non_restartless_ID, - version: "2.0", - bootstrap: true, - unpack: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test 1 (temporary)", - }, tempdir); - - let unpacked_addon = tempdir.clone(); - unpacked_addon.append(non_restartless_ID); - - try { - yield AddonManager.installTemporaryAddon(unpacked_addon); - do_throw("Installing over a non-restartless add-on should return" - + " a rejected promise"); - } catch (err) { - do_check_eq(err.message, - "Non-restartless add-on with ID addon1@tests.mozilla.org is" - + " already installed"); - } - - unpacked_addon.remove(true); - addon.uninstall(); - - BootstrapMonitor.checkAddonNotInstalled(ID); - BootstrapMonitor.checkAddonNotStarted(ID); - - yield promiseRestartManager(); -}); - -// Installing a temporary add-on when there is already a temporary -// add-on should fail. -add_task(function*() { - yield AddonManager.installTemporaryAddon(do_get_addon("test_bootstrap1_1")); - - let addon = yield promiseAddonByID(ID); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Test Bootstrap 1"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_eq(addon.type, "extension"); - do_check_false(addon.isWebExtension); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - yield AddonManager.installTemporaryAddon(do_get_addon("test_bootstrap1_1")); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - yield promiseRestartManager(); - - BootstrapMonitor.checkAddonNotInstalled(ID); - BootstrapMonitor.checkAddonNotStarted(ID); -}); - -// Check that a temporary add-on is marked as such. -add_task(function*() { - yield AddonManager.installTemporaryAddon(do_get_addon("test_bootstrap1_1")); - const addon = yield promiseAddonByID(ID); - - notEqual(addon, null); - equal(addon.temporarilyInstalled, true); - - yield promiseRestartManager(); -}); - -// Check that a permanent add-on is not marked as temporarily installed. -add_task(function*() { - yield promiseInstallAllFiles([do_get_addon("test_bootstrap1_1")], true); - const addon = yield promiseAddonByID(ID); - - notEqual(addon, null); - equal(addon.temporarilyInstalled, false); - - yield promiseRestartManager(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_theme.js b/toolkit/mozapps/webextensions/test/xpcshell/test_theme.js deleted file mode 100644 index 84d6f1d0d..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_theme.js +++ /dev/null @@ -1,1139 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -Components.utils.import("resource://gre/modules/NetUtil.jsm"); - -// The maximum allowable time since install. If an add-on claims to have been -// installed longer ago than this the the test will fail. -const MAX_INSTALL_TIME = 10000; - -// This verifies that themes behave as expected - -const PREF_GENERAL_SKINS_SELECTEDSKIN = "general.skins.selectedSkin"; - -Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// Observer to ensure a "lightweight-theme-styling-update" notification is sent -// when expected -var gLWThemeChanged = false; -var LightweightThemeObserver = { - observe: function(aSubject, aTopic, aData) { - if (aTopic != "lightweight-theme-styling-update") - return; - - gLWThemeChanged = true; - } -}; - -AM_Cc["@mozilla.org/observer-service;1"] - .getService(Components.interfaces.nsIObserverService) - .addObserver(LightweightThemeObserver, "lightweight-theme-styling-update", false); - - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - Services.prefs.setCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN, "theme1/1.0"); - writeInstallRDFForExtension({ - id: "theme1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - type: 4, - skinnable: true, - internalName: "theme1/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }, profileDir); - - writeInstallRDFForExtension({ - id: "theme2@tests.mozilla.org", - version: "1.0", - name: "Test 1", - skinnable: false, - internalName: "theme2/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }, profileDir); - - // We need a default theme for some of these things to work but we have hidden - // the one in the application directory. - writeInstallRDFForExtension({ - id: "default@tests.mozilla.org", - version: "1.0", - name: "Default", - internalName: "classic/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }, profileDir); - - startupManager(); - // Make sure we only register once despite multiple calls - AddonManager.addInstallListener(InstallListener); - AddonManager.addAddonListener(AddonListener); - AddonManager.addInstallListener(InstallListener); - AddonManager.addAddonListener(AddonListener); - AddonManager.addInstallListener(InstallListener); - - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], - function([d, t1, t2]) { - do_check_neq(d, null); - do_check_false(d.skinnable); - do_check_false(d.foreignInstall); - do_check_eq(d.signedState, undefined); - - do_check_neq(t1, null); - do_check_false(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.signedState, undefined); - do_check_true(t1.isActive); - do_check_true(t1.skinnable); - do_check_true(t1.foreignInstall); - do_check_eq(t1.screenshots, null); - do_check_true(isThemeInAddonsList(profileDir, t1.id)); - do_check_false(hasFlag(t1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(t1.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_eq(t1.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_UNINSTALL | - AddonManager.OP_NEEDS_RESTART_DISABLE); - - do_check_neq(t2, null); - do_check_true(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.signedState, undefined); - do_check_false(t2.isActive); - do_check_false(t2.skinnable); - do_check_true(t2.foreignInstall); - do_check_eq(t2.screenshots, null); - do_check_false(isThemeInAddonsList(profileDir, t2.id)); - do_check_false(hasFlag(t2.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(t2.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_eq(t2.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_ENABLE); - - do_execute_soon(run_test_1); - }); -} - -function end_test() { - do_execute_soon(do_test_finished); -} - -// Checks enabling one theme disables the others -function run_test_1() { - prepare_test({ - "theme1@tests.mozilla.org": [ - "onDisabling" - ], - "theme2@tests.mozilla.org": [ - "onEnabling" - ] - }); - AddonManager.getAddonsByIDs(["theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([t1, t2]) { - t2.userDisabled = false; - - ensure_test_completed(); - do_check_false(hasFlag(t2.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(t2.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_true(t1.userDisabled); - do_check_false(hasFlag(t1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(t1.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_execute_soon(check_test_1); - }); -} - -function check_test_1() { - restartManager(); - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "theme2/1.0"); - - AddonManager.getAddonsByIDs(["theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([t1, t2]) { - do_check_neq(t1, null); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_false(t1.isActive); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - do_check_false(hasFlag(t1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(t1.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_eq(t1.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_ENABLE); - - do_check_neq(t2, null); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_true(t2.isActive); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - do_check_false(hasFlag(t2.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_false(hasFlag(t2.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_eq(t2.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_UNINSTALL | - AddonManager.OP_NEEDS_RESTART_DISABLE); - do_check_false(gLWThemeChanged); - - do_execute_soon(run_test_2); - }); -} - -// Removing the active theme should fall back to the default (not ideal in this -// case since we don't have the default theme installed) -function run_test_2() { - var dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("theme2@tests.mozilla.org")); - dest.remove(true); - - restartManager(); - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - AddonManager.getAddonsByIDs(["theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([t1, t2]) { - do_check_neq(t1, null); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_false(t1.isActive); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - do_check_false(hasFlag(t1.permissions, AddonManager.PERM_CAN_DISABLE)); - do_check_true(hasFlag(t1.permissions, AddonManager.PERM_CAN_ENABLE)); - - do_check_eq(t2, null); - do_check_false(isThemeInAddonsList(profileDir, "theme2@tests.mozilla.org")); - do_check_false(gLWThemeChanged); - - do_execute_soon(run_test_3); - }); -} - -// Installing a lightweight theme should happen instantly and disable the default theme -function run_test_3() { - writeInstallRDFForExtension({ - id: "theme2@tests.mozilla.org", - version: "1.0", - name: "Test 1", - internalName: "theme2/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }, profileDir); - restartManager(); - - prepare_test({ - "1@personas.mozilla.org": [ - ["onInstalling", false], - "onInstalled", - ["onEnabling", false], - "onEnabled" - ], - "default@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled", - ] - }, [ - "onExternalInstall" - ]); - - LightweightThemeManager.currentTheme = { - id: "1", - version: "1", - name: "Test LW Theme", - description: "A test theme", - author: "Mozilla", - homepageURL: "http://localhost/data/index.html", - headerURL: "http://localhost/data/header.png", - footerURL: "http://localhost/data/footer.png", - previewURL: "http://localhost/data/preview.png", - iconURL: "http://localhost/data/icon.png" - }; - - ensure_test_completed(); - - AddonManager.getAddonByID("1@personas.mozilla.org", function(p1) { - do_check_neq(null, p1); - do_check_eq(p1.name, "Test LW Theme"); - do_check_eq(p1.version, "1"); - do_check_eq(p1.type, "theme"); - do_check_eq(p1.description, "A test theme"); - do_check_eq(p1.creator, "Mozilla"); - do_check_eq(p1.homepageURL, "http://localhost/data/index.html"); - do_check_eq(p1.iconURL, "http://localhost/data/icon.png"); - do_check_eq(p1.screenshots.length, 1); - do_check_eq(p1.screenshots[0], "http://localhost/data/preview.png"); - do_check_false(p1.appDisabled); - do_check_false(p1.userDisabled); - do_check_true(p1.isCompatible); - do_check_true(p1.providesUpdatesSecurely); - do_check_eq(p1.blocklistState, 0); - do_check_true(p1.isActive); - do_check_eq(p1.pendingOperations, 0); - do_check_eq(p1.permissions, AddonManager.PERM_CAN_UNINSTALL | AddonManager.PERM_CAN_DISABLE); - do_check_eq(p1.scope, AddonManager.SCOPE_PROFILE); - do_check_true("isCompatibleWith" in p1); - do_check_true("findUpdates" in p1); - do_check_eq(p1.installDate.getTime(), p1.updateDate.getTime()); - - // Should have been installed sometime in the last few seconds. - let difference = Date.now() - p1.installDate.getTime(); - if (difference > MAX_INSTALL_TIME) - do_throw("Add-on was installed " + difference + "ms ago"); - else if (difference < 0) - do_throw("Add-on was installed " + difference + "ms in the future"); - - AddonManager.getAddonsByTypes(["theme"], function(addons) { - let seen = false; - addons.forEach(function(a) { - if (a.id == "1@personas.mozilla.org") { - seen = true; - } - else { - dump("Checking theme " + a.id + "\n"); - do_check_false(a.isActive); - do_check_true(a.userDisabled); - } - }); - do_check_true(seen); - - do_check_true(gLWThemeChanged); - gLWThemeChanged = false; - - do_execute_soon(run_test_4); - }); - }); -} - -// Installing a second lightweight theme should disable the first with no restart -function run_test_4() { - prepare_test({ - "1@personas.mozilla.org": [ - ["onDisabling", false], - "onDisabled", - ], - "2@personas.mozilla.org": [ - ["onInstalling", false], - "onInstalled", - ["onEnabling", false], - "onEnabled" - ] - }, [ - "onExternalInstall" - ]); - - LightweightThemeManager.currentTheme = { - id: "2", - version: "1", - name: "Test LW Theme", - description: "A second test theme", - author: "Mozilla", - homepageURL: "http://localhost/data/index.html", - headerURL: "http://localhost/data/header.png", - footerURL: "http://localhost/data/footer.png", - previewURL: "http://localhost/data/preview.png", - iconURL: "http://localhost/data/icon.png" - }; - - ensure_test_completed(); - - AddonManager.getAddonsByIDs(["1@personas.mozilla.org", - "2@personas.mozilla.org"], function([p1, p2]) { - do_check_neq(null, p2); - do_check_false(p2.appDisabled); - do_check_false(p2.userDisabled); - do_check_true(p2.isActive); - do_check_eq(p2.pendingOperations, 0); - do_check_eq(p2.permissions, AddonManager.PERM_CAN_UNINSTALL | AddonManager.PERM_CAN_DISABLE); - do_check_eq(p2.installDate.getTime(), p2.updateDate.getTime()); - - // Should have been installed sometime in the last few seconds. - let difference = Date.now() - p2.installDate.getTime(); - if (difference > MAX_INSTALL_TIME) - do_throw("Add-on was installed " + difference + "ms ago"); - else if (difference < 0) - do_throw("Add-on was installed " + difference + "ms in the future"); - - do_check_neq(null, p1); - do_check_false(p1.appDisabled); - do_check_true(p1.userDisabled); - do_check_false(p1.isActive); - do_check_eq(p1.pendingOperations, 0); - do_check_eq(p1.permissions, AddonManager.PERM_CAN_UNINSTALL | AddonManager.PERM_CAN_ENABLE); - - AddonManager.getAddonsByTypes(["theme"], function(addons) { - let seen = false; - addons.forEach(function(a) { - if (a.id == "2@personas.mozilla.org") { - seen = true; - } - else { - dump("Checking theme " + a.id + "\n"); - do_check_false(a.isActive); - do_check_true(a.userDisabled); - } - }); - do_check_true(seen); - - do_check_true(gLWThemeChanged); - gLWThemeChanged = false; - - do_execute_soon(run_test_5); - }); - }); -} - -// Switching to a custom theme should disable the lightweight theme and require -// a restart. Cancelling that should also be possible. -function run_test_5() { - prepare_test({ - "2@personas.mozilla.org": [ - "onDisabling", - ], - "theme2@tests.mozilla.org": [ - "onEnabling" - ] - }); - - AddonManager.getAddonsByIDs(["2@personas.mozilla.org", - "theme2@tests.mozilla.org"], function([p2, t2]) { - t2.userDisabled = false; - - ensure_test_completed(); - - prepare_test({ - "2@personas.mozilla.org": [ - "onOperationCancelled", - ], - "theme2@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - - p2.userDisabled = false; - - ensure_test_completed(); - - prepare_test({ - "2@personas.mozilla.org": [ - "onDisabling", - ], - "theme2@tests.mozilla.org": [ - "onEnabling" - ] - }); - - t2.userDisabled = false; - - ensure_test_completed(); - - do_check_false(t2.isActive); - do_check_false(t2.userDisabled); - do_check_true(hasFlag(AddonManager.PENDING_ENABLE, t2.pendingOperations)); - do_check_true(p2.isActive); - do_check_true(p2.userDisabled); - do_check_true(hasFlag(AddonManager.PENDING_DISABLE, p2.pendingOperations)); - do_check_true(hasFlag(AddonManager.PERM_CAN_ENABLE, p2.permissions)); - do_check_false(gLWThemeChanged); - - do_execute_soon(check_test_5); - }); -} - -function check_test_5() { - restartManager(); - - AddonManager.getAddonsByIDs(["2@personas.mozilla.org", - "theme2@tests.mozilla.org"], function([p2, t2]) { - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(hasFlag(AddonManager.PENDING_ENABLE, t2.pendingOperations)); - do_check_false(p2.isActive); - do_check_true(p2.userDisabled); - do_check_false(hasFlag(AddonManager.PENDING_DISABLE, p2.pendingOperations)); - - do_check_true(gLWThemeChanged); - gLWThemeChanged = false; - - do_execute_soon(run_test_6); - }); -} - -// Switching from a custom theme to a lightweight theme should require a restart -function run_test_6() { - prepare_test({ - "2@personas.mozilla.org": [ - "onEnabling", - ], - "theme2@tests.mozilla.org": [ - "onDisabling" - ] - }); - - AddonManager.getAddonsByIDs(["2@personas.mozilla.org", - "theme2@tests.mozilla.org"], function([p2, t2]) { - p2.userDisabled = false; - - ensure_test_completed(); - - prepare_test({ - "2@personas.mozilla.org": [ - "onOperationCancelled", - ], - "theme2@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - - t2.userDisabled = false; - - ensure_test_completed(); - - prepare_test({ - "2@personas.mozilla.org": [ - "onEnabling", - ], - "theme2@tests.mozilla.org": [ - "onDisabling" - ] - }); - - p2.userDisabled = false; - - ensure_test_completed(); - - do_check_false(p2.isActive); - do_check_false(p2.userDisabled); - do_check_true(hasFlag(AddonManager.PENDING_ENABLE, p2.pendingOperations)); - do_check_true(t2.isActive); - do_check_true(t2.userDisabled); - do_check_true(hasFlag(AddonManager.PENDING_DISABLE, t2.pendingOperations)); - do_check_false(gLWThemeChanged); - - do_execute_soon(check_test_6); - }); -} - -function check_test_6() { - restartManager(); - - AddonManager.getAddonsByIDs(["2@personas.mozilla.org", - "theme2@tests.mozilla.org"], function([p2, t2]) { - do_check_true(p2.isActive); - do_check_false(p2.userDisabled); - do_check_false(hasFlag(AddonManager.PENDING_ENABLE, p2.pendingOperations)); - do_check_false(t2.isActive); - do_check_true(t2.userDisabled); - do_check_false(hasFlag(AddonManager.PENDING_DISABLE, t2.pendingOperations)); - - do_check_true(gLWThemeChanged); - gLWThemeChanged = false; - - do_execute_soon(run_test_7); - }); -} - -// Uninstalling a lightweight theme should not require a restart -function run_test_7() { - prepare_test({ - "1@personas.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ] - }); - - AddonManager.getAddonByID("1@personas.mozilla.org", function(p1) { - p1.uninstall(); - - ensure_test_completed(); - do_check_eq(LightweightThemeManager.usedThemes.length, 1); - do_check_false(gLWThemeChanged); - - do_execute_soon(run_test_8); - }); -} - -// Uninstalling a lightweight theme in use should not require a restart and it -// should reactivate the default theme -// Also, uninstalling a lightweight theme in use should send a -// "lightweight-theme-styling-update" notification through the observer service -function run_test_8() { - prepare_test({ - "2@personas.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ], - "default@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - AddonManager.getAddonByID("2@personas.mozilla.org", function(p2) { - p2.uninstall(); - - ensure_test_completed(); - do_check_eq(LightweightThemeManager.usedThemes.length, 0); - - do_check_true(gLWThemeChanged); - gLWThemeChanged = false; - - do_execute_soon(run_test_9); - }); -} - -// Uninstalling a theme not in use should not require a restart -function run_test_9() { - AddonManager.getAddonByID("theme1@tests.mozilla.org", function(t1) { - prepare_test({ - "theme1@tests.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ] - }); - - t1.uninstall(); - - ensure_test_completed(); - - AddonManager.getAddonByID("theme1@tests.mozilla.org", function(newt1) { - do_check_eq(newt1, null); - do_check_false(gLWThemeChanged); - - do_execute_soon(run_test_10); - }); - }); -} - -// Uninstalling a custom theme in use should require a restart -function run_test_10() { - AddonManager.getAddonByID("theme2@tests.mozilla.org", callback_soon(function(oldt2) { - prepare_test({ - "theme2@tests.mozilla.org": [ - "onEnabling", - ], - "default@tests.mozilla.org": [ - "onDisabling" - ] - }); - - oldt2.userDisabled = false; - - ensure_test_completed(); - - restartManager(); - - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "theme2@tests.mozilla.org"], function([d, t2]) { - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_false(d.isActive); - do_check_true(d.userDisabled); - do_check_false(d.appDisabled); - - prepare_test({ - "theme2@tests.mozilla.org": [ - "onUninstalling", - ], - "default@tests.mozilla.org": [ - "onEnabling" - ] - }); - - t2.uninstall(); - - ensure_test_completed(); - do_check_false(gLWThemeChanged); - - do_execute_soon(run_test_11); - }); - })); -} - -// Installing a custom theme not in use should not require a restart -function run_test_11() { - restartManager(); - - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_theme"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.type, "theme"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test Theme 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_true(install.addon.skinnable, true); - do_check_false(hasFlag(install.addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_INSTALL)); - - prepare_test({ - "theme1@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], check_test_11); - install.install(); - }); -} - -function check_test_11() { - AddonManager.getAddonByID("theme1@tests.mozilla.org", function(t1) { - do_check_neq(t1, null); - var previewSpec = do_get_addon_root_uri(profileDir, "theme1@tests.mozilla.org") + "preview.png"; - do_check_eq(t1.screenshots.length, 1); - do_check_eq(t1.screenshots[0], previewSpec); - do_check_true(t1.skinnable); - do_check_false(gLWThemeChanged); - - do_execute_soon(run_test_12); - }); -} - -// Updating a custom theme not in use should not require a restart -function run_test_12() { - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_theme"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.type, "theme"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test Theme 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_false(hasFlag(install.addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_INSTALL)); - - prepare_test({ - "theme1@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], check_test_12); - install.install(); - }); -} - -function check_test_12() { - AddonManager.getAddonByID("theme1@tests.mozilla.org", function(t1) { - do_check_neq(t1, null); - do_check_false(gLWThemeChanged); - - do_execute_soon(run_test_13); - }); -} - -// Updating a custom theme in use should require a restart -function run_test_13() { - AddonManager.getAddonByID("theme1@tests.mozilla.org", callback_soon(function(t1) { - prepare_test({ - "theme1@tests.mozilla.org": [ - "onEnabling", - ], - "default@tests.mozilla.org": [ - "onDisabling" - ] - }); - - t1.userDisabled = false; - ensure_test_completed(); - restartManager(); - - prepare_test({ }, [ - "onNewInstall" - ]); - - AddonManager.getInstallForFile(do_get_addon("test_theme"), function(install) { - ensure_test_completed(); - - do_check_neq(install, null); - do_check_eq(install.type, "theme"); - do_check_eq(install.version, "1.0"); - do_check_eq(install.name, "Test Theme 1"); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_true(hasFlag(install.addon.operationsRequiringRestart, AddonManager.OP_NEEDS_RESTART_INSTALL)); - - prepare_test({ - "theme1@tests.mozilla.org": [ - "onInstalling", - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test_13)); - install.install(); - }); - })); -} - -function check_test_13() { - restartManager(); - - AddonManager.getAddonByID("theme1@tests.mozilla.org", callback_soon(function(t1) { - do_check_neq(t1, null); - do_check_true(t1.isActive); - do_check_false(gLWThemeChanged); - t1.uninstall(); - restartManager(); - - do_execute_soon(run_test_14); - })); -} - -// Switching from a lightweight theme to the default theme should not require -// a restart -function run_test_14() { - LightweightThemeManager.currentTheme = { - id: "1", - version: "1", - name: "Test LW Theme", - description: "A test theme", - author: "Mozilla", - homepageURL: "http://localhost/data/index.html", - headerURL: "http://localhost/data/header.png", - footerURL: "http://localhost/data/footer.png", - previewURL: "http://localhost/data/preview.png", - iconURL: "http://localhost/data/icon.png" - }; - - AddonManager.getAddonByID("default@tests.mozilla.org", function(d) { - do_check_true(d.userDisabled); - do_check_false(d.isActive); - - prepare_test({ - "1@personas.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ], - "default@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - - d.userDisabled = false; - ensure_test_completed(); - - do_check_false(d.userDisabled); - do_check_true(d.isActive); - - do_check_true(gLWThemeChanged); - gLWThemeChanged = false; - - do_execute_soon(run_test_15); - }); -} - -// Upgrading the application with a custom theme in use should not disable it -function run_test_15() { - restartManager(); - - installAllFiles([do_get_addon("test_theme")], function() { - AddonManager.getAddonByID("theme1@tests.mozilla.org", callback_soon(function(t1) { - t1.userDisabled = false; - - restartManager(); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "theme1/1.0"); - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "theme1@tests.mozilla.org"], - callback_soon(function([d_2, t1_2]) { - do_check_true(d_2.userDisabled); - do_check_false(d_2.appDisabled); - do_check_false(d_2.isActive); - - do_check_false(t1_2.userDisabled); - do_check_false(t1_2.appDisabled); - do_check_true(t1_2.isActive); - - restartManager("2"); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "theme1/1.0"); - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "theme1@tests.mozilla.org"], function([d_3, t1_3]) { - do_check_true(d_3.userDisabled); - do_check_false(d_3.appDisabled); - do_check_false(d_3.isActive); - - do_check_false(t1_3.userDisabled); - do_check_false(t1_3.appDisabled); - do_check_true(t1_3.isActive); - - do_execute_soon(run_test_16); - }); - })); - })); - }); -} - -// Upgrading the application with a custom theme in use should disable it if it -// is no longer compatible -function run_test_16() { - restartManager("3"); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "theme1@tests.mozilla.org"], function([d, t1]) { - do_check_false(d.userDisabled); - do_check_false(d.appDisabled); - do_check_true(d.isActive); - - do_check_true(t1.userDisabled); - do_check_true(t1.appDisabled); - do_check_false(t1.isActive); - - do_execute_soon(run_test_17); - }); -} - -// Verifies that if the selected theme pref is changed by a different version -// of the application that we correctly reset it when it points to an -// incompatible theme -function run_test_17() { - restartManager("2"); - shutdownManager(); - - Services.prefs.setCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN, "theme1/1.0"); - - restartManager("3"); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "theme1@tests.mozilla.org"], function([d, t1]) { - do_check_false(d.userDisabled); - do_check_false(d.appDisabled); - do_check_true(d.isActive); - - do_check_true(t1.userDisabled); - do_check_true(t1.appDisabled); - do_check_false(t1.isActive); - - do_execute_soon(run_test_18); - }); -} - -// Disabling the active theme should switch back to the default theme -function run_test_18() { - restartManager(2); - - AddonManager.getAddonByID("theme1@tests.mozilla.org", callback_soon(function(t1) { - t1.userDisabled = false; - - restartManager(); - - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "theme1@tests.mozilla.org"], - callback_soon(function([d_2, t1_2]) { - do_check_true(d_2.userDisabled); - do_check_false(d_2.appDisabled); - do_check_false(d_2.isActive); - - do_check_false(t1_2.userDisabled); - do_check_false(t1_2.appDisabled); - do_check_true(t1_2.isActive); - - prepare_test({ - "theme1@tests.mozilla.org": [ - "onDisabling", - ], - "default@tests.mozilla.org": [ - "onEnabling", - ] - }); - t1_2.userDisabled = true; - ensure_test_completed(); - - do_check_false(d_2.userDisabled); - do_check_false(d_2.appDisabled); - do_check_false(d_2.isActive); - - do_check_true(t1_2.userDisabled); - do_check_false(t1_2.appDisabled); - do_check_true(t1_2.isActive); - - restartManager(); - - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "theme1@tests.mozilla.org"], function([d_3, t1_3]) { - do_check_false(d_3.userDisabled); - do_check_false(d_3.appDisabled); - do_check_true(d_3.isActive); - - do_check_true(t1_3.userDisabled); - do_check_false(t1_3.appDisabled); - do_check_false(t1_3.isActive); - - do_execute_soon(run_test_19); - }); - })); - })); -} - -// Disabling the active persona should switch back to the default theme -function run_test_19() { - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "1@personas.mozilla.org"], function([d, p1]) { - p1.userDisabled = false; - - do_check_true(d.userDisabled); - do_check_false(d.appDisabled); - do_check_false(d.isActive); - - do_check_false(p1.userDisabled); - do_check_false(p1.appDisabled); - do_check_true(p1.isActive); - - prepare_test({ - "1@personas.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ], - "default@tests.mozilla.org": [ - ["onEnabling", false], - "onEnabled" - ] - }); - p1.userDisabled = true; - ensure_test_completed(); - - do_check_false(d.userDisabled); - do_check_false(d.appDisabled); - do_check_true(d.isActive); - - do_check_true(p1.userDisabled); - do_check_false(p1.appDisabled); - do_check_false(p1.isActive); - - do_execute_soon(run_test_20); - }); -} - -// Tests that you cannot disable the default theme -function run_test_20() { - AddonManager.getAddonByID("default@tests.mozilla.org", function(d) { - do_check_false(d.userDisabled); - do_check_false(d.appDisabled); - do_check_true(d.isActive); - - try { - d.userDisabled = true; - do_throw("Disabling the default theme should throw an exception"); - } - catch (e) { - } - - do_execute_soon(run_test_21); - }); -} - -// Tests that cached copies of a lightweight theme have the right permissions -// and pendingOperations during the onEnabling event -function run_test_21() { - AddonManager.getAddonByID("theme1@tests.mozilla.org", callback_soon(function(t1) { - // Switch to a custom theme so we can test pendingOperations properly. - - prepare_test({ - "theme1@tests.mozilla.org": [ - "onEnabling" - ], - "default@tests.mozilla.org": [ - "onDisabling" - ] - }); - - t1.userDisabled = false; - ensure_test_completed(); - - restartManager(); - - AddonManager.getAddonByID("1@personas.mozilla.org", function(p1) { - AddonManager.addAddonListener({ - onEnabling: function(aAddon) { - do_check_false(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_ENABLE)); - do_check_true(hasFlag(aAddon.pendingOperations, AddonManager.PENDING_ENABLE)); - - do_check_eq(aAddon.permissions, p1.permissions); - do_check_eq(aAddon.pendingOperations, p1.pendingOperations); - } - }); - - prepare_test({ - "1@personas.mozilla.org": [ - "onEnabling" - ], - "theme1@tests.mozilla.org": [ - "onDisabling" - ] - }); - - p1.userDisabled = false; - ensure_test_completed(); - - run_test_22(); - }); - })); -} - -// Detecting a new add-on during the startup file check should not disable an -// active lightweight theme -function run_test_22() { - restartManager(); - - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "1@personas.mozilla.org"], function([d, p1]) { - do_check_true(d.userDisabled); - do_check_false(d.appDisabled); - do_check_false(d.isActive); - - do_check_false(p1.userDisabled); - do_check_false(p1.appDisabled); - do_check_true(p1.isActive); - - writeInstallRDFForExtension({ - id: "theme3@tests.mozilla.org", - version: "1.0", - name: "Test 3", - internalName: "theme3/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }] - }, profileDir); - - restartManager(); - - AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "1@personas.mozilla.org"], function([d_2, p1_2]) { - do_check_true(d_2.userDisabled); - do_check_false(d_2.appDisabled); - do_check_false(d_2.isActive); - - do_check_false(p1_2.userDisabled); - do_check_false(p1_2.appDisabled); - do_check_true(p1_2.isActive); - - end_test(); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_types.js b/toolkit/mozapps/webextensions/test/xpcshell/test_types.js deleted file mode 100644 index 679f4808c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_types.js +++ /dev/null @@ -1,65 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that custom types can be defined and undefined - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -function run_test() { - startupManager(); - - do_check_false("test" in AddonManager.addonTypes); - let types = AddonManager.addonTypes; - - // The dumbest provider possible - var provider = { - }; - - var expectedAdd = "test"; - var expectedRemove = null; - - AddonManager.addTypeListener({ - onTypeAdded: function(aType) { - do_check_eq(aType.id, expectedAdd); - expectedAdd = null; - }, - - onTypeRemoved: function(aType) { - do_check_eq(aType.id, expectedRemove); - expectedRemove = null; - } - }); - - AddonManagerPrivate.registerProvider(provider, [{ - id: "test", - name: "Test", - uiPriority: 1 - }, { - id: "t$e%st", - name: "Test", - uiPriority: 1 - }]); - - do_check_eq(expectedAdd, null); - - do_check_true("test" in types); - do_check_eq(types["test"].name, "Test"); - do_check_false("t$e%st" in types); - - delete types["test"]; - do_check_true("test" in types); - - types["foo"] = "bar"; - do_check_false("foo" in types); - - expectedRemove = "test"; - - AddonManagerPrivate.unregisterProvider(provider); - - do_check_eq(expectedRemove, null); - - do_check_false("test" in AddonManager.addonTypes); - // The cached reference to addonTypes is live - do_check_false("test" in types); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_undothemeuninstall.js b/toolkit/mozapps/webextensions/test/xpcshell/test_undothemeuninstall.js deleted file mode 100644 index 36ca95aec..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_undothemeuninstall.js +++ /dev/null @@ -1,423 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that forcing undo for uninstall works for themes -Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm"); - -const PREF_GENERAL_SKINS_SELECTEDSKIN = "general.skins.selectedSkin"; - -var defaultTheme = { - id: "default@tests.mozilla.org", - version: "1.0", - name: "Test 1", - internalName: "classic/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -var theme1 = { - id: "theme1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - internalName: "theme1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function dummyLWTheme(id) { - return { - id: id || Math.random().toString(), - name: Math.random().toString(), - headerURL: "http://lwttest.invalid/a.png", - footerURL: "http://lwttest.invalid/b.png", - textcolor: Math.random().toString(), - accentcolor: Math.random().toString() - }; -} - -// Sets up the profile by installing an add-on. -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - startupManager(); - do_register_cleanup(promiseShutdownManager); - - run_next_test(); -} - -add_task(function* checkDefault() { - writeInstallRDFForExtension(defaultTheme, profileDir); - yield promiseRestartManager(); - - let d = yield promiseAddonByID("default@tests.mozilla.org"); - - do_check_neq(d, null); - do_check_true(d.isActive); - do_check_false(d.userDisabled); - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); -}); - -// Tests that uninstalling an enabled theme offers the option to undo -add_task(function* uninstallEnabledOffersUndo() { - writeInstallRDFForExtension(theme1, profileDir); - - yield promiseRestartManager(); - - let t1 = yield promiseAddonByID("theme1@tests.mozilla.org"); - - do_check_neq(t1, null); - do_check_true(t1.userDisabled); - - t1.userDisabled = false; - - yield promiseRestartManager(); - - let d = null; - [ t1, d ] = yield promiseAddonsByIDs(["theme1@tests.mozilla.org", - "default@tests.mozilla.org"]); - do_check_neq(d, null); - do_check_false(d.isActive); - do_check_true(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_true(t1.isActive); - do_check_false(t1.userDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "theme1"); - - prepare_test({ - "default@tests.mozilla.org": [ - "onEnabling" - ], - "theme1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - t1.uninstall(true); - ensure_test_completed(); - - do_check_neq(d, null); - do_check_false(d.isActive); - do_check_false(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_ENABLE); - - do_check_true(t1.isActive); - do_check_false(t1.userDisabled); - do_check_true(hasFlag(t1.pendingOperations, AddonManager.PENDING_UNINSTALL)); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "theme1"); - - yield promiseRestartManager(); - - [ t1, d ] = yield promiseAddonsByIDs(["theme1@tests.mozilla.org", - "default@tests.mozilla.org"]); - do_check_neq(d, null); - do_check_true(d.isActive); - do_check_false(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_eq(t1, null); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); -}); - -// Tests that uninstalling an enabled theme can be undone -add_task(function* canUndoUninstallEnabled() { - writeInstallRDFForExtension(theme1, profileDir); - - yield promiseRestartManager(); - - let t1 = yield promiseAddonByID("theme1@tests.mozilla.org"); - - do_check_neq(t1, null); - do_check_true(t1.userDisabled); - - t1.userDisabled = false; - - yield promiseRestartManager(); - - let d = null; - [ t1, d ] = yield promiseAddonsByIDs(["theme1@tests.mozilla.org", - "default@tests.mozilla.org"]); - - do_check_neq(d, null); - do_check_false(d.isActive); - do_check_true(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_true(t1.isActive); - do_check_false(t1.userDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "theme1"); - - prepare_test({ - "default@tests.mozilla.org": [ - "onEnabling" - ], - "theme1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - t1.uninstall(true); - ensure_test_completed(); - - do_check_neq(d, null); - do_check_false(d.isActive); - do_check_false(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_ENABLE); - - do_check_true(t1.isActive); - do_check_false(t1.userDisabled); - do_check_true(hasFlag(t1.pendingOperations, AddonManager.PENDING_UNINSTALL)); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "theme1"); - - prepare_test({ - "default@tests.mozilla.org": [ - "onOperationCancelled" - ], - "theme1@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - t1.cancelUninstall(); - ensure_test_completed(); - - do_check_neq(d, null); - do_check_false(d.isActive); - do_check_true(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_true(t1.isActive); - do_check_false(t1.userDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - yield promiseRestartManager(); - - [ t1, d ] = yield promiseAddonsByIDs(["theme1@tests.mozilla.org", - "default@tests.mozilla.org"]); - - do_check_neq(d, null); - do_check_false(d.isActive); - do_check_true(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_true(t1.isActive); - do_check_false(t1.userDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "theme1"); - - t1.uninstall(); - yield promiseRestartManager(); -}); - -// Tests that uninstalling a disabled theme offers the option to undo -add_task(function* uninstallDisabledOffersUndo() { - writeInstallRDFForExtension(theme1, profileDir); - - yield promiseRestartManager(); - - let [ t1, d ] = yield promiseAddonsByIDs(["theme1@tests.mozilla.org", - "default@tests.mozilla.org"]); - - do_check_neq(d, null); - do_check_true(d.isActive); - do_check_false(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - prepare_test({ - "theme1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - t1.uninstall(true); - ensure_test_completed(); - - do_check_neq(d, null); - do_check_true(d.isActive); - do_check_false(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_true(hasFlag(t1.pendingOperations, AddonManager.PENDING_UNINSTALL)); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - yield promiseRestartManager(); - - [ t1, d ] = yield promiseAddonsByIDs(["theme1@tests.mozilla.org", - "default@tests.mozilla.org"]); - - do_check_neq(d, null); - do_check_true(d.isActive); - do_check_false(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_eq(t1, null); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); -}); - -// Tests that uninstalling a disabled theme can be undone -add_task(function* canUndoUninstallDisabled() { - writeInstallRDFForExtension(theme1, profileDir); - - yield promiseRestartManager(); - - let [ t1, d ] = yield promiseAddonsByIDs(["theme1@tests.mozilla.org", - "default@tests.mozilla.org"]); - - do_check_neq(d, null); - do_check_true(d.isActive); - do_check_false(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - prepare_test({ - "theme1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - t1.uninstall(true); - ensure_test_completed(); - - do_check_neq(d, null); - do_check_true(d.isActive); - do_check_false(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_true(hasFlag(t1.pendingOperations, AddonManager.PENDING_UNINSTALL)); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - prepare_test({ - "theme1@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - t1.cancelUninstall(); - ensure_test_completed(); - - do_check_neq(d, null); - do_check_true(d.isActive); - do_check_false(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - yield promiseRestartManager(); - - [ t1, d ] = yield promiseAddonsByIDs(["theme1@tests.mozilla.org", - "default@tests.mozilla.org"]); - - do_check_neq(d, null); - do_check_true(d.isActive); - do_check_false(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - t1.uninstall(); - yield promiseRestartManager(); -}); - -// Tests that uninstalling an enabled lightweight theme offers the option to undo -add_task(function* uninstallLWTOffersUndo() { - // skipped since lightweight themes don't support undoable uninstall yet - return; - /* - LightweightThemeManager.currentTheme = dummyLWTheme("theme1"); - - let [ t1, d ] = yield promiseAddonsByIDs(["theme1@personas.mozilla.org", - "default@tests.mozilla.org"]); - - do_check_neq(d, null); - do_check_false(d.isActive); - do_check_true(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_true(t1.isActive); - do_check_false(t1.userDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - prepare_test({ - "default@tests.mozilla.org": [ - "onEnabling" - ], - "theme1@personas.mozilla.org": [ - "onUninstalling" - ] - }); - t1.uninstall(true); - ensure_test_completed(); - - do_check_neq(d, null); - do_check_false(d.isActive); - do_check_false(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_ENABLE); - - do_check_true(t1.isActive); - do_check_false(t1.userDisabled); - do_check_true(hasFlag(t1.pendingOperations, AddonManager.PENDING_UNINSTALL)); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - - yield promiseRestartManager(); - - [ t1, d ] = yield promiseAddonsByIDs(["theme1@personas.mozilla.org", - "default@tests.mozilla.org"]); - - do_check_neq(d, null); - do_check_true(d.isActive); - do_check_false(d.userDisabled); - do_check_eq(d.pendingOperations, AddonManager.PENDING_NONE); - - do_check_eq(t1, null); - - do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); - */ -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_undouninstall.js b/toolkit/mozapps/webextensions/test/xpcshell/test_undouninstall.js deleted file mode 100644 index 4680a3c4a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_undouninstall.js +++ /dev/null @@ -1,792 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that forcing undo for uninstall works - -const APP_STARTUP = 1; -const APP_SHUTDOWN = 2; -const ADDON_ENABLE = 3; -const ADDON_DISABLE = 4; -const ADDON_INSTALL = 5; -const ADDON_UNINSTALL = 6; -const ADDON_UPGRADE = 7; -const ADDON_DOWNGRADE = 8; - -const ID = "undouninstall1@tests.mozilla.org"; -const INCOMPAT_ID = "incompatible@tests.mozilla.org"; - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -BootstrapMonitor.init(); - -function getStartupReason(id) { - let info = BootstrapMonitor.started.get(id); - return info ? info.reason : undefined; -} - -function getShutdownReason(id) { - let info = BootstrapMonitor.stopped.get(id); - return info ? info.reason : undefined; -} - -function getInstallReason(id) { - let info = BootstrapMonitor.installed.get(id); - return info ? info.reason : undefined; -} - -function getUninstallReason(id) { - let info = BootstrapMonitor.uninstalled.get(id); - return info ? info.reason : undefined; -} - -function getStartupOldVersion(id) { - let info = BootstrapMonitor.started.get(id); - return info ? info.data.oldVersion : undefined; -} - -function getShutdownNewVersion(id) { - let info = BootstrapMonitor.stopped.get(id); - return info ? info.data.newVersion : undefined; -} - -function getInstallOldVersion(id) { - let info = BootstrapMonitor.installed.get(id); - return info ? info.data.oldVersion : undefined; -} - -function getUninstallNewVersion(id) { - let info = BootstrapMonitor.uninstalled.get(id); - return info ? info.data.newVersion : undefined; -} - -// Sets up the profile by installing an add-on. -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - startupManager(); - do_register_cleanup(promiseShutdownManager); - - run_next_test(); -} - -add_task(function* installAddon() { - let olda1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - - do_check_eq(olda1, null); - - writeInstallRDFForExtension(addon1, profileDir); - yield promiseRestartManager(); - - let a1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_eq(a1.pendingOperations, 0); - do_check_in_crash_annotation(addon1.id, addon1.version); -}); - -// Uninstalling an add-on should work. -add_task(function* uninstallAddon() { - prepare_test({ - "addon1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - - let a1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - - do_check_eq(a1.pendingOperations, 0); - do_check_neq(a1.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_UNINSTALL, 0); - a1.uninstall(true); - do_check_true(hasFlag(a1.pendingOperations, AddonManager.PENDING_UNINSTALL)); - do_check_in_crash_annotation(addon1.id, addon1.version); - - ensure_test_completed(); - - let list = yield promiseAddonsWithOperationsByTypes(null); - - do_check_eq(list.length, 1); - do_check_eq(list[0].id, "addon1@tests.mozilla.org"); - - yield promiseRestartManager(); - - a1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - - do_check_eq(a1, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org")); - do_check_not_in_crash_annotation(addon1.id, addon1.version); - - var dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); - do_check_false(dest.exists()); - writeInstallRDFForExtension(addon1, profileDir); - yield promiseRestartManager(); -}); - -// Cancelling the uninstall should send onOperationCancelled -add_task(function* cancelUninstall() { - prepare_test({ - "addon1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - - let a1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_eq(a1.pendingOperations, 0); - a1.uninstall(true); - do_check_true(hasFlag(a1.pendingOperations, AddonManager.PENDING_UNINSTALL)); - - ensure_test_completed(); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - a1.cancelUninstall(); - do_check_eq(a1.pendingOperations, 0); - - ensure_test_completed(); - yield promiseRestartManager(); - - a1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); -}); - -// Uninstalling an item pending disable should still require a restart -add_task(function* pendingDisableRequestRestart() { - let a1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onDisabling" - ] - }); - a1.userDisabled = true; - ensure_test_completed(); - - do_check_true(hasFlag(AddonManager.PENDING_DISABLE, a1.pendingOperations)); - do_check_true(a1.isActive); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - a1.uninstall(true); - - ensure_test_completed(); - - a1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - - do_check_neq(a1, null); - do_check_true(hasFlag(AddonManager.PENDING_UNINSTALL, a1.pendingOperations)); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - a1.cancelUninstall(); - ensure_test_completed(); - do_check_true(hasFlag(AddonManager.PENDING_DISABLE, a1.pendingOperations)); - - yield promiseRestartManager(); -}); - -// Test that uninstalling an inactive item should still allow cancelling -add_task(function* uninstallInactiveIsCancellable() { - let a1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - - do_check_neq(a1, null); - do_check_false(a1.isActive); - do_check_true(a1.userDisabled); - do_check_false(isExtensionInAddonsList(profileDir, a1.id)); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - a1.uninstall(true); - ensure_test_completed(); - - a1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - - do_check_neq(a1, null); - do_check_true(hasFlag(AddonManager.PENDING_UNINSTALL, a1.pendingOperations)); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - a1.cancelUninstall(); - ensure_test_completed(); - - yield promiseRestartManager(); -}); - -// Test that an inactive item can be uninstalled -add_task(function* uninstallInactive() { - let a1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - - do_check_neq(a1, null); - do_check_false(a1.isActive); - do_check_true(a1.userDisabled); - do_check_false(isExtensionInAddonsList(profileDir, a1.id)); - - prepare_test({ - "addon1@tests.mozilla.org": [ - [ "onUninstalling", false ], - "onUninstalled" - ] - }); - a1.uninstall(); - ensure_test_completed(); - - a1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - do_check_eq(a1, null); -}); - -// Tests that an enabled restartless add-on can be uninstalled and goes away -// when the uninstall is committed -add_task(function* uninstallRestartless() { - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onNewInstall", - "onInstallStarted", - "onInstallEnded" - ]); - yield promiseInstallAllFiles([do_get_addon("test_undouninstall1")]); - ensure_test_completed(); - - let a1 = yield promiseAddonByID(ID); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - do_check_eq(getInstallReason(ID), ADDON_INSTALL); - do_check_eq(getStartupReason(ID), ADDON_INSTALL); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - a1.uninstall(true); - ensure_test_completed(); - - a1 = yield promiseAddonByID(ID); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonInstalled(ID); - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_eq(getShutdownReason(ID), ADDON_UNINSTALL); - do_check_true(hasFlag(AddonManager.PENDING_UNINSTALL, a1.pendingOperations)); - do_check_false(a1.isActive); - do_check_false(a1.userDisabled); - - // complete the uinstall - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - "onUninstalled" - ] - }); - a1.uninstall(); - ensure_test_completed(); - - a1 = yield promiseAddonByID(ID); - - do_check_eq(a1, null); - BootstrapMonitor.checkAddonNotStarted(ID); -}); - -// Tests that an enabled restartless add-on can be uninstalled and then cancelled -add_task(function* cancelUninstallOfRestartless() { - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onNewInstall", - "onInstallStarted", - "onInstallEnded" - ]); - yield promiseInstallAllFiles([do_get_addon("test_undouninstall1")]); - ensure_test_completed(); - - let a1 = yield promiseAddonByID(ID); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - do_check_eq(getInstallReason(ID), ADDON_INSTALL); - do_check_eq(getStartupReason(ID), ADDON_INSTALL); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - a1.uninstall(true); - ensure_test_completed(); - - a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonInstalled(ID); - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_eq(getShutdownReason(ID), ADDON_UNINSTALL); - do_check_true(hasFlag(AddonManager.PENDING_UNINSTALL, a1.pendingOperations)); - do_check_false(a1.isActive); - do_check_false(a1.userDisabled); - - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - a1.cancelUninstall(); - ensure_test_completed(); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - do_check_eq(getStartupReason(ID), ADDON_INSTALL); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - - shutdownManager(); - - do_check_eq(getShutdownReason(ID), APP_SHUTDOWN); - do_check_eq(getShutdownNewVersion(ID), undefined); - - startupManager(false); - - a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - do_check_eq(getStartupReason(ID), APP_STARTUP); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - - a1.uninstall(); -}); - -// Tests that reinstalling an enabled restartless add-on waiting to be -// uninstalled aborts the uninstall and leaves the add-on enabled -add_task(function* reinstallAddonAwaitingUninstall() { - yield promiseInstallAllFiles([do_get_addon("test_undouninstall1")]); - - let a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - do_check_eq(getInstallReason(ID), ADDON_INSTALL); - do_check_eq(getStartupReason(ID), ADDON_INSTALL); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - a1.uninstall(true); - ensure_test_completed(); - - a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonInstalled(ID); - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_eq(getShutdownReason(ID), ADDON_UNINSTALL); - do_check_true(hasFlag(AddonManager.PENDING_UNINSTALL, a1.pendingOperations)); - do_check_false(a1.isActive); - do_check_false(a1.userDisabled); - - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onNewInstall", - "onInstallStarted", - "onInstallEnded" - ]); - - yield promiseInstallAllFiles([do_get_addon("test_undouninstall1")]); - - a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - ensure_test_completed(); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - do_check_eq(getUninstallReason(ID), ADDON_DOWNGRADE); - do_check_eq(getInstallReason(ID), ADDON_DOWNGRADE); - do_check_eq(getStartupReason(ID), ADDON_DOWNGRADE); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - - shutdownManager(); - - do_check_eq(getShutdownReason(ID), APP_SHUTDOWN); - - startupManager(false); - - a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - do_check_eq(getStartupReason(ID), APP_STARTUP); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - - a1.uninstall(); -}); - -// Tests that a disabled restartless add-on can be uninstalled and goes away -// when the uninstall is committed -add_task(function* uninstallDisabledRestartless() { - yield promiseInstallAllFiles([do_get_addon("test_undouninstall1")]); - - let a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - do_check_eq(getInstallReason(ID), ADDON_INSTALL); - do_check_eq(getStartupReason(ID), ADDON_INSTALL); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - - a1.userDisabled = true; - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_eq(getShutdownReason(ID), ADDON_DISABLE); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(a1.isActive); - do_check_true(a1.userDisabled); - - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - a1.uninstall(true); - ensure_test_completed(); - - a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_true(hasFlag(AddonManager.PENDING_UNINSTALL, a1.pendingOperations)); - do_check_false(a1.isActive); - do_check_true(a1.userDisabled); - - // commit the uninstall - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - "onUninstalled" - ] - }); - a1.uninstall(); - ensure_test_completed(); - - a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_eq(a1, null); - BootstrapMonitor.checkAddonNotStarted(ID); - BootstrapMonitor.checkAddonNotInstalled(ID); - do_check_eq(getUninstallReason(ID), ADDON_UNINSTALL); -}); - -// Tests that a disabled restartless add-on can be uninstalled and then cancelled -add_task(function* cancelUninstallDisabledRestartless() { - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onNewInstall", - "onInstallStarted", - "onInstallEnded" - ]); - yield promiseInstallAllFiles([do_get_addon("test_undouninstall1")]); - ensure_test_completed(); - - let a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - do_check_eq(getInstallReason(ID), ADDON_INSTALL); - do_check_eq(getStartupReason(ID), ADDON_INSTALL); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - ["onDisabling", false], - "onDisabled" - ] - }); - a1.userDisabled = true; - ensure_test_completed(); - - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_eq(getShutdownReason(ID), ADDON_DISABLE); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(a1.isActive); - do_check_true(a1.userDisabled); - - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - a1.uninstall(true); - ensure_test_completed(); - - a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonNotStarted(ID); - BootstrapMonitor.checkAddonInstalled(ID); - do_check_true(hasFlag(AddonManager.PENDING_UNINSTALL, a1.pendingOperations)); - do_check_false(a1.isActive); - do_check_true(a1.userDisabled); - - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - a1.cancelUninstall(); - ensure_test_completed(); - - BootstrapMonitor.checkAddonNotStarted(ID); - BootstrapMonitor.checkAddonInstalled(ID); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(a1.isActive); - do_check_true(a1.userDisabled); - - yield promiseRestartManager(); - - a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonNotStarted(ID); - BootstrapMonitor.checkAddonInstalled(ID); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(a1.isActive); - do_check_true(a1.userDisabled); - - a1.uninstall(); -}); - -// Tests that reinstalling a disabled restartless add-on waiting to be -// uninstalled aborts the uninstall and leaves the add-on disabled -add_task(function* reinstallDisabledAddonAwaitingUninstall() { - yield promiseInstallAllFiles([do_get_addon("test_undouninstall1")]); - - let a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - do_check_eq(getInstallReason(ID), ADDON_INSTALL); - do_check_eq(getStartupReason(ID), ADDON_INSTALL); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - - a1.userDisabled = true; - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_eq(getShutdownReason(ID), ADDON_DISABLE); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(a1.isActive); - do_check_true(a1.userDisabled); - - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - a1.uninstall(true); - ensure_test_completed(); - - a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonNotStarted(ID); - do_check_true(hasFlag(AddonManager.PENDING_UNINSTALL, a1.pendingOperations)); - do_check_false(a1.isActive); - do_check_true(a1.userDisabled); - - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onNewInstall", - "onInstallStarted", - "onInstallEnded" - ]); - - yield promiseInstallAllFiles([do_get_addon("test_undouninstall1")]); - - a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - ensure_test_completed(); - - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID, "1.0"); - do_check_eq(getUninstallReason(ID), ADDON_DOWNGRADE); - do_check_eq(getInstallReason(ID), ADDON_DOWNGRADE); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(a1.isActive); - do_check_true(a1.userDisabled); - - yield promiseRestartManager(); - - a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonNotStarted(ID, "1.0"); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(a1.isActive); - do_check_true(a1.userDisabled); - - a1.uninstall(); -}); - - -// Test that uninstalling a temporary addon can be canceled -add_task(function* cancelUninstallTemporary() { - yield AddonManager.installTemporaryAddon(do_get_addon("test_undouninstall1")); - - let a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - do_check_neq(a1, null); - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - do_check_eq(getInstallReason(ID), ADDON_INSTALL); - do_check_eq(getStartupReason(ID), ADDON_ENABLE); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - a1.uninstall(true); - ensure_test_completed(); - - BootstrapMonitor.checkAddonNotStarted(ID, "1.0"); - do_check_true(hasFlag(AddonManager.PENDING_UNINSTALL, a1.pendingOperations)); - - prepare_test({ - "undouninstall1@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - a1.cancelUninstall(); - ensure_test_completed(); - - a1 = yield promiseAddonByID("undouninstall1@tests.mozilla.org"); - - do_check_neq(a1, null); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - do_check_eq(a1.pendingOperations, 0); - - yield promiseRestartManager(); -}); - -// Tests that cancelling the uninstall of an incompatible restartless addon -// does not start the addon -add_task(function* cancelUninstallIncompatibleRestartless() { - yield promiseInstallAllFiles([do_get_addon("test_undoincompatible")]); - - let a1 = yield promiseAddonByID(INCOMPAT_ID); - do_check_neq(a1, null); - BootstrapMonitor.checkAddonNotStarted(INCOMPAT_ID); - do_check_false(a1.isActive); - - prepare_test({ - "incompatible@tests.mozilla.org": [ - "onUninstalling" - ] - }); - a1.uninstall(true); - ensure_test_completed(); - - a1 = yield promiseAddonByID(INCOMPAT_ID); - do_check_neq(a1, null); - do_check_true(hasFlag(AddonManager.PENDING_UNINSTALL, a1.pendingOperations)); - do_check_false(a1.isActive); - - prepare_test({ - "incompatible@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - a1.cancelUninstall(); - ensure_test_completed(); - - a1 = yield promiseAddonByID(INCOMPAT_ID); - do_check_neq(a1, null); - BootstrapMonitor.checkAddonNotStarted(INCOMPAT_ID); - do_check_eq(a1.pendingOperations, 0); - do_check_false(a1.isActive); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_uninstall.js b/toolkit/mozapps/webextensions/test/xpcshell/test_uninstall.js deleted file mode 100644 index 6b12489f2..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_uninstall.js +++ /dev/null @@ -1,216 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that add-ons can be uninstalled. - -var addon1 = { - id: "addon1@tests.mozilla.org", - version: "1.0", - name: "Test 1", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }] -}; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -// Sets up the profile by installing an add-on. -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - do_test_pending(); - startupManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(olda1) { - do_check_eq(olda1, null); - - writeInstallRDFForExtension(addon1, profileDir); - - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_eq(a1.pendingOperations, 0); - do_check_in_crash_annotation(addon1.id, addon1.version); - - do_execute_soon(run_test_1); - }); - })); -} - -function end_test() { - do_execute_soon(do_test_finished); -} - -// Uninstalling an add-on should work. -function run_test_1() { - prepare_test({ - "addon1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_eq(a1.pendingOperations, 0); - do_check_neq(a1.operationsRequiringRestart & - AddonManager.OP_NEEDS_RESTART_UNINSTALL, 0); - a1.uninstall(); - do_check_true(hasFlag(a1.pendingOperations, AddonManager.PENDING_UNINSTALL)); - do_check_in_crash_annotation(addon1.id, addon1.version); - - ensure_test_completed(); - - AddonManager.getAddonsWithOperationsByTypes(null, function(list) { - do_check_eq(list.length, 1); - do_check_eq(list[0].id, "addon1@tests.mozilla.org"); - - do_execute_soon(check_test_1); - }); - }); -} - -function check_test_1() { - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_eq(a1, null); - do_check_false(isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org")); - do_check_not_in_crash_annotation(addon1.id, addon1.version); - - var dest = profileDir.clone(); - dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); - do_check_false(dest.exists()); - writeInstallRDFForExtension(addon1, profileDir); - do_execute_soon(run_test_2); - }); -} - -// Cancelling the uninstall should send onOperationCancelled -function run_test_2() { - restartManager(); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_eq(a1.pendingOperations, 0); - a1.uninstall(); - do_check_true(hasFlag(a1.pendingOperations, AddonManager.PENDING_UNINSTALL)); - - ensure_test_completed(); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - a1.cancelUninstall(); - do_check_eq(a1.pendingOperations, 0); - - ensure_test_completed(); - - do_execute_soon(check_test_2); - }); -} - -function check_test_2() { - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - run_test_3(); - }); -} - -// Uninstalling an item pending disable should still require a restart -function run_test_3() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - prepare_test({ - "addon1@tests.mozilla.org": [ - "onDisabling" - ] - }); - a1.userDisabled = true; - ensure_test_completed(); - - do_check_true(hasFlag(AddonManager.PENDING_DISABLE, a1.pendingOperations)); - do_check_true(a1.isActive); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onUninstalling" - ] - }); - a1.uninstall(); - - check_test_3(); - }); -} - -function check_test_3() { - ensure_test_completed(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_true(hasFlag(AddonManager.PENDING_UNINSTALL, a1.pendingOperations)); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onOperationCancelled" - ] - }); - a1.cancelUninstall(); - ensure_test_completed(); - do_check_true(hasFlag(AddonManager.PENDING_DISABLE, a1.pendingOperations)); - - do_execute_soon(run_test_4); - }); -} - -// Test that uninstalling an inactive item should happen without a restart -function run_test_4() { - restartManager(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_false(a1.isActive); - do_check_true(a1.userDisabled); - do_check_false(isExtensionInAddonsList(profileDir, a1.id)); - - prepare_test({ - "addon1@tests.mozilla.org": [ - ["onUninstalling", false], - "onUninstalled" - ] - }); - a1.uninstall(); - ensure_test_completed(); - - check_test_4(); - }); -} - -function check_test_4() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_eq(a1, null); - - end_test(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_update.js b/toolkit/mozapps/webextensions/test/xpcshell/test_update.js deleted file mode 100644 index 4db488ab5..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_update.js +++ /dev/null @@ -1,1398 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that add-on update checks work - -const PREF_MATCH_OS_LOCALE = "intl.locale.matchOS"; -const PREF_SELECTED_LOCALE = "general.useragent.locale"; -const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled"; - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); -// This test requires lightweight themes update to be enabled even if the app -// doesn't support lightweight themes. -Services.prefs.setBoolPref("lightweightThemes.update.enabled", true); - -Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm"); - -const PARAMS = "?%REQ_VERSION%/%ITEM_ID%/%ITEM_VERSION%/%ITEM_MAXAPPVERSION%/" + - "%ITEM_STATUS%/%APP_ID%/%APP_VERSION%/%CURRENT_APP_VERSION%/" + - "%APP_OS%/%APP_ABI%/%APP_LOCALE%/%UPDATE_TYPE%"; - -var gInstallDate; - -var testserver = createHttpServer(); -gPort = testserver.identity.primaryPort; -mapFile("/data/test_update.rdf", testserver); -mapFile("/data/test_update.json", testserver); -mapFile("/data/test_update.xml", testserver); -testserver.registerDirectory("/addons/", do_get_file("addons")); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -var originalSyncGUID; - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - Services.prefs.setBoolPref(PREF_MATCH_OS_LOCALE, false); - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "fr-FR"); - - run_next_test(); -} - -let testParams = [ - { updateFile: "test_update.rdf", - appId: "xpcshell@tests.mozilla.org" }, - { updateFile: "test_update.json", - appId: "toolkit@mozilla.org" }, -]; - -for (let test of testParams) { - let { updateFile, appId } = test; - - add_test(function() { - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon2@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "0", - maxVersion: "0" - }], - name: "Test Addon 2", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon3@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "5", - maxVersion: "5" - }], - name: "Test Addon 3", - }, profileDir); - - startupManager(); - - run_next_test(); - }); - - // Verify that an update is available and can be installed. - let check_test_1; - add_test(function run_test_1() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - do_check_eq(a1.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DEFAULT); - do_check_eq(a1.releaseNotesURI, null); - do_check_true(a1.foreignInstall); - do_check_neq(a1.syncGUID, null); - - originalSyncGUID = a1.syncGUID; - a1.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DEFAULT; - - prepare_test({ - "addon1@tests.mozilla.org": [ - ["onPropertyChanged", ["applyBackgroundUpdates"]] - ] - }); - a1.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE; - check_test_completed(); - - a1.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE; - - prepare_test({}, [ - "onNewInstall", - ]); - - a1.findUpdates({ - onNoCompatibilityUpdateAvailable: function(addon) { - ok(false, "Should not have seen onNoCompatibilityUpdateAvailable notification"); - }, - - onUpdateAvailable: function(addon, install) { - ensure_test_completed(); - - AddonManager.getAllInstalls(function(aInstalls) { - do_check_eq(aInstalls.length, 1); - do_check_eq(aInstalls[0], install); - - do_check_eq(addon, a1); - do_check_eq(install.name, addon.name); - do_check_eq(install.version, "2.0"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - do_check_eq(install.existingAddon, addon); - do_check_eq(install.releaseNotesURI.spec, "http://example.com/updateInfo.xhtml"); - - // Verify that another update check returns the same AddonInstall - a1.findUpdates({ - onNoCompatibilityUpdateAvailable: function() { - ok(false, "Should not have seen onNoCompatibilityUpdateAvailable notification"); - }, - - onUpdateAvailable: function(newAddon, newInstall) { - AddonManager.getAllInstalls(function(aInstalls2) { - do_check_eq(aInstalls2.length, 1); - do_check_eq(aInstalls2[0], install); - do_check_eq(newAddon, addon); - do_check_eq(newInstall, install); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_1); - install.install(); - }); - }, - - onNoUpdateAvailable: function() { - ok(false, "Should not have seen onNoUpdateAvailable notification"); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }, - - onNoUpdateAvailable: function(addon) { - ok(false, "Should not have seen onNoUpdateAvailable notification"); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); - - let run_test_2; - check_test_1 = (install) => { - ensure_test_completed(); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - run_test_2(install); - return false; - }; - - // Continue installing the update. - let check_test_2; - run_test_2 = (install) => { - // Verify that another update check returns no new update - install.existingAddon.findUpdates({ - onNoCompatibilityUpdateAvailable: function(addon) { - ok(false, "Should not have seen onNoCompatibilityUpdateAvailable notification"); - }, - - onUpdateAvailable: function() { - ok(false, "Should find no available update when one is already downloading"); - }, - - onNoUpdateAvailable: function(addon) { - AddonManager.getAllInstalls(function(aInstalls) { - do_check_eq(aInstalls.length, 1); - do_check_eq(aInstalls[0], install); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], check_test_2); - install.install(); - }); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }; - - check_test_2 = () => { - ensure_test_completed(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(olda1) { - do_check_neq(olda1, null); - do_check_eq(olda1.version, "1.0"); - do_check_true(isExtensionInAddonsList(profileDir, olda1.id)); - - shutdownManager(); - - startupManager(); - - do_check_true(isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org")); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_eq(a1.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DISABLE); - do_check_eq(a1.releaseNotesURI.spec, "http://example.com/updateInfo.xhtml"); - do_check_true(a1.foreignInstall); - do_check_neq(a1.syncGUID, null); - do_check_eq(originalSyncGUID, a1.syncGUID); - - // Make sure that the extension lastModifiedTime was updated. - let testURI = a1.getResourceURI(TEST_UNPACKED ? "install.rdf" : ""); - let testFile = testURI.QueryInterface(Components.interfaces.nsIFileURL).file; - let difference = testFile.lastModifiedTime - Date.now(); - do_check_true(Math.abs(difference) < MAX_TIME_DIFFERENCE); - - a1.uninstall(); - run_next_test(); - }); - })); - }; - - // Check that an update check finds compatibility updates and applies them - let check_test_3; - add_test(function run_test_3() { - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_true(a2.isCompatible); - do_check_false(a2.appDisabled); - do_check_true(a2.isCompatibleWith("0", "0")); - - a2.findUpdates({ - onCompatibilityUpdateAvailable: function(addon) { - do_check_true(a2.isCompatible); - do_check_false(a2.appDisabled); - do_check_true(a2.isActive); - }, - - onUpdateAvailable: function(addon, install) { - ok(false, "Should not have seen an available update"); - }, - - onNoUpdateAvailable: function(addon) { - do_check_eq(addon, a2); - do_execute_soon(check_test_3); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); - - check_test_3 = () => { - restartManager(); - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_true(a2.isCompatible); - do_check_false(a2.appDisabled); - a2.uninstall(); - - run_next_test(); - }); - } - - // Checks that we see no compatibility information when there is none. - add_test(function run_test_4() { - AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) { - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_false(a3.isCompatible); - do_check_true(a3.appDisabled); - do_check_true(a3.isCompatibleWith("5", "5")); - do_check_false(a3.isCompatibleWith("2", "2")); - - a3.findUpdates({ - sawUpdate: false, - onCompatibilityUpdateAvailable: function(addon) { - ok(false, "Should not have seen compatibility information"); - }, - - onNoCompatibilityUpdateAvailable: function(addon) { - this.sawUpdate = true; - }, - - onUpdateAvailable: function(addon, install) { - ok(false, "Should not have seen an available update"); - }, - - onNoUpdateAvailable: function(addon) { - do_check_true(this.sawUpdate); - run_next_test(); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); - - // Checks that compatibility info for future apps are detected but don't make - // the item compatibile. - let check_test_5; - add_test(function run_test_5() { - AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) { - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_false(a3.isCompatible); - do_check_true(a3.appDisabled); - do_check_true(a3.isCompatibleWith("5", "5")); - do_check_false(a3.isCompatibleWith("2", "2")); - - a3.findUpdates({ - sawUpdate: false, - onCompatibilityUpdateAvailable: function(addon) { - do_check_false(a3.isCompatible); - do_check_true(a3.appDisabled); - do_check_false(a3.isActive); - this.sawUpdate = true; - }, - - onNoCompatibilityUpdateAvailable: function(addon) { - ok(false, "Should have seen some compatibility information"); - }, - - onUpdateAvailable: function(addon, install) { - ok(false, "Should not have seen an available update"); - }, - - onNoUpdateAvailable: function(addon) { - do_check_true(this.sawUpdate); - do_execute_soon(check_test_5); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED, "3.0", "3.0"); - }); - }); - - check_test_5 = () => { - restartManager(); - AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) { - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_false(a3.isCompatible); - do_check_true(a3.appDisabled); - - a3.uninstall(); - run_next_test(); - }); - } - - // Test that background update checks work - let continue_test_6; - add_test(function run_test_6() { - restartManager(); - - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - }, profileDir); - restartManager(); - - prepare_test({}, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded" - ], continue_test_6); - - AddonManagerInternal.backgroundUpdateCheck(); - }); - - let check_test_6; - continue_test_6 = (install) => { - do_check_neq(install.existingAddon, null); - do_check_eq(install.existingAddon.id, "addon1@tests.mozilla.org"); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test_6)); - } - - check_test_6 = (install) => { - do_check_eq(install.existingAddon.pendingUpgrade.install, install); - - restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - do_check_eq(a1.releaseNotesURI.spec, "http://example.com/updateInfo.xhtml"); - a1.uninstall(); - run_next_test(); - }); - } - - // Verify the parameter escaping in update urls. - add_test(function run_test_8() { - restartManager(); - - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "5.0", - updateURL: "http://localhost:" + gPort + "/data/param_test.rdf" + PARAMS, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "2" - }], - name: "Test Addon 1", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon2@tests.mozilla.org", - version: "67.0.5b1", - updateURL: "http://localhost:" + gPort + "/data/param_test.rdf" + PARAMS, - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "0", - maxVersion: "3" - }], - name: "Test Addon 2", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon3@tests.mozilla.org", - version: "1.3+", - updateURL: "http://localhost:" + gPort + "/data/param_test.rdf" + PARAMS, - targetApplications: [{ - id: appId, - minVersion: "0", - maxVersion: "0" - }, { - id: "toolkit@mozilla.org", - minVersion: "0", - maxVersion: "3" - }], - name: "Test Addon 3", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon4@tests.mozilla.org", - version: "0.5ab6", - updateURL: "http://localhost:" + gPort + "/data/param_test.rdf" + PARAMS, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "5" - }], - name: "Test Addon 4", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon5@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/param_test.rdf" + PARAMS, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 5", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon6@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/param_test.rdf" + PARAMS, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 6", - }, profileDir); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(a2) { - a2.userDisabled = true; - restartManager(); - - testserver.registerPathHandler("/data/param_test.rdf", function(request, response) { - do_check_neq(request.queryString, ""); - let [req_version, item_id, item_version, - item_maxappversion, item_status, - app_id, app_version, current_app_version, - app_os, app_abi, app_locale, update_type] = - request.queryString.split("/").map(a => decodeURIComponent(a)); - - do_check_eq(req_version, "2"); - - switch (item_id) { - case "addon1@tests.mozilla.org": - do_check_eq(item_version, "5.0"); - do_check_eq(item_maxappversion, "2"); - do_check_eq(item_status, "userEnabled"); - do_check_eq(app_version, "1"); - do_check_eq(update_type, "97"); - break; - case "addon2@tests.mozilla.org": - do_check_eq(item_version, "67.0.5b1"); - do_check_eq(item_maxappversion, "3"); - do_check_eq(item_status, "userDisabled"); - do_check_eq(app_version, "1"); - do_check_eq(update_type, "49"); - break; - case "addon3@tests.mozilla.org": - do_check_eq(item_version, "1.3+"); - do_check_eq(item_maxappversion, "0"); - do_check_eq(item_status, "userEnabled"); - do_check_eq(app_version, "1"); - do_check_eq(update_type, "112"); - break; - case "addon4@tests.mozilla.org": - do_check_eq(item_version, "0.5ab6"); - do_check_eq(item_maxappversion, "5"); - do_check_eq(item_status, "userEnabled"); - do_check_eq(app_version, "2"); - do_check_eq(update_type, "98"); - break; - case "addon5@tests.mozilla.org": - do_check_eq(item_version, "1.0"); - do_check_eq(item_maxappversion, "1"); - do_check_eq(item_status, "userEnabled"); - do_check_eq(app_version, "1"); - do_check_eq(update_type, "35"); - break; - case "addon6@tests.mozilla.org": - do_check_eq(item_version, "1.0"); - do_check_eq(item_maxappversion, "1"); - do_check_eq(item_status, "userEnabled"); - do_check_eq(app_version, "1"); - do_check_eq(update_type, "99"); - break; - default: - ok(false, "Update request for unexpected add-on " + item_id); - } - - do_check_eq(app_id, "xpcshell@tests.mozilla.org"); - do_check_eq(current_app_version, "1"); - do_check_eq(app_os, "XPCShell"); - do_check_eq(app_abi, "noarch-spidermonkey"); - do_check_eq(app_locale, "fr-FR"); - - request.setStatusLine(null, 500, "Server Error"); - }); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org"], - function([a1_2, a2_2, a3_2, a4_2, a5_2, a6_2]) { - let count = 6; - - function next_test() { - a1_2.uninstall(); - a2_2.uninstall(); - a3_2.uninstall(); - a4_2.uninstall(); - a5_2.uninstall(); - a6_2.uninstall(); - - restartManager(); - run_next_test(); - } - - let compatListener = { - onUpdateFinished: function(addon, error) { - if (--count == 0) - do_execute_soon(next_test); - } - }; - - let updateListener = { - onUpdateAvailable: function(addon, update) { - // Dummy so the update checker knows we care about new versions - }, - - onUpdateFinished: function(addon, error) { - if (--count == 0) - do_execute_soon(next_test); - } - }; - - a1_2.findUpdates(updateListener, AddonManager.UPDATE_WHEN_USER_REQUESTED); - a2_2.findUpdates(compatListener, AddonManager.UPDATE_WHEN_ADDON_INSTALLED); - a3_2.findUpdates(updateListener, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - a4_2.findUpdates(updateListener, AddonManager.UPDATE_WHEN_NEW_APP_DETECTED, "2"); - a5_2.findUpdates(compatListener, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); - a6_2.findUpdates(updateListener, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); - }); - })); - }); - - // Tests that if an install.rdf claims compatibility then the add-on will be - // seen as compatible regardless of what the update.rdf says. - add_test(function run_test_9() { - writeInstallRDFForExtension({ - id: "addon4@tests.mozilla.org", - version: "5.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "0", - maxVersion: "1" - }], - name: "Test Addon 1", - }, profileDir); - - restartManager(); - - AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) { - do_check_true(a4.isActive, "addon4 is active"); - do_check_true(a4.isCompatible, "addon4 is compatible"); - - run_next_test(); - }); - }); - - // Tests that a normal update check won't decrease a targetApplication's - // maxVersion. - add_test(function run_test_10() { - AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) { - a4.findUpdates({ - onUpdateFinished: function(addon) { - do_check_true(addon.isCompatible, "addon4 is compatible"); - - run_next_test(); - } - }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - }); - }); - - // Tests that an update check for a new application will decrease a - // targetApplication's maxVersion. - add_test(function run_test_11() { - AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) { - a4.findUpdates({ - onUpdateFinished: function(addon) { - do_check_true(addon.isCompatible, "addon4 is not compatible"); - - run_next_test(); - } - }, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); - }); - }); - - // Check that the decreased maxVersion applied and disables the add-on - add_test(function run_test_12() { - restartManager(); - - AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) { - do_check_true(a4.isActive); - do_check_true(a4.isCompatible); - - a4.uninstall(); - run_next_test(); - }); - }); - - // Tests that a compatibility update is passed to the listener when there is - // compatibility info for the current version of the app but not for the - // version of the app that the caller requested an update check for, when - // strict compatibility checking is disabled. - let check_test_13; - add_test(function run_test_13() { - restartManager(); - - // Not initially compatible but the update check will make it compatible - writeInstallRDFForExtension({ - id: "addon7@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "0", - maxVersion: "0" - }], - name: "Test Addon 7", - }, profileDir); - restartManager(); - - AddonManager.getAddonByID("addon7@tests.mozilla.org", function(a7) { - do_check_neq(a7, null); - do_check_true(a7.isActive); - do_check_true(a7.isCompatible); - do_check_false(a7.appDisabled); - do_check_true(a7.isCompatibleWith("0", "0")); - - a7.findUpdates({ - sawUpdate: false, - onNoCompatibilityUpdateAvailable: function(addon) { - ok(false, "Should have seen compatibility information"); - }, - - onUpdateAvailable: function(addon, install) { - ok(false, "Should not have seen an available update"); - }, - - onUpdateFinished: function(addon) { - do_check_true(addon.isCompatible); - do_execute_soon(check_test_13); - } - }, AddonManager.UPDATE_WHEN_NEW_APP_DETECTED, "3.0", "3.0"); - }); - }); - - check_test_13 = () => { - restartManager(); - AddonManager.getAddonByID("addon7@tests.mozilla.org", function(a7) { - do_check_neq(a7, null); - do_check_true(a7.isActive); - do_check_true(a7.isCompatible); - do_check_false(a7.appDisabled); - - a7.uninstall(); - run_next_test(); - }); - } - - // Test that background update checks doesn't update an add-on that isn't - // allowed to update automatically. - let check_test_14; - add_test(function run_test_14() { - restartManager(); - - // Have an add-on there that will be updated so we see some events from it - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon8@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 8", - }, profileDir); - restartManager(); - - AddonManager.getAddonByID("addon8@tests.mozilla.org", function(a8) { - a8.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE; - - // The background update check will find updates for both add-ons but only - // proceed to install one of them. - AddonManager.addInstallListener({ - onNewInstall: function(aInstall) { - let id = aInstall.existingAddon.id; - ok((id == "addon1@tests.mozilla.org" || id == "addon8@tests.mozilla.org"), - "Saw unexpected onNewInstall for " + id); - }, - - onDownloadStarted: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - }, - - onDownloadEnded: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - }, - - onDownloadFailed: function(aInstall) { - ok(false, "Should not have seen onDownloadFailed event"); - }, - - onDownloadCancelled: function(aInstall) { - ok(false, "Should not have seen onDownloadCancelled event"); - }, - - onInstallStarted: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - }, - - onInstallEnded: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - do_check_eq(aInstall.existingAddon.pendingUpgrade.install, aInstall); - - do_execute_soon(check_test_14); - }, - - onInstallFailed: function(aInstall) { - ok(false, "Should not have seen onInstallFailed event"); - }, - - onInstallCancelled: function(aInstall) { - ok(false, "Should not have seen onInstallCancelled event"); - }, - }); - - AddonManagerInternal.backgroundUpdateCheck(); - }); - }); - - check_test_14 = () => { - restartManager(); - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon8@tests.mozilla.org"], function([a1, a8]) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - a1.uninstall(); - - do_check_neq(a8, null); - do_check_eq(a8.version, "1.0"); - a8.uninstall(); - - run_next_test(); - }); - } - - // Test that background update checks doesn't update an add-on that is - // pending uninstall - let check_test_15; - add_test(function run_test_15() { - restartManager(); - - // Have an add-on there that will be updated so we see some events from it - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon8@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 8", - }, profileDir); - restartManager(); - - AddonManager.getAddonByID("addon8@tests.mozilla.org", function(a8) { - a8.uninstall(); - do_check_false(hasFlag(a8.permissions, AddonManager.PERM_CAN_UPGRADE)); - - // The background update check will find updates for both add-ons but only - // proceed to install one of them. - AddonManager.addInstallListener({ - onNewInstall: function(aInstall) { - let id = aInstall.existingAddon.id; - ok((id == "addon1@tests.mozilla.org" || id == "addon8@tests.mozilla.org"), - "Saw unexpected onNewInstall for " + id); - }, - - onDownloadStarted: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - }, - - onDownloadEnded: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - }, - - onDownloadFailed: function(aInstall) { - ok(false, "Should not have seen onDownloadFailed event"); - }, - - onDownloadCancelled: function(aInstall) { - ok(false, "Should not have seen onDownloadCancelled event"); - }, - - onInstallStarted: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - }, - - onInstallEnded: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - do_execute_soon(check_test_15); - }, - - onInstallFailed: function(aInstall) { - ok(false, "Should not have seen onInstallFailed event"); - }, - - onInstallCancelled: function(aInstall) { - ok(false, "Should not have seen onInstallCancelled event"); - }, - }); - - AddonManagerInternal.backgroundUpdateCheck(); - }); - }); - - check_test_15 = () => { - restartManager(); - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon8@tests.mozilla.org"], function([a1, a8]) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - a1.uninstall(); - - do_check_eq(a8, null); - - run_next_test(); - }); - } - - add_test(function run_test_16() { - restartManager(); - - restartManager(); - - let url = "http://localhost:" + gPort + "/addons/test_install2_1.xpi"; - AddonManager.getInstallForURL(url, function(aInstall) { - aInstall.addListener({ - onInstallEnded: function() { - do_execute_soon(function install_2_1_ended() { - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a1) { - do_check_neq(a1.syncGUID, null); - let oldGUID = a1.syncGUID; - - let url_2 = "http://localhost:" + gPort + "/addons/test_install2_2.xpi"; - AddonManager.getInstallForURL(url_2, function(aInstall_2) { - aInstall_2.addListener({ - onInstallEnded: function() { - do_execute_soon(function install_2_2_ended() { - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_neq(a2.syncGUID, null); - do_check_eq(oldGUID, a2.syncGUID); - - a2.uninstall(); - run_next_test(); - }); - }); - } - }); - aInstall_2.install(); - }, "application/x-xpinstall"); - }); - }); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); - }); - - // Test that the update check correctly observes the - // extensions.strictCompatibility pref and compatibility overrides. - add_test(function run_test_17() { - restartManager(); - - writeInstallRDFForExtension({ - id: "addon9@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "0.1", - maxVersion: "0.2" - }], - name: "Test Addon 9", - }, profileDir); - restartManager(); - - AddonManager.addInstallListener({ - onNewInstall: function(aInstall) { - equal(aInstall.existingAddon.id, "addon9@tests.mozilla.org", - "Saw unexpected onNewInstall for " + aInstall.existingAddon.id); - do_check_eq(aInstall.version, "3.0"); - }, - onDownloadFailed: function(aInstall) { - AddonManager.getAddonByID("addon9@tests.mozilla.org", function(a9) { - a9.uninstall(); - run_next_test(); - }); - } - }); - - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, - "http://localhost:" + gPort + "/data/test_update.xml"); - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS_PERFORMANCE, - "http://localhost:" + gPort + "/data/test_update.xml"); - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - - AddonManagerInternal.backgroundUpdateCheck(); - }); - - // Tests that compatibility updates are applied to addons when the updated - // compatibility data wouldn't match with strict compatibility enabled. - add_test(function run_test_18() { - restartManager(); - writeInstallRDFForExtension({ - id: "addon10@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "0.1", - maxVersion: "0.2" - }], - name: "Test Addon 10", - }, profileDir); - restartManager(); - - AddonManager.getAddonByID("addon10@tests.mozilla.org", function(a10) { - do_check_neq(a10, null); - - a10.findUpdates({ - onNoCompatibilityUpdateAvailable: function() { - ok(false, "Should have seen compatibility information"); - }, - - onUpdateAvailable: function() { - ok(false, "Should not have seen an available update"); - }, - - onUpdateFinished: function() { - a10.uninstall(); - run_next_test(); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); - - // Test that the update check correctly observes when an addon opts-in to - // strict compatibility checking. - add_test(function run_test_19() { - restartManager(); - writeInstallRDFForExtension({ - id: "addon11@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "0.1", - maxVersion: "0.2" - }], - name: "Test Addon 11", - }, profileDir); - restartManager(); - - AddonManager.getAddonByID("addon11@tests.mozilla.org", function(a11) { - do_check_neq(a11, null); - - a11.findUpdates({ - onCompatibilityUpdateAvailable: function() { - ok(false, "Should have not have seen compatibility information"); - }, - - onUpdateAvailable: function() { - ok(false, "Should not have seen an available update"); - }, - - onUpdateFinished: function() { - a11.uninstall(); - run_next_test(); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); - - // Test that the update succeeds when the update.rdf URN contains a type prefix - // different from the add-on type - let continue_test_20; - add_test(function run_test_20() { - restartManager(); - writeInstallRDFForExtension({ - id: "addon12@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 12", - }, profileDir); - restartManager(); - - prepare_test({}, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded" - ], continue_test_20); - - AddonManagerPrivate.backgroundUpdateCheck(); - }); - - let check_test_20; - continue_test_20 = (install) => { - do_check_neq(install.existingAddon, null); - do_check_eq(install.existingAddon.id, "addon12@tests.mozilla.org"); - - prepare_test({ - "addon12@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test_20)); - } - - check_test_20 = (install) => { - do_check_eq(install.existingAddon.pendingUpgrade.install, install); - - restartManager(); - AddonManager.getAddonByID("addon12@tests.mozilla.org", function(a12) { - do_check_neq(a12, null); - do_check_eq(a12.version, "2.0"); - do_check_eq(a12.type, "extension"); - a12.uninstall(); - - do_execute_soon(() => { - restartManager(); - run_next_test() - }); - }); - } - - add_task(function* cleanup() { - let addons = yield new Promise(resolve => { - AddonManager.getAddonsByTypes(["extension"], resolve); - }); - - for (let addon of addons) - addon.uninstall(); - - yield promiseRestartManager(); - - shutdownManager(); - - yield new Promise(do_execute_soon); - }); -} - -// Test that background update checks work for lightweight themes -add_test(function run_test_7() { - startupManager(); - - LightweightThemeManager.currentTheme = { - id: "1", - version: "1", - name: "Test LW Theme", - description: "A test theme", - author: "Mozilla", - homepageURL: "http://localhost:" + gPort + "/data/index.html", - headerURL: "http://localhost:" + gPort + "/data/header.png", - footerURL: "http://localhost:" + gPort + "/data/footer.png", - previewURL: "http://localhost:" + gPort + "/data/preview.png", - iconURL: "http://localhost:" + gPort + "/data/icon.png", - updateURL: "http://localhost:" + gPort + "/data/lwtheme.js" - }; - - // XXX The lightweight theme manager strips non-https updateURLs so hack it - // back in. - let themes = JSON.parse(Services.prefs.getCharPref("lightweightThemes.usedThemes")); - do_check_eq(themes.length, 1); - themes[0].updateURL = "http://localhost:" + gPort + "/data/lwtheme.js"; - Services.prefs.setCharPref("lightweightThemes.usedThemes", JSON.stringify(themes)); - - testserver.registerPathHandler("/data/lwtheme.js", function(request, response) { - // Server will specify an expiry in one year. - let expiry = new Date(); - expiry.setFullYear(expiry.getFullYear() + 1); - response.setHeader("Expires", expiry.toUTCString(), false); - response.write(JSON.stringify({ - id: "1", - version: "2", - name: "Updated Theme", - description: "A test theme", - author: "Mozilla", - homepageURL: "http://localhost:" + gPort + "/data/index2.html", - headerURL: "http://localhost:" + gPort + "/data/header.png", - footerURL: "http://localhost:" + gPort + "/data/footer.png", - previewURL: "http://localhost:" + gPort + "/data/preview.png", - iconURL: "http://localhost:" + gPort + "/data/icon2.png", - updateURL: "http://localhost:" + gPort + "/data/lwtheme.js" - })); - }); - - AddonManager.getAddonByID("1@personas.mozilla.org", function(p1) { - do_check_neq(p1, null); - do_check_eq(p1.version, "1"); - do_check_eq(p1.name, "Test LW Theme"); - do_check_true(p1.isActive); - do_check_eq(p1.installDate.getTime(), p1.updateDate.getTime()); - - // 5 seconds leeway seems like a lot, but tests can run slow and really if - // this is within 5 seconds it is fine. If it is going to be wrong then it - // is likely to be hours out at least - do_check_true((Date.now() - p1.installDate.getTime()) < 5000); - - gInstallDate = p1.installDate.getTime(); - - prepare_test({ - "1@personas.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onExternalInstall" - ], check_test_7); - - AddonManagerInternal.backgroundUpdateCheck(); - }); -}); - -function check_test_7() { - AddonManager.getAddonByID("1@personas.mozilla.org", function(p1) { - do_check_neq(p1, null); - do_check_eq(p1.version, "2"); - do_check_eq(p1.name, "Updated Theme"); - do_check_eq(p1.installDate.getTime(), gInstallDate); - do_check_true(p1.installDate.getTime() < p1.updateDate.getTime()); - - // 5 seconds leeway seems like a lot, but tests can run slow and really if - // this is within 5 seconds it is fine. If it is going to be wrong then it - // is likely to be hours out at least - do_check_true((Date.now() - p1.updateDate.getTime()) < 5000); - - gInstallDate = p1.installDate.getTime(); - - run_next_test(); - }); -} - -// Test that background update checks for lightweight themes do not use the cache -// The update body from test 7 shouldn't be used since the cache should be bypassed. -add_test(function () { - // XXX The lightweight theme manager strips non-https updateURLs so hack it - // back in. - let themes = JSON.parse(Services.prefs.getCharPref("lightweightThemes.usedThemes")); - do_check_eq(themes.length, 1); - themes[0].updateURL = "http://localhost:" + gPort + "/data/lwtheme.js"; - Services.prefs.setCharPref("lightweightThemes.usedThemes", JSON.stringify(themes)); - - testserver.registerPathHandler("/data/lwtheme.js", function(request, response) { - response.write(JSON.stringify({ - id: "1", - version: "3", - name: "Updated Theme v.3", - description: "A test theme v.3", - author: "John Smith", - homepageURL: "http://localhost:" + gPort + "/data/index3.html?v=3", - headerURL: "http://localhost:" + gPort + "/data/header.png?v=3", - footerURL: "http://localhost:" + gPort + "/data/footer.png?v=3", - previewURL: "http://localhost:" + gPort + "/data/preview.png?v=3", - iconURL: "http://localhost:" + gPort + "/data/icon2.png?v=3", - updateURL: "https://localhost:" + gPort + "/data/lwtheme.js?v=3" - })); - }); - - AddonManager.getAddonByID("1@personas.mozilla.org", function(p1) { - do_check_neq(p1, null); - do_check_eq(p1.version, "2"); - do_check_eq(p1.name, "Updated Theme"); - do_check_true(p1.isActive); - do_check_eq(p1.installDate.getTime(), gInstallDate); - do_check_true(p1.installDate.getTime() < p1.updateDate.getTime()); - - prepare_test({ - "1@personas.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onExternalInstall" - ], check_test_7_cache); - - AddonManagerInternal.backgroundUpdateCheck(); - }); -}); - -function check_test_7_cache() { - AddonManager.getAddonByID("1@personas.mozilla.org", function(p1) { - let currentTheme = LightweightThemeManager.currentTheme; - do_check_neq(p1, null); - do_check_eq(p1.version, "3"); - do_check_eq(p1.name, "Updated Theme v.3"); - do_check_eq(p1.description, "A test theme v.3"); - do_print(JSON.stringify(p1)); - do_check_eq(p1.creator.name, "John Smith"); - do_check_eq(p1.homepageURL, "http://localhost:" + gPort + "/data/index3.html?v=3"); - do_check_eq(p1.screenshots[0].url, "http://localhost:" + gPort + "/data/preview.png?v=3"); - do_check_eq(p1.iconURL, "http://localhost:" + gPort + "/data/icon2.png?v=3"); - do_check_eq(currentTheme.headerURL, "http://localhost:" + gPort + "/data/header.png?v=3"); - do_check_eq(currentTheme.footerURL, "http://localhost:" + gPort + "/data/footer.png?v=3"); - do_check_eq(currentTheme.updateURL, "https://localhost:" + gPort + "/data/lwtheme.js?v=3"); - - do_check_eq(p1.installDate.getTime(), gInstallDate); - do_check_true(p1.installDate.getTime() < p1.updateDate.getTime()); - - run_next_test(); - }); -} - -// Test that the update check returns nothing for addons in locked install -// locations. -add_test(function run_test_locked_install() { - const lockedDir = gProfD.clone(); - lockedDir.append("locked_extensions"); - registerDirectory("XREAppFeat", lockedDir); - restartManager(); - writeInstallRDFForExtension({ - id: "addon13@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/test_update.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "0.1", - maxVersion: "0.2" - }], - name: "Test Addon 13", - }, lockedDir); - restartManager(); - - AddonManager.getAddonByID("addon13@tests.mozilla.org", function(a13) { - do_check_neq(a13, null); - - a13.findUpdates({ - onCompatibilityUpdateAvailable: function() { - ok(false, "Should have not have seen compatibility information"); - }, - - onUpdateAvailable: function() { - ok(false, "Should not have seen an available update"); - }, - - onUpdateFinished: function() { - ok(true, "Should have seen an onUpdateFinished"); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - - AddonManager.getAllInstalls(aInstalls => { - do_check_eq(aInstalls.length, 0); - }); - run_next_test(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_updateCancel.js b/toolkit/mozapps/webextensions/test/xpcshell/test_updateCancel.js deleted file mode 100644 index b50fd4a55..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_updateCancel.js +++ /dev/null @@ -1,138 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Test cancelling add-on update checks while in progress (bug 925389) - -Components.utils.import("resource://gre/modules/Promise.jsm"); - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - -// Set up an HTTP server to respond to update requests -Components.utils.import("resource://testing-common/httpd.js"); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - - -function run_test() { - // Kick off the task-based tests... - run_next_test(); -} - -// Install one extension -// Start download of update check (but delay HTTP response) -// Cancel update check -// - ensure we get cancel notification -// complete HTTP response -// - ensure no callbacks after cancel -// - ensure update is gone - -// Create an addon update listener containing a promise -// that resolves when the update is cancelled -function makeCancelListener() { - let updated = Promise.defer(); - return { - onUpdateAvailable: function(addon, install) { - updated.reject("Should not have seen onUpdateAvailable notification"); - }, - - onUpdateFinished: function(aAddon, aError) { - do_print("onUpdateCheckFinished: " + aAddon.id + " " + aError); - updated.resolve(aError); - }, - promise: updated.promise - }; -} - -// Set up the HTTP server so that we can control when it responds -var httpReceived = Promise.defer(); -function dataHandler(aRequest, aResponse) { - aResponse.processAsync(); - httpReceived.resolve([aRequest, aResponse]); -} -var testserver = new HttpServer(); -testserver.registerDirectory("/addons/", do_get_file("addons")); -testserver.registerPathHandler("/data/test_update.rdf", dataHandler); -testserver.start(-1); -gPort = testserver.identity.primaryPort; - -// Set up an add-on for update check -writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/test_update.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", -}, profileDir); - -add_task(function* cancel_during_check() { - startupManager(); - - let a1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - do_check_neq(a1, null); - - let listener = makeCancelListener(); - a1.findUpdates(listener, AddonManager.UPDATE_WHEN_USER_REQUESTED); - - // Wait for the http request to arrive - let [request, response] = yield httpReceived.promise; - - // cancelUpdate returns true if there is an update check in progress - do_check_true(a1.cancelUpdate()); - - let updateResult = yield listener.promise; - do_check_eq(AddonManager.UPDATE_STATUS_CANCELLED, updateResult); - - // Now complete the HTTP request - let file = do_get_cwd(); - file.append("data"); - file.append("test_update.rdf"); - let data = loadFile(file); - response.write(data); - response.finish(); - - // trying to cancel again should return false, i.e. nothing to cancel - do_check_false(a1.cancelUpdate()); - - yield true; -}); - -// Test that update check is cancelled if the XPI provider shuts down while -// the update check is in progress -add_task(function* shutdown_during_check() { - // Reset our HTTP listener - httpReceived = Promise.defer(); - - let a1 = yield promiseAddonByID("addon1@tests.mozilla.org"); - do_check_neq(a1, null); - - let listener = makeCancelListener(); - a1.findUpdates(listener, AddonManager.UPDATE_WHEN_USER_REQUESTED); - - // Wait for the http request to arrive - let [request, response] = yield httpReceived.promise; - - shutdownManager(); - - let updateResult = yield listener.promise; - do_check_eq(AddonManager.UPDATE_STATUS_CANCELLED, updateResult); - - // Now complete the HTTP request - let file = do_get_cwd(); - file.append("data"); - file.append("test_update.rdf"); - let data = loadFile(file); - response.write(data); - response.finish(); - - yield testserver.stop(Promise.defer().resolve); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_update_compatmode.js b/toolkit/mozapps/webextensions/test/xpcshell/test_update_compatmode.js deleted file mode 100644 index a1d872009..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_update_compatmode.js +++ /dev/null @@ -1,184 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that add-on update check correctly fills in the -// %COMPATIBILITY_MODE% token in the update URL. - - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); - -Components.utils.import("resource://testing-common/httpd.js"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; -mapFile("/data/test_updatecompatmode_ignore.rdf", testserver); -mapFile("/data/test_updatecompatmode_normal.rdf", testserver); -mapFile("/data/test_updatecompatmode_strict.rdf", testserver); -testserver.registerDirectory("/addons/", do_get_file("addons")); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - writeInstallRDFForExtension({ - id: "compatmode-normal@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/test_updatecompatmode_%COMPATIBILITY_MODE%.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon - normal" - }, profileDir); - - writeInstallRDFForExtension({ - id: "compatmode-strict@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/test_updatecompatmode_%COMPATIBILITY_MODE%.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon - strict" - }, profileDir); - - writeInstallRDFForExtension({ - id: "compatmode-strict-optin@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/test_updatecompatmode_%COMPATIBILITY_MODE%.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon - strict opt-in", - strictCompatibility: true - }, profileDir); - - writeInstallRDFForExtension({ - id: "compatmode-ignore@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/test_updatecompatmode_%COMPATIBILITY_MODE%.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon - ignore", - }, profileDir); - - startupManager(); - run_test_1(); -} - -function end_test() { - testserver.stop(do_test_finished); -} - - -// Strict compatibility checking disabled. -function run_test_1() { - do_print("Testing with strict compatibility checking disabled"); - Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); - AddonManager.getAddonByID("compatmode-normal@tests.mozilla.org", function(addon) { - do_check_neq(addon, null); - addon.findUpdates({ - onCompatibilityUpdateAvailable: function() { - do_throw("Should have not have seen compatibility information"); - }, - - onNoUpdateAvailable: function() { - do_throw("Should have seen an available update"); - }, - - onUpdateAvailable: function(unused, install) { - do_check_eq(install.version, "2.0") - }, - - onUpdateFinished: function() { - run_test_2(); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); -} - -// Strict compatibility checking enabled. -function run_test_2() { - do_print("Testing with strict compatibility checking enabled"); - Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true); - AddonManager.getAddonByID("compatmode-strict@tests.mozilla.org", function(addon) { - do_check_neq(addon, null); - addon.findUpdates({ - onCompatibilityUpdateAvailable: function() { - do_throw("Should have not have seen compatibility information"); - }, - - onNoUpdateAvailable: function() { - do_throw("Should have seen an available update"); - }, - - onUpdateAvailable: function(unused, install) { - do_check_eq(install.version, "2.0") - }, - - onUpdateFinished: function() { - run_test_3(); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); -} - -// Strict compatibility checking opt-in. -function run_test_3() { - do_print("Testing with strict compatibility disabled, but addon opt-in"); - Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); - AddonManager.getAddonByID("compatmode-strict-optin@tests.mozilla.org", function(addon) { - do_check_neq(addon, null); - addon.findUpdates({ - onCompatibilityUpdateAvailable: function() { - do_throw("Should have not have seen compatibility information"); - }, - - onUpdateAvailable: function() { - do_throw("Should not have seen an available update"); - }, - - onUpdateFinished: function() { - run_test_4(); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); -} - -// Compatibility checking disabled. -function run_test_4() { - do_print("Testing with all compatibility checking disabled"); - AddonManager.checkCompatibility = false; - AddonManager.getAddonByID("compatmode-ignore@tests.mozilla.org", function(addon) { - do_check_neq(addon, null); - addon.findUpdates({ - onCompatibilityUpdateAvailable: function() { - do_throw("Should have not have seen compatibility information"); - }, - - onNoUpdateAvailable: function() { - do_throw("Should have seen an available update"); - }, - - onUpdateAvailable: function(unused, install) { - do_check_eq(install.version, "2.0") - }, - - onUpdateFinished: function() { - end_test(); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_update_ignorecompat.js b/toolkit/mozapps/webextensions/test/xpcshell/test_update_ignorecompat.js deleted file mode 100644 index e899619d6..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_update_ignorecompat.js +++ /dev/null @@ -1,107 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that add-on update checks work correctly when compatibility -// check is disabled. - -const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled"; - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); - -var testserver = createHttpServer(); -gPort = testserver.identity.primaryPort; -mapFile("/data/test_update.rdf", testserver); -mapFile("/data/test_update.json", testserver); -mapFile("/data/test_update.xml", testserver); -testserver.registerDirectory("/addons/", do_get_file("addons")); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - -let testParams = [ - { updateFile: "test_update.rdf", - appId: "xpcshell@tests.mozilla.org" }, - { updateFile: "test_update.json", - appId: "toolkit@mozilla.org" }, -]; - -for (let test of testParams) { - let { updateFile, appId } = test; - - // Test that the update check correctly observes the - // extensions.strictCompatibility pref and compatibility overrides. - add_test(function () { - writeInstallRDFForExtension({ - id: "addon9@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "0.1", - maxVersion: "0.2" - }], - name: "Test Addon 9", - }, profileDir); - - restartManager(); - - AddonManager.addInstallListener({ - onNewInstall: function(aInstall) { - if (aInstall.existingAddon.id != "addon9@tests.mozilla.org") - do_throw("Saw unexpected onNewInstall for " + aInstall.existingAddon.id); - do_check_eq(aInstall.version, "4.0"); - }, - onDownloadFailed: function(aInstall) { - run_next_test(); - } - }); - - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS_PERFORMANCE, - "http://localhost:" + gPort + "/data/" + updateFile); - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - - AddonManagerInternal.backgroundUpdateCheck(); - }); - - // Test that the update check correctly observes when an addon opts-in to - // strict compatibility checking. - add_test(function () { - writeInstallRDFForExtension({ - id: "addon11@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "0.1", - maxVersion: "0.2" - }], - name: "Test Addon 11", - }, profileDir); - - restartManager(); - - AddonManager.getAddonByID("addon11@tests.mozilla.org", function(a11) { - do_check_neq(a11, null); - - a11.findUpdates({ - onCompatibilityUpdateAvailable: function() { - do_throw("Should not have seen compatibility information"); - }, - - onUpdateAvailable: function() { - do_throw("Should not have seen an available update"); - }, - - onUpdateFinished: function() { - run_next_test(); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_update_strictcompat.js b/toolkit/mozapps/webextensions/test/xpcshell/test_update_strictcompat.js deleted file mode 100644 index 2b1f65a9f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_update_strictcompat.js +++ /dev/null @@ -1,1126 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that add-on update checks work - -const PREF_MATCH_OS_LOCALE = "intl.locale.matchOS"; -const PREF_SELECTED_LOCALE = "general.useragent.locale"; -const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled"; - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true); -// This test requires lightweight themes update to be enabled even if the app -// doesn't support lightweight themes. -Services.prefs.setBoolPref("lightweightThemes.update.enabled", true); - -Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm"); - -const PARAMS = "?%REQ_VERSION%/%ITEM_ID%/%ITEM_VERSION%/%ITEM_MAXAPPVERSION%/" + - "%ITEM_STATUS%/%APP_ID%/%APP_VERSION%/%CURRENT_APP_VERSION%/" + - "%APP_OS%/%APP_ABI%/%APP_LOCALE%/%UPDATE_TYPE%"; - -var gInstallDate; - -var testserver = createHttpServer(); -gPort = testserver.identity.primaryPort; -mapFile("/data/test_update.rdf", testserver); -mapFile("/data/test_update.json", testserver); -mapFile("/data/test_update.xml", testserver); -testserver.registerDirectory("/addons/", do_get_file("addons")); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - Services.prefs.setBoolPref(PREF_MATCH_OS_LOCALE, false); - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "fr-FR"); - - run_next_test(); -} - -let testParams = [ - { updateFile: "test_update.rdf", - appId: "xpcshell@tests.mozilla.org" }, - { updateFile: "test_update.json", - appId: "toolkit@mozilla.org" }, -]; - -for (let test of testParams) { - let { updateFile, appId } = test; - - add_test(function() { - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon2@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "0", - maxVersion: "0" - }], - name: "Test Addon 2", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon3@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "5", - maxVersion: "5" - }], - name: "Test Addon 3", - }, profileDir); - - startupManager(); - - run_next_test(); - }); - - // Verify that an update is available and can be installed. - let check_test_1; - add_test(function run_test_1() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "1.0"); - do_check_eq(a1.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DEFAULT); - do_check_eq(a1.releaseNotesURI, null); - - a1.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DEFAULT; - - prepare_test({ - "addon1@tests.mozilla.org": [ - ["onPropertyChanged", ["applyBackgroundUpdates"]] - ] - }); - a1.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE; - check_test_completed(); - - a1.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE; - - prepare_test({}, [ - "onNewInstall", - ]); - - a1.findUpdates({ - onNoCompatibilityUpdateAvailable: function(addon) { - ok(false, "Should not have seen onNoCompatibilityUpdateAvailable notification"); - }, - - onUpdateAvailable: function(addon, install) { - ensure_test_completed(); - - AddonManager.getAllInstalls(function(aInstalls) { - do_check_eq(aInstalls.length, 1); - do_check_eq(aInstalls[0], install); - - do_check_eq(addon, a1); - do_check_eq(install.name, addon.name); - do_check_eq(install.version, "2.0"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - do_check_eq(install.existingAddon, addon); - do_check_eq(install.releaseNotesURI.spec, "http://example.com/updateInfo.xhtml"); - - // Verify that another update check returns the same AddonInstall - a1.findUpdates({ - onNoCompatibilityUpdateAvailable: function() { - ok(false, "Should not have seen onNoCompatibilityUpdateAvailable notification"); - }, - - onUpdateAvailable: function(newAddon, newInstall) { - AddonManager.getAllInstalls(function(aInstalls2) { - do_check_eq(aInstalls2.length, 1); - do_check_eq(aInstalls2[0], install); - do_check_eq(newAddon, addon); - do_check_eq(newInstall, install); - - prepare_test({}, [ - "onDownloadStarted", - "onDownloadEnded", - ], check_test_1); - install.install(); - }); - }, - - onNoUpdateAvailable: function() { - ok(false, "Should not have seen onNoUpdateAvailable notification"); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }, - - onNoUpdateAvailable: function(addon) { - ok(false, "Should not have seen onNoUpdateAvailable notification"); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); - - let run_test_2; - check_test_1 = (install) => { - ensure_test_completed(); - do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - run_test_2(install); - return false; - }; - - // Continue installing the update. - let check_test_2; - run_test_2 = (install) => { - // Verify that another update check returns no new update - install.existingAddon.findUpdates({ - onNoCompatibilityUpdateAvailable: function(addon) { - ok(false, "Should not have seen onNoCompatibilityUpdateAvailable notification"); - }, - - onUpdateAvailable: function() { - ok(false, "Should find no available update when one is already downloading"); - }, - - onNoUpdateAvailable: function(addon) { - AddonManager.getAllInstalls(function(aInstalls) { - do_check_eq(aInstalls.length, 1); - do_check_eq(aInstalls[0], install); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], check_test_2); - install.install(); - }); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }; - - check_test_2 = () => { - ensure_test_completed(); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(olda1) { - do_check_neq(olda1, null); - do_check_eq(olda1.version, "1.0"); - do_check_true(isExtensionInAddonsList(profileDir, olda1.id)); - - shutdownManager(); - - startupManager(); - - do_check_true(isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org")); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_eq(a1.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DISABLE); - do_check_eq(a1.releaseNotesURI.spec, "http://example.com/updateInfo.xhtml"); - - a1.uninstall(); - run_next_test(); - }); - })); - }; - - - // Check that an update check finds compatibility updates and applies them - let check_test_3; - add_test(function run_test_3() { - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_false(a2.isCompatible); - do_check_true(a2.appDisabled); - do_check_true(a2.isCompatibleWith("0", "0")); - - a2.findUpdates({ - onCompatibilityUpdateAvailable: function(addon) { - do_check_true(a2.isCompatible); - do_check_false(a2.appDisabled); - do_check_false(a2.isActive); - }, - - onUpdateAvailable: function(addon, install) { - ok(false, "Should not have seen an available update"); - }, - - onNoUpdateAvailable: function(addon) { - do_check_eq(addon, a2); - do_execute_soon(check_test_3); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); - - check_test_3 = () => { - restartManager(); - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_true(a2.isCompatible); - do_check_false(a2.appDisabled); - a2.uninstall(); - - run_next_test(); - }); - } - - // Checks that we see no compatibility information when there is none. - add_test(function run_test_4() { - AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) { - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_false(a3.isCompatible); - do_check_true(a3.appDisabled); - do_check_true(a3.isCompatibleWith("5", "5")); - do_check_false(a3.isCompatibleWith("2", "2")); - - a3.findUpdates({ - sawUpdate: false, - onCompatibilityUpdateAvailable: function(addon) { - ok(false, "Should not have seen compatibility information"); - }, - - onNoCompatibilityUpdateAvailable: function(addon) { - this.sawUpdate = true; - }, - - onUpdateAvailable: function(addon, install) { - ok(false, "Should not have seen an available update"); - }, - - onNoUpdateAvailable: function(addon) { - do_check_true(this.sawUpdate); - run_next_test(); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); - - // Checks that compatibility info for future apps are detected but don't make - // the item compatibile. - let check_test_5; - add_test(function run_test_5() { - AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) { - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_false(a3.isCompatible); - do_check_true(a3.appDisabled); - do_check_true(a3.isCompatibleWith("5", "5")); - do_check_false(a3.isCompatibleWith("2", "2")); - - a3.findUpdates({ - sawUpdate: false, - onCompatibilityUpdateAvailable: function(addon) { - do_check_false(a3.isCompatible); - do_check_true(a3.appDisabled); - do_check_false(a3.isActive); - this.sawUpdate = true; - }, - - onNoCompatibilityUpdateAvailable: function(addon) { - ok(false, "Should have seen some compatibility information"); - }, - - onUpdateAvailable: function(addon, install) { - ok(false, "Should not have seen an available update"); - }, - - onNoUpdateAvailable: function(addon) { - do_check_true(this.sawUpdate); - do_execute_soon(check_test_5); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED, "3.0", "3.0"); - }); - }); - - check_test_5 = () => { - restartManager(); - AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) { - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_false(a3.isCompatible); - do_check_true(a3.appDisabled); - - a3.uninstall(); - run_next_test(); - }); - } - - // Test that background update checks work - let continue_test_6; - add_test(function run_test_6() { - restartManager(); - - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - }, profileDir); - restartManager(); - - prepare_test({}, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded" - ], continue_test_6); - - AddonManagerInternal.backgroundUpdateCheck(); - }); - - let check_test_6; - continue_test_6 = (install) => { - do_check_neq(install.existingAddon, null); - do_check_eq(install.existingAddon.id, "addon1@tests.mozilla.org"); - - prepare_test({ - "addon1@tests.mozilla.org": [ - "onInstalling" - ] - }, [ - "onInstallStarted", - "onInstallEnded", - ], callback_soon(check_test_6)); - } - - check_test_6 = (install) => { - do_check_eq(install.existingAddon.pendingUpgrade.install, install); - - restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - do_check_eq(a1.releaseNotesURI.spec, "http://example.com/updateInfo.xhtml"); - a1.uninstall(); - run_next_test(); - }); - } - - // Verify the parameter escaping in update urls. - add_test(function run_test_8() { - restartManager(); - - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "5.0", - updateURL: "http://localhost:" + gPort + "/data/param_test.rdf" + PARAMS, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "2" - }], - name: "Test Addon 1", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon2@tests.mozilla.org", - version: "67.0.5b1", - updateURL: "http://localhost:" + gPort + "/data/param_test.rdf" + PARAMS, - targetApplications: [{ - id: "toolkit@mozilla.org", - minVersion: "0", - maxVersion: "3" - }], - name: "Test Addon 2", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon3@tests.mozilla.org", - version: "1.3+", - updateURL: "http://localhost:" + gPort + "/data/param_test.rdf" + PARAMS, - targetApplications: [{ - id: appId, - minVersion: "0", - maxVersion: "0" - }, { - id: "toolkit@mozilla.org", - minVersion: "0", - maxVersion: "3" - }], - name: "Test Addon 3", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon4@tests.mozilla.org", - version: "0.5ab6", - updateURL: "http://localhost:" + gPort + "/data/param_test.rdf" + PARAMS, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "5" - }], - name: "Test Addon 4", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon5@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/param_test.rdf" + PARAMS, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 5", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon6@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/param_test.rdf" + PARAMS, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 6", - }, profileDir); - - restartManager(); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(a2) { - a2.userDisabled = true; - restartManager(); - - testserver.registerPathHandler("/data/param_test.rdf", function(request, response) { - do_check_neq(request.queryString, ""); - let [req_version, item_id, item_version, - item_maxappversion, item_status, - app_id, app_version, current_app_version, - app_os, app_abi, app_locale, update_type] = - request.queryString.split("/").map(a => decodeURIComponent(a)); - - do_check_eq(req_version, "2"); - - switch (item_id) { - case "addon1@tests.mozilla.org": - do_check_eq(item_version, "5.0"); - do_check_eq(item_maxappversion, "2"); - do_check_eq(item_status, "userEnabled"); - do_check_eq(app_version, "1"); - do_check_eq(update_type, "97"); - break; - case "addon2@tests.mozilla.org": - do_check_eq(item_version, "67.0.5b1"); - do_check_eq(item_maxappversion, "3"); - do_check_eq(item_status, "userDisabled"); - do_check_eq(app_version, "1"); - do_check_eq(update_type, "49"); - break; - case "addon3@tests.mozilla.org": - do_check_eq(item_version, "1.3+"); - do_check_eq(item_maxappversion, "0"); - do_check_eq(item_status, "userEnabled,incompatible"); - do_check_eq(app_version, "1"); - do_check_eq(update_type, "112"); - break; - case "addon4@tests.mozilla.org": - do_check_eq(item_version, "0.5ab6"); - do_check_eq(item_maxappversion, "5"); - do_check_eq(item_status, "userEnabled"); - do_check_eq(app_version, "2"); - do_check_eq(update_type, "98"); - break; - case "addon5@tests.mozilla.org": - do_check_eq(item_version, "1.0"); - do_check_eq(item_maxappversion, "1"); - do_check_eq(item_status, "userEnabled"); - do_check_eq(app_version, "1"); - do_check_eq(update_type, "35"); - break; - case "addon6@tests.mozilla.org": - do_check_eq(item_version, "1.0"); - do_check_eq(item_maxappversion, "1"); - do_check_eq(item_status, "userEnabled"); - do_check_eq(app_version, "1"); - do_check_eq(update_type, "99"); - break; - default: - ok(false, "Update request for unexpected add-on " + item_id); - } - - do_check_eq(app_id, "xpcshell@tests.mozilla.org"); - do_check_eq(current_app_version, "1"); - do_check_eq(app_os, "XPCShell"); - do_check_eq(app_abi, "noarch-spidermonkey"); - do_check_eq(app_locale, "fr-FR"); - - request.setStatusLine(null, 500, "Server Error"); - }); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org"], - function([a1_2, a2_2, a3_2, a4_2, a5_2, a6_2]) { - let count = 6; - - function next_test() { - a1_2.uninstall(); - a2_2.uninstall(); - a3_2.uninstall(); - a4_2.uninstall(); - a5_2.uninstall(); - a6_2.uninstall(); - - restartManager(); - run_next_test(); - } - - let compatListener = { - onUpdateFinished: function(addon, error) { - if (--count == 0) - do_execute_soon(next_test); - } - }; - - let updateListener = { - onUpdateAvailable: function(addon, update) { - // Dummy so the update checker knows we care about new versions - }, - - onUpdateFinished: function(addon, error) { - if (--count == 0) - do_execute_soon(next_test); - } - }; - - a1_2.findUpdates(updateListener, AddonManager.UPDATE_WHEN_USER_REQUESTED); - a2_2.findUpdates(compatListener, AddonManager.UPDATE_WHEN_ADDON_INSTALLED); - a3_2.findUpdates(updateListener, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - a4_2.findUpdates(updateListener, AddonManager.UPDATE_WHEN_NEW_APP_DETECTED, "2"); - a5_2.findUpdates(compatListener, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); - a6_2.findUpdates(updateListener, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); - }); - })); - }); - - // Tests that if an install.rdf claims compatibility then the add-on will be - // seen as compatible regardless of what the update.rdf says. - add_test(function run_test_9() { - writeInstallRDFForExtension({ - id: "addon4@tests.mozilla.org", - version: "5.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "0", - maxVersion: "1" - }], - name: "Test Addon 1", - }, profileDir); - - restartManager(); - - AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) { - do_check_true(a4.isActive, "addon4 is active"); - do_check_true(a4.isCompatible, "addon4 is compatible"); - - run_next_test(); - }); - }); - - // Tests that a normal update check won't decrease a targetApplication's - // maxVersion. - add_test(function run_test_10() { - AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) { - a4.findUpdates({ - onUpdateFinished: function(addon) { - do_check_true(addon.isCompatible, "addon4 is compatible"); - - run_next_test(); - } - }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE); - }); - }); - - // Tests that an update check for a new application will decrease a - // targetApplication's maxVersion. - add_test(function run_test_11() { - AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) { - a4.findUpdates({ - onUpdateFinished: function(addon) { - do_check_false(addon.isCompatible, "addon4 is compatible"); - - run_next_test(); - } - }, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); - }); - }); - - // Check that the decreased maxVersion applied and disables the add-on - add_test(function run_test_12() { - restartManager(); - - AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) { - do_check_false(a4.isActive, "addon4 is active"); - do_check_false(a4.isCompatible, "addon4 is compatible"); - - a4.uninstall(); - run_next_test(); - }); - }); - - // Tests that no compatibility update is passed to the listener when there is - // compatibility info for the current version of the app but not for the - // version of the app that the caller requested an update check for. - let check_test_13; - add_test(function run_test_13() { - restartManager(); - - // Not initially compatible but the update check will make it compatible - writeInstallRDFForExtension({ - id: "addon7@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "0", - maxVersion: "0" - }], - name: "Test Addon 7", - }, profileDir); - restartManager(); - - AddonManager.getAddonByID("addon7@tests.mozilla.org", function(a7) { - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_false(a7.isCompatible); - do_check_true(a7.appDisabled); - do_check_true(a7.isCompatibleWith("0", "0")); - - a7.findUpdates({ - sawUpdate: false, - onCompatibilityUpdateAvailable: function(addon) { - ok(false, "Should not have seen compatibility information"); - }, - - onUpdateAvailable: function(addon, install) { - ok(false, "Should not have seen an available update"); - }, - - onUpdateFinished: function(addon) { - do_check_true(addon.isCompatible); - do_execute_soon(check_test_13); - } - }, AddonManager.UPDATE_WHEN_NEW_APP_DETECTED, "3.0", "3.0"); - }); - }); - - check_test_13 = () => { - restartManager(); - AddonManager.getAddonByID("addon7@tests.mozilla.org", function(a7) { - do_check_neq(a7, null); - do_check_true(a7.isActive); - do_check_true(a7.isCompatible); - do_check_false(a7.appDisabled); - - a7.uninstall(); - run_next_test(); - }); - } - - // Test that background update checks doesn't update an add-on that isn't - // allowed to update automatically. - let check_test_14; - add_test(function run_test_14() { - restartManager(); - - // Have an add-on there that will be updated so we see some events from it - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon8@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 8", - }, profileDir); - restartManager(); - - AddonManager.getAddonByID("addon8@tests.mozilla.org", function(a8) { - a8.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE; - - // The background update check will find updates for both add-ons but only - // proceed to install one of them. - AddonManager.addInstallListener({ - onNewInstall: function(aInstall) { - let id = aInstall.existingAddon.id; - ok((id == "addon1@tests.mozilla.org" || id == "addon8@tests.mozilla.org"), - "Saw unexpected onNewInstall for " + id); - }, - - onDownloadStarted: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - }, - - onDownloadEnded: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - }, - - onDownloadFailed: function(aInstall) { - ok(false, "Should not have seen onDownloadFailed event"); - }, - - onDownloadCancelled: function(aInstall) { - ok(false, "Should not have seen onDownloadCancelled event"); - }, - - onInstallStarted: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - }, - - onInstallEnded: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - do_check_eq(aInstall.existingAddon.pendingUpgrade.install, aInstall); - - do_execute_soon(check_test_14); - }, - - onInstallFailed: function(aInstall) { - ok(false, "Should not have seen onInstallFailed event"); - }, - - onInstallCancelled: function(aInstall) { - ok(false, "Should not have seen onInstallCancelled event"); - }, - }); - - AddonManagerInternal.backgroundUpdateCheck(); - }); - }); - - check_test_14 = () => { - restartManager(); - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon8@tests.mozilla.org"], function([a1, a8]) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - a1.uninstall(); - - do_check_neq(a8, null); - do_check_eq(a8.version, "1.0"); - a8.uninstall(); - - run_next_test(); - }); - } - - // Test that background update checks doesn't update an add-on that is - // pending uninstall - let check_test_15; - add_test(function run_test_15() { - restartManager(); - - // Have an add-on there that will be updated so we see some events from it - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - }, profileDir); - - writeInstallRDFForExtension({ - id: "addon8@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 8", - }, profileDir); - restartManager(); - - AddonManager.getAddonByID("addon8@tests.mozilla.org", function(a8) { - a8.uninstall(); - do_check_false(hasFlag(a8.permissions, AddonManager.PERM_CAN_UPGRADE)); - - // The background update check will find updates for both add-ons but only - // proceed to install one of them. - AddonManager.addInstallListener({ - onNewInstall: function(aInstall) { - let id = aInstall.existingAddon.id; - ok((id == "addon1@tests.mozilla.org" || id == "addon8@tests.mozilla.org"), - "Saw unexpected onNewInstall for " + id); - }, - - onDownloadStarted: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - }, - - onDownloadEnded: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - }, - - onDownloadFailed: function(aInstall) { - ok(false, "Should not have seen onDownloadFailed event"); - }, - - onDownloadCancelled: function(aInstall) { - ok(false, "Should not have seen onDownloadCancelled event"); - }, - - onInstallStarted: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - }, - - onInstallEnded: function(aInstall) { - do_check_eq(aInstall.existingAddon.id, "addon1@tests.mozilla.org"); - do_execute_soon(check_test_15); - }, - - onInstallFailed: function(aInstall) { - ok(false, "Should not have seen onInstallFailed event"); - }, - - onInstallCancelled: function(aInstall) { - ok(false, "Should not have seen onInstallCancelled event"); - }, - }); - - AddonManagerInternal.backgroundUpdateCheck(); - }); - }); - - check_test_15 = () => { - restartManager(); - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon8@tests.mozilla.org"], function([a1, a8]) { - do_check_neq(a1, null); - do_check_eq(a1.version, "2.0"); - a1.uninstall(); - - do_check_eq(a8, null); - - run_next_test(); - }); - } - - // Test that the update check correctly observes the - // extensions.strictCompatibility pref and compatibility overrides. - add_test(function run_test_17() { - restartManager(); - - writeInstallRDFForExtension({ - id: "addon9@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "0.1", - maxVersion: "0.2" - }], - name: "Test Addon 9", - }, profileDir); - restartManager(); - - AddonManager.addInstallListener({ - onNewInstall: function(aInstall) { - equal(aInstall.existingAddon.id, "addon9@tests.mozilla.org", - "Saw unexpected onNewInstall for " + aInstall.existingAddon.id); - do_check_eq(aInstall.version, "2.0"); - }, - onDownloadFailed: function(aInstall) { - AddonManager.getAddonByID("addon9@tests.mozilla.org", function(a9) { - a9.uninstall(); - run_next_test(); - }); - } - }); - - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, - "http://localhost:" + gPort + "/data/test_update.xml"); - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS_PERFORMANCE, - "http://localhost:" + gPort + "/data/test_update.xml"); - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - - AddonManagerInternal.backgroundUpdateCheck(); - }); - - // Test that the update check correctly observes when an addon opts-in to - // strict compatibility checking. - add_test(function run_test_19() { - restartManager(); - writeInstallRDFForExtension({ - id: "addon11@tests.mozilla.org", - version: "1.0", - updateURL: "http://localhost:" + gPort + "/data/" + updateFile, - targetApplications: [{ - id: appId, - minVersion: "0.1", - maxVersion: "0.2" - }], - name: "Test Addon 11", - }, profileDir); - restartManager(); - - AddonManager.getAddonByID("addon11@tests.mozilla.org", function(a11) { - do_check_neq(a11, null); - - a11.findUpdates({ - onCompatibilityUpdateAvailable: function() { - ok(false, "Should have not have seen compatibility information"); - }, - - onUpdateAvailable: function() { - ok(false, "Should not have seen an available update"); - }, - - onUpdateFinished: function() { - run_next_test(); - } - }, AddonManager.UPDATE_WHEN_USER_REQUESTED); - }); - }); - - add_task(function* cleanup() { - let addons = yield new Promise(resolve => { - AddonManager.getAddonsByTypes(["extension"], resolve); - }); - - for (let addon of addons) - addon.uninstall(); - - yield promiseRestartManager(); - - shutdownManager(); - - yield new Promise(do_execute_soon); - }); -} - -// Test that background update checks work for lightweight themes -add_test(function run_test_7() { - startupManager(); - - LightweightThemeManager.currentTheme = { - id: "1", - version: "1", - name: "Test LW Theme", - description: "A test theme", - author: "Mozilla", - homepageURL: "http://localhost:" + gPort + "/data/index.html", - headerURL: "http://localhost:" + gPort + "/data/header.png", - footerURL: "http://localhost:" + gPort + "/data/footer.png", - previewURL: "http://localhost:" + gPort + "/data/preview.png", - iconURL: "http://localhost:" + gPort + "/data/icon.png", - updateURL: "http://localhost:" + gPort + "/data/lwtheme.js" - }; - - // XXX The lightweight theme manager strips non-https updateURLs so hack it - // back in. - let themes = JSON.parse(Services.prefs.getCharPref("lightweightThemes.usedThemes")); - do_check_eq(themes.length, 1); - themes[0].updateURL = "http://localhost:" + gPort + "/data/lwtheme.js"; - Services.prefs.setCharPref("lightweightThemes.usedThemes", JSON.stringify(themes)); - - testserver.registerPathHandler("/data/lwtheme.js", function(request, response) { - response.write(JSON.stringify({ - id: "1", - version: "2", - name: "Updated Theme", - description: "A test theme", - author: "Mozilla", - homepageURL: "http://localhost:" + gPort + "/data/index2.html", - headerURL: "http://localhost:" + gPort + "/data/header.png", - footerURL: "http://localhost:" + gPort + "/data/footer.png", - previewURL: "http://localhost:" + gPort + "/data/preview.png", - iconURL: "http://localhost:" + gPort + "/data/icon2.png", - updateURL: "http://localhost:" + gPort + "/data/lwtheme.js" - })); - }); - - AddonManager.getAddonByID("1@personas.mozilla.org", function(p1) { - do_check_neq(p1, null); - do_check_eq(p1.version, "1"); - do_check_eq(p1.name, "Test LW Theme"); - do_check_true(p1.isActive); - do_check_eq(p1.installDate.getTime(), p1.updateDate.getTime()); - - // 5 seconds leeway seems like a lot, but tests can run slow and really if - // this is within 5 seconds it is fine. If it is going to be wrong then it - // is likely to be hours out at least - do_check_true((Date.now() - p1.installDate.getTime()) < 5000); - - gInstallDate = p1.installDate.getTime(); - - prepare_test({ - "1@personas.mozilla.org": [ - ["onInstalling", false], - "onInstalled" - ] - }, [ - "onExternalInstall" - ], check_test_7); - - AddonManagerInternal.backgroundUpdateCheck(); - }); -}); - -function check_test_7() { - AddonManager.getAddonByID("1@personas.mozilla.org", function(p1) { - do_check_neq(p1, null); - do_check_eq(p1.version, "2"); - do_check_eq(p1.name, "Updated Theme"); - do_check_eq(p1.installDate.getTime(), gInstallDate); - do_check_true(p1.installDate.getTime() < p1.updateDate.getTime()); - - // 5 seconds leeway seems like a lot, but tests can run slow and really if - // this is within 5 seconds it is fine. If it is going to be wrong then it - // is likely to be hours out at least - do_check_true((Date.now() - p1.updateDate.getTime()) < 5000); - - gInstallDate = p1.installDate.getTime(); - - run_next_test(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_update_webextensions.js b/toolkit/mozapps/webextensions/test/xpcshell/test_update_webextensions.js deleted file mode 100644 index ff5d5d321..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_update_webextensions.js +++ /dev/null @@ -1,248 +0,0 @@ -"use strict"; - -const TOOLKIT_ID = "toolkit@mozilla.org"; - -// We don't have an easy way to serve update manifests from a secure URL. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); - -var testserver = createHttpServer(); -gPort = testserver.identity.primaryPort; - -const uuidGenerator = AM_Cc["@mozilla.org/uuid-generator;1"].getService(AM_Ci.nsIUUIDGenerator); - -const extensionsDir = gProfD.clone(); -extensionsDir.append("extensions"); - -const addonsDir = gTmpD.clone(); -addonsDir.append("addons"); -addonsDir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0o755); - -do_register_cleanup(() => addonsDir.remove(true)); - -testserver.registerDirectory("/addons/", addonsDir); - - -let gUpdateManifests = {}; - -function mapManifest(aPath, aManifestData) { - gUpdateManifests[aPath] = aManifestData; - testserver.registerPathHandler(aPath, serveManifest); -} - -function serveManifest(request, response) { - let manifest = gUpdateManifests[request.path]; - - response.setHeader("Content-Type", manifest.contentType, false); - response.write(manifest.data); -} - - -function promiseInstallWebExtension(aData) { - let addonFile = createTempWebExtensionFile(aData); - - return promiseInstallAllFiles([addonFile]).then(() => { - Services.obs.notifyObservers(addonFile, "flush-cache-entry", null); - return promiseAddonByID(aData.id); - }); -} - -var checkUpdates = Task.async(function* (aData, aReason = AddonManager.UPDATE_WHEN_PERIODIC_UPDATE) { - function provide(obj, path, value) { - path = path.split("."); - let prop = path.pop(); - - for (let key of path) { - if (!(key in obj)) - obj[key] = {}; - obj = obj[key]; - } - - if (!(prop in obj)) - obj[prop] = value; - } - - let id = uuidGenerator.generateUUID().number; - provide(aData, "addon.id", id); - provide(aData, "addon.manifest.applications.gecko.id", id); - - let updatePath = `/updates/${id}.json`.replace(/[{}]/g, ""); - let updateUrl = `http://localhost:${gPort}${updatePath}` - - let addonData = { updates: [] }; - let manifestJSON = { - addons: { [id]: addonData } - }; - - - provide(aData, "addon.manifest.applications.gecko.update_url", updateUrl); - let awaitInstall = promiseInstallWebExtension(aData.addon); - - - for (let version of Object.keys(aData.updates)) { - let update = aData.updates[version]; - update.version = version; - - provide(update, "addon.id", id); - provide(update, "addon.manifest.applications.gecko.id", id); - let addon = update.addon; - - delete update.addon; - - let file; - if (addon.rdf) { - provide(addon, "version", version); - provide(addon, "targetApplications", [{id: TOOLKIT_ID, - minVersion: "42", - maxVersion: "*"}]); - - file = createTempXPIFile(addon); - } else { - provide(addon, "manifest.version", version); - file = createTempWebExtensionFile(addon); - } - file.moveTo(addonsDir, `${id}-${version}.xpi`.replace(/[{}]/g, "")); - - let path = `/addons/${file.leafName}`; - provide(update, "update_link", `http://localhost:${gPort}${path}`); - - addonData.updates.push(update); - } - - mapManifest(updatePath, { data: JSON.stringify(manifestJSON), - contentType: "application/json" }); - - - let addon = yield awaitInstall; - - let updates = yield promiseFindAddonUpdates(addon, aReason); - updates.addon = addon; - - return updates; -}); - - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "42.0", "42.0"); - - startupManager(); - do_register_cleanup(promiseShutdownManager); - - run_next_test(); -} - - -// Check that compatibility updates are applied. -add_task(function* checkUpdateMetadata() { - let update = yield checkUpdates({ - addon: { - manifest: { - version: "1.0", - applications: { gecko: { strict_max_version: "45" } }, - } - }, - updates: { - "1.0": { - applications: { gecko: { strict_min_version: "40", - strict_max_version: "48" } }, - } - } - }); - - ok(update.compatibilityUpdate, "have compat update"); - ok(!update.updateAvailable, "have no add-on update"); - - ok(update.addon.isCompatibleWith("40", "40"), "compatible min"); - ok(update.addon.isCompatibleWith("48", "48"), "compatible max"); - ok(!update.addon.isCompatibleWith("49", "49"), "not compatible max"); - - update.addon.uninstall(); -}); - - -// Check that updates from web extensions to web extensions succeed. -add_task(function* checkUpdateToWebExt() { - let update = yield checkUpdates({ - addon: { manifest: { version: "1.0" } }, - updates: { - "1.1": { }, - "1.2": { }, - "1.3": { "applications": { "gecko": { "strict_min_version": "48" } } }, - } - }); - - ok(!update.compatibilityUpdate, "have no compat update"); - ok(update.updateAvailable, "have add-on update"); - - equal(update.addon.version, "1.0", "add-on version"); - - yield promiseCompleteAllInstalls([update.updateAvailable]); - - let addon = yield promiseAddonByID(update.addon.id); - equal(addon.version, "1.2", "new add-on version"); - - addon.uninstall(); -}); - - -// Check that updates from web extensions to XUL extensions fail. -add_task(function* checkUpdateToRDF() { - let update = yield checkUpdates({ - addon: { manifest: { version: "1.0" } }, - updates: { - "1.1": { addon: { rdf: true } }, - } - }); - - ok(!update.compatibilityUpdate, "have no compat update"); - ok(update.updateAvailable, "have add-on update"); - - equal(update.addon.version, "1.0", "add-on version"); - - let result = yield new Promise((resolve, reject) => { - update.updateAvailable.addListener({ - onDownloadFailed: resolve, - onDownloadEnded: reject, - onInstalling: reject, - onInstallStarted: reject, - onInstallEnded: reject, - }); - update.updateAvailable.install(); - }); - - equal(result.error, AddonManager.ERROR_UNEXPECTED_ADDON_TYPE, "error: unexpected add-on type"); - - let addon = yield promiseAddonByID(update.addon.id); - equal(addon.version, "1.0", "new add-on version"); - - addon.uninstall(); -}); - - -// Check that illegal update URLs are rejected. -add_task(function* checkIllegalUpdateURL() { - const URLS = ["chrome://browser/content/", - "data:text/json,...", - "javascript:;", - "/"]; - - for (let url of URLS) { - let { messages } = yield promiseConsoleOutput(() => { - return new Promise((resolve, reject) => { - let addonFile = createTempWebExtensionFile({ - manifest: { applications: { gecko: { update_url: url } } }, - }); - - AddonManager.getInstallForFile(addonFile, install => { - Services.obs.notifyObservers(addonFile, "flush-cache-entry", null); - - if (install && install.state == AddonManager.STATE_DOWNLOAD_FAILED) - resolve(); - reject(new Error("Unexpected state: " + (install && install.state))) - }); - }); - }); - - ok(messages.some(msg => /Access denied for URL|may not load or link to|is not a valid URL/.test(msg)), - "Got checkLoadURI error"); - } -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_updatecheck.js b/toolkit/mozapps/webextensions/test/xpcshell/test_updatecheck.js deleted file mode 100644 index e8529bb2c..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_updatecheck.js +++ /dev/null @@ -1,236 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that AddonUpdateChecker works correctly - -Components.utils.import("resource://gre/modules/addons/AddonUpdateChecker.jsm"); - -Components.utils.import("resource://testing-common/httpd.js"); - -var testserver = createHttpServer(4444); -testserver.registerDirectory("/data/", do_get_file("data")); - -function checkUpdates(aId, aUpdateKey, aUpdateFile) { - return new Promise((resolve, reject) => { - AddonUpdateChecker.checkForUpdates(aId, aUpdateKey, `http://localhost:4444/data/${aUpdateFile}`, { - onUpdateCheckComplete: resolve, - - onUpdateCheckError: function(status) { - let error = new Error("Update check failed with status " + status); - error.status = status; - reject(error); - } - }); - }); -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - - run_next_test(); -} - -// Test that a basic update check returns the expected available updates -add_task(function* () { - for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) { - let updates = yield checkUpdates("updatecheck1@tests.mozilla.org", null, file); - - equal(updates.length, 5); - let update = AddonUpdateChecker.getNewestCompatibleUpdate(updates); - notEqual(update, null); - equal(update.version, "3.0"); - update = AddonUpdateChecker.getCompatibilityUpdate(updates, "2"); - notEqual(update, null); - equal(update.version, "2.0"); - equal(update.targetApplications[0].minVersion, "1"); - equal(update.targetApplications[0].maxVersion, "2"); - } -}); - -/* - * Tests that the security checks are applied correctly - * - * Test signature updateHash updateLink expected - *-------------------------------------------------------- - * 2 absent absent http fail - * 3 broken absent http fail - * 4 correct absent http no update - * 5 correct sha1 http update - * 6 corrent absent https update - * 7 corrent sha1 https update - * 8 corrent md2 http no update - * 9 corrent md2 https update - */ - -var updateKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj" + - "Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD" + - "NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf" + - "awB/zH4KaPiY3vnrzQIDAQAB"; - -add_task(function* () { - for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) { - try { - yield checkUpdates("test_bug378216_5@tests.mozilla.org", - updateKey, file); - throw "Expected the update check to fail"; - } catch (e) {} - } -}); - -add_task(function* () { - for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) { - try { - yield checkUpdates("test_bug378216_7@tests.mozilla.org", - updateKey, file); - - throw "Expected the update check to fail"; - } catch (e) {} - } -}); - -add_task(function* () { - // Make sure that the JSON manifest is rejected when an update key is - // required, but perform the remaining tests which aren't expected to fail - // because of the update key, without requiring one for the JSON variant. - - try { - let updates = yield checkUpdates("test_bug378216_8@tests.mozilla.org", - updateKey, "test_updatecheck.json"); - - throw "Expected the update check to fail"; - } catch (e) {} - - for (let [file, key] of [["test_updatecheck.rdf", updateKey], - ["test_updatecheck.json", null]]) { - let updates = yield checkUpdates("test_bug378216_8@tests.mozilla.org", - key, file); - equal(updates.length, 1); - ok(!("updateURL" in updates[0])); - } -}); - -add_task(function* () { - for (let [file, key] of [["test_updatecheck.rdf", updateKey], - ["test_updatecheck.json", null]]) { - let updates = yield checkUpdates("test_bug378216_9@tests.mozilla.org", - key, file); - equal(updates.length, 1); - equal(updates[0].version, "2.0"); - ok("updateURL" in updates[0]); - } -}); - -add_task(function* () { - for (let [file, key] of [["test_updatecheck.rdf", updateKey], - ["test_updatecheck.json", null]]) { - let updates = yield checkUpdates("test_bug378216_10@tests.mozilla.org", - key, file); - equal(updates.length, 1); - equal(updates[0].version, "2.0"); - ok("updateURL" in updates[0]); - } -}); - -add_task(function* () { - for (let [file, key] of [["test_updatecheck.rdf", updateKey], - ["test_updatecheck.json", null]]) { - let updates = yield checkUpdates("test_bug378216_11@tests.mozilla.org", - key, file); - equal(updates.length, 1); - equal(updates[0].version, "2.0"); - ok("updateURL" in updates[0]); - } -}); - -add_task(function* () { - for (let [file, key] of [["test_updatecheck.rdf", updateKey], - ["test_updatecheck.json", null]]) { - let updates = yield checkUpdates("test_bug378216_12@tests.mozilla.org", - key, file); - equal(updates.length, 1); - do_check_false("updateURL" in updates[0]); - } -}); - -add_task(function* () { - for (let [file, key] of [["test_updatecheck.rdf", updateKey], - ["test_updatecheck.json", null]]) { - let updates = yield checkUpdates("test_bug378216_13@tests.mozilla.org", - key, file); - equal(updates.length, 1); - equal(updates[0].version, "2.0"); - ok("updateURL" in updates[0]); - } -}); - -add_task(function* () { - for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) { - let updates = yield checkUpdates("test_bug378216_14@tests.mozilla.org", - null, file); - equal(updates.length, 0); - } -}); - -add_task(function* () { - for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) { - try { - yield checkUpdates("test_bug378216_15@tests.mozilla.org", - null, file); - - throw "Update check should have failed"; - } catch (e) { - equal(e.status, AddonUpdateChecker.ERROR_PARSE_ERROR); - } - } -}); - -add_task(function* () { - for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) { - let updates = yield checkUpdates("ignore-compat@tests.mozilla.org", - null, file); - equal(updates.length, 3); - let update = AddonUpdateChecker.getNewestCompatibleUpdate( - updates, null, null, true); - notEqual(update, null); - equal(update.version, 2); - } -}); - -add_task(function* () { - for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) { - let updates = yield checkUpdates("compat-override@tests.mozilla.org", - null, file); - equal(updates.length, 3); - let overrides = [{ - type: "incompatible", - minVersion: 1, - maxVersion: 2, - appID: "xpcshell@tests.mozilla.org", - appMinVersion: 0.1, - appMaxVersion: 0.2 - }, { - type: "incompatible", - minVersion: 2, - maxVersion: 2, - appID: "xpcshell@tests.mozilla.org", - appMinVersion: 1, - appMaxVersion: 2 - }]; - let update = AddonUpdateChecker.getNewestCompatibleUpdate( - updates, null, null, true, false, overrides); - notEqual(update, null); - equal(update.version, 1); - } -}); - -add_task(function* () { - for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) { - let updates = yield checkUpdates("compat-strict-optin@tests.mozilla.org", - null, file); - equal(updates.length, 1); - let update = AddonUpdateChecker.getNewestCompatibleUpdate( - updates, null, null, true, false); - equal(update, null); - } -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_updateid.js b/toolkit/mozapps/webextensions/test/xpcshell/test_updateid.js deleted file mode 100644 index f7e3e21e5..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_updateid.js +++ /dev/null @@ -1,86 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that updating an add-on to a new ID works - -// The test extension uses an insecure update url. -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function promiseInstallUpdate(install) { - return new Promise((resolve, reject) => { - install.addListener({ - onDownloadFailed: () => { - let err = new Error("download error"); - err.code = install.error; - reject(err); - }, - onInstallFailed: () => { - let err = new Error("install error"); - err.code = install.error; - reject(err); - }, - onInstallEnded: resolve, - }); - - install.install(); - }); -} - -// Create and configure the HTTP server. -let testserver = createHttpServer(4444); -testserver.registerDirectory("/data/", do_get_file("data")); -testserver.registerDirectory("/addons/", do_get_file("addons")); - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - startupManager(); - run_next_test(); -} - -// Verify that an update to an add-on with a new ID fails -add_task(function* test_update_new_id() { - yield promiseInstallFile(do_get_addon("test_updateid1")); - - let addon = yield promiseAddonByID("addon1@tests.mozilla.org"); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - - let update = yield promiseFindAddonUpdates(addon, AddonManager.UPDATE_WHEN_USER_REQUESTED); - let install = update.updateAvailable; - do_check_eq(install.name, addon.name); - do_check_eq(install.version, "2.0"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - do_check_eq(install.existingAddon, addon); - - yield Assert.rejects(promiseInstallUpdate(install), - function(err) { return err.code == AddonManager.ERROR_INCORRECT_ID }, - "Upgrade to a different ID fails"); - - addon.uninstall(); -}); - -// Verify that an update to a multi-package xpi fails -add_task(function* test_update_new_id() { - yield promiseInstallFile(do_get_addon("test_update_multi1")); - - let addon = yield promiseAddonByID("updatemulti@tests.mozilla.org"); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - - let update = yield promiseFindAddonUpdates(addon, AddonManager.UPDATE_WHEN_USER_REQUESTED); - let install = update.updateAvailable; - do_check_eq(install.name, addon.name); - do_check_eq(install.version, "2.0"); - do_check_eq(install.state, AddonManager.STATE_AVAILABLE); - do_check_eq(install.existingAddon, addon); - - yield Assert.rejects(promiseInstallUpdate(install), - function(err) { return err.code == AddonManager.ERROR_UNEXPECTED_ADDON_TYPE }, - "Upgrade to a multipackage xpi fails"); - - addon.uninstall(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_upgrade.js b/toolkit/mozapps/webextensions/test/xpcshell/test_upgrade.js deleted file mode 100644 index dc3d9438a..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_upgrade.js +++ /dev/null @@ -1,206 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that app upgrades produce the expected behaviours, -// with strict compatibility checking disabled. - -Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false); - -// Enable loading extensions from the application scope -Services.prefs.setIntPref("extensions.enabledScopes", - AddonManager.SCOPE_PROFILE + - AddonManager.SCOPE_APPLICATION); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -const globalDir = Services.dirsvc.get("XREAddonAppDir", AM_Ci.nsIFile); -globalDir.append("extensions"); - -var gGlobalExisted = globalDir.exists(); -var gInstallTime = Date.now(); - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - // Will be compatible in the first version and incompatible in subsequent versions - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - targetPlatforms: [ - "XPCShell", - "WINNT_x86", - ] - }, profileDir); - - // Works in all tested versions - writeInstallRDFForExtension({ - id: "addon2@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }], - name: "Test Addon 2", - targetPlatforms: [ - "XPCShell_noarch-spidermonkey" - ] - }, profileDir); - - // Will be disabled in the first version and enabled in the second. - writeInstallRDFForExtension({ - id: "addon3@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }], - name: "Test Addon 3", - }, profileDir); - - // Will be compatible in both versions but will change version in between - var dest = writeInstallRDFForExtension({ - id: "addon4@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 4", - }, globalDir); - setExtensionModifiedTime(dest, gInstallTime); - - do_test_pending(); - - run_test_1(); -} - -function end_test() { - if (!gGlobalExisted) { - globalDir.remove(true); - } - else { - globalDir.append(do_get_expected_addon_name("addon4@tests.mozilla.org")); - globalDir.remove(true); - } - do_execute_soon(do_test_finished); -} - -// Test that the test extensions are all installed -function run_test_1() { - startupManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org"], - function([a1, a2, a3, a4]) { - - do_check_neq(a1, null); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_true(isExtensionInAddonsList(globalDir, a4.id)); - do_check_eq(a4.version, "1.0"); - - do_execute_soon(run_test_2); - }); -} - -// Test that upgrading the application doesn't disable now incompatible add-ons -function run_test_2() { - // Upgrade the extension - var dest = writeInstallRDFForExtension({ - id: "addon4@tests.mozilla.org", - version: "2.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }], - name: "Test Addon 4", - }, globalDir); - setExtensionModifiedTime(dest, gInstallTime); - - restartManager("2"); - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org"], - function([a1, a2, a3, a4]) { - - do_check_neq(a1, null); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_true(isExtensionInAddonsList(globalDir, a4.id)); - do_check_eq(a4.version, "2.0"); - - do_execute_soon(run_test_3); - }); -} - -// Test that nothing changes when only the build ID changes. -function run_test_3() { - // Upgrade the extension - var dest = writeInstallRDFForExtension({ - id: "addon4@tests.mozilla.org", - version: "3.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "3", - maxVersion: "3" - }], - name: "Test Addon 4", - }, globalDir); - setExtensionModifiedTime(dest, gInstallTime); - - // Simulates a simple Build ID change, the platform deletes extensions.ini - // whenever the application is changed. - gExtensionsINI.remove(true); - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org"], - function([a1, a2, a3, a4]) { - - do_check_neq(a1, null); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_true(isExtensionInAddonsList(globalDir, a4.id)); - do_check_eq(a4.version, "2.0"); - - end_test(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_upgrade_strictcompat.js b/toolkit/mozapps/webextensions/test/xpcshell/test_upgrade_strictcompat.js deleted file mode 100644 index c2203d097..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_upgrade_strictcompat.js +++ /dev/null @@ -1,209 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that app upgrades produce the expected behaviours, -// with strict compatibility checking enabled. - -// Enable loading extensions from the application scope -Services.prefs.setIntPref("extensions.enabledScopes", - AddonManager.SCOPE_PROFILE + - AddonManager.SCOPE_APPLICATION); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -const globalDir = Services.dirsvc.get("XREAddonAppDir", AM_Ci.nsIFile); -globalDir.append("extensions"); - -var gGlobalExisted = globalDir.exists(); -var gInstallTime = Date.now(); - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - - // Will be enabled in the first version and disabled in subsequent versions - writeInstallRDFForExtension({ - id: "addon1@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 1", - targetPlatforms: [ - "XPCShell", - "WINNT_x86", - ] - }, profileDir); - - // Works in all tested versions - writeInstallRDFForExtension({ - id: "addon2@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "2" - }], - name: "Test Addon 2", - targetPlatforms: [ - "XPCShell_noarch-spidermonkey" - ] - }, profileDir); - - // Will be disabled in the first version and enabled in the second. - writeInstallRDFForExtension({ - id: "addon3@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }], - name: "Test Addon 3", - }, profileDir); - - // Will be enabled in both versions but will change version in between - var dest = writeInstallRDFForExtension({ - id: "addon4@tests.mozilla.org", - version: "1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Addon 4", - }, globalDir); - setExtensionModifiedTime(dest, gInstallTime); - - do_test_pending(); - - Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true); - - run_test_1(); -} - -function end_test() { - if (!gGlobalExisted) { - globalDir.remove(true); - } - else { - globalDir.append(do_get_expected_addon_name("addon4@tests.mozilla.org")); - globalDir.remove(true); - } - - Services.prefs.clearUserPref(PREF_EM_STRICT_COMPATIBILITY); - - do_execute_soon(do_test_finished); -} - -// Test that the test extensions are all installed -function run_test_1() { - startupManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org"], - function([a1, a2, a3, a4]) { - - do_check_neq(a1, null); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_true(isExtensionInAddonsList(globalDir, a4.id)); - do_check_eq(a4.version, "1.0"); - - do_execute_soon(run_test_2); - }); -} - -// Test that upgrading the application disables now incompatible add-ons -function run_test_2() { - // Upgrade the extension - var dest = writeInstallRDFForExtension({ - id: "addon4@tests.mozilla.org", - version: "2.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "2", - maxVersion: "2" - }], - name: "Test Addon 4", - }, globalDir); - setExtensionModifiedTime(dest, gInstallTime); - - restartManager("2"); - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org"], - function([a1, a2, a3, a4]) { - - do_check_neq(a1, null); - do_check_false(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_true(isExtensionInAddonsList(globalDir, a4.id)); - do_check_eq(a4.version, "2.0"); - - do_execute_soon(run_test_3); - }); -} - -// Test that nothing changes when only the build ID changes. -function run_test_3() { - // Upgrade the extension - var dest = writeInstallRDFForExtension({ - id: "addon4@tests.mozilla.org", - version: "3.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "3", - maxVersion: "3" - }], - name: "Test Addon 4", - }, globalDir); - setExtensionModifiedTime(dest, gInstallTime); - - // Simulates a simple Build ID change, the platform deletes extensions.ini - // whenever the application is changed. - gExtensionsINI.remove(true); - restartManager(); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org"], - function([a1, a2, a3, a4]) { - - do_check_neq(a1, null); - do_check_false(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_true(isExtensionInAddonsList(globalDir, a4.id)); - do_check_eq(a4.version, "2.0"); - - end_test(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_webextension.js b/toolkit/mozapps/webextensions/test/xpcshell/test_webextension.js deleted file mode 100644 index b51f47977..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_webextension.js +++ /dev/null @@ -1,421 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -Components.utils.import("resource://gre/modules/AppConstants.jsm"); - -const ID = "webextension1@tests.mozilla.org"; - -const PREF_SELECTED_LOCALE = "general.useragent.locale"; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42"); -startupManager(); - -const { GlobalManager, Management } = Components.utils.import("resource://gre/modules/Extension.jsm", {}); - -function promiseAddonStartup() { - return new Promise(resolve => { - let listener = (evt, extension) => { - Management.off("ready", listener); - resolve(extension); - }; - - Management.on("ready", listener); - }); -} - -function promiseInstallWebExtension(aData) { - let addonFile = createTempWebExtensionFile(aData); - - return promiseInstallAllFiles([addonFile]).then(() => { - Services.obs.notifyObservers(addonFile, "flush-cache-entry", null); - return promiseAddonStartup(); - }); -} - -add_task(function*() { - equal(GlobalManager.extensionMap.size, 0); - - yield Promise.all([ - promiseInstallAllFiles([do_get_addon("webextension_1")], true), - promiseAddonStartup() - ]); - - equal(GlobalManager.extensionMap.size, 1); - ok(GlobalManager.extensionMap.has(ID)); - - let chromeReg = AM_Cc["@mozilla.org/chrome/chrome-registry;1"]. - getService(AM_Ci.nsIChromeRegistry); - try { - chromeReg.convertChromeURL(NetUtil.newURI("chrome://webex/content/webex.xul")); - do_throw("Chrome manifest should not have been registered"); - } - catch (e) { - // Expected the chrome url to not be registered - } - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Web Extension Name"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_false(addon.isSystem); - do_check_eq(addon.type, "extension"); - do_check_true(addon.isWebExtension); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - let uri = do_get_addon_root_uri(profileDir, ID); - - do_check_eq(addon.iconURL, uri + "icon48.png"); - do_check_eq(addon.icon64URL, uri + "icon64.png"); - - // Should persist through a restart - yield promiseShutdownManager(); - - equal(GlobalManager.extensionMap.size, 0); - - startupManager(); - yield promiseAddonStartup(); - - equal(GlobalManager.extensionMap.size, 1); - ok(GlobalManager.extensionMap.has(ID)); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Web Extension Name"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_false(addon.isSystem); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - let file = getFileForAddon(profileDir, ID); - do_check_true(file.exists()); - - uri = do_get_addon_root_uri(profileDir, ID); - - do_check_eq(addon.iconURL, uri + "icon48.png"); - do_check_eq(addon.icon64URL, uri + "icon64.png"); - - addon.userDisabled = true; - - equal(GlobalManager.extensionMap.size, 0); - - addon.userDisabled = false; - yield promiseAddonStartup(); - - equal(GlobalManager.extensionMap.size, 1); - ok(GlobalManager.extensionMap.has(ID)); - - addon.uninstall(); - - equal(GlobalManager.extensionMap.size, 0); - do_check_false(GlobalManager.extensionMap.has(ID)); - - yield promiseShutdownManager(); -}); - -// Writing the manifest direct to the profile should work -add_task(function*() { - yield promiseWriteWebManifestForExtension({ - name: "Web Extension Name", - version: "1.0", - manifest_version: 2, - applications: { - gecko: { - id: ID - } - } - }, profileDir); - - startupManager(); - yield promiseAddonStartup(); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - do_check_eq(addon.version, "1.0"); - do_check_eq(addon.name, "Web Extension Name"); - do_check_true(addon.isCompatible); - do_check_false(addon.appDisabled); - do_check_true(addon.isActive); - do_check_false(addon.isSystem); - do_check_eq(addon.type, "extension"); - do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED); - - let file = getFileForAddon(profileDir, ID); - do_check_true(file.exists()); - - addon.uninstall(); - - yield promiseRestartManager(); -}); - -add_task(function* test_manifest_localization() { - const extensionId = "webextension3@tests.mozilla.org"; - - yield promiseInstallAllFiles([do_get_addon("webextension_3")], true); - yield promiseAddonStartup(); - - let addon = yield promiseAddonByID(extensionId); - addon.userDisabled = true; - - equal(addon.name, "Web Extensiøn foo ☹"); - equal(addon.description, "Descriptïon bar ☹ of add-on"); - - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "fr-FR"); - yield promiseRestartManager(); - - addon = yield promiseAddonByID(extensionId); - - equal(addon.name, "Web Extensiøn le foo ☺"); - equal(addon.description, "Descriptïon le bar ☺ of add-on"); - - Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "de"); - yield promiseRestartManager(); - - addon = yield promiseAddonByID(extensionId); - - equal(addon.name, "Web Extensiøn foo ☹"); - equal(addon.description, "Descriptïon bar ☹ of add-on"); - - addon.uninstall(); -}); - -// Missing version should cause a failure -add_task(function*() { - yield promiseWriteWebManifestForExtension({ - name: "Web Extension Name", - manifest_version: 2, - applications: { - gecko: { - id: ID - } - } - }, profileDir); - - yield promiseRestartManager(); - - let addon = yield promiseAddonByID(ID); - do_check_eq(addon, null); - - let file = getFileForAddon(profileDir, ID); - do_check_false(file.exists()); - - yield promiseRestartManager(); -}); - -// Incorrect manifest version should cause a failure -add_task(function*() { - yield promiseWriteWebManifestForExtension({ - name: "Web Extension Name", - version: "1.0", - manifest_version: 1, - applications: { - gecko: { - id: ID - } - } - }, profileDir); - - yield promiseRestartManager(); - - let addon = yield promiseAddonByID(ID); - do_check_eq(addon, null); - - let file = getFileForAddon(profileDir, ID); - do_check_false(file.exists()); - - yield promiseRestartManager(); -}); - -// install.rdf should be read before manifest.json -add_task(function*() { - - yield Promise.all([ - promiseInstallAllFiles([do_get_addon("webextension_2")], true) - ]); - - yield promiseRestartManager(); - - let installrdf_id = "first-webextension2@tests.mozilla.org"; - let first_addon = yield promiseAddonByID(installrdf_id); - do_check_neq(first_addon, null); - do_check_false(first_addon.appDisabled); - do_check_true(first_addon.isActive); - do_check_false(first_addon.isSystem); - - let manifestjson_id= "last-webextension2@tests.mozilla.org"; - let last_addon = yield promiseAddonByID(manifestjson_id); - do_check_eq(last_addon, null); - - yield promiseRestartManager(); -}); - -// Test that the "options_ui" manifest section is processed correctly. -add_task(function* test_options_ui() { - let OPTIONS_RE = /^moz-extension:\/\/[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}\/options\.html$/; - - const extensionId = "webextension@tests.mozilla.org"; - yield promiseInstallWebExtension({ - manifest: { - applications: {gecko: {id: extensionId}}, - "options_ui": { - "page": "options.html", - }, - }, - }); - - let addon = yield promiseAddonByID(extensionId); - equal(addon.optionsType, AddonManager.OPTIONS_TYPE_INLINE_BROWSER, - "Addon should have an INLINE_BROWSER options type"); - - ok(OPTIONS_RE.test(addon.optionsURL), - "Addon should have a moz-extension: options URL for /options.html"); - - addon.uninstall(); - - const ID2 = "webextension2@tests.mozilla.org"; - yield promiseInstallWebExtension({ - manifest: { - applications: {gecko: {id: ID2}}, - "options_ui": { - "page": "options.html", - "open_in_tab": true, - }, - }, - }); - - addon = yield promiseAddonByID(ID2); - equal(addon.optionsType, AddonManager.OPTIONS_TYPE_TAB, - "Addon should have a TAB options type"); - - ok(OPTIONS_RE.test(addon.optionsURL), - "Addon should have a moz-extension: options URL for /options.html"); - - addon.uninstall(); -}); - -// Test that experiments permissions add the appropriate dependencies. -add_task(function* test_experiments_dependencies() { - if (AppConstants.RELEASE_OR_BETA) - // Experiments are not enabled on release builds. - return; - - let addonFile = createTempWebExtensionFile({ - manifest: { - applications: {gecko: {id: "meh@experiment"}}, - "permissions": ["experiments.meh"], - }, - }); - - yield promiseInstallAllFiles([addonFile]); - - let addon = yield new Promise(resolve => AddonManager.getAddonByID("meh@experiment", resolve)); - - deepEqual(addon.dependencies, ["meh@experiments.addons.mozilla.org"], - "Addon should have the expected dependencies"); - - equal(addon.appDisabled, true, "Add-on should be app disabled due to missing dependencies"); - - addon.uninstall(); -}); - -// Test that experiments API extensions install correctly. -add_task(function* test_experiments_api() { - if (AppConstants.RELEASE_OR_BETA) - // Experiments are not enabled on release builds. - return; - - const extensionId = "meh@experiments.addons.mozilla.org"; - - let addonFile = createTempXPIFile({ - id: extensionId, - type: 256, - version: "0.1", - name: "Meh API", - }); - - yield promiseInstallAllFiles([addonFile]); - - let addons = yield new Promise(resolve => AddonManager.getAddonsByTypes(["apiextension"], resolve)); - let addon = addons.pop(); - equal(addon.id, extensionId, "Add-on should be installed as an API extension"); - - addons = yield new Promise(resolve => AddonManager.getAddonsByTypes(["extension"], resolve)); - equal(addons.pop().id, extensionId, "Add-on type should be aliased to extension"); - - addon.uninstall(); -}); - -add_task(function* developerShouldOverride() { - let addon = yield promiseInstallWebExtension({ - manifest: { - default_locale: "en", - developer: { - name: "__MSG_name__", - url: "__MSG_url__" - }, - author: "Will be overridden by developer", - homepage_url: "https://will.be.overridden", - }, - files: { - "_locales/en/messages.json": `{ - "name": { - "message": "en name" - }, - "url": { - "message": "https://example.net/en" - } - }` - } - }); - - addon = yield promiseAddonByID(addon.id); - equal(addon.creator, "en name"); - equal(addon.homepageURL, "https://example.net/en"); - addon.uninstall(); -}); - -add_task(function* developerEmpty() { - for (let developer of [{}, null, {name: null, url: null}]) { - let addon = yield promiseInstallWebExtension({ - manifest: { - author: "Some author", - developer: developer, - homepage_url: "https://example.net", - manifest_version: 2, - name: "Web Extension Name", - version: "1.0", - } - }); - - addon = yield promiseAddonByID(addon.id); - equal(addon.creator, "Some author"); - equal(addon.homepageURL, "https://example.net"); - addon.uninstall(); - } -}); - -add_task(function* authorNotString() { - for (let author of [{}, [], 42]) { - let addon = yield promiseInstallWebExtension({ - manifest: { - author: author, - manifest_version: 2, - name: "Web Extension Name", - version: "1.0", - } - }); - - addon = yield promiseAddonByID(addon.id); - equal(addon.creator, null); - addon.uninstall(); - } -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_webextension_embedded.js b/toolkit/mozapps/webextensions/test/xpcshell/test_webextension_embedded.js deleted file mode 100644 index 3bd8a2bd8..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_webextension_embedded.js +++ /dev/null @@ -1,306 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -BootstrapMonitor.init(); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "49"); -startupManager(); - -// NOTE: the following import needs to be called after the `createAppInfo` -// or it will fail Extension.jsm internally imports AddonManager.jsm and -// AddonManager will raise a ReferenceError exception because it tried to -// access an undefined `Services.appinfo` object. -const { Management } = Components.utils.import("resource://gre/modules/Extension.jsm", {}); - -const { - EmbeddedExtensionManager, - LegacyExtensionsUtils, -} = Components.utils.import("resource://gre/modules/LegacyExtensionsUtils.jsm"); - -// Wait the startup of the embedded webextension. -function promiseWebExtensionStartup() { - return new Promise(resolve => { - let listener = (event, extension) => { - Management.off("startup", listener); - resolve(extension); - }; - - Management.on("startup", listener); - }); -} - -function promiseWebExtensionShutdown() { - return new Promise(resolve => { - let listener = (event, extension) => { - Management.off("shutdown", listener); - resolve(extension); - }; - - Management.on("shutdown", listener); - }); -} - -const BOOTSTRAP = String.raw` - Components.utils.import("resource://xpcshell-data/BootstrapMonitor.jsm").monitor(this); -`; - -const EMBEDDED_WEBEXT_MANIFEST = JSON.stringify({ - name: "embedded webextension addon", - manifest_version: 2, - version: "1.0", -}); - -/** - * This test case checks that an hasEmbeddedWebExtension addon property - * is persisted and restored correctly across restarts. - */ -add_task(function* has_embedded_webextension_persisted() { - const ID = "embedded-webextension-addon-persist@tests.mozilla.org"; - - const xpiFile = createTempXPIFile({ - id: ID, - name: "Test Add-on", - version: "1.0", - bootstrap: true, - hasEmbeddedWebExtension: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1.9.2" - }] - }, { - "bootstrap.js": BOOTSTRAP, - "webextension/manifest.json": EMBEDDED_WEBEXT_MANIFEST, - }); - - yield promiseInstallFile(xpiFile); - - let addon = yield promiseAddonByID(ID); - - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.version, "1.0", "Got the expected version"); - equal(addon.hasEmbeddedWebExtension, true, - "Got the expected hasEmbeddedWebExtension value"); - - // Check that the addon has been installed and started. - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - let startupInfo = BootstrapMonitor.started.get(ID); - ok(("webExtension" in startupInfo.data), - "Got an webExtension property in the startup bootstrap method params"); - ok(("startup" in startupInfo.data.webExtension), - "Got the expected 'startup' property in the webExtension object"); - - // After restarting the manager, the add-on should still have the - // hasEmbeddedWebExtension property as expected. - yield promiseRestartManager(); - - let persisted = JSON.parse(Services.prefs.getCharPref("extensions.bootstrappedAddons")); - ok(ID in persisted, "Hybrid add-on persisted to bootstrappedAddons."); - equal(persisted[ID].hasEmbeddedWebExtension, true, - "hasEmbeddedWebExtension flag persisted to bootstrappedAddons."); - - // Check that the addon has been installed and started. - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - addon = yield promiseAddonByID(ID); - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.hasEmbeddedWebExtension, true, "Got the expected hasEmbeddedWebExtension value"); - - // Check that the addon has been installed and started. - let newStartupInfo = BootstrapMonitor.started.get(ID); - ok(("webExtension" in newStartupInfo.data), - "Got an webExtension property in the startup bootstrap method params"); - ok(("startup" in newStartupInfo.data.webExtension), - "Got the expected 'startup' property in the webExtension object"); - - let waitUninstall = promiseAddonEvent("onUninstalled"); - addon.uninstall(); - yield waitUninstall; -}); - -/** - * This test case checks that an addon with hasEmbeddedWebExtension set to true - * in its install.rdf gets the expected `embeddedWebExtension` object in the - * parameters of its bootstrap methods. - */ -add_task(function* run_embedded_webext_bootstrap() { - const ID = "embedded-webextension-addon2@tests.mozilla.org"; - - const xpiFile = createTempXPIFile({ - id: ID, - name: "Test Add-on", - version: "1.0", - bootstrap: true, - hasEmbeddedWebExtension: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1.9.2" - }] - }, { - "bootstrap.js": BOOTSTRAP, - "webextension/manifest.json": EMBEDDED_WEBEXT_MANIFEST, - }); - - yield AddonManager.installTemporaryAddon(xpiFile); - - let addon = yield promiseAddonByID(ID); - - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.version, "1.0", "Got the expected version"); - equal(addon.hasEmbeddedWebExtension, true, - "Got the expected hasEmbeddedWebExtension value"); - - // Check that the addon has been installed and started. - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - - let installInfo = BootstrapMonitor.installed.get(ID); - ok(!("webExtension" in installInfo.data), - "No webExtension property is expected in the install bootstrap method params"); - - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - let startupInfo = BootstrapMonitor.started.get(ID); - - ok(("webExtension" in startupInfo.data), - "Got an webExtension property in the startup bootstrap method params"); - - ok(("startup" in startupInfo.data.webExtension), - "Got the expected 'startup' property in the webExtension object"); - - const waitForWebExtensionStartup = promiseWebExtensionStartup(); - - const embeddedAPI = yield startupInfo.data.webExtension.startup(); - - // WebExtension startup should have been fully resolved. - yield waitForWebExtensionStartup; - - Assert.deepEqual( - Object.keys(embeddedAPI.browser.runtime).sort(), - ["onConnect", "onMessage"], - `Got the expected 'runtime' in the 'browser' API object` - ); - - // Uninstall the addon and wait that the embedded webextension has been stopped and - // test the params of the shutdown and uninstall bootstrap method. - let waitForWebExtensionShutdown = promiseWebExtensionShutdown(); - let waitUninstall = promiseAddonEvent("onUninstalled"); - addon.uninstall(); - yield waitForWebExtensionShutdown; - yield waitUninstall; - - BootstrapMonitor.checkAddonNotStarted(ID, "1.0"); - - let shutdownInfo = BootstrapMonitor.stopped.get(ID); - ok(!("webExtension" in shutdownInfo.data), - "No webExtension property is expected in the shutdown bootstrap method params"); - - let uninstallInfo = BootstrapMonitor.uninstalled.get(ID); - ok(!("webExtension" in uninstallInfo.data), - "No webExtension property is expected in the uninstall bootstrap method params"); -}); - -/** - * This test case checks that an addon with hasEmbeddedWebExtension can be reloaded - * without raising unexpected exceptions due to race conditions. - */ -add_task(function* reload_embedded_webext_bootstrap() { - const ID = "embedded-webextension-addon2@tests.mozilla.org"; - - // No embedded webextension should be currently around. - equal(EmbeddedExtensionManager.embeddedExtensionsByAddonId.size, 0, - "No embedded extension instance should be tracked here"); - - const xpiFile = createTempXPIFile({ - id: ID, - name: "Test Add-on", - version: "1.0", - bootstrap: true, - hasEmbeddedWebExtension: true, - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1.9.2" - }] - }, { - "bootstrap.js": BOOTSTRAP, - "webextension/manifest.json": EMBEDDED_WEBEXT_MANIFEST, - }); - - yield AddonManager.installTemporaryAddon(xpiFile); - - let addon = yield promiseAddonByID(ID); - - notEqual(addon, null, "Got an addon object as expected"); - equal(addon.version, "1.0", "Got the expected version"); - equal(addon.isActive, true, "The Addon is active"); - equal(addon.appDisabled, false, "The addon is not app disabled"); - equal(addon.userDisabled, false, "The addon is not user disabled"); - - // Check that the addon has been installed and started. - BootstrapMonitor.checkAddonInstalled(ID, "1.0"); - BootstrapMonitor.checkAddonStarted(ID, "1.0"); - - // Only one embedded extension. - equal(EmbeddedExtensionManager.embeddedExtensionsByAddonId.size, 1, - "Got the expected number of tracked extension instances"); - - const embeddedWebExtension = EmbeddedExtensionManager.embeddedExtensionsByAddonId.get(ID); - - let startupInfo = BootstrapMonitor.started.get(ID); - yield startupInfo.data.webExtension.startup(); - - const waitForAddonDisabled = promiseAddonEvent("onDisabled"); - addon.userDisabled = true; - yield waitForAddonDisabled; - - // No embedded webextension should be currently around. - equal(EmbeddedExtensionManager.embeddedExtensionsByAddonId.size, 0, - "No embedded extension instance should be tracked here"); - - const waitForAddonEnabled = promiseAddonEvent("onEnabled"); - addon.userDisabled = false; - yield waitForAddonEnabled; - - // Only one embedded extension. - equal(EmbeddedExtensionManager.embeddedExtensionsByAddonId.size, 1, - "Got the expected number of tracked extension instances"); - - const embeddedWebExtensionAfterEnabled = EmbeddedExtensionManager.embeddedExtensionsByAddonId.get(ID); - notEqual(embeddedWebExtensionAfterEnabled, embeddedWebExtension, - "Got a new EmbeddedExtension instance after the addon has been disabled and then enabled"); - - startupInfo = BootstrapMonitor.started.get(ID); - yield startupInfo.data.webExtension.startup(); - - const waitForReinstalled = promiseAddonEvent("onInstalled"); - addon.reload(); - yield waitForReinstalled; - - // No leaked embedded extension after the previous reloads. - equal(EmbeddedExtensionManager.embeddedExtensionsByAddonId.size, 1, - "Got the expected number of tracked extension instances"); - - const embeddedWebExtensionAfterReload = EmbeddedExtensionManager.embeddedExtensionsByAddonId.get(ID); - notEqual(embeddedWebExtensionAfterReload, embeddedWebExtensionAfterEnabled, - "Got a new EmbeddedExtension instance after the addon has been reloaded"); - - startupInfo = BootstrapMonitor.started.get(ID); - yield startupInfo.data.webExtension.startup(); - - // Uninstall the test addon - let waitUninstalled = promiseAddonEvent("onUninstalled"); - addon.uninstall(); - yield waitUninstalled; - - // No leaked embedded extension after uninstalling. - equal(EmbeddedExtensionManager.embeddedExtensionsByAddonId.size, 0, - "No embedded extension instance should be tracked after the addon uninstall"); -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_webextension_icons.js b/toolkit/mozapps/webextensions/test/xpcshell/test_webextension_icons.js deleted file mode 100644 index 25fb4115f..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_webextension_icons.js +++ /dev/null @@ -1,169 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -const ID = "webextension1@tests.mozilla.org"; - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); -profileDir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY); - -createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42"); -startupManager(); - -const { Management } = Components.utils.import("resource://gre/modules/Extension.jsm", {}); - -function promiseAddonStartup() { - return new Promise(resolve => { - let listener = (evt, extension) => { - Management.off("startup", listener); - resolve(extension); - }; - - Management.on("startup", listener); - }); -} - -// Test simple icon set parsing -add_task(function*() { - yield promiseWriteWebManifestForExtension({ - name: "Web Extension Name", - version: "1.0", - manifest_version: 2, - applications: { - gecko: { - id: ID - } - }, - icons: { - 16: "icon16.png", - 32: "icon32.png", - 48: "icon48.png", - 64: "icon64.png" - } - }, profileDir); - - yield promiseRestartManager(); - yield promiseAddonStartup(); - - let uri = do_get_addon_root_uri(profileDir, ID); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - - function check_icons(addon_copy) { - deepEqual(addon_copy.icons, { - 16: uri + "icon16.png", - 32: uri + "icon32.png", - 48: uri + "icon48.png", - 64: uri + "icon64.png" - }); - - // iconURL should map to icons[48] and icons[64] - equal(addon.iconURL, uri + "icon48.png"); - equal(addon.icon64URL, uri + "icon64.png"); - - // AddonManager gets the correct icon sizes from addon.icons - equal(AddonManager.getPreferredIconURL(addon, 1), uri + "icon16.png"); - equal(AddonManager.getPreferredIconURL(addon, 16), uri + "icon16.png"); - equal(AddonManager.getPreferredIconURL(addon, 30), uri + "icon32.png"); - equal(AddonManager.getPreferredIconURL(addon, 48), uri + "icon48.png"); - equal(AddonManager.getPreferredIconURL(addon, 64), uri + "icon64.png"); - equal(AddonManager.getPreferredIconURL(addon, 128), uri + "icon64.png"); - } - - check_icons(addon); - - // check if icons are persisted through a restart - yield promiseRestartManager(); - yield promiseAddonStartup(); - - addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - - check_icons(addon); - - addon.uninstall(); - - yield promiseRestartManager(); -}); - -// Test AddonManager.getPreferredIconURL for retina screen sizes -add_task(function*() { - yield promiseWriteWebManifestForExtension({ - name: "Web Extension Name", - version: "1.0", - manifest_version: 2, - applications: { - gecko: { - id: ID - } - }, - icons: { - 32: "icon32.png", - 48: "icon48.png", - 64: "icon64.png", - 128: "icon128.png", - 256: "icon256.png" - } - }, profileDir); - - yield promiseRestartManager(); - yield promiseAddonStartup(); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - - let uri = do_get_addon_root_uri(profileDir, ID); - - // AddonManager displays larger icons for higher pixel density - equal(AddonManager.getPreferredIconURL(addon, 32, { - devicePixelRatio: 2 - }), uri + "icon64.png"); - - equal(AddonManager.getPreferredIconURL(addon, 48, { - devicePixelRatio: 2 - }), uri + "icon128.png"); - - equal(AddonManager.getPreferredIconURL(addon, 64, { - devicePixelRatio: 2 - }), uri + "icon128.png"); - - addon.uninstall(); - - yield promiseRestartManager(); -}); - -// Handles no icons gracefully -add_task(function*() { - yield promiseWriteWebManifestForExtension({ - name: "Web Extension Name", - version: "1.0", - manifest_version: 2, - applications: { - gecko: { - id: ID - } - } - }, profileDir); - - yield promiseRestartManager(); - yield promiseAddonStartup(); - - let addon = yield promiseAddonByID(ID); - do_check_neq(addon, null); - - let uri = do_get_addon_root_uri(profileDir, ID); - - deepEqual(addon.icons, {}); - - equal(addon.iconURL, null); - equal(addon.icon64URL, null); - - equal(AddonManager.getPreferredIconURL(addon, 128), null); - - addon.uninstall(); - - yield promiseRestartManager(); -}); - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_webextension_install.js b/toolkit/mozapps/webextensions/test/xpcshell/test_webextension_install.js deleted file mode 100644 index 1e7c9d9b7..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_webextension_install.js +++ /dev/null @@ -1,478 +0,0 @@ - -const {ADDON_SIGNING} = AM_Cu.import("resource://gre/modules/addons/AddonConstants.jsm", {}); - -function run_test() { - run_next_test(); -} - -let profileDir; -add_task(function* setup() { - profileDir = gProfD.clone(); - profileDir.append("extensions"); - - if (!profileDir.exists()) - profileDir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - startupManager(); -}); - -const IMPLICIT_ID_XPI = "data/webext-implicit-id.xpi"; -const IMPLICIT_ID_ID = "webext_implicit_id@tests.mozilla.org"; - -// webext-implicit-id.xpi has a minimal manifest with no -// applications or browser_specific_settings, so its id comes -// from its signature, which should be the ID constant defined below. -add_task(function* test_implicit_id() { - // This test needs to read the xpi certificate which only works - // if signing is enabled. - ok(ADDON_SIGNING, "Add-on signing is enabled"); - - let addon = yield promiseAddonByID(IMPLICIT_ID_ID); - equal(addon, null, "Add-on is not installed"); - - let xpifile = do_get_file(IMPLICIT_ID_XPI); - yield promiseInstallAllFiles([xpifile]); - - addon = yield promiseAddonByID(IMPLICIT_ID_ID); - notEqual(addon, null, "Add-on is installed"); - - addon.uninstall(); -}); - -// We should also be able to install webext-implicit-id.xpi temporarily -// and it should look just like the regular install (ie, the ID should -// come from the signature) -add_task(function* test_implicit_id_temp() { - // This test needs to read the xpi certificate which only works - // if signing is enabled. - ok(ADDON_SIGNING, "Add-on signing is enabled"); - - let addon = yield promiseAddonByID(IMPLICIT_ID_ID); - equal(addon, null, "Add-on is not installed"); - - let xpifile = do_get_file(IMPLICIT_ID_XPI); - yield AddonManager.installTemporaryAddon(xpifile); - - addon = yield promiseAddonByID(IMPLICIT_ID_ID); - notEqual(addon, null, "Add-on is installed"); - - // The sourceURI of a temporary installed addon should be equal to the - // file url of the installed xpi file. - equal(addon.sourceURI && addon.sourceURI.spec, - Services.io.newFileURI(xpifile).spec, - "SourceURI of the add-on has the expected value"); - - addon.uninstall(); -}); - -// We should be able to temporarily install an unsigned web extension -// that does not have an ID in its manifest. -add_task(function* test_unsigned_no_id_temp_install() { - AddonTestUtils.useRealCertChecks = true; - const manifest = { - name: "no ID", - description: "extension without an ID", - manifest_version: 2, - version: "1.0" - }; - - const addonDir = yield promiseWriteWebManifestForExtension(manifest, gTmpD, - "the-addon-sub-dir"); - const addon = yield AddonManager.installTemporaryAddon(addonDir); - ok(addon.id, "ID should have been auto-generated"); - - // The sourceURI of a temporary installed addon should be equal to the - // file url of the installed source dir. - equal(addon.sourceURI && addon.sourceURI.spec, - Services.io.newFileURI(addonDir).spec, - "SourceURI of the add-on has the expected value"); - - // Install the same directory again, as if re-installing or reloading. - const secondAddon = yield AddonManager.installTemporaryAddon(addonDir); - // The IDs should be the same. - equal(secondAddon.id, addon.id, "Reinstalled add-on has the expected ID"); - - secondAddon.uninstall(); - Services.obs.notifyObservers(addonDir, "flush-cache-entry", null); - addonDir.remove(true); - AddonTestUtils.useRealCertChecks = false; -}); - -// We should be able to install two extensions from manifests without IDs -// at different locations and get two unique extensions. -add_task(function* test_multiple_no_id_extensions() { - AddonTestUtils.useRealCertChecks = true; - const manifest = { - name: "no ID", - description: "extension without an ID", - manifest_version: 2, - version: "1.0" - }; - - let extension1 = ExtensionTestUtils.loadExtension({ - manifest: manifest, - useAddonManager: "temporary", - }); - - let extension2 = ExtensionTestUtils.loadExtension({ - manifest: manifest, - useAddonManager: "temporary", - }); - - yield Promise.all([extension1.startup(), extension2.startup()]); - - const allAddons = yield new Promise(resolve => { - AddonManager.getAllAddons(addons => resolve(addons)); - }); - do_print(`Found these add-ons: ${allAddons.map(a => a.name).join(", ")}`); - const filtered = allAddons.filter(addon => addon.name === manifest.name); - // Make sure we have two add-ons by the same name. - equal(filtered.length, 2, "Two add-ons are installed with the same name"); - - yield extension1.unload(); - yield extension2.unload(); - AddonTestUtils.useRealCertChecks = false; -}); - -// Test that we can get the ID from browser_specific_settings -add_task(function* test_bss_id() { - const ID = "webext_bss_id@tests.mozilla.org"; - - let manifest = { - name: "bss test", - description: "test that ID may be in browser_specific_settings", - manifest_version: 2, - version: "1.0", - - browser_specific_settings: { - gecko: { - id: ID - } - } - }; - - let addon = yield promiseAddonByID(ID); - equal(addon, null, "Add-on is not installed"); - - let extension = ExtensionTestUtils.loadExtension({ - manifest: manifest, - useAddonManager: "temporary", - }); - yield extension.startup(); - - addon = yield promiseAddonByID(ID); - notEqual(addon, null, "Add-on is installed"); - - yield extension.unload(); -}); - -// Test that if we have IDs in both browser_specific_settings and applications, -// that we prefer the ID in browser_specific_settings. -add_task(function* test_two_ids() { - const GOOD_ID = "two_ids@tests.mozilla.org"; - const BAD_ID = "i_am_obsolete@tests.mozilla.org"; - - let manifest = { - name: "two id test", - description: "test a web extension with ids in both applications and browser_specific_settings", - manifest_version: 2, - version: "1.0", - - applications: { - gecko: { - id: BAD_ID - } - }, - - browser_specific_settings: { - gecko: { - id: GOOD_ID - } - } - } - - let extension = ExtensionTestUtils.loadExtension({ - manifest: manifest, - useAddonManager: "temporary", - }); - yield extension.startup(); - - let addon = yield promiseAddonByID(BAD_ID); - equal(addon, null, "Add-on is not found using bad ID"); - addon = yield promiseAddonByID(GOOD_ID); - notEqual(addon, null, "Add-on is found using good ID"); - - yield extension.unload(); -}); - -// Test that strict_min_version and strict_max_version are enforced for -// loading temporary extension. -add_task(function* test_strict_min_max() { - // the app version being compared to is 1.9.2 - const addonId = "strict_min_max@tests.mozilla.org"; - const MANIFEST = { - name: "strict min max test", - description: "test strict min and max with temporary loading", - manifest_version: 2, - version: "1.0", - }; - - // bad max good min - let apps = { - applications: { - gecko: { - id: addonId, - strict_min_version: "1", - strict_max_version: "1" - }, - }, - } - let testManifest = Object.assign(apps, MANIFEST); - - let extension = ExtensionTestUtils.loadExtension({ - manifest: testManifest, - useAddonManager: "temporary", - }); - - let expectedMsg = new RegExp("Add-on strict_min_max@tests.mozilla.org is not compatible with application version. " + - "add-on minVersion: 1. add-on maxVersion: 1."); - yield Assert.rejects(extension.startup(), - expectedMsg, - "Install rejects when specified maxVersion is not valid"); - - let addon = yield promiseAddonByID(addonId); - equal(addon, null, "Add-on is not installed"); - - // bad min good max - apps = { - applications: { - gecko: { - id: addonId, - strict_min_version: "2", - strict_max_version: "2" - }, - }, - } - testManifest = Object.assign(apps, MANIFEST); - - extension = ExtensionTestUtils.loadExtension({ - manifest: testManifest, - useAddonManager: "temporary", - }); - - expectedMsg = new RegExp("Add-on strict_min_max@tests.mozilla.org is not compatible with application version. " + - "add-on minVersion: 2. add-on maxVersion: 2."); - yield Assert.rejects(extension.startup(), - expectedMsg, - "Install rejects when specified minVersion is not valid"); - - addon = yield promiseAddonByID(addonId); - equal(addon, null, "Add-on is not installed"); - - // bad both - apps = { - applications: { - gecko: { - id: addonId, - strict_min_version: "2", - strict_max_version: "1" - }, - }, - } - testManifest = Object.assign(apps, MANIFEST); - - extension = ExtensionTestUtils.loadExtension({ - manifest: testManifest, - useAddonManager: "temporary", - }); - - expectedMsg = new RegExp("Add-on strict_min_max@tests.mozilla.org is not compatible with application version. " + - "add-on minVersion: 2. add-on maxVersion: 1."); - yield Assert.rejects(extension.startup(), - expectedMsg, - "Install rejects when specified minVersion and maxVersion are not valid"); - - addon = yield promiseAddonByID(addonId); - equal(addon, null, "Add-on is not installed"); - - // bad only min - apps = { - applications: { - gecko: { - id: addonId, - strict_min_version: "2" - }, - }, - } - testManifest = Object.assign(apps, MANIFEST); - - extension = ExtensionTestUtils.loadExtension({ - manifest: testManifest, - useAddonManager: "temporary", - }); - - expectedMsg = new RegExp("Add-on strict_min_max@tests.mozilla.org is not compatible with application version\. " + - "add-on minVersion: 2\."); - yield Assert.rejects(extension.startup(), - expectedMsg, - "Install rejects when specified minVersion and maxVersion are not valid"); - - addon = yield promiseAddonByID(addonId); - equal(addon, null, "Add-on is not installed"); - - // bad only max - apps = { - applications: { - gecko: { - id: addonId, - strict_max_version: "1" - }, - }, - } - testManifest = Object.assign(apps, MANIFEST); - - extension = ExtensionTestUtils.loadExtension({ - manifest: testManifest, - useAddonManager: "temporary", - }); - - expectedMsg = new RegExp("Add-on strict_min_max@tests.mozilla.org is not compatible with application version\. " + - "add-on maxVersion: 1\."); - yield Assert.rejects(extension.startup(), - expectedMsg, - "Install rejects when specified minVersion and maxVersion are not valid"); - - addon = yield promiseAddonByID(addonId); - equal(addon, null, "Add-on is not installed"); - - // good both - apps = { - applications: { - gecko: { - id: addonId, - strict_min_version: "1", - strict_max_version: "2" - }, - }, - } - testManifest = Object.assign(apps, MANIFEST); - - extension = ExtensionTestUtils.loadExtension({ - manifest: testManifest, - useAddonManager: "temporary", - }); - - yield extension.startup(); - addon = yield promiseAddonByID(addonId); - - notEqual(addon, null, "Add-on is installed"); - equal(addon.id, addonId, "Installed add-on has the expected ID"); - yield extension.unload(); - - // good only min - let newId = "strict_min_only@tests.mozilla.org"; - apps = { - applications: { - gecko: { - id: newId, - strict_min_version: "1", - }, - }, - } - testManifest = Object.assign(apps, MANIFEST); - - extension = ExtensionTestUtils.loadExtension({ - manifest: testManifest, - useAddonManager: "temporary", - }); - - yield extension.startup(); - addon = yield promiseAddonByID(newId); - - notEqual(addon, null, "Add-on is installed"); - equal(addon.id, newId, "Installed add-on has the expected ID"); - - yield extension.unload(); - - // good only max - newId = "strict_max_only@tests.mozilla.org"; - apps = { - applications: { - gecko: { - id: newId, - strict_max_version: "2", - }, - }, - } - testManifest = Object.assign(apps, MANIFEST); - - extension = ExtensionTestUtils.loadExtension({ - manifest: testManifest, - useAddonManager: "temporary", - }); - - yield extension.startup(); - addon = yield promiseAddonByID(newId); - - notEqual(addon, null, "Add-on is installed"); - equal(addon.id, newId, "Installed add-on has the expected ID"); - - yield extension.unload(); - - // * in min will throw an error - for (let version of ["0.*", "0.*.0"]) { - newId = "strict_min_star@tests.mozilla.org"; - let minStarApps = { - applications: { - gecko: { - id: newId, - strict_min_version: version, - }, - }, - } - - let minStarTestManifest = Object.assign(minStarApps, MANIFEST); - - let minStarExtension = ExtensionTestUtils.loadExtension({ - manifest: minStarTestManifest, - useAddonManager: "temporary", - }); - - yield Assert.rejects( - minStarExtension.startup(), - /The use of '\*' in strict_min_version is invalid/, - "loading an extension with a * in strict_min_version throws an exception"); - - let minStarAddon = yield promiseAddonByID(newId); - equal(minStarAddon, null, "Add-on is not installed"); - } - - // incompatible extension but with compatibility checking off - newId = "checkCompatibility@tests.mozilla.org"; - apps = { - applications: { - gecko: { - id: newId, - strict_max_version: "1", - }, - }, - } - testManifest = Object.assign(apps, MANIFEST); - - extension = ExtensionTestUtils.loadExtension({ - manifest: testManifest, - useAddonManager: "temporary", - }); - - let savedCheckCompatibilityValue = AddonManager.checkCompatibility; - AddonManager.checkCompatibility = false; - yield extension.startup(); - addon = yield promiseAddonByID(newId); - - notEqual(addon, null, "Add-on is installed"); - equal(addon.id, newId, "Installed add-on has the expected ID"); - - yield extension.unload(); - AddonManager.checkCompatibility = savedCheckCompatibilityValue; -}); diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_webextension_paths.js b/toolkit/mozapps/webextensions/test/xpcshell/test_webextension_paths.js deleted file mode 100644 index 29a3dacf7..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/test_webextension_paths.js +++ /dev/null @@ -1,55 +0,0 @@ -function run_test() { - run_next_test(); -} - -let profileDir; -add_task(function* setup() { - profileDir = gProfD.clone(); - profileDir.append("extensions"); - - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - startupManager(); -}); - -// When installing an unpacked addon we derive the ID from the -// directory name. Make sure that if the directoy name is not a valid -// addon ID that we reject it. -add_task(function* test_bad_unpacked_path() { - let MANIFEST_ID = "webext_bad_path@tests.mozilla.org"; - - let manifest = { - name: "path test", - description: "test of a bad directory name", - manifest_version: 2, - version: "1.0", - - browser_specific_settings: { - gecko: { - id: MANIFEST_ID - } - } - }; - - const directories = [ - "not a valid ID", - '"quotes"@tests.mozilla.org', - ]; - - for (let dir of directories) { - try { - yield promiseWriteWebManifestForExtension(manifest, profileDir, dir); - } catch (ex) { - // This can fail if the underlying filesystem (looking at you windows) - // doesn't handle some of the characters in the ID. In that case, - // just ignore this test on this platform. - continue; - } - yield promiseRestartManager(); - - let addon = yield promiseAddonByID(dir); - do_check_eq(addon, null); - addon = yield promiseAddonByID(MANIFEST_ID); - do_check_eq(addon, null); - } -}); - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/xpcshell-shared.ini b/toolkit/mozapps/webextensions/test/xpcshell/xpcshell-shared.ini deleted file mode 100644 index 1e86e5861..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/xpcshell-shared.ini +++ /dev/null @@ -1,334 +0,0 @@ -# The file is shared between the two main xpcshell manifest files. -[DEFAULT] -skip-if = toolkit == 'android' -tags = addons - -[test_AddonRepository.js] -[test_reload.js] -# Bug 676992: test consistently hangs on Android -# There's a problem removing a temp file without manually clearing the cache on Windows -skip-if = os == "android" || os == "win" -tags = webextensions -[test_AddonRepository_cache.js] -# Bug 676992: test consistently hangs on Android -# Bug 1026805: frequent hangs on OSX 10.8 -skip-if = os == "android" || os == "mac" -run-sequentially = Uses hardcoded ports in xpi files. -[test_AddonRepository_compatmode.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_LightweightThemeManager.js] -[test_backgroundupdate.js] -[test_bad_json.js] -[test_badschema.js] -[test_blocklistchange.js] -# Times out during parallel runs on desktop -requesttimeoutfactor = 2 -[test_blocklist_prefs.js] -[test_blocklist_metadata_filters.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_blocklist_regexp.js] -skip-if = os == "android" -[test_bootstrap.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bootstrap_const.js] -[test_bootstrap_resource.js] -[test_bug299716.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -run-sequentially = Uses hardcoded ports in xpi files. -[test_bug299716_2.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -run-sequentially = Hardcoded port in install.rdf. -[test_bug324121.js] -# Bug 676992: test consistently hangs on Android -# Bug 1026805: frequent hangs on OSX 10.8 -skip-if = os == "android" || os == "mac" -run-sequentially = Uses hardcoded ports in xpi files. -[test_bug335238.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -run-sequentially = Uses hardcoded ports in xpi files. -[test_bug371495.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug384052.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug393285.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug394300.js] -# Bug 676992: test consistently hangs on Android -# Bug 1026805: frequent hangs on OSX 10.8 -skip-if = os == "android" || os == "mac" -run-sequentially = Uses hardcoded ports in xpi files. -[test_bug397778.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug406118.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug424262.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug425657.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug430120.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug449027.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug455906.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug465190.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug468528.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug470377_1.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug470377_1_strictcompat.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug470377_2.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug470377_3.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug470377_3_strictcompat.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug470377_4.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug514327_1.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug514327_2.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug514327_3.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_bug521905.js] -[test_bug526598.js] -[test_bug541420.js] -[test_bug542391.js] -run-sequentially = Uses hardcoded ports in xpi files. -[test_bug554133.js] -[test_bug559800.js] -[test_bug563256.js] -# Bug 676992: test consistently fails on Android -fail-if = os == "android" -[test_bug564030.js] -[test_bug566626.js] -[test_bug567184.js] -[test_bug569138.js] -[test_bug570173.js] -[test_bug576735.js] -[test_bug587088.js] -[test_bug594058.js] -[test_bug595081.js] -[test_bug595573.js] -[test_bug596607.js] -[test_bug616841.js] -# Bug 676992: test consistently fails on Android -fail-if = os == "android" -[test_bug619730.js] -[test_bug620837.js] -[test_bug655254.js] -[test_bug659772.js] -[test_bug675371.js] -[test_bug740612.js] -[test_bug753900.js] -[test_bug757663.js] -[test_bug953156.js] -[test_checkcompatibility.js] -[test_checkCompatibility_themeOverride.js] -[test_childprocess.js] -[test_ChromeManifestParser.js] -[test_compatoverrides.js] -[test_corrupt.js] -[test_corrupt_strictcompat.js] -[test_corruptfile.js] -[test_dataDirectory.js] -[test_default_providers_pref.js] -[test_dictionary.js] -[test_langpack.js] -[test_disable.js] -[test_distribution.js] -[test_dss.js] -# Bug 676992: test consistently fails on Android -fail-if = os == "android" -[test_duplicateplugins.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_error.js] -[test_experiment.js] -[test_filepointer.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_fuel.js] -[test_general.js] -[test_getresource.js] -[test_gfxBlacklist_Device.js] -[test_gfxBlacklist_DriverNew.js] -[test_gfxBlacklist_Equal_DriverNew.js] -[test_gfxBlacklist_Equal_DriverOld.js] -[test_gfxBlacklist_Equal_OK.js] -[test_gfxBlacklist_GTE_DriverOld.js] -[test_gfxBlacklist_GTE_OK.js] -[test_gfxBlacklist_No_Comparison.js] -[test_gfxBlacklist_OK.js] -[test_gfxBlacklist_OS.js] -[test_gfxBlacklist_OSVersion_match.js] -[test_gfxBlacklist_OSVersion_mismatch_OSVersion.js] -[test_gfxBlacklist_OSVersion_mismatch_DriverVersion.js] -[test_gfxBlacklist_Vendor.js] -[test_gfxBlacklist_Version.js] -[test_gfxBlacklist_prefs.js] -# Bug 1248787 - consistently fails -skip-if = true -[test_hasbinarycomponents.js] -[test_hotfix.js] -[test_install.js] -[test_install_icons.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_install_strictcompat.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -run-sequentially = Uses hardcoded ports in xpi files. -[test_isDebuggable.js] -[test_locale.js] -[test_locked.js] -[test_locked2.js] -[test_locked_strictcompat.js] -[test_manifest.js] -[test_mapURIToAddonID.js] -# Same as test_bootstrap.js -skip-if = os == "android" -[test_migrate1.js] -[test_migrate2.js] -[test_migrate3.js] -[test_migrate4.js] -# Times out during parallel runs on desktop -requesttimeoutfactor = 2 -[test_migrate5.js] -[test_migrateAddonRepository.js] -[test_migrate_max_version.js] -[test_multiprocessCompatible.js] -[test_no_addons.js] -[test_onPropertyChanged_appDisabled.js] -[test_permissions.js] -[test_permissions_prefs.js] -[test_plugins.js] -[test_pluginchange.js] -# PluginProvider.jsm is not shipped on Android -skip-if = os == "android" -[test_pluginBlocklistCtp.js] -# Bug 676992: test consistently fails on Android -fail-if = os == "android" -[test_pref_properties.js] -[test_registry.js] -[test_safemode.js] -[test_signed_updatepref.js] -run-if = addon_signing -skip-if = require_signing -[test_signed_verify.js] -run-if = addon_signing -[test_signed_inject.js] -run-if = addon_signing -[test_signed_install.js] -run-if = addon_signing -run-sequentially = Uses hardcoded ports in xpi files. -[test_signed_long.js] -run-if = addon_signing -[test_signed_migrate.js] -run-if = addon_signing -[test_signed_multi.js] -run-if = addon_signing -[test_startup.js] -# Bug 676992: test consistently fails on Android -fail-if = os == "android" -[test_syncGUID.js] -[test_strictcompatibility.js] -[test_targetPlatforms.js] -[test_theme.js] -# Bug 676992: test consistently fails on Android -fail-if = os == "android" -[test_types.js] -[test_undothemeuninstall.js] -[test_undouninstall.js] -[test_uninstall.js] -[test_update.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_update_webextensions.js] -tags = webextensions -[test_updateCancel.js] -[test_update_strictcompat.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_update_ignorecompat.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -[test_updatecheck.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -run-sequentially = Uses hardcoded ports in xpi files. -[test_json_updatecheck.js] -[test_seen.js] -[test_seen_newprofile.js] -[test_updateid.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -run-sequentially = Uses hardcoded ports in xpi files. -[test_update_compatmode.js] -[test_upgrade.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -run-sequentially = Uses global XCurProcD dir. -[test_upgrade_strictcompat.js] -# Bug 676992: test consistently hangs on Android -skip-if = os == "android" -run-sequentially = Uses global XCurProcD dir. -[test_overrideblocklist.js] -run-sequentially = Uses global XCurProcD dir. -[test_sourceURI.js] -[test_webextension_icons.js] -skip-if = appname == "thunderbird" -tags = webextensions -[test_webextension.js] -skip-if = appname == "thunderbird" -tags = webextensions -[test_webextension_install.js] -skip-if = appname == "thunderbird" -tags = webextensions -[test_webextension_embedded.js] -skip-if = appname == "thunderbird" -tags = webextensions -[test_bootstrap_globals.js] -[test_bug1180901_2.js] -skip-if = os != "win" -[test_bug1180901.js] -skip-if = os != "win" -[test_e10s_restartless.js] -[test_switch_os.js] -# Bug 1246231 -skip-if = os == "mac" && debug -[test_softblocked.js] -[test_ext_management.js] -skip-if = appname == "thunderbird" -tags = webextensions - diff --git a/toolkit/mozapps/webextensions/test/xpcshell/xpcshell-unpack.ini b/toolkit/mozapps/webextensions/test/xpcshell/xpcshell-unpack.ini deleted file mode 100644 index 42a0ca1ca..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/xpcshell-unpack.ini +++ /dev/null @@ -1,12 +0,0 @@ - [DEFAULT] -head = head_addons.js head_unpack.js -tail = -firefox-appdir = browser -skip-if = toolkit == 'android' -dupe-manifest = -tags = addons - -[test_webextension_paths.js] -tags = webextensions - -[include:xpcshell-shared.ini] diff --git a/toolkit/mozapps/webextensions/test/xpcshell/xpcshell.ini b/toolkit/mozapps/webextensions/test/xpcshell/xpcshell.ini deleted file mode 100644 index 2b95eb158..000000000 --- a/toolkit/mozapps/webextensions/test/xpcshell/xpcshell.ini +++ /dev/null @@ -1,50 +0,0 @@ -[DEFAULT] -skip-if = toolkit == 'android' -tags = addons -head = head_addons.js -tail = -firefox-appdir = browser -dupe-manifest = -support-files = - data/** - xpcshell-shared.ini - -[test_addon_path_service.js] -[test_asyncBlocklistLoad.js] -[test_blocklist_gfx.js] -[test_cache_certdb.js] -run-if = addon_signing -[test_cacheflush.js] -[test_DeferredSave.js] -[test_gmpProvider.js] -skip-if = appname != "firefox" -[test_hotfix_cert.js] -[test_isReady.js] -[test_metadata_update.js] -[test_pluginInfoURL.js] -[test_provider_markSafe.js] -[test_provider_shutdown.js] -[test_provider_unsafe_access_shutdown.js] -[test_provider_unsafe_access_startup.js] -[test_ProductAddonChecker.js] -[test_shutdown.js] -[test_system_update.js] -[test_system_reset.js] -[test_XPIcancel.js] -[test_XPIStates.js] -[test_temporary.js] -tags = webextensions -[test_install_from_sources.js] -[test_proxies.js] -[test_proxy.js] -[test_pass_symbol.js] -[test_delay_update.js] -[test_nodisable_hidden.js] -[test_delay_update_webextension.js] -skip-if = appname == "thunderbird" -tags = webextensions -[test_dependencies.js] -[test_schema_change.js] -[test_system_delay_update.js] - -[include:xpcshell-shared.ini] diff --git a/toolkit/mozapps/webextensions/test/xpinstall/.eslintrc.js b/toolkit/mozapps/webextensions/test/xpinstall/.eslintrc.js deleted file mode 100644 index 2852eb81d..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -module.exports = { // eslint-disable-line no-undef - "extends": [ - "../../../../../testing/mochitest/browser.eslintrc.js" - ] -}; diff --git a/toolkit/mozapps/webextensions/test/xpinstall/amosigned.xpi b/toolkit/mozapps/webextensions/test/xpinstall/amosigned.xpi Binary files differdeleted file mode 100644 index 4edf91e34..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/amosigned.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/amosigned2.xpi b/toolkit/mozapps/webextensions/test/xpinstall/amosigned2.xpi Binary files differdeleted file mode 100644 index 74e877f26..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/amosigned2.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/authRedirect.sjs b/toolkit/mozapps/webextensions/test/xpinstall/authRedirect.sjs deleted file mode 100644 index 85d448e2b..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/authRedirect.sjs +++ /dev/null @@ -1,21 +0,0 @@ -// Simple script redirects to the query part of the uri if the browser -// authenticates with username "testuser" password "testpass" - -function handleRequest(request, response) { - if (request.hasHeader("Authorization")) { - if (request.getHeader("Authorization") == "Basic dGVzdHVzZXI6dGVzdHBhc3M=") { - response.setStatusLine(request.httpVersion, 302, "Found"); - response.setHeader("Location", request.queryString); - response.write("See " + request.queryString); - } - else { - response.setStatusLine(request.httpVersion, 403, "Forbidden"); - response.write("Invalid credentials"); - } - } - else { - response.setStatusLine(request.httpVersion, 401, "Authentication required"); - response.setHeader("WWW-Authenticate", "basic realm=\"XPInstall\"", false); - response.write("Unauthenticated request"); - } -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser.ini b/toolkit/mozapps/webextensions/test/xpinstall/browser.ini deleted file mode 100644 index 5627f47a2..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser.ini +++ /dev/null @@ -1,119 +0,0 @@ -[DEFAULT] -support-files = - amosigned.xpi - amosigned2.xpi - authRedirect.sjs - bug540558.html - bug638292.html - bug645699.html - concurrent_installs.html - cookieRedirect.sjs - corrupt.xpi - empty.xpi - enabled.html - hashRedirect.sjs - head.js - incompatible.xpi - installchrome.html - installtrigger.html - installtrigger_frame.html - multipackage.xpi - navigate.html - redirect.sjs - restartless.xpi - restartless-unsigned.xpi - signed-multipackage.xpi - signed-no-cn.xpi - signed-no-o.xpi - signed-tampered.xpi - signed-untrusted.xpi - signed.xpi - signed2.xpi - slowinstall.sjs - startsoftwareupdate.html - theme.xpi - triggerredirect.html - unsigned.xpi - -[browser_amosigned_trigger.js] -[browser_amosigned_trigger_iframe.js] -[browser_amosigned_url.js] -[browser_auth.js] -[browser_auth2.js] -[browser_auth3.js] -[browser_auth4.js] -[browser_badargs.js] -[browser_badargs2.js] -[browser_badhash.js] -[browser_badhashtype.js] -[browser_bug540558.js] -[browser_bug611242.js] -[browser_bug638292.js] -[browser_bug645699.js] -[browser_bug672485.js] -skip-if = true # disabled due to a leak. See bug 682410. -[browser_cancel.js] -[browser_concurrent_installs.js] -[browser_cookies.js] -[browser_cookies2.js] -[browser_cookies3.js] -[browser_cookies4.js] -skip-if = true # Bug 1084646 -[browser_corrupt.js] -[browser_datauri.js] -[browser_empty.js] -[browser_enabled.js] -[browser_enabled2.js] -[browser_enabled3.js] -[browser_hash.js] -[browser_hash2.js] -[browser_httphash.js] -[browser_httphash2.js] -[browser_httphash3.js] -[browser_httphash4.js] -[browser_httphash5.js] -[browser_httphash6.js] -[browser_installchrome.js] -[browser_localfile.js] -[browser_localfile2.js] -[browser_localfile3.js] -[browser_localfile4.js] -[browser_multipackage.js] -[browser_navigateaway.js] -[browser_navigateaway2.js] -[browser_navigateaway3.js] -skip-if = (os == "mac" || os == "win") # Bug 1198261 -[browser_navigateaway4.js] -[browser_offline.js] -[browser_relative.js] -[browser_signed_multipackage.js] -skip-if = require_signing -[browser_signed_multiple.js] -skip-if = require_signing -[browser_signed_naming.js] -skip-if = require_signing -[browser_signed_tampered.js] -skip-if = require_signing -[browser_signed_trigger.js] -skip-if = require_signing -[browser_signed_untrusted.js] -skip-if = require_signing -[browser_signed_url.js] -skip-if = require_signing -[browser_softwareupdate.js] -[browser_switchtab.js] -[browser_trigger_redirect.js] -[browser_unsigned_trigger.js] -skip-if = require_signing -[browser_unsigned_trigger_iframe.js] -skip-if = require_signing -[browser_unsigned_trigger_xorigin.js] -[browser_unsigned_url.js] -skip-if = require_signing -[browser_whitelist.js] -[browser_whitelist2.js] -[browser_whitelist3.js] -[browser_whitelist4.js] -[browser_whitelist5.js] -[browser_whitelist6.js] -[browser_whitelist7.js] diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_amosigned_trigger.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_amosigned_trigger.js deleted file mode 100644 index d61ef7362..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_amosigned_trigger.js +++ /dev/null @@ -1,56 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an unsigned add-on through an InstallTrigger call in web -// content. -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.finalContentEvent = "InstallComplete"; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: TESTROOT + "amosigned.xpi", - IconURL: TESTROOT + "icon.png", - toString: function() { return this.URL; } - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function confirm_install(window) { - var items = window.document.getElementById("itemList").childNodes; - is(items.length, 1, "Should only be 1 item listed in the confirmation dialog"); - is(items[0].name, "XPI Test", "Should have seen the name"); - is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item"); - is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item"); - is(items[0].signed, "false", "Should have listed the item as unsigned"); - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -const finish_test = Task.async(function*(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - const results = yield ContentTask.spawn(gBrowser.selectedBrowser, null, () => { - return { - return: content.document.getElementById("return").textContent, - status: content.document.getElementById("status").textContent, - } - }) - - is(results.return, "true", "installTrigger should have claimed success"); - is(results.status, "0", "Callback should have seen a success"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_amosigned_trigger_iframe.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_amosigned_trigger_iframe.js deleted file mode 100644 index 66564afaa..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_amosigned_trigger_iframe.js +++ /dev/null @@ -1,57 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test for bug 589598 - Ensure that installing through InstallTrigger -// works in an iframe in web content. - -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.finalContentEvent = "InstallComplete"; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var inner_url = encodeURIComponent(TESTROOT + "installtrigger.html?" + encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: TESTROOT + "amosigned.xpi", - IconURL: TESTROOT + "icon.png", - toString: function() { return this.URL; } - } - }))); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger_frame.html?" + inner_url); -} - -function confirm_install(window) { - var items = window.document.getElementById("itemList").childNodes; - is(items.length, 1, "Should only be 1 item listed in the confirmation dialog"); - is(items[0].name, "XPI Test", "Should have seen the name"); - is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item"); - is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item"); - is(items[0].signed, "false", "Should have listed the item as unsigned"); - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -const finish_test = Task.async(function*(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - const results = yield ContentTask.spawn(gBrowser.selectedBrowser, null, () => { - return { - return: content.frames[0].document.getElementById("return").textContent, - status: content.frames[0].document.getElementById("status").textContent, - } - }) - - is(results.return, "true", "installTrigger in iframe should have claimed success"); - is(results.status, "0", "Callback in iframe should have seen a success"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_amosigned_url.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_amosigned_url.js deleted file mode 100644 index f6c39b7bb..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_amosigned_url.js +++ /dev/null @@ -1,35 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an unsigned add-on by navigating directly to the url -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - gBrowser.selectedTab = gBrowser.addTab("about:blank"); - BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => { - gBrowser.loadURI(TESTROOT + "amosigned.xpi"); - }); -} - -function confirm_install(window) { - let items = window.document.getElementById("itemList").childNodes; - is(items.length, 1, "Should only be 1 item listed in the confirmation dialog"); - is(items[0].name, "XPI Test", "Should have had the filename for the item name"); - is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item"); - is(items[0].icon, "", "Should have listed no icon for the item"); - is(items[0].signed, "false", "Should have listed the item as unsigned"); - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_auth.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_auth.js deleted file mode 100644 index 1bfa7696f..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_auth.js +++ /dev/null @@ -1,47 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an install succeeds when authentication is required -// This verifies bug 312473 -function test() { - Harness.authenticationCallback = get_auth_info; - Harness.downloadFailedCallback = download_failed; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var prefs = Cc["@mozilla.org/preferences-service;1"]. - getService(Ci.nsIPrefBranch); - prefs.setIntPref("network.auth.subresource-http-auth-allow", 2); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "authRedirect.sjs?" + TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function get_auth_info() { - return [ "testuser", "testpass" ]; -} - -function download_failed(install) { - ok(false, "Install should not have failed"); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - var authMgr = Components.classes['@mozilla.org/network/http-auth-manager;1'] - .getService(Components.interfaces.nsIHttpAuthManager); - authMgr.clearAll(); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_auth2.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_auth2.js deleted file mode 100644 index 80942a9f4..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_auth2.js +++ /dev/null @@ -1,46 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an install fails when authentication is required and bad -// credentials are given -// This verifies bug 312473 -function test() { - requestLongerTimeout(2); - Harness.authenticationCallback = get_auth_info; - Harness.downloadFailedCallback = download_failed; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "authRedirect.sjs?" + TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function get_auth_info() { - return [ "baduser", "badpass" ]; -} - -function download_failed(install) { - is(install.error, AddonManager.ERROR_NETWORK_FAILURE, "Install should have failed"); -} - -function install_ended(install, addon) { - ok(false, "Add-on should not have installed"); - install.cancel(); -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - var authMgr = Components.classes['@mozilla.org/network/http-auth-manager;1'] - .getService(Components.interfaces.nsIHttpAuthManager); - authMgr.clearAll(); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_auth3.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_auth3.js deleted file mode 100644 index 4973a1b35..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_auth3.js +++ /dev/null @@ -1,53 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an install fails when authentication is required and it is -// canceled -// This verifies bug 312473 - -// -// Whitelisting this test. -// As part of bug 1077403, the leaking uncaught rejection should be fixed. -// -thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: this.docShell is null"); - - -function test() { - Harness.authenticationCallback = get_auth_info; - Harness.downloadFailedCallback = download_failed; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "authRedirect.sjs?" + TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function get_auth_info() { - return null; -} - -function download_failed(install) { - is(install.error, AddonManager.ERROR_NETWORK_FAILURE, "Install should have failed"); -} - -function install_ended(install, addon) { - ok(false, "Add-on should not have installed"); - install.cancel(); -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - var authMgr = Components.classes['@mozilla.org/network/http-auth-manager;1'] - .getService(Components.interfaces.nsIHttpAuthManager); - authMgr.clearAll(); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_auth4.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_auth4.js deleted file mode 100644 index a3157961d..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_auth4.js +++ /dev/null @@ -1,52 +0,0 @@ -// -// Whitelisting this test. -// As part of bug 1077403, the leaking uncaught rejection should be fixed. -// -thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: this.docShell is null"); - - -// ---------------------------------------------------------------------------- -// Test whether a request for auth for an XPI switches to the appropriate tab -var gNewTab; - -function test() { - Harness.authenticationCallback = get_auth_info; - Harness.downloadFailedCallback = download_failed; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "authRedirect.sjs?" + TESTROOT + "amosigned.xpi" - })); - gNewTab = gBrowser.addTab(); - gBrowser.getBrowserForTab(gNewTab).loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function get_auth_info() { - is(gBrowser.selectedTab, gNewTab, "Should have focused the tab loading the XPI"); - return [ "testuser", "testpass" ]; -} - -function download_failed(install) { - ok(false, "Install should not have failed"); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - var authMgr = Components.classes['@mozilla.org/network/http-auth-manager;1'] - .getService(Components.interfaces.nsIHttpAuthManager); - authMgr.clearAll(); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeTab(gNewTab); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_badargs.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_badargs.js deleted file mode 100644 index b4b1110b0..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_badargs.js +++ /dev/null @@ -1,38 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether passing a simple string to InstallTrigger.install throws an -// exception -function test() { - waitForExplicitFinish(); - - var triggers = encodeURIComponent(JSON.stringify(TESTROOT + "amosigned.xpi")); - gBrowser.selectedTab = gBrowser.addTab(); - - ContentTask.spawn(gBrowser.selectedBrowser, null, function() { - return new Promise(resolve => { - addEventListener("load", () => { - content.addEventListener("InstallTriggered", () => { - resolve(content.document.getElementById("return").textContent); - }); - }, true); - }); - }).then(page_loaded); - - // In non-e10s the exception in the content page would trigger a test failure - if (!gMultiProcessBrowser) - expectUncaughtException(); - - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function page_loaded(result) { - is(result, "exception", "installTrigger should have failed"); - - // In non-e10s the exception from the page is thrown after the event so we - // have to spin the event loop to make sure it arrives so expectUncaughtException - // sees it. - executeSoon(() => { - gBrowser.removeCurrentTab(); - finish(); - }); -} -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_badargs2.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_badargs2.js deleted file mode 100644 index 7137df318..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_badargs2.js +++ /dev/null @@ -1,42 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether passing an undefined url InstallTrigger.install throws an -// exception -function test() { - waitForExplicitFinish(); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: undefined - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - - ContentTask.spawn(gBrowser.selectedBrowser, null, function() { - return new Promise(resolve => { - addEventListener("load", () => { - content.addEventListener("InstallTriggered", () => { - resolve(content.document.getElementById("return").textContent); - }); - }, true); - }); - }).then(page_loaded); - - // In non-e10s the exception in the content page would trigger a test failure - if (!gMultiProcessBrowser) - expectUncaughtException(); - - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function page_loaded(result) { - is(result, "exception", "installTrigger should have failed"); - - // In non-e10s the exception from the page is thrown after the event so we - // have to spin the event loop to make sure it arrives so expectUncaughtException - // sees it. - executeSoon(() => { - gBrowser.removeCurrentTab(); - finish(); - }); -} -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_badhash.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_badhash.js deleted file mode 100644 index 9a26a77e4..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_badhash.js +++ /dev/null @@ -1,33 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an install fails when an invalid hash is included -// This verifies bug 302284 -function test() { - Harness.downloadFailedCallback = download_failed; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: TESTROOT + "amosigned.xpi", - Hash: "sha1:643b08418599ddbd1ea8a511c90696578fb844b9", - toString: function() { return this.URL; } - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function download_failed(install) { - is(install.error, AddonManager.ERROR_INCORRECT_HASH, "Install should fail"); -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - Services.perms.remove(makeURI("http://example.com/"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_badhashtype.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_badhashtype.js deleted file mode 100644 index a9de9e4f0..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_badhashtype.js +++ /dev/null @@ -1,33 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an install fails when an unknown hash type is included -// This verifies bug 302284 -function test() { - Harness.downloadFailedCallback = download_failed; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: TESTROOT + "amosigned.xpi", - Hash: "foo:3d0dc22e1f394e159b08aaf5f0f97de4d5c65f4f", - toString: function() { return this.URL; } - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function download_failed(install) { - is(install.error, AddonManager.ERROR_INCORRECT_HASH, "Install should fail"); -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - Services.perms.remove(makeURI("http://example.com/"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_bug540558.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_bug540558.js deleted file mode 100644 index 4e7e20717..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_bug540558.js +++ /dev/null @@ -1,25 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests that calling InstallTrigger.installChrome works -function test() { - Harness.installEndedCallback = check_xpi_install; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "bug540558.html"); -} - -function check_xpi_install(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_bug611242.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_bug611242.js deleted file mode 100644 index 4f3cd087f..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_bug611242.js +++ /dev/null @@ -1,17 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether setting a new property in InstallTrigger then persists to other -// page loads -add_task(function* test() { - yield BrowserTestUtils.withNewTab({ gBrowser, url: TESTROOT + "enabled.html" }, function* (browser) { - yield ContentTask.spawn(browser, null, () => { - content.wrappedJSObject.InstallTrigger.enabled.k = function() { }; - }); - - BrowserTestUtils.loadURI(browser, TESTROOT2 + "enabled.html"); - yield BrowserTestUtils.browserLoaded(browser); - yield ContentTask.spawn(browser, null, () => { - is(content.wrappedJSObject.InstallTrigger.enabled.k, undefined, "Property should not be defined"); - }); - }); -}); -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_bug638292.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_bug638292.js deleted file mode 100644 index 0d96e7cbe..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_bug638292.js +++ /dev/null @@ -1,40 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an InstallTrigger.enabled is working -add_task(function * () -{ - let testtab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, TESTROOT + "bug638292.html"); - - function* verify(link, button) - { - info("Clicking " + link); - - let waitForNewTabPromise = BrowserTestUtils.waitForNewTab(gBrowser); - - yield BrowserTestUtils.synthesizeMouseAtCenter("#" + link, { button: button }, - gBrowser.selectedBrowser); - - let newtab = yield waitForNewTabPromise; - - yield BrowserTestUtils.browserLoaded(newtab.linkedBrowser); - - let result = yield ContentTask.spawn(newtab.linkedBrowser, { }, function* () { - return (content.document.getElementById("enabled").textContent == "true"); - }); - - ok(result, "installTrigger for " + link + " should have been enabled"); - - // Focus the old tab (link3 is opened in the background) - if (link != "link3") { - yield BrowserTestUtils.switchTab(gBrowser, testtab); - } - gBrowser.removeTab(newtab); - } - - yield* verify("link1", 0); - yield* verify("link2", 0); - yield* verify("link3", 1); - - gBrowser.removeCurrentTab(); -}); - - diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_bug645699.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_bug645699.js deleted file mode 100644 index f32d2c9d2..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_bug645699.js +++ /dev/null @@ -1,36 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an unsigned add-on through an InstallTrigger call in web -// content. This should be blocked by the whitelist check. -// This verifies bug 645699 -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installBlockedCallback = allow_blocked; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.org/"), "install", pm.ALLOW_ACTION); - - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "bug645699.html"); -} - -function allow_blocked(installInfo) { - is(installInfo.browser, gBrowser.selectedBrowser, "Install should have been triggered by the right browser"); - is(installInfo.originatingURI.spec, gBrowser.currentURI.spec, "Install should have been triggered by the right uri"); - return false; -} - -function confirm_install(window) { - ok(false, "Should not see the install dialog"); - return false; -} - -function finish_test(count) { - is(count, 0, "0 Add-ons should have been successfully installed"); - Services.perms.remove(makeURI("http://addons.mozilla.org"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_bug672485.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_bug672485.js deleted file mode 100644 index 81d89c025..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_bug672485.js +++ /dev/null @@ -1,52 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -var gWindowWatcher = null; - -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installCancelledCallback = cancelled_install; - Harness.installEndedCallback = complete_install; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - gWindowWatcher = Services.ww; - delete Services.ww; - is(Services.ww, undefined, "Services.ww should now be undefined"); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function confirm_install(window) { - ok(false, "Should not see the install dialog"); - return false; -} - -function cancelled_install() { - ok(true, "Install should b cancelled"); -} - -function complete_install() { - ok(false, "Install should not have completed"); - return false; -} - -function finish_test(count) { - is(count, 0, "0 Add-ons should have been successfully installed"); - - gBrowser.removeCurrentTab(); - - Services.ww = gWindowWatcher; - - Services.perms.remove(makeURI("http://example.com"), "install"); - - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_cancel.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_cancel.js deleted file mode 100644 index e30d7a0e5..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_cancel.js +++ /dev/null @@ -1,60 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// ---------------------------------------------------------------------------- -// Tests that cancelling multiple installs doesn't fail -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "amosigned.xpi", - "Unsigned XPI 2": TESTROOT + "amosigned2.xpi", - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function get_item(items, url) { - for (let item of items) { - if (item.url == url) - return item; - } - ok(false, "Item for " + url + " was not listed"); - return null; -} - -function confirm_install(window) { - let items = window.document.getElementById("itemList").childNodes; - is(items.length, 2, "Should be 2 items listed in the confirmation dialog"); - let item = get_item(items, TESTROOT + "amosigned.xpi"); - if (item) { - is(item.name, "XPI Test", "Should have seen the name from the trigger list"); - is(item.signed, "false", "Should have listed the item as signed"); - } - item = get_item(items, TESTROOT + "amosigned2.xpi"); - if (item) { - is(item.name, "Signed XPI Test", "Should have seen the name from the trigger list"); - is(item.signed, "false", "Should have listed the item as signed"); - } - return false; -} - -function install_ended(install, addon) { - ok(false, "Should not have seen installs complete"); -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_concurrent_installs.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_concurrent_installs.js deleted file mode 100644 index bf919d89c..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_concurrent_installs.js +++ /dev/null @@ -1,127 +0,0 @@ -// Test that having two frames that request installs at the same time doesn't -// cause callback ID conflicts (discussed in bug 926712) - -var gConcurrentTabs = []; -var gQueuedForInstall = []; -var gResults = []; - -function frame_script() { - /* globals addMessageListener, sendAsyncMessage*/ - addMessageListener("Test:StartInstall", () => { - content.document.getElementById("installnow").click() - }); - - addEventListener("load", () => { - sendAsyncMessage("Test:Loaded"); - - content.addEventListener("InstallComplete", (e) => { - sendAsyncMessage("Test:InstallComplete", e.detail); - }, true); - }, true); -} - -var gAddonAndWindowListener = { - onOpenWindow: function(win) { - var window = win.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow); - info("Window opened"); - - waitForFocus(function() { - info("Focused!"); - // Initially the accept button is disabled on a countdown timer - let button = window.document.documentElement.getButton("accept"); - button.disabled = false; - if (gQueuedForInstall.length > 0) { - // Start downloading the next add-on while we accept this dialog: - installNext(); - } - window.document.documentElement.acceptDialog(); - }, window); - }, - onCloseWindow: function(win) { }, - onInstallEnded: function(install) { - install.cancel(); - }, - QueryInterface: XPCOMUtils.generateQI([Ci.nsIWindowMediatorListener]) -}; - -function installNext() { - let tab = gQueuedForInstall.shift(); - tab.linkedBrowser.messageManager.sendAsyncMessage("Test:StartInstall"); -} - -function winForTab(t) { - return t.linkedBrowser.contentWindow; -} - -function createTab(url) { - let tab = gBrowser.addTab(url); - tab.linkedBrowser.messageManager.loadFrameScript("data:,(" + frame_script.toString() + ")();", true); - - tab.linkedBrowser.messageManager.addMessageListener("Test:InstallComplete", ({data}) => { - gResults.push(data); - if (gResults.length == 2) { - executeSoon(endThisTest); - } - }); - - return tab; -} - -function test() { - waitForExplicitFinish(); - - Services.prefs.setBoolPref(PREF_LOGGING_ENABLED, true); - Services.prefs.setBoolPref(PREF_INSTALL_REQUIRESECUREORIGIN, false); - Services.wm.addListener(gAddonAndWindowListener); - AddonManager.addInstallListener(gAddonAndWindowListener); - registerCleanupFunction(function() { - Services.wm.removeListener(gAddonAndWindowListener); - AddonManager.removeInstallListener(gAddonAndWindowListener); - Services.prefs.clearUserPref(PREF_LOGGING_ENABLED); - Services.prefs.clearUserPref(PREF_INSTALL_REQUIRESECUREORIGIN); - - Services.perms.remove(makeURI("http://example.com"), "install"); - Services.perms.remove(makeURI("http://example.org"), "install"); - - while (gConcurrentTabs.length) { - gBrowser.removeTab(gConcurrentTabs.shift()); - } - }); - - let pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - pm.add(makeURI("http://example.org/"), "install", pm.ALLOW_ACTION); - - gConcurrentTabs.push(createTab(TESTROOT + "concurrent_installs.html")); - gConcurrentTabs.push(createTab(TESTROOT2 + "concurrent_installs.html")); - - let promises = gConcurrentTabs.map((t) => { - return new Promise(resolve => { - t.linkedBrowser.messageManager.addMessageListener("Test:Loaded", resolve); - }); - }); - - Promise.all(promises).then(() => { - gQueuedForInstall = [...gConcurrentTabs]; - installNext(); - }); -} - -function endThisTest() { - is(gResults.length, 2, "Should have two urls"); - isnot(gResults[0].loc, gResults[1].loc, "Should not have results from the same page."); - isnot(gResults[0].xpi, gResults[1].xpi, "Should not have the same XPIs."); - for (let i = 0; i < 2; i++) { - let {loc, xpi} = gResults[i]; - if (loc.includes("example.org")) { - ok(xpi.includes("example.org"), "Should get .org XPI for .org loc"); - } else if (loc.includes("example.com")) { - ok(xpi.includes("example.com"), "Should get .com XPI for .com loc"); - } else { - ok(false, "Should never get anything that isn't from example.org or example.com"); - } - } - - finish(); -} - diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_cookies.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_cookies.js deleted file mode 100644 index 541ac8333..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_cookies.js +++ /dev/null @@ -1,30 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test that an install that requires cookies to be sent fails when no cookies -// are set -// This verifies bug 462739 -function test() { - Harness.downloadFailedCallback = download_failed; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Cookie check": TESTROOT + "cookieRedirect.sjs?" + TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function download_failed(install) { - is(install.error, AddonManager.ERROR_NETWORK_FAILURE, "Install should fail"); -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_cookies2.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_cookies2.js deleted file mode 100644 index 1ef2b482f..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_cookies2.js +++ /dev/null @@ -1,40 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test that an install that requires cookies to be sent succeeds when cookies -// are set -// This verifies bug 462739 -function test() { - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var cm = Components.classes["@mozilla.org/cookiemanager;1"] - .getService(Components.interfaces.nsICookieManager2); - cm.add("example.com", "/browser/" + RELATIVE_DIR, "xpinstall", "true", false, - false, true, (Date.now() / 1000) + 60, {}); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Cookie check": TESTROOT + "cookieRedirect.sjs?" + TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - var cm = Components.classes["@mozilla.org/cookiemanager;1"] - .getService(Components.interfaces.nsICookieManager2); - cm.remove("example.com", "xpinstall", "/browser/" + RELATIVE_DIR, false, {}); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_cookies3.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_cookies3.js deleted file mode 100644 index 833562d15..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_cookies3.js +++ /dev/null @@ -1,44 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test that an install that requires cookies to be sent succeeds when cookies -// are set and third party cookies are disabled. -// This verifies bug 462739 -function test() { - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var cm = Components.classes["@mozilla.org/cookiemanager;1"] - .getService(Components.interfaces.nsICookieManager2); - cm.add("example.com", "/browser/" + RELATIVE_DIR, "xpinstall", "true", false, - false, true, (Date.now() / 1000) + 60, {}); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - Services.prefs.setIntPref("network.cookie.cookieBehavior", 1); - - var triggers = encodeURIComponent(JSON.stringify({ - "Cookie check": TESTROOT + "cookieRedirect.sjs?" + TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - var cm = Components.classes["@mozilla.org/cookiemanager;1"] - .getService(Components.interfaces.nsICookieManager2); - cm.remove("example.com", "xpinstall", "/browser/" + RELATIVE_DIR, false, {}); - - Services.prefs.clearUserPref("network.cookie.cookieBehavior"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_cookies4.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_cookies4.js deleted file mode 100644 index 792146c64..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_cookies4.js +++ /dev/null @@ -1,43 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test that an install that requires cookies to be sent fails when cookies -// are set and third party cookies are disabled and the request is to a third -// party. -// This verifies bug 462739 -function test() { - Harness.downloadFailedCallback = download_failed; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var cm = Components.classes["@mozilla.org/cookiemanager;1"] - .getService(Components.interfaces.nsICookieManager2); - cm.add("example.org", "/browser/" + RELATIVE_DIR, "xpinstall", "true", false, - false, true, (Date.now() / 1000) + 60, {}); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - Services.prefs.setIntPref("network.cookie.cookieBehavior", 1); - - var triggers = encodeURIComponent(JSON.stringify({ - "Cookie check": TESTROOT2 + "cookieRedirect.sjs?" + TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function download_failed(install) { - is(install.error, AddonManager.ERROR_NETWORK_FAILURE, "Install should fail"); -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - var cm = Components.classes["@mozilla.org/cookiemanager;1"] - .getService(Components.interfaces.nsICookieManager2); - cm.remove("example.org", "xpinstall", "/browser/" + RELATIVE_DIR, false, {}); - - Services.prefs.clearUserPref("network.cookie.cookieBehavior"); - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_corrupt.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_corrupt.js deleted file mode 100644 index bd4d27fb0..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_corrupt.js +++ /dev/null @@ -1,38 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an install fails when the xpi is corrupt. -function test() { - Harness.downloadFailedCallback = download_failed; - Harness.installsCompletedCallback = finish_test; - Harness.finalContentEvent = "InstallComplete"; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Corrupt XPI": TESTROOT + "corrupt.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function download_failed(install) { - is(install.error, AddonManager.ERROR_CORRUPT_FILE, "Install should fail"); -} - -const finish_test = Task.async(function*(count) { - is(count, 0, "No add-ons should have been installed"); - Services.perms.remove(makeURI("http://example.com"), "install"); - - const results = yield ContentTask.spawn(gBrowser.selectedBrowser, null, () => { - return { - return: content.document.getElementById("return").textContent, - status: content.document.getElementById("status").textContent, - } - }) - - is(results.status, "-207", "Callback should have seen the failure"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_datauri.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_datauri.js deleted file mode 100644 index a8bdbde39..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_datauri.js +++ /dev/null @@ -1,37 +0,0 @@ -// ---------------------------------------------------------------------------- -// Checks that a chained redirect through a data URI and javascript is blocked - -function setup_redirect(aSettings) { - var url = TESTROOT + "redirect.sjs?mode=setup"; - for (var name in aSettings) { - url += "&" + name + "=" + encodeURIComponent(aSettings[name]); - } - - var req = new XMLHttpRequest(); - req.open("GET", url, false); - req.send(null); -} - -function test() { - Harness.installOriginBlockedCallback = install_blocked; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - setup_redirect({ - "Location": "data:text/html,<script>window.location.href='" + TESTROOT + "amosigned.xpi'</script>" - }); - - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "redirect.sjs?mode=redirect"); -} - -function install_blocked(installInfo) { -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_empty.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_empty.js deleted file mode 100644 index 64ca5e6b9..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_empty.js +++ /dev/null @@ -1,28 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an install fails when there is no install script present. -function test() { - Harness.downloadFailedCallback = download_failed; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Empty XPI": TESTROOT + "empty.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function download_failed(install) { - is(install.error, AddonManager.ERROR_CORRUPT_FILE, "Install should fail"); -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_enabled.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_enabled.js deleted file mode 100644 index adbec9499..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_enabled.js +++ /dev/null @@ -1,29 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an InstallTrigger.enabled is working -function test() { - waitForExplicitFinish(); - - gBrowser.selectedTab = gBrowser.addTab(); - - ContentTask.spawn(gBrowser.selectedBrowser, TESTROOT + "enabled.html", function (url) { - return new Promise(resolve => { - function page_loaded() { - content.removeEventListener("PageLoaded", page_loaded, false); - resolve(content.document.getElementById("enabled").textContent); - } - - function load_listener() { - removeEventListener("load", load_listener, true); - content.addEventListener("PageLoaded", page_loaded, false); - } - - addEventListener("load", load_listener, true); - - content.location.href = url; - }); - }).then(text => { - is(text, "true", "installTrigger should have been enabled"); - gBrowser.removeCurrentTab(); - finish(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_enabled2.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_enabled2.js deleted file mode 100644 index cc1b8a8b2..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_enabled2.js +++ /dev/null @@ -1,32 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an InstallTrigger.enabled is working -function test() { - waitForExplicitFinish(); - - Services.prefs.setBoolPref("xpinstall.enabled", false); - - gBrowser.selectedTab = gBrowser.addTab(); - - ContentTask.spawn(gBrowser.selectedBrowser, TESTROOT + "enabled.html", function (url) { - return new Promise(resolve => { - function page_loaded() { - content.removeEventListener("PageLoaded", page_loaded, false); - resolve(content.document.getElementById("enabled").textContent); - } - - function load_listener() { - removeEventListener("load", load_listener, true); - content.addEventListener("PageLoaded", page_loaded, false); - } - - addEventListener("load", load_listener, true); - - content.location.href = url; - }); - }).then(text => { - is(text, "false", "installTrigger should have not been enabled"); - Services.prefs.clearUserPref("xpinstall.enabled"); - gBrowser.removeCurrentTab(); - finish(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_enabled3.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_enabled3.js deleted file mode 100644 index 15bad4ba9..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_enabled3.js +++ /dev/null @@ -1,52 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an InstallTrigger.install call fails when xpinstall is disabled -function test() { - Harness.installDisabledCallback = install_disabled; - Harness.installBlockedCallback = allow_blocked; - Harness.installConfirmCallback = confirm_install; - Harness.setup(); - - Services.prefs.setBoolPref("xpinstall.enabled", false); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - - ContentTask.spawn(gBrowser.selectedBrowser, TESTROOT + "installtrigger.html?" + triggers, url => { - return new Promise(resolve => { - function page_loaded() { - content.removeEventListener("PageLoaded", page_loaded, false); - resolve(content.document.getElementById("return").textContent); - } - - function load_listener() { - removeEventListener("load", load_listener, true); - content.addEventListener("InstallTriggered", page_loaded, false); - } - - addEventListener("load", load_listener, true); - - content.location.href = url; - }); - }).then(text => { - is(text, "false", "installTrigger should have not been enabled"); - Services.prefs.clearUserPref("xpinstall.enabled"); - gBrowser.removeCurrentTab(); - Harness.finish(); - }); -} - -function install_disabled(installInfo) { - ok(true, "Saw installation disabled"); -} - -function allow_blocked(installInfo) { - ok(false, "Should never see the blocked install notification"); - return false; -} - -function confirm_install(window) { - ok(false, "Should never see an install confirmation dialog"); - return false; -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_hash.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_hash.js deleted file mode 100644 index 4c45bd184..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_hash.js +++ /dev/null @@ -1,34 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an install succeeds when a valid hash is included -// This verifies bug 302284 -function test() { - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: TESTROOT + "amosigned.xpi", - Hash: "sha1:36ffb0acfd9c6e9682473aaebaab394d38b473c9", - toString: function() { return this.URL; } - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_hash2.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_hash2.js deleted file mode 100644 index 4c8e262c7..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_hash2.js +++ /dev/null @@ -1,34 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an install succeeds using case-insensitive hashes -// This verifies bug 603021 -function test() { - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: TESTROOT + "amosigned.xpi", - Hash: "sha1:36FFB0ACFD9C6E9682473AAEBAAB394D38B473C9", - toString: function() { return this.URL; } - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash.js deleted file mode 100644 index 6a1222797..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash.js +++ /dev/null @@ -1,39 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an install succeeds when a valid hash is included in the HTTPS -// request -// This verifies bug 591070 -function test() { - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false); - - var url = "https://example.com/browser/" + RELATIVE_DIR + "hashRedirect.sjs"; - url += "?sha1:36ffb0acfd9c6e9682473aaebaab394d38b473c9|" + TESTROOT + "amosigned.xpi"; - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: url, - toString: function() { return this.URL; } - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - Services.prefs.clearUserPref(PREF_INSTALL_REQUIREBUILTINCERTS); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash2.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash2.js deleted file mode 100644 index 2d930d221..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash2.js +++ /dev/null @@ -1,39 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an install fails when a invalid hash is included in the HTTPS -// request -// This verifies bug 591070 -function test() { - Harness.downloadFailedCallback = download_failed; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false); - - var url = "https://example.com/browser/" + RELATIVE_DIR + "hashRedirect.sjs"; - url += "?sha1:foobar|" + TESTROOT + "amosigned.xpi"; - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: url, - toString: function() { return this.URL; } - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function download_failed(install) { - is(install.error, AddonManager.ERROR_INCORRECT_HASH, "Download should fail"); -} - -function finish_test(count) { - is(count, 0, "0 Add-ons should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - Services.prefs.clearUserPref(PREF_INSTALL_REQUIREBUILTINCERTS); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash3.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash3.js deleted file mode 100644 index 5f3ef23ca..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash3.js +++ /dev/null @@ -1,39 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests that the HTTPS hash is ignored when InstallTrigger is passed a hash. -// This verifies bug 591070 -function test() { - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false); - - var url = "https://example.com/browser/" + RELATIVE_DIR + "hashRedirect.sjs"; - url += "?sha1:foobar|" + TESTROOT + "amosigned.xpi"; - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: url, - Hash: "sha1:36ffb0acfd9c6e9682473aaebaab394d38b473c9", - toString: function() { return this.URL; } - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - Services.prefs.clearUserPref(PREF_INSTALL_REQUIREBUILTINCERTS); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash4.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash4.js deleted file mode 100644 index 3983662af..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash4.js +++ /dev/null @@ -1,36 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test that hashes are ignored in the headers of HTTP requests -// This verifies bug 591070 -function test() { - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var url = "http://example.com/browser/" + RELATIVE_DIR + "hashRedirect.sjs"; - url += "?sha1:foobar|" + TESTROOT + "amosigned.xpi"; - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: url, - toString: function() { return this.URL; } - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash5.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash5.js deleted file mode 100644 index 407158e4f..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash5.js +++ /dev/null @@ -1,40 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test that only the first HTTPS hash is used -// This verifies bug 591070 -function test() { - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false); - - var url = "https://example.com/browser/" + RELATIVE_DIR + "hashRedirect.sjs"; - url += "?sha1:36ffb0acfd9c6e9682473aaebaab394d38b473c9|"; - url += "https://example.com/browser/" + RELATIVE_DIR + "hashRedirect.sjs"; - url += "?sha1:foobar|" + TESTROOT + "amosigned.xpi"; - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: url, - toString: function() { return this.URL; } - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - Services.prefs.clearUserPref(PREF_INSTALL_REQUIREBUILTINCERTS); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash6.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash6.js deleted file mode 100644 index 5e1da8175..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_httphash6.js +++ /dev/null @@ -1,83 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests that a new hash is accepted when restarting a failed download -// This verifies bug 593535 -function setup_redirect(aSettings) { - var url = "https://example.com/browser/" + RELATIVE_DIR + "redirect.sjs?mode=setup"; - for (var name in aSettings) { - url += "&" + name + "=" + aSettings[name]; - } - - var req = new XMLHttpRequest(); - req.open("GET", url, false); - req.send(null); -} - -var gInstall = null; - -function test() { - Harness.downloadFailedCallback = download_failed; - Harness.installsCompletedCallback = finish_failed_download; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false); - - // Set up the redirect to give a bad hash - setup_redirect({ - "X-Target-Digest": "sha1:foo", - "Location": "http://example.com/browser/" + RELATIVE_DIR + "amosigned.xpi" - }); - - var url = "https://example.com/browser/" + RELATIVE_DIR + "redirect.sjs?mode=redirect"; - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: url, - toString: function() { return this.URL; } - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function download_failed(install) { - is(install.error, AddonManager.ERROR_INCORRECT_HASH, "Should have seen a hash failure"); - // Stash the failed download while the harness cleans itself up - gInstall = install; -} - -function finish_failed_download() { - // Setup to track the successful re-download - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - // Give it the right hash this time - setup_redirect({ - "X-Target-Digest": "sha1:36ffb0acfd9c6e9682473aaebaab394d38b473c9", - "Location": "http://example.com/browser/" + RELATIVE_DIR + "amosigned.xpi" - }); - - // The harness expects onNewInstall events for all installs that are about to start - Harness.onNewInstall(gInstall); - - // Restart the install as a regular webpage install so the harness tracks it - AddonManager.installAddonsFromWebpage("application/x-xpinstall", - gBrowser.selectedBrowser, - gBrowser.contentPrincipal, [gInstall]); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - Services.prefs.clearUserPref(PREF_INSTALL_REQUIREBUILTINCERTS); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_installchrome.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_installchrome.js deleted file mode 100644 index 2380a4df2..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_installchrome.js +++ /dev/null @@ -1,25 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests that calling InstallTrigger.installChrome works -function test() { - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installchrome.html? " + encodeURIComponent(TESTROOT + "amosigned.xpi")); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_localfile.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_localfile.js deleted file mode 100644 index 997f386a6..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_localfile.js +++ /dev/null @@ -1,35 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an local file works when loading the url -function test() { - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var cr = Components.classes["@mozilla.org/chrome/chrome-registry;1"] - .getService(Components.interfaces.nsIChromeRegistry); - - var chromeroot = extractChromeRoot(gTestPath); - var xpipath = chromeroot + "unsigned.xpi"; - try { - xpipath = cr.convertChromeURL(makeURI(chromeroot + "amosigned.xpi")).spec; - } catch (ex) { - // scenario where we are running from a .jar and already extracted - } - - gBrowser.selectedTab = gBrowser.addTab("about:blank"); - BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => { - gBrowser.loadURI(xpipath); - }); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_localfile2.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_localfile2.js deleted file mode 100644 index b0e3ffc42..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_localfile2.js +++ /dev/null @@ -1,38 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test whether an install fails if the url is a local file when requested from -// web content -add_task(function* test() { - var cr = Components.classes["@mozilla.org/chrome/chrome-registry;1"] - .getService(Components.interfaces.nsIChromeRegistry); - - var chromeroot = getChromeRoot(gTestPath); - var xpipath = chromeroot + "amosigned.xpi"; - try { - xpipath = cr.convertChromeURL(makeURI(xpipath)).spec; - } catch (ex) { - // scenario where we are running from a .jar and already extracted - } - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": xpipath - })); - - // In non-e10s the exception in the content page would trigger a test failure - if (!gMultiProcessBrowser) - expectUncaughtException(); - - let URI = TESTROOT + "installtrigger.html?" + triggers; - yield BrowserTestUtils.withNewTab({ gBrowser, url: "about:blank" }, function* (browser) { - yield ContentTask.spawn(browser, URI, function* (URI) { - content.location.href = URI; - - let loaded = ContentTaskUtils.waitForEvent(this, "load", true); - let installTriggered = ContentTaskUtils.waitForEvent(this, "InstallTriggered", true, null, true); - yield Promise.all([ loaded, installTriggered ]); - - let doc = content.document; - is(doc.getElementById("return").textContent, "exception", "installTrigger should have failed"); - }); - }); -}); -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_localfile3.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_localfile3.js deleted file mode 100644 index 891b85ebc..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_localfile3.js +++ /dev/null @@ -1,41 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an add-on from a local file with whitelisting disabled. -// This should be blocked by the whitelist check. -function test() { - Harness.installBlockedCallback = allow_blocked; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - // Disable direct request whitelisting, installing from file should be blocked. - Services.prefs.setBoolPref("xpinstall.whitelist.directRequest", false); - - var cr = Components.classes["@mozilla.org/chrome/chrome-registry;1"] - .getService(Components.interfaces.nsIChromeRegistry); - - var chromeroot = extractChromeRoot(gTestPath); - var xpipath = chromeroot + "amosigned.xpi"; - try { - xpipath = cr.convertChromeURL(makeURI(xpipath)).spec; - } catch (ex) { - // scenario where we are running from a .jar and already extracted - } - - gBrowser.selectedTab = gBrowser.addTab("about:blank"); - BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => { - gBrowser.loadURI(xpipath); - }); -} - -function allow_blocked(installInfo) { - ok(true, "Seen blocked"); - return false; -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - - Services.prefs.clearUserPref("xpinstall.whitelist.directRequest"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_localfile4.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_localfile4.js deleted file mode 100644 index 5203c3153..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_localfile4.js +++ /dev/null @@ -1,41 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an add-on from a local file with whitelisting disabled. -// This should be blocked by the whitelist check. -function test() { - Harness.installBlockedCallback = allow_blocked; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - // Disable file request whitelisting, installing by file referrer should be blocked. - Services.prefs.setBoolPref("xpinstall.whitelist.fileRequest", false); - - var cr = Components.classes["@mozilla.org/chrome/chrome-registry;1"] - .getService(Components.interfaces.nsIChromeRegistry); - - var chromeroot = extractChromeRoot(gTestPath); - var xpipath = chromeroot; - try { - xpipath = cr.convertChromeURL(makeURI(chromeroot)).spec; - } catch (ex) { - // scenario where we are running from a .jar and already extracted - } - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(xpipath + "installtrigger.html?" + triggers); -} - -function allow_blocked(installInfo) { - ok(true, "Seen blocked"); - return false; -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - - Services.prefs.clearUserPref("xpinstall.whitelist.fileRequest"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_multipackage.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_multipackage.js deleted file mode 100644 index d022d713a..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_multipackage.js +++ /dev/null @@ -1,52 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an signed add-on by navigating directly to the url -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - gBrowser.selectedTab = gBrowser.addTab("about:blank"); - BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => { - gBrowser.loadURI(TESTROOT + "multipackage.xpi"); - }); -} - -function get_item(items, name) { - for (let item of items) { - if (item.name == name) - return item; - } - ok(false, "Item for " + name + " was not listed"); - return null; -} - -function confirm_install(window) { - let items = window.document.getElementById("itemList").childNodes; - is(items.length, 2, "Should be 2 items listed in the confirmation dialog"); - - let item = get_item(items, "XPI Test"); - if (item) { - is(item.signed, "false", "Should not have listed the item as signed"); - is(item.icon, "", "Should have listed no icon for the item"); - } - - item = get_item(items, "Signed XPI Test"); - if (item) { - is(item.signed, "false", "Should have listed the item as signed"); - is(item.icon, "", "Should have listed no icon for the item"); - } - - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 2, "2 Add-ons should have been successfully installed"); - gBrowser.removeCurrentTab(); - Harness.finish(); -} -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_navigateaway.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_navigateaway.js deleted file mode 100644 index f092edb8c..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_navigateaway.js +++ /dev/null @@ -1,36 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests that navigating away from the initiating page during the install -// doesn't break the install. -// This verifies bug 473060 -function test() { - Harness.downloadProgressCallback = download_progress; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function download_progress(addon, value, maxValue) { - gBrowser.loadURI(TESTROOT + "enabled.html"); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_navigateaway2.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_navigateaway2.js deleted file mode 100644 index a41662e1e..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_navigateaway2.js +++ /dev/null @@ -1,34 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests that closing the initiating page during the install cancels the install -// to avoid spoofing the user. -function test() { - Harness.downloadProgressCallback = download_progress; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function download_progress(addon, value, maxValue) { - gBrowser.removeCurrentTab(); -} - -function install_ended(install, addon) { - ok(false, "Should not have seen installs complete"); -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_navigateaway3.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_navigateaway3.js deleted file mode 100644 index 3948d5649..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_navigateaway3.js +++ /dev/null @@ -1,38 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests that navigating to a new origin cancels ongoing installs. - -// Block the modal install UI from showing. -Services.prefs.setBoolPref(PREF_CUSTOM_CONFIRMATION_UI, true); - -function test() { - Harness.downloadProgressCallback = download_progress; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function download_progress(addon, value, maxValue) { - gBrowser.loadURI(TESTROOT2 + "enabled.html"); -} - -function install_ended(install, addon) { - ok(false, "Should not have seen installs complete"); -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_navigateaway4.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_navigateaway4.js deleted file mode 100644 index 61844c5a1..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_navigateaway4.js +++ /dev/null @@ -1,44 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests that navigating to a new origin cancels ongoing installs and closes -// the install UI. -var sawUnload = null; - -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function confirm_install(window) { - sawUnload = BrowserTestUtils.waitForEvent(window, "unload"); - - gBrowser.loadURI(TESTROOT2 + "enabled.html"); - - return Harness.leaveOpen; -} - -function install_ended(install, addon) { - ok(false, "Should not have seen installs complete"); -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - sawUnload.then(() => { - ok(true, "The install UI should have closed itself."); - gBrowser.removeCurrentTab(); - Harness.finish(); - }); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_offline.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_offline.js deleted file mode 100644 index eb4ac391f..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_offline.js +++ /dev/null @@ -1,62 +0,0 @@ -var proxyPrefValue; - -// ---------------------------------------------------------------------------- -// Tests that going offline cancels an in progress download. -function test() { - Harness.downloadProgressCallback = download_progress; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function download_progress(addon, value, maxValue) { - try { - // Tests always connect to localhost, and per bug 87717, localhost is now - // reachable in offline mode. To avoid this, disable any proxy. - proxyPrefValue = Services.prefs.getIntPref("network.proxy.type"); - Services.prefs.setIntPref("network.proxy.type", 0); - Services.io.manageOfflineStatus = false; - Services.io.offline = true; - } catch (ex) { - } -} - -function finish_test(count) { - function wait_for_online() { - info("Checking if the browser is still offline..."); - - let tab = gBrowser.selectedTab; - ContentTask.spawn(tab.linkedBrowser, null, function*() { - yield ContentTaskUtils.waitForEvent(this, "DOMContentLoaded", true); - return content.document.documentURI; - }).then(url => { - info("loaded: " + url); - if (/^about:neterror\?e=netOffline/.test(url)) { - wait_for_online(); - } else { - gBrowser.removeCurrentTab(); - Harness.finish(); - } - }); - tab.linkedBrowser.loadURI("http://example.com/"); - } - - is(count, 0, "No add-ons should have been installed"); - try { - Services.prefs.setIntPref("network.proxy.type", proxyPrefValue); - Services.io.offline = false; - } catch (ex) { - } - - Services.perms.remove(makeURI("http://example.com"), "install"); - - wait_for_online(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_relative.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_relative.js deleted file mode 100644 index 3599f47d1..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_relative.js +++ /dev/null @@ -1,55 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests that InstallTrigger deals with relative urls correctly. -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.finalContentEvent = "InstallComplete"; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: "amosigned.xpi", - IconURL: "icon.png", - toString: function() { return this.URL; } - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function confirm_install(window) { - var items = window.document.getElementById("itemList").childNodes; - is(items.length, 1, "Should only be 1 item listed in the confirmation dialog"); - is(items[0].name, "XPI Test", "Should have seen the name"); - is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item"); - is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item"); - is(items[0].signed, "false", "Should have listed the item as unsigned"); - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -const finish_test = Task.async(function*(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - const results = yield ContentTask.spawn(gBrowser.selectedBrowser, null, () => { - return { - return: content.document.getElementById("return").textContent, - status: content.document.getElementById("status").textContent, - } - }) - - is(results.return, "true", "installTrigger should have claimed success"); - is(results.status, "0", "Callback should have seen a success"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_multipackage.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_multipackage.js deleted file mode 100644 index 7341f3082..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_multipackage.js +++ /dev/null @@ -1,53 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an signed add-on by navigating directly to the url -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - gBrowser.selectedTab = gBrowser.addTab("about:blank"); - BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => { - gBrowser.loadURI(TESTROOT + "signed-multipackage.xpi"); - }); -} - -function get_item(items, name) { - for (let item of items) { - if (item.name == name) - return item; - } - ok(false, "Item for " + name + " was not listed"); - return null; -} - -function confirm_install(window) { - let items = window.document.getElementById("itemList").childNodes; - is(items.length, 2, "Should be 2 items listed in the confirmation dialog"); - - let item = get_item(items, "XPI Test"); - if (item) { - is(item.signed, "false", "Should not have listed the item as signed"); - is(item.icon, "", "Should have listed no icon for the item"); - } - - item = get_item(items, "Signed XPI Test"); - if (item) { - is(item.cert, "(Object Signer)", "Should have seen the signer"); - is(item.signed, "true", "Should have listed the item as signed"); - is(item.icon, "", "Should have listed no icon for the item"); - } - - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 2, "2 Add-ons should have been successfully installed"); - gBrowser.removeCurrentTab(); - Harness.finish(); -} -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_multiple.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_multiple.js deleted file mode 100644 index 9dda1aaeb..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_multiple.js +++ /dev/null @@ -1,72 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing two signed add-ons in the same trigger works. -// This verifies bug 453545 -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Signed XPI": TESTROOT + "signed.xpi", - "Signed XPI 2": TESTROOT + "signed2.xpi", - "Signed XPI 3": TESTROOT + "signed-no-o.xpi", - "Signed XPI 4": TESTROOT + "signed-no-cn.xpi", - "Signed XPI 5": TESTROOT + "unsigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function get_item(items, url) { - for (let item of items) { - if (item.url == url) - return item; - } - ok(false, "Item for " + url + " was not listed"); - return null; -} - -function confirm_install(window) { - - var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]. - getService(Components.interfaces.nsIStringBundleService); - var bundle = sbs.createBundle("chrome://mozapps/locale/xpinstall/xpinstallConfirm.properties"); - - var expectedIntroString = bundle.formatStringFromName("itemWarnIntroMultiple", ["5"], 1); - - var introStringNode = window.document.getElementById("itemWarningIntro"); - is(introStringNode.textContent, expectedIntroString, "Should have the correct intro string"); - - var items = window.document.getElementById("itemList").childNodes; - is(items.length, 5, "Should be 5 items listed in the confirmation dialog"); - let item = get_item(items, TESTROOT + "signed.xpi"); - if (item) { - is(item.name, "Signed XPI Test", "Should have seen the name from the trigger list"); - is(item.cert, "(Object Signer)", "Should have seen the signer"); - is(item.signed, "true", "Should have listed the item as signed"); - } - item = get_item(items, TESTROOT + "signed2.xpi"); - if (item) { - is(item.name, "Signed XPI Test", "Should have seen the name from the trigger list"); - is(item.cert, "(Object Signer)", "Should have seen the signer"); - is(item.signed, "true", "Should have listed the item as signed"); - } - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 5, "5 Add-ons should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_naming.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_naming.js deleted file mode 100644 index 5c3f79045..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_naming.js +++ /dev/null @@ -1,67 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests that the correct signer is presented for combinations of O and CN present. -// The signed files have (when present) O=Mozilla Testing, CN=Object Signer -// This verifies bug 372980 -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Signed XPI (O and CN)": TESTROOT + "signed.xpi", - "Signed XPI (CN)": TESTROOT + "signed-no-o.xpi", - "Signed XPI (O)": TESTROOT + "signed-no-cn.xpi", - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function get_item(items, url) { - for (let item of items) { - if (item.url == url) - return item; - } - ok(false, "Item for " + url + " was not listed"); - return null; -} - -function confirm_install(window) { - let items = window.document.getElementById("itemList").childNodes; - is(items.length, 3, "Should be 3 items listed in the confirmation dialog"); - let item = get_item(items, TESTROOT + "signed.xpi"); - if (item) { - is(item.name, "Signed XPI Test", "Should have seen the name from the trigger list"); - is(item.cert, "(Object Signer)", "Should have seen the signer"); - is(item.signed, "true", "Should have listed the item as signed"); - } - item = get_item(items, TESTROOT + "signed-no-o.xpi"); - if (item) { - is(item.name, "Signed XPI Test (No Org)", "Should have seen the name from the trigger list"); - is(item.cert, "(Object Signer)", "Should have seen the signer"); - is(item.signed, "true", "Should have listed the item as signed"); - } - item = get_item(items, TESTROOT + "signed-no-cn.xpi"); - if (item) { - is(item.name, "Signed XPI Test (No Common Name)", "Should have seen the name from the trigger list"); - is(item.cert, "(Mozilla Testing)", "Should have seen the signer"); - is(item.signed, "true", "Should have listed the item as signed"); - } - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 3, "3 Add-ons should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_tampered.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_tampered.js deleted file mode 100644 index fc798d66a..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_tampered.js +++ /dev/null @@ -1,33 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing a signed add-on that has been tampered with after signing. -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.downloadFailedCallback = download_failed; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Tampered Signed XPI": TESTROOT + "signed-tampered.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function confirm_install(window) { - ok(false, "Should not offer to install"); -} - -function download_failed(install) { - is(install.error, AddonManager.ERROR_CORRUPT_FILE, "Install should fail"); -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_trigger.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_trigger.js deleted file mode 100644 index 8f1ae2d87..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_trigger.js +++ /dev/null @@ -1,41 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an signed add-on through an InstallTrigger call in web -// content. -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Signed XPI": TESTROOT + "signed.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function confirm_install(window) { - var items = window.document.getElementById("itemList").childNodes; - is(items.length, 1, "Should only be 1 item listed in the confirmation dialog"); - is(items[0].name, "Signed XPI Test", "Should have seen the name from the trigger list"); - is(items[0].url, TESTROOT + "signed.xpi", "Should have listed the correct url for the item"); - is(items[0].cert, "(Object Signer)", "Should have seen the signer"); - is(items[0].signed, "true", "Should have listed the item as signed"); - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_untrusted.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_untrusted.js deleted file mode 100644 index d5fa9ae01..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_untrusted.js +++ /dev/null @@ -1,41 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an add-on signed by an untrusted certificate through an -// InstallTrigger call in web content. -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Untrusted Signed XPI": TESTROOT + "signed-untrusted.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function confirm_install(window) { - var items = window.document.getElementById("itemList").childNodes; - is(items.length, 1, "Should only be 1 item listed in the confirmation dialog"); - is(items[0].name, "Signed XPI Test", "Should have had the filename for the item name"); - is(items[0].url, TESTROOT + "signed-untrusted.xpi", "Should have listed the correct url for the item"); - is(items[0].icon, "", "Should have listed no icon for the item"); - is(items[0].signed, "false", "Should have listed the item as unsigned"); - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_url.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_url.js deleted file mode 100644 index 33cda6e4c..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_signed_url.js +++ /dev/null @@ -1,34 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an signed add-on by navigating directly to the url -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - gBrowser.selectedTab = gBrowser.addTab("about:blank"); - BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => { - gBrowser.loadURI(TESTROOT + "signed.xpi"); - }); -} - -function confirm_install(window) { - let items = window.document.getElementById("itemList").childNodes; - is(items.length, 1, "Should only be 1 item listed in the confirmation dialog"); - is(items[0].name, "Signed XPI Test", "Should have had the name"); - is(items[0].url, TESTROOT + "signed.xpi", "Should have listed the correct url for the item"); - is(items[0].cert, "(Object Signer)", "Should have seen the signer"); - is(items[0].signed, "true", "Should have listed the item as signed"); - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - gBrowser.removeCurrentTab(); - Harness.finish(); -} -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_softwareupdate.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_softwareupdate.js deleted file mode 100644 index 16e20f3e9..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_softwareupdate.js +++ /dev/null @@ -1,25 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests that calling InstallTrigger.startSoftwareUpdate works -function test() { - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "startsoftwareupdate.html? " + encodeURIComponent(TESTROOT + "amosigned.xpi")); -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_switchtab.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_switchtab.js deleted file mode 100644 index 9bbb59400..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_switchtab.js +++ /dev/null @@ -1,49 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an unsigned add-on through an InstallTrigger call in web -// content. -var expectedTab = null; - -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: TESTROOT + "amosigned.xpi", - IconURL: TESTROOT + "icon.png", - toString: function() { return this.URL; } - } - })); - expectedTab = gBrowser.addTab(); - expectedTab.linkedBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function confirm_install(window) { - var items = window.document.getElementById("itemList").childNodes; - is(items.length, 1, "Should only be 1 item listed in the confirmation dialog"); - is(items[0].name, "XPI Test", "Should have seen the name"); - is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item"); - is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item"); - is(items[0].signed, "false", "Should have listed the item as unsigned"); - - is(gBrowser.selectedTab, expectedTab, "Should have switched to the installing tab."); - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeTab(expectedTab); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_trigger_redirect.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_trigger_redirect.js deleted file mode 100644 index 9c0543602..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_trigger_redirect.js +++ /dev/null @@ -1,41 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests that the InstallTrigger callback can redirect to a relative url. -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.finalContentEvent = "InstallComplete"; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "triggerredirect.html"); -} - -function confirm_install(window) { - var items = window.document.getElementById("itemList").childNodes; - is(items.length, 1, "Should only be 1 item listed in the confirmation dialog"); - is(items[0].name, "XPI Test", "Should have seen the name"); - is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item"); - is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item"); - is(items[0].signed, "false", "Should have listed the item as unsigned"); - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - var doc = gBrowser.contentDocument; - is(gBrowser.currentURI.spec, TESTROOT + "triggerredirect.html#foo", "Should have redirected"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_unsigned_trigger.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_unsigned_trigger.js deleted file mode 100644 index 006879439..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_unsigned_trigger.js +++ /dev/null @@ -1,56 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an unsigned add-on through an InstallTrigger call in web -// content. -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.finalContentEvent = "InstallComplete"; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: TESTROOT + "unsigned.xpi", - IconURL: TESTROOT + "icon.png", - toString: function() { return this.URL; } - } - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function confirm_install(window) { - var items = window.document.getElementById("itemList").childNodes; - is(items.length, 1, "Should only be 1 item listed in the confirmation dialog"); - is(items[0].name, "XPI Test", "Should have seen the name"); - is(items[0].url, TESTROOT + "unsigned.xpi", "Should have listed the correct url for the item"); - is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item"); - is(items[0].signed, "false", "Should have listed the item as unsigned"); - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -const finish_test = Task.async(function*(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - const results = yield ContentTask.spawn(gBrowser.selectedBrowser, null, () => { - return { - return: content.document.getElementById("return").textContent, - status: content.document.getElementById("status").textContent, - } - }) - - is(results.return, "true", "installTrigger should have claimed success"); - is(results.status, "0", "Callback should have seen a success"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_unsigned_trigger_iframe.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_unsigned_trigger_iframe.js deleted file mode 100644 index b9df6615e..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_unsigned_trigger_iframe.js +++ /dev/null @@ -1,57 +0,0 @@ -// ---------------------------------------------------------------------------- -// Test for bug 589598 - Ensure that installing through InstallTrigger -// works in an iframe in web content. - -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.finalContentEvent = "InstallComplete"; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var inner_url = encodeURIComponent(TESTROOT + "installtrigger.html?" + encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: TESTROOT + "unsigned.xpi", - IconURL: TESTROOT + "icon.png", - toString: function() { return this.URL; } - } - }))); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger_frame.html?" + inner_url); -} - -function confirm_install(window) { - var items = window.document.getElementById("itemList").childNodes; - is(items.length, 1, "Should only be 1 item listed in the confirmation dialog"); - is(items[0].name, "XPI Test", "Should have seen the name"); - is(items[0].url, TESTROOT + "unsigned.xpi", "Should have listed the correct url for the item"); - is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item"); - is(items[0].signed, "false", "Should have listed the item as unsigned"); - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -const finish_test = Task.async(function*(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - Services.perms.remove(makeURI("http://example.com"), "install"); - - const results = yield ContentTask.spawn(gBrowser.selectedBrowser, null, () => { - return { - return: content.frames[0].document.getElementById("return").textContent, - status: content.frames[0].document.getElementById("status").textContent, - } - }) - - is(results.return, "true", "installTrigger in iframe should have claimed success"); - is(results.status, "0", "Callback in iframe should have seen a success"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -}); diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_unsigned_trigger_xorigin.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_unsigned_trigger_xorigin.js deleted file mode 100644 index b0875fc99..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_unsigned_trigger_xorigin.js +++ /dev/null @@ -1,38 +0,0 @@ -// ---------------------------------------------------------------------------- -// Ensure that an inner frame from a different origin can't initiate an install - -var wasOriginBlocked = false; - -function test() { - Harness.installOriginBlockedCallback = install_blocked; - Harness.installsCompletedCallback = finish_test; - Harness.finalContentEvent = "InstallComplete"; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - var inner_url = encodeURIComponent(TESTROOT + "installtrigger.html?" + encodeURIComponent(JSON.stringify({ - "Unsigned XPI": { - URL: TESTROOT + "amosigned.xpi", - IconURL: TESTROOT + "icon.png", - toString: function() { return this.URL; } - } - }))); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT2 + "installtrigger_frame.html?" + inner_url); -} - -function install_blocked(installInfo) { - wasOriginBlocked = true; -} - -function finish_test(count) { - ok(wasOriginBlocked, "Should have been blocked due to the cross origin request."); - - is(count, 0, "No add-ons should have been installed"); - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_unsigned_url.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_unsigned_url.js deleted file mode 100644 index e103dffd3..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_unsigned_url.js +++ /dev/null @@ -1,35 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an unsigned add-on by navigating directly to the url -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - gBrowser.selectedTab = gBrowser.addTab("about:blank"); - BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => { - gBrowser.loadURI(TESTROOT + "unsigned.xpi"); - }); -} - -function confirm_install(window) { - let items = window.document.getElementById("itemList").childNodes; - is(items.length, 1, "Should only be 1 item listed in the confirmation dialog"); - is(items[0].name, "XPI Test", "Should have had the filename for the item name"); - is(items[0].url, TESTROOT + "unsigned.xpi", "Should have listed the correct url for the item"); - is(items[0].icon, "", "Should have listed no icon for the item"); - is(items[0].signed, "false", "Should have listed the item as unsigned"); - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -function finish_test(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist.js deleted file mode 100644 index ad3d645f5..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist.js +++ /dev/null @@ -1,53 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an unsigned add-on through an InstallTrigger call in web -// content. This should be blocked by the whitelist check. -// This verifies bug 252830 -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installBlockedCallback = allow_blocked; - Harness.installEndedCallback = install_ended; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function allow_blocked(installInfo) { - is(installInfo.browser, gBrowser.selectedBrowser, "Install should have been triggered by the right browser"); - is(installInfo.originatingURI.spec, gBrowser.currentURI.spec, "Install should have been triggered by the right uri"); - return true; -} - -function confirm_install(window) { - var items = window.document.getElementById("itemList").childNodes; - is(items.length, 1, "Should only be 1 item listed in the confirmation dialog"); - is(items[0].name, "XPI Test", "Should have seen the name from the trigger list"); - is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item"); - is(items[0].signed, "false", "Should have listed the item as unsigned"); - return true; -} - -function install_ended(install, addon) { - install.cancel(); -} - -const finish_test = Task.async(function*(count) { - is(count, 1, "1 Add-on should have been successfully installed"); - - const results = yield ContentTask.spawn(gBrowser.selectedBrowser, null, () => { - return { - return: content.document.getElementById("return").textContent, - status: content.document.getElementById("status").textContent, - } - }) - - is(results.return, "false", "installTrigger should seen a failure"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -}); -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist2.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist2.js deleted file mode 100644 index fd9e944e8..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist2.js +++ /dev/null @@ -1,31 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an unsigned add-on through an InstallTrigger call in web -// content. This should be blocked by the whitelist check because the source -// is not whitelisted, even though the target is. -function test() { - Harness.installBlockedCallback = allow_blocked; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.org/"), "install", pm.ALLOW_ACTION); - - var triggers = encodeURIComponent(JSON.stringify({ - "Unsigned XPI": TESTROOT2 + "amosigned.xpi" - })); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers); -} - -function allow_blocked(installInfo) { - is(installInfo.browser, gBrowser.selectedBrowser, "Install should have been triggered by the right browser"); - is(installInfo.originatingURI.spec, gBrowser.currentURI.spec, "Install should have been triggered by the right uri"); - return false; -} - -function finish_test() { - Services.perms.remove(makeURI("http://example.org"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist3.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist3.js deleted file mode 100644 index 6f4306df6..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist3.js +++ /dev/null @@ -1,28 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an unsigned add-on through a navigation. Should not be -// blocked since the referer is whitelisted. -var url = TESTROOT2 + "navigate.html?" + encodeURIComponent(TESTROOT + "amosigned.xpi"); - -function test() { - Harness.installConfirmCallback = confirm_install; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.org/"), "install", pm.ALLOW_ACTION); - - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(url); -} - -function confirm_install(window) { - return false; -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - Services.perms.remove(makeURI("http://example.org"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist4.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist4.js deleted file mode 100644 index e4c47cda5..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist4.js +++ /dev/null @@ -1,30 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an unsigned add-on through a navigation. Should be -// blocked since the referer is not whitelisted even though the target is. -var url = TESTROOT2 + "navigate.html?" + encodeURIComponent(TESTROOT + "amosigned.xpi"); - -function test() { - Harness.installBlockedCallback = allow_blocked; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - var pm = Services.perms; - pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION); - - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(url); -} - -function allow_blocked(installInfo) { - is(installInfo.browser, gBrowser.selectedBrowser, "Install should have been triggered by the right browser"); - is(installInfo.originatingURI.spec, url, "Install should have been triggered by the right uri"); - return false; -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - Services.perms.remove(makeURI("http://example.com"), "install"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist5.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist5.js deleted file mode 100644 index 0a9333430..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist5.js +++ /dev/null @@ -1,25 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an unsigned add-on through a startSoftwareUpdate call in web -// content. This should be blocked by the whitelist check. -// This verifies bug 252830 -function test() { - Harness.installBlockedCallback = allow_blocked; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "startsoftwareupdate.html? " + encodeURIComponent(TESTROOT + "amosigned.xpi")); -} - -function allow_blocked(installInfo) { - is(installInfo.browser, gBrowser.selectedBrowser, "Install should have been triggered by the right browser"); - is(installInfo.originatingURI.spec, gBrowser.currentURI.spec, "Install should have been triggered by the right uri"); - return false; -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - gBrowser.removeCurrentTab(); - Harness.finish(); -} -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist6.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist6.js deleted file mode 100644 index 555f1e2fc..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist6.js +++ /dev/null @@ -1,25 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an unsigned add-on through an installChrome call in web -// content. This should be blocked by the whitelist check. -// This verifies bug 252830 -function test() { - Harness.installBlockedCallback = allow_blocked; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(TESTROOT + "installchrome.html? " + encodeURIComponent(TESTROOT + "amosigned.xpi")); -} - -function allow_blocked(installInfo) { - is(installInfo.browser, gBrowser.selectedBrowser, "Install should have been triggered by the right browser"); - is(installInfo.originatingURI.spec, gBrowser.currentURI.spec, "Install should have been triggered by the right uri"); - return false; -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - gBrowser.removeCurrentTab(); - Harness.finish(); -} -// ---------------------------------------------------------------------------- diff --git a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist7.js b/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist7.js deleted file mode 100644 index 96c60ac9e..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/browser_whitelist7.js +++ /dev/null @@ -1,32 +0,0 @@ -// ---------------------------------------------------------------------------- -// Tests installing an unsigned add-on through a direct install request from -// web content. This should be blocked by the whitelist check because we disable -// direct request whitelisting, even though the target URI is whitelisted. -function test() { - Harness.installBlockedCallback = allow_blocked; - Harness.installsCompletedCallback = finish_test; - Harness.setup(); - - // Disable direct request whitelisting, installing should be blocked. - Services.prefs.setBoolPref("xpinstall.whitelist.directRequest", false); - - gBrowser.selectedTab = gBrowser.addTab("about:blank"); - BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => { - gBrowser.loadURI(TESTROOT + "amosigned.xpi"); - }); -} - -function allow_blocked(installInfo) { - ok(true, "Seen blocked"); - return false; -} - -function finish_test(count) { - is(count, 0, "No add-ons should have been installed"); - - Services.perms.remove(makeURI("http://example.org"), "install"); - Services.prefs.clearUserPref("xpinstall.whitelist.directRequest"); - - gBrowser.removeCurrentTab(); - Harness.finish(); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/bug540558.html b/toolkit/mozapps/webextensions/test/xpinstall/bug540558.html deleted file mode 100644 index 286046d25..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/bug540558.html +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html> - -<!-- This page tests that window.InstallTrigger.install works --> - -<head> -<title>InstallTrigger tests</title> -<script type="text/javascript"> -function startInstall() { - window.InstallTrigger.install({ - "Unsigned XPI": "amosigned.xpi" - }); -} -</script> -</head> -<body onload="startInstall()"> -<p>InstallTrigger tests</p> -<p id="return"></p> -<p id="status"></p> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/xpinstall/bug638292.html b/toolkit/mozapps/webextensions/test/xpinstall/bug638292.html deleted file mode 100644 index 198207d4b..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/bug638292.html +++ /dev/null @@ -1,17 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html> - -<!-- This page tests InstallTrigger is defined in a new window --> - -<head> -<title>InstallTrigger tests</title> -</head> -<body> -<p>InstallTrigger tests</p> -<p><a id="link1" target="_blank" href="enabled.html">Open window with target</a></p> -<p><a id="link2" onclick="window.open(this.href); return false" href="enabled.html">Open window with JS</a></p> -<p><a id="link3" href="enabled.html">Open window with middle-click</a></p> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/xpinstall/bug645699.html b/toolkit/mozapps/webextensions/test/xpinstall/bug645699.html deleted file mode 100644 index 8334c37c2..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/bug645699.html +++ /dev/null @@ -1,31 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html> - -<head> -<title>InstallTrigger tests</title> -<script type="text/javascript"> -/* globals InstallTrigger */ -function startInstall() { - var whiteUrl = "https://example.org/"; - - try { - Object.defineProperty(window, "location", { value : { href : whiteUrl } }); - throw new Error("Object.defineProperty(window, 'location', ...) should have thrown"); - } catch (exc) { - if (!(exc instanceof TypeError)) - throw exc; - } - Object.defineProperty(document, "documentURIObject", { spec : { href : whiteUrl } }); - - InstallTrigger.install({ - "Unsigned XPI": "http://example.com/browser/toolkit/mozapps/extensions/test/xpinstall/amosigned.xpi" - }); -} -</script> -</head> -<body onload="startInstall()"> -<p>InstallTrigger tests</p> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/xpinstall/concurrent_installs.html b/toolkit/mozapps/webextensions/test/xpinstall/concurrent_installs.html deleted file mode 100644 index 780409257..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/concurrent_installs.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html> - -<head> - <meta charset="utf-8"> -<title>Concurrent InstallTrigger tests</title> -<script type="text/javascript"> -/* globals InstallTrigger */ -function installCallback(url, status) { - document.getElementById("status").textContent = status; - - dump("Sending InstallComplete\n"); - var event = new CustomEvent("InstallComplete", {detail: {loc: location.href, xpi: url}}); - window.dispatchEvent(event); -} - -function startInstall() { - var root = location.href.replace("concurrent_installs.html", ""); - var triggers = { - "Unsigned XPI": root + "amosigned.xpi" - }; - try { - document.getElementById("return").textContent = InstallTrigger.install(triggers, installCallback); - } - catch (e) { - document.getElementById("return").textContent = "exception"; - throw e; - } -} -</script> -</head> -<body> -<p>InstallTrigger tests</p> -<button id="installnow" onclick="startInstall()">Click to install</button> -<p id="return"></p> -<p id="status"></p> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/xpinstall/cookieRedirect.sjs b/toolkit/mozapps/webextensions/test/xpinstall/cookieRedirect.sjs deleted file mode 100644 index 92bccd9ec..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/cookieRedirect.sjs +++ /dev/null @@ -1,24 +0,0 @@ -// Simple script redirects to the query part of the uri if the cookie "xpinstall" -// has the value "true", otherwise gives a 500 error. - -function handleRequest(request, response) -{ - let cookie = null; - if (request.hasHeader("Cookie")) { - let cookies = request.getHeader("Cookie").split(";"); - for (let i = 0; i < cookies.length; i++) { - if (cookies[i].substring(0, 10) == "xpinstall=") - cookie = cookies[i].substring(10); - } - } - - if (cookie == "true") { - response.setStatusLine(request.httpVersion, 302, "Found"); - response.setHeader("Location", request.queryString); - response.write("See " + request.queryString); - } - else { - response.setStatusLine(request.httpVersion, 500, "Internal Server Error"); - response.write("Invalid request"); - } -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/corrupt.xpi b/toolkit/mozapps/webextensions/test/xpinstall/corrupt.xpi deleted file mode 100644 index 35d7bd5e5..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/corrupt.xpi +++ /dev/null @@ -1 +0,0 @@ -This is a corrupt zip file diff --git a/toolkit/mozapps/webextensions/test/xpinstall/empty.xpi b/toolkit/mozapps/webextensions/test/xpinstall/empty.xpi Binary files differdeleted file mode 100644 index 74ed2b817..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/empty.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/enabled.html b/toolkit/mozapps/webextensions/test/xpinstall/enabled.html deleted file mode 100644 index 370cde8fb..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/enabled.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html> - -<!-- This page will test if InstallTrigger seems to be enabled --> - -<head> -<title>InstallTrigger tests</title> -<script type="text/javascript"> -/* globals InstallTrigger */ -function init() { - document.getElementById("enabled").textContent = InstallTrigger.enabled() ? "true" : "false"; - dump("Sending PageLoaded\n"); - var event = new CustomEvent("PageLoaded"); - window.dispatchEvent(event); -} -</script> -</head> -<body onload="init()"> -<p>InstallTrigger tests</p> -<p id="enabled"></p> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/xpinstall/hashRedirect.sjs b/toolkit/mozapps/webextensions/test/xpinstall/hashRedirect.sjs deleted file mode 100644 index 324a092a3..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/hashRedirect.sjs +++ /dev/null @@ -1,15 +0,0 @@ -// Simple script redirects takes the query part of te request and splits it on -// the | character. Anything before is included as the X-Target-Digest header -// the latter part is used as the url to redirect to - -function handleRequest(request, response) -{ - let pos = request.queryString.indexOf("|"); - let header = request.queryString.substring(0, pos); - let url = request.queryString.substring(pos + 1); - - response.setStatusLine(request.httpVersion, 302, "Found"); - response.setHeader("X-Target-Digest", header); - response.setHeader("Location", url); - response.write("See " + url); -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/head.js b/toolkit/mozapps/webextensions/test/xpinstall/head.js deleted file mode 100644 index 197fe3fac..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/head.js +++ /dev/null @@ -1,434 +0,0 @@ -const RELATIVE_DIR = "toolkit/mozapps/extensions/test/xpinstall/"; - -const TESTROOT = "http://example.com/browser/" + RELATIVE_DIR; -const TESTROOT2 = "http://example.org/browser/" + RELATIVE_DIR; -const XPINSTALL_URL = "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul"; -const PROMPT_URL = "chrome://global/content/commonDialog.xul"; -const ADDONS_URL = "chrome://mozapps/content/extensions/extensions.xul"; -const PREF_LOGGING_ENABLED = "extensions.logging.enabled"; -const PREF_INSTALL_REQUIREBUILTINCERTS = "extensions.install.requireBuiltInCerts"; -const PREF_INSTALL_REQUIRESECUREORIGIN = "extensions.install.requireSecureOrigin"; -const PREF_CUSTOM_CONFIRMATION_UI = "xpinstall.customConfirmationUI"; -const CHROME_NAME = "mochikit"; - -function getChromeRoot(path) { - if (path === undefined) { - return "chrome://" + CHROME_NAME + "/content/browser/" + RELATIVE_DIR - } - return getRootDirectory(path); -} - -function extractChromeRoot(path) { - var chromeRootPath = getChromeRoot(path); - var jar = getJar(chromeRootPath); - if (jar) { - var tmpdir = extractJarToTmp(jar); - return "file://" + tmpdir.path + "/"; - } - return chromeRootPath; -} - -Services.prefs.setBoolPref(PREF_CUSTOM_CONFIRMATION_UI, false); -registerCleanupFunction(() => { - Services.prefs.clearUserPref(PREF_CUSTOM_CONFIRMATION_UI); -}); - -/** - * This is a test harness designed to handle responding to UI during the process - * of installing an XPI. A test can set callbacks to hear about specific parts - * of the sequence. - * Before use setup must be called and finish must be called afterwards. - */ -var Harness = { - // If set then the callback is called when an install is attempted and - // software installation is disabled. - installDisabledCallback: null, - // If set then the callback is called when an install is attempted and - // then canceled. - installCancelledCallback: null, - // If set then the callback will be called when an install's origin is blocked. - installOriginBlockedCallback: null, - // If set then the callback will be called when an install is blocked by the - // whitelist. The callback should return true to continue with the install - // anyway. - installBlockedCallback: null, - // If set will be called in the event of authentication being needed to get - // the xpi. Should return a 2 element array of username and password, or - // null to not authenticate. - authenticationCallback: null, - // If set this will be called to allow checking the contents of the xpinstall - // confirmation dialog. The callback should return true to continue the install. - installConfirmCallback: null, - // If set will be called when downloading of an item has begun. - downloadStartedCallback: null, - // If set will be called during the download of an item. - downloadProgressCallback: null, - // If set will be called when an xpi fails to download. - downloadFailedCallback: null, - // If set will be called when an xpi download is cancelled. - downloadCancelledCallback: null, - // If set will be called when downloading of an item has ended. - downloadEndedCallback: null, - // If set will be called when installation by the extension manager of an xpi - // item starts - installStartedCallback: null, - // If set will be called when an xpi fails to install. - installFailedCallback: null, - // If set will be called when each xpi item to be installed completes - // installation. - installEndedCallback: null, - // If set will be called when all triggered items are installed or the install - // is canceled. - installsCompletedCallback: null, - // If set the harness will wait for this DOM event before calling - // installsCompletedCallback - finalContentEvent: null, - - waitingForEvent: false, - pendingCount: null, - installCount: null, - runningInstalls: null, - - waitingForFinish: false, - - // A unique value to return from the installConfirmCallback to indicate that - // the install UI shouldn't be closed automatically - leaveOpen: {}, - - // Setup and tear down functions - setup: function() { - if (!this.waitingForFinish) { - waitForExplicitFinish(); - this.waitingForFinish = true; - - Services.prefs.setBoolPref(PREF_INSTALL_REQUIRESECUREORIGIN, false); - - Services.prefs.setBoolPref(PREF_LOGGING_ENABLED, true); - Services.obs.addObserver(this, "addon-install-started", false); - Services.obs.addObserver(this, "addon-install-disabled", false); - Services.obs.addObserver(this, "addon-install-origin-blocked", false); - Services.obs.addObserver(this, "addon-install-blocked", false); - Services.obs.addObserver(this, "addon-install-failed", false); - Services.obs.addObserver(this, "addon-install-complete", false); - - AddonManager.addInstallListener(this); - - Services.wm.addListener(this); - - var self = this; - registerCleanupFunction(function() { - Services.prefs.clearUserPref(PREF_LOGGING_ENABLED); - Services.prefs.clearUserPref(PREF_INSTALL_REQUIRESECUREORIGIN); - Services.obs.removeObserver(self, "addon-install-started"); - Services.obs.removeObserver(self, "addon-install-disabled"); - Services.obs.removeObserver(self, "addon-install-origin-blocked"); - Services.obs.removeObserver(self, "addon-install-blocked"); - Services.obs.removeObserver(self, "addon-install-failed"); - Services.obs.removeObserver(self, "addon-install-complete"); - - AddonManager.removeInstallListener(self); - - Services.wm.removeListener(self); - - AddonManager.getAllInstalls(function(aInstalls) { - is(aInstalls.length, 0, "Should be no active installs at the end of the test"); - aInstalls.forEach(function(aInstall) { - info("Install for " + aInstall.sourceURI + " is in state " + aInstall.state); - aInstall.cancel(); - }); - }); - }); - } - - this.installCount = 0; - this.pendingCount = 0; - this.runningInstalls = []; - }, - - finish: function() { - finish(); - }, - - endTest: function() { - let callback = this.installsCompletedCallback; - let count = this.installCount; - - is(this.runningInstalls.length, 0, "Should be no running installs left"); - this.runningInstalls.forEach(function(aInstall) { - info("Install for " + aInstall.sourceURI + " is in state " + aInstall.state); - }); - - this.installOriginBlockedCallback = null; - this.installBlockedCallback = null; - this.authenticationCallback = null; - this.installConfirmCallback = null; - this.downloadStartedCallback = null; - this.downloadProgressCallback = null; - this.downloadCancelledCallback = null; - this.downloadFailedCallback = null; - this.downloadEndedCallback = null; - this.installStartedCallback = null; - this.installFailedCallback = null; - this.installEndedCallback = null; - this.installsCompletedCallback = null; - this.runningInstalls = null; - - if (callback) - executeSoon(() => callback(count)); - }, - - // Window open handling - windowReady: function(window) { - if (window.document.location.href == XPINSTALL_URL) { - if (this.installBlockedCallback) - ok(false, "Should have been blocked by the whitelist"); - this.pendingCount = window.document.getElementById("itemList").childNodes.length; - - // If there is a confirm callback then its return status determines whether - // to install the items or not. If not the test is over. - let result = true; - if (this.installConfirmCallback) { - result = this.installConfirmCallback(window); - if (result === this.leaveOpen) - return; - } - - if (!result) { - window.document.documentElement.cancelDialog(); - } - else { - // Initially the accept button is disabled on a countdown timer - var button = window.document.documentElement.getButton("accept"); - button.disabled = false; - window.document.documentElement.acceptDialog(); - } - } - else if (window.document.location.href == PROMPT_URL) { - var promptType = window.args.promptType; - switch (promptType) { - case "alert": - case "alertCheck": - case "confirmCheck": - case "confirm": - case "confirmEx": - window.document.documentElement.acceptDialog(); - break; - case "promptUserAndPass": - // This is a login dialog, hopefully an authentication prompt - // for the xpi. - if (this.authenticationCallback) { - var auth = this.authenticationCallback(); - if (auth && auth.length == 2) { - window.document.getElementById("loginTextbox").value = auth[0]; - window.document.getElementById("password1Textbox").value = auth[1]; - window.document.documentElement.acceptDialog(); - } - else { - window.document.documentElement.cancelDialog(); - } - } - else { - window.document.documentElement.cancelDialog(); - } - break; - default: - ok(false, "prompt type " + promptType + " not handled in test."); - break; - } - } - }, - - // Install blocked handling - - installDisabled: function(installInfo) { - ok(!!this.installDisabledCallback, "Installation shouldn't have been disabled"); - if (this.installDisabledCallback) - this.installDisabledCallback(installInfo); - this.expectingCancelled = true; - this.expectingCancelled = false; - this.endTest(); - }, - - installCancelled: function(installInfo) { - if (this.expectingCancelled) - return; - - ok(!!this.installCancelledCallback, "Installation shouldn't have been cancelled"); - if (this.installCancelledCallback) - this.installCancelledCallback(installInfo); - this.endTest(); - }, - - installOriginBlocked: function(installInfo) { - ok(!!this.installOriginBlockedCallback, "Shouldn't have been blocked"); - if (this.installOriginBlockedCallback) - this.installOriginBlockedCallback(installInfo); - this.endTest(); - }, - - installBlocked: function(installInfo) { - ok(!!this.installBlockedCallback, "Shouldn't have been blocked by the whitelist"); - if (this.installBlockedCallback && this.installBlockedCallback(installInfo)) { - this.installBlockedCallback = null; - installInfo.install(); - } - else { - this.expectingCancelled = true; - installInfo.installs.forEach(function(install) { - install.cancel(); - }); - this.expectingCancelled = false; - this.endTest(); - } - }, - - // nsIWindowMediatorListener - - onWindowTitleChange: function(window, title) { - }, - - onOpenWindow: function(window) { - var domwindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIDOMWindow); - var self = this; - waitForFocus(function() { - self.windowReady(domwindow); - }, domwindow); - }, - - onCloseWindow: function(window) { - }, - - // Addon Install Listener - - onNewInstall: function(install) { - this.runningInstalls.push(install); - - if (this.finalContentEvent && !this.waitingForEvent) { - this.waitingForEvent = true; - info("Waiting for " + this.finalContentEvent); - let mm = gBrowser.selectedBrowser.messageManager; - mm.loadFrameScript(`data:,content.addEventListener("${this.finalContentEvent}", () => { sendAsyncMessage("Test:GotNewInstallEvent"); });`, false); - let win = gBrowser.contentWindow; - let listener = () => { - info("Saw " + this.finalContentEvent); - mm.removeMessageListener("Test:GotNewInstallEvent", listener); - this.waitingForEvent = false; - if (this.pendingCount == 0) - this.endTest(); - } - mm.addMessageListener("Test:GotNewInstallEvent", listener); - } - }, - - onDownloadStarted: function(install) { - this.pendingCount++; - if (this.downloadStartedCallback) - this.downloadStartedCallback(install); - }, - - onDownloadProgress: function(install) { - if (this.downloadProgressCallback) - this.downloadProgressCallback(install); - }, - - onDownloadEnded: function(install) { - if (this.downloadEndedCallback) - this.downloadEndedCallback(install); - }, - - onDownloadCancelled: function(install) { - isnot(this.runningInstalls.indexOf(install), -1, - "Should only see cancelations for started installs"); - this.runningInstalls.splice(this.runningInstalls.indexOf(install), 1); - - if (this.downloadCancelledCallback) - this.downloadCancelledCallback(install); - this.checkTestEnded(); - }, - - onDownloadFailed: function(install) { - if (this.downloadFailedCallback) - this.downloadFailedCallback(install); - this.checkTestEnded(); - }, - - onInstallStarted: function(install) { - if (this.installStartedCallback) - this.installStartedCallback(install); - }, - - onInstallEnded: function(install, addon) { - if (this.installEndedCallback) - this.installEndedCallback(install, addon); - this.installCount++; - this.checkTestEnded(); - }, - - onInstallFailed: function(install) { - if (this.installFailedCallback) - this.installFailedCallback(install); - this.checkTestEnded(); - }, - - checkTestEnded: function() { - if (--this.pendingCount == 0 && !this.waitingForEvent) - this.endTest(); - }, - - // nsIObserver - - observe: function(subject, topic, data) { - var installInfo = subject.QueryInterface(Components.interfaces.amIWebInstallInfo); - switch (topic) { - case "addon-install-started": - is(this.runningInstalls.length, installInfo.installs.length, - "Should have seen the expected number of installs started"); - break; - case "addon-install-disabled": - this.installDisabled(installInfo); - break; - case "addon-install-cancelled": - this.installCancelled(installInfo); - break; - case "addon-install-origin-blocked": - this.installOriginBlocked(installInfo); - break; - case "addon-install-blocked": - this.installBlocked(installInfo); - break; - case "addon-install-failed": - installInfo.installs.forEach(function(aInstall) { - isnot(this.runningInstalls.indexOf(aInstall), -1, - "Should only see failures for started installs"); - - ok(aInstall.error != 0 || aInstall.addon.appDisabled, - "Failed installs should have an error or be appDisabled"); - - this.runningInstalls.splice(this.runningInstalls.indexOf(aInstall), 1); - }, this); - break; - case "addon-install-complete": - installInfo.installs.forEach(function(aInstall) { - isnot(this.runningInstalls.indexOf(aInstall), -1, - "Should only see completed events for started installs"); - - is(aInstall.error, 0, "Completed installs should have no error"); - ok(!aInstall.appDisabled, "Completed installs should not be appDisabled"); - - // Complete installs are either in the INSTALLED or CANCELLED state - // since the test may cancel installs the moment they complete. - ok(aInstall.state == AddonManager.STATE_INSTALLED || - aInstall.state == AddonManager.STATE_CANCELLED, - "Completed installs should be in the right state"); - - this.runningInstalls.splice(this.runningInstalls.indexOf(aInstall), 1); - }, this); - break; - } - }, - - QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, - Ci.nsIWindowMediatorListener, - Ci.nsISupports]) -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/incompatible.xpi b/toolkit/mozapps/webextensions/test/xpinstall/incompatible.xpi Binary files differdeleted file mode 100644 index 262ed38a7..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/incompatible.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/installchrome.html b/toolkit/mozapps/webextensions/test/xpinstall/installchrome.html deleted file mode 100644 index 6abee2ef3..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/installchrome.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html> - -<!-- This page will accept a url as the uri query and pass it to InstallTrigger.installChrome --> - -<head> -<title>InstallTrigger tests</title> -<script type="text/javascript"> -/* globals InstallTrigger */ -function startInstall() { - InstallTrigger.installChrome(InstallTrigger.SKIN, - decodeURIComponent(document.location.search.substring(1)), - "test"); -} -</script> -</head> -<body onload="startInstall()"> -<p>InstallTrigger tests</p> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/xpinstall/installtrigger.html b/toolkit/mozapps/webextensions/test/xpinstall/installtrigger.html deleted file mode 100644 index 65cab1ef1..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/installtrigger.html +++ /dev/null @@ -1,44 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html> - -<!-- This page will accept some json as the uri query and pass it to InstallTrigger.install --> - -<head> -<title>InstallTrigger tests</title> -<script type="text/javascript"> -/* globals InstallTrigger */ -function installCallback(url, status) { - document.getElementById("status").textContent = status; - - dump("Sending InstallComplete\n"); - var event = new CustomEvent("InstallComplete"); - var target = window.parent ? window.parent : window; - target.dispatchEvent(event); -} - -function startInstall() { - var event = new CustomEvent("InstallTriggered"); - var text = decodeURIComponent(document.location.search.substring(1)); - var triggers = JSON.parse(text); - try { - document.getElementById("return").textContent = InstallTrigger.install(triggers, installCallback); - dump("Sending InstallTriggered\n"); - window.dispatchEvent(event); - } - catch (e) { - document.getElementById("return").textContent = "exception"; - dump("Sending InstallTriggered\n"); - window.dispatchEvent(event); - throw e; - } -} -</script> -</head> -<body onload="startInstall()"> -<p>InstallTrigger tests</p> -<p id="return"></p> -<p id="status"></p> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/xpinstall/installtrigger_frame.html b/toolkit/mozapps/webextensions/test/xpinstall/installtrigger_frame.html deleted file mode 100644 index 2b302642e..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/installtrigger_frame.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html> - -<!-- This page will accept some url as the uri query and load it in - an inner iframe, which will run InstallTrigger.install --> - -<head> -<title>InstallTrigger frame tests</title> -<script type="text/javascript"> -function prepChild() { - // Pass our parameters over to the child - var child = window.frames[0]; - var url = decodeURIComponent(document.location.search.substr(1)); - child.location = url; -} -</script> -</head> -<body onload="prepChild()"> - -<iframe src="about:blank"> -</iframe> - -<p>InstallTrigger tests</p> -<p id="return"></p> -<p id="status"></p> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/xpinstall/multipackage.xpi b/toolkit/mozapps/webextensions/test/xpinstall/multipackage.xpi Binary files differdeleted file mode 100644 index d52f28c28..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/multipackage.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/navigate.html b/toolkit/mozapps/webextensions/test/xpinstall/navigate.html deleted file mode 100644 index 5a6903eb9..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/navigate.html +++ /dev/null @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html> - -<!-- This page will accept some url as the uri query and navigate to it by - clicking a link --> - -<head> -<title>Navigation tests</title> -<script type="text/javascript"> -function navigate() { - // Pass our parameters over to the child - var child = window.frames[0]; - var url = decodeURIComponent(document.location.search.substr(1)); - var link = document.getElementById("link"); - link.href = url; - link.click(); -} -</script> -</head> -<body onload="navigate()"> - -<p><a id="link">Test Link</a></p> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/xpinstall/redirect.sjs b/toolkit/mozapps/webextensions/test/xpinstall/redirect.sjs deleted file mode 100644 index d248bfbc7..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/redirect.sjs +++ /dev/null @@ -1,45 +0,0 @@ -// Script has two modes based on the query string. If the mode is "setup" then -// parameters from the query string configure the redirection. If the mode is -// "redirect" then a redirect is returned - -function handleRequest(request, response) -{ - let parts = request.queryString.split("&"); - let settings = {}; - - parts.forEach(function(aString) { - let [k, v] = aString.split("="); - settings[k] = decodeURIComponent(v); - }) - - if (settings.mode == "setup") { - delete settings.mode; - - // Object states must be an nsISupports - var state = { - settings: settings, - QueryInterface: function(aIid) { - if (aIid.equals(Components.interfaces.nsISupports)) - return settings; - throw Components.results.NS_ERROR_NO_INTERFACE; - } - } - state.wrappedJSObject = state; - - setObjectState("xpinstall-redirect-settings", state); - response.setStatusLine(request.httpVersion, 200, "Ok"); - response.setHeader("Content-Type", "text/plain"); - response.write("Setup complete"); - } - else if (settings.mode == "redirect") { - getObjectState("xpinstall-redirect-settings", function(aObject) { - settings = aObject.wrappedJSObject.settings; - }); - - response.setStatusLine(request.httpVersion, 302, "Found"); - for (var name in settings) { - response.setHeader(name, settings[name]); - } - response.write("Done"); - } -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/restartless-unsigned.xpi b/toolkit/mozapps/webextensions/test/xpinstall/restartless-unsigned.xpi Binary files differdeleted file mode 100644 index 8e76bd052..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/restartless-unsigned.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/restartless.xpi b/toolkit/mozapps/webextensions/test/xpinstall/restartless.xpi Binary files differdeleted file mode 100644 index 9fee8f60b..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/restartless.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/signed-multipackage.xpi b/toolkit/mozapps/webextensions/test/xpinstall/signed-multipackage.xpi Binary files differdeleted file mode 100644 index 11fbe1861..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/signed-multipackage.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/signed-no-cn.xpi b/toolkit/mozapps/webextensions/test/xpinstall/signed-no-cn.xpi Binary files differdeleted file mode 100644 index 90d3a3ce6..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/signed-no-cn.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/signed-no-o.xpi b/toolkit/mozapps/webextensions/test/xpinstall/signed-no-o.xpi Binary files differdeleted file mode 100644 index 19b754038..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/signed-no-o.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/signed-tampered.xpi b/toolkit/mozapps/webextensions/test/xpinstall/signed-tampered.xpi Binary files differdeleted file mode 100644 index 8c951881e..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/signed-tampered.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/signed-untrusted.xpi b/toolkit/mozapps/webextensions/test/xpinstall/signed-untrusted.xpi Binary files differdeleted file mode 100644 index 09789d189..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/signed-untrusted.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/signed.xpi b/toolkit/mozapps/webextensions/test/xpinstall/signed.xpi Binary files differdeleted file mode 100644 index bd7f78b7c..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/signed.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/signed2.xpi b/toolkit/mozapps/webextensions/test/xpinstall/signed2.xpi Binary files differdeleted file mode 100644 index 085efbbf7..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/signed2.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/slowinstall.sjs b/toolkit/mozapps/webextensions/test/xpinstall/slowinstall.sjs deleted file mode 100644 index 5f767a8f4..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/slowinstall.sjs +++ /dev/null @@ -1,101 +0,0 @@ -const { classes: Cc, interfaces: Ci, utils: Cu } = Components; - -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/osfile.jsm"); -Cu.import("resource://gre/modules/NetUtil.jsm"); - -const RELATIVE_PATH = "browser/toolkit/mozapps/extensions/test/xpinstall" -const NOTIFICATION_TOPIC = "slowinstall-complete"; - -/** - * Helper function to create a JS object representing the url parameters from - * the request's queryString. - * - * @param aQueryString - * The request's query string. - * @return A JS object representing the url parameters from the request's - * queryString. - */ -function parseQueryString(aQueryString) { - var paramArray = aQueryString.split("&"); - var regex = /^([^=]+)=(.*)$/; - var params = {}; - for (var i = 0, sz = paramArray.length; i < sz; i++) { - var match = regex.exec(paramArray[i]); - if (!match) - throw "Bad parameter in queryString! '" + paramArray[i] + "'"; - params[decodeURIComponent(match[1])] = decodeURIComponent(match[2]); - } - - return params; -} - -function handleRequest(aRequest, aResponse) { - let id = +getState("ID"); - setState("ID", "" + (id + 1)); - - function LOG(str) { - dump("slowinstall.sjs[" + id + "]: " + str + "\n"); - } - - aResponse.setStatusLine(aRequest.httpVersion, 200, "OK"); - - var params = { }; - if (aRequest.queryString) - params = parseQueryString(aRequest.queryString); - - if (params.file) { - let xpiFile = ""; - - function complete_download() { - LOG("Completing download"); - downloadPaused = false; - - try { - // Doesn't seem to be a sane way to read using OS.File and write to an - // nsIOutputStream so here we are. - let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); - file.initWithPath(xpiFile); - let stream = Cc["@mozilla.org/network/file-input-stream;1"]. - createInstance(Ci.nsIFileInputStream); - stream.init(file, -1, -1, stream.DEFER_OPEN + stream.CLOSE_ON_EOF); - - NetUtil.asyncCopy(stream, aResponse.bodyOutputStream, () => { - LOG("Download complete"); - aResponse.finish(); - }); - } - catch (e) { - LOG("Exception " + e); - } - } - - let waitForComplete = new Promise(resolve => { - function complete() { - Services.obs.removeObserver(complete, NOTIFICATION_TOPIC); - resolve(); - } - - Services.obs.addObserver(complete, NOTIFICATION_TOPIC, false); - }); - - aResponse.processAsync(); - - OS.File.getCurrentDirectory().then(dir => { - xpiFile = OS.Path.join(dir, ...RELATIVE_PATH.split("/"), params.file); - LOG("Starting slow download of " + xpiFile); - - OS.File.stat(xpiFile).then(info => { - aResponse.setHeader("Content-Type", "binary/octet-stream"); - aResponse.setHeader("Content-Length", info.size.toString()); - - LOG("Download paused"); - waitForComplete.then(complete_download); - }); - }); - } - else if (params.continue) { - dump("slowinstall.sjs: Received signal to complete all current downloads.\n"); - Services.obs.notifyObservers(null, NOTIFICATION_TOPIC, null); - } -} diff --git a/toolkit/mozapps/webextensions/test/xpinstall/startsoftwareupdate.html b/toolkit/mozapps/webextensions/test/xpinstall/startsoftwareupdate.html deleted file mode 100644 index 50083ca90..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/startsoftwareupdate.html +++ /dev/null @@ -1,20 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html> - -<!-- This page will accept a url as the uri query and pass it to InstallTrigger.startSoftwareUpdate --> - -<head> -<title>InstallTrigger tests</title> -<script type="text/javascript"> -/* globals InstallTrigger */ -function startInstall() { - InstallTrigger.startSoftwareUpdate(decodeURIComponent(document.location.search.substring(1))); -} -</script> -</head> -<body onload="startInstall()"> -<p>InstallTrigger tests</p> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/xpinstall/theme.xpi b/toolkit/mozapps/webextensions/test/xpinstall/theme.xpi Binary files differdeleted file mode 100644 index 74e650b4a..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/theme.xpi +++ /dev/null diff --git a/toolkit/mozapps/webextensions/test/xpinstall/triggerredirect.html b/toolkit/mozapps/webextensions/test/xpinstall/triggerredirect.html deleted file mode 100644 index 42e0e1cd0..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/triggerredirect.html +++ /dev/null @@ -1,36 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html> - -<!-- This page will attempt an install and then try to load a new page in the tab --> - -<head> -<title>InstallTrigger tests</title> -<script type="text/javascript"> -/* globals InstallTrigger */ -function installCallback(url, status) { - document.location = "#foo"; - - dump("Sending InstallComplete\n"); - var event = new CustomEvent("InstallComplete"); - window.dispatchEvent(event); -} - -function startInstall() { - InstallTrigger.install({ - "Unsigned XPI": { - URL: "amosigned.xpi", - IconURL: "icon.png", - toString: function() { return this.URL; } - } - }, installCallback); -} -</script> -</head> -<body onload="startInstall()"> -<p>InstallTrigger tests</p> -<p id="return"></p> -<p id="status"></p> -</body> -</html> diff --git a/toolkit/mozapps/webextensions/test/xpinstall/unsigned.xpi b/toolkit/mozapps/webextensions/test/xpinstall/unsigned.xpi Binary files differdeleted file mode 100644 index 51b00475a..000000000 --- a/toolkit/mozapps/webextensions/test/xpinstall/unsigned.xpi +++ /dev/null |