diff options
Diffstat (limited to 'toolkit/mozapps/extensions/test/browser')
141 files changed, 0 insertions, 19492 deletions
diff --git a/toolkit/mozapps/extensions/test/browser/Makefile.in b/toolkit/mozapps/extensions/test/browser/Makefile.in deleted file mode 100644 index 6bd692d9b..000000000 --- a/toolkit/mozapps/extensions/test/browser/Makefile.in +++ /dev/null @@ -1,19 +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 -TESTXPI = $(CURDIR)/$(DEPTH)/_tests/testing/mochitest/browser/$(relativesrcdir)/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 -q $(TESTXPI)/$$base.xpi *) \ - done \ - fi diff --git a/toolkit/mozapps/extensions/test/browser/addon_about.xul b/toolkit/mozapps/extensions/test/browser/addon_about.xul deleted file mode 100644 index c2b8b935e..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/addon_prefs.xul b/toolkit/mozapps/extensions/test/browser/addon_prefs.xul deleted file mode 100644 index 85cfe6b2d..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/addons/browser_bug557956_1/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_1/install.rdf deleted file mode 100644 index 5c164ec07..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_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> - - <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/extensions/test/browser/addons/browser_bug557956_10/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_10/install.rdf deleted file mode 100644 index 95b6488dd..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_10/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>addon10@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <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/extensions/test/browser/addons/browser_bug557956_2/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_2/install.rdf deleted file mode 100644 index d02cefac2..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_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>1.0</em:version> - - <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/extensions/test/browser/addons/browser_bug557956_3/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_3/install.rdf deleted file mode 100644 index 23b4813c6..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_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>addon3@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <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/extensions/test/browser/addons/browser_bug557956_4/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_4/install.rdf deleted file mode 100644 index 0150fc3c0..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_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>addon4@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <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/extensions/test/browser/addons/browser_bug557956_5/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_5/install.rdf deleted file mode 100644 index dfcbf0384..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_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>1.0</em:version> - - <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/extensions/test/browser/addons/browser_bug557956_6/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_6/install.rdf deleted file mode 100644 index 8e1027923..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_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> - - <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/extensions/test/browser/addons/browser_bug557956_7/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_7/install.rdf deleted file mode 100644 index 023f9f05f..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_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> - - <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/extensions/test/browser/addons/browser_bug557956_8_1/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_8_1/install.rdf deleted file mode 100644 index 57855e094..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_8_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>addon8@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <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/extensions/test/browser/addons/browser_bug557956_9_1/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_9_1/install.rdf deleted file mode 100644 index e1d6554f3..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug557956_9_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>addon9@tests.mozilla.org</em:id> - <em:version>1.0</em:version> - - <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/extensions/test/browser/addons/browser_bug567127_1/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug567127_1/install.rdf deleted file mode 100644 index f5780d5d3..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug567127_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>bug567127_1@tests.mozilla.org</em:id> - <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> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>browser_bug567127 #1</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/extensions/test/browser/addons/browser_bug567127_2/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug567127_2/install.rdf deleted file mode 100644 index 84c542cf9..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug567127_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>bug567127_2@tests.mozilla.org</em:id> - <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> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>browser_bug567127 #2</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/extensions/test/browser/addons/browser_bug596336_1/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug596336_1/install.rdf deleted file mode 100644 index 726ffee8b..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug596336_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> - <em:bootstrap>true</em:bootstrap> - - <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/extensions/test/browser/addons/browser_bug596336_2/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_bug596336_2/install.rdf deleted file mode 100644 index 16e4fd0cd..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_bug596336_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> - <em:bootstrap>true</em:bootstrap> - - <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/extensions/test/browser/addons/browser_dragdrop1/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_dragdrop1/install.rdf deleted file mode 100644 index 0a845ed31..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_dragdrop1/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>dragdrop1@tests.mozilla.org</em:id> - <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> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Drag Drop test 1</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/extensions/test/browser/addons/browser_dragdrop2/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_dragdrop2/install.rdf deleted file mode 100644 index 03072fdf4..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_dragdrop2/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>dragdrop2@tests.mozilla.org</em:id> - <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> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>Drag Drop test 2</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/extensions/test/browser/addons/browser_experiment1/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_experiment1/install.rdf deleted file mode 100644 index 92f20a4ef..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/addons/browser_inlinesettings1/bootstrap.js b/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1/bootstrap.js deleted file mode 100644 index 7871af738..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/addons/browser_inlinesettings1/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1/install.rdf deleted file mode 100644 index 2bf7c6e2e..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1/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>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>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - </Description> - -</RDF> diff --git a/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1/options.xul b/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1/options.xul deleted file mode 100644 index c271c35da..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1/options.xul +++ /dev/null @@ -1,20 +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"/> - <setting pref="extensions.inlinesettings1.integer-size" type="integer" title="Integer with size" size="1" /> -</vbox> diff --git a/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_custom/binding.xml b/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_custom/binding.xml deleted file mode 100644 index 6ac72a03c..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/addons/browser_inlinesettings1_custom/bootstrap.js b/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_custom/bootstrap.js deleted file mode 100644 index 7871af738..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/addons/browser_inlinesettings1_custom/chrome.manifest b/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_custom/chrome.manifest deleted file mode 100644 index f7132fc46..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_custom/chrome.manifest +++ /dev/null @@ -1,2 +0,0 @@ -content inlinesettings ./ -locale inlinesettings en-US ./ diff --git a/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_custom/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_custom/install.rdf deleted file mode 100644 index 2bf7c6e2e..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_custom/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>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>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>*</em:maxVersion> - </Description> - </em:targetApplication> - </Description> - -</RDF> diff --git a/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_custom/options.xul b/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_custom/options.xul deleted file mode 100644 index 148fb9856..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/addons/browser_inlinesettings1_custom/string.dtd b/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_custom/string.dtd deleted file mode 100644 index 0b2dcc8fe..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_custom/string.dtd +++ /dev/null @@ -1 +0,0 @@ -<!ENTITY custom.title "Custom"> diff --git a/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_info/bootstrap.js b/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_info/bootstrap.js deleted file mode 100644 index 7871af738..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/addons/browser_inlinesettings1_info/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_info/install.rdf deleted file mode 100644 index e3a054890..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_info/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>inlinesettings1@tests.mozilla.org</em:id> - <em:name>Inline Settings (Bootstrap)</em:name> - <em:version>1</em:version> - <em:bootstrap>true</em:bootstrap> - <em:optionsType>4</em:optionsType> - - <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/extensions/test/browser/addons/browser_inlinesettings1_info/options.xul b/toolkit/mozapps/extensions/test/browser/addons/browser_inlinesettings1_info/options.xul deleted file mode 100644 index 095d3bcef..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/addons/browser_install1_1/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_install1_1/install.rdf deleted file mode 100644 index ba71f4c95..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_install1_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>addon1@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>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/extensions/test/browser/addons/browser_install1_2/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_install1_2/install.rdf deleted file mode 100644 index 4497c31e2..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_install1_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> - - <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/extensions/test/browser/addons/browser_installssl/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_installssl/install.rdf deleted file mode 100644 index 0906bbe91..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_installssl/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>sslinstall@tests.mozilla.org</em:id> - <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> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>SSL Install Tests</em:name> - - </Description> -</RDF> diff --git a/toolkit/mozapps/extensions/test/browser/addons/browser_searching/bootstrap.js b/toolkit/mozapps/extensions/test/browser/addons/browser_searching/bootstrap.js deleted file mode 100644 index 7b86e419a..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/addons/browser_searching/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_searching/install.rdf deleted file mode 100644 index f26f9ad80..000000000 --- a/toolkit/mozapps/extensions/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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</em:id> - <em:minVersion>0</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/extensions/test/browser/addons/browser_select_compatoverrides_1/install.rdf b/toolkit/mozapps/extensions/test/browser/addons/browser_select_compatoverrides_1/install.rdf deleted file mode 100644 index 47a0e373a..000000000 --- a/toolkit/mozapps/extensions/test/browser/addons/browser_select_compatoverrides_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> - - <em:targetApplication> - <Description> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>0</em:minVersion> - <em:maxVersion>0.1</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/extensions/test/browser/blockNoPlugins.xml b/toolkit/mozapps/extensions/test/browser/blockNoPlugins.xml deleted file mode 100644 index e4e191b37..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/blockPluginHard.xml b/toolkit/mozapps/extensions/test/browser/blockPluginHard.xml deleted file mode 100644 index 24eb5bc6f..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser-common.ini b/toolkit/mozapps/extensions/test/browser/browser-common.ini deleted file mode 100644 index 3e88833ef..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser-common.ini +++ /dev/null @@ -1,76 +0,0 @@ -[DEFAULT] -support-files = - head.js - -[browser_about.js] -skip-if = os == 'linux' || os == 'win' # bug 632290 -[browser_bug523784.js] -[browser_bug557943.js] -[browser_bug562797.js] -skip-if = e10s # Bug 933103 - mochitest's EventUtils.synthesizeMouse functions not e10s friendly -[browser_bug562854.js] -[browser_bug562890.js] -[browser_bug562899.js] -skip-if = buildapp == 'mulet' -[browser_bug562992.js] -[browser_bug567127.js] -[browser_bug567137.js] -[browser_bug570760.js] -skip-if = e10s # Bug ?????? - EventUtils.synthesizeKey not e10s friendly -[browser_bug572561.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_debug_button.js] -[browser_details.js] -[browser_discovery.js] -skip-if = e10s # Bug ?????? - test times out on try on all platforms, but works locally for markh! -[browser_dragdrop.js] -skip-if = e10s -[browser_list.js] -[browser_metadataTimeout.js] -[browser_searching.js] -[browser_sorting.js] -[browser_sorting_plugins.js] -[browser_plugin_enabled_state_locked.js] -skip-if = e10s # Bug ?????? - leaked until shutdown [nsGlobalWindow #1760 about:blank] -[browser_uninstalling.js] -skip-if = e10s # Bug ?????? - leaked until shutdown [nsGlobalWindow #1760 about:blank] -[browser_install.js] -[browser_recentupdates.js] -[browser_manualupdates.js] -[browser_globalwarnings.js] -[browser_globalinformations.js] -skip-if = e10s # Bug 933103 - mochitest's EventUtils.synthesizeMouse functions not e10s friendly -[browser_eula.js] -skip-if = buildapp == 'mulet' -[browser_updateid.js] -skip-if = e10s # Bug ?????? - window leak reported at end of test run. -[browser_purchase.js] -skip-if = e10s # Bug 933103 - mochitest's EventUtils.synthesizeMouse functions not e10s friendly -[browser_openDialog.js] -skip-if = e10s -[browser_types.js] -skip-if = e10s # Bug ?????? - leaked until shutdown [nsGlobalWindow #1760 about:blank] -[browser_inlinesettings.js] -[browser_inlinesettings_custom.js] -[browser_inlinesettings_info.js] -[browser_tabsettings.js] -skip-if = e10s # Bug ?????? - leaked until shutdown [nsGlobalWindow #1760 about:blank] -[browser_pluginprefs.js] -skip-if = buildapp == 'mulet' -[browser_CTP_plugins.js] -skip-if = buildapp == 'mulet' || e10s # Bug 899347 - no e10s click-to-play support diff --git a/toolkit/mozapps/extensions/test/browser/browser-window.ini b/toolkit/mozapps/extensions/test/browser/browser-window.ini deleted file mode 100644 index 95494eb3e..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser-window.ini +++ /dev/null @@ -1,4 +0,0 @@ -[DEFAULT] -install-to-subdir = test-window - -[include:browser-common.ini] diff --git a/toolkit/mozapps/extensions/test/browser/browser.ini b/toolkit/mozapps/extensions/test/browser/browser.ini deleted file mode 100644 index dc6f86bd6..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser.ini +++ /dev/null @@ -1,53 +0,0 @@ -[DEFAULT] -skip-if = buildapp == 'mulet' -support-files = - addon_about.xul - addon_prefs.xul - cancelCompatCheck.sjs - discovery.html - discovery_frame.html - discovery_install.html - 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_select_compatoverrides.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 - -[browser_addonrepository_performance.js] -[browser_bug557956.js] -skip-if = e10s -[browser_bug616841.js] -[browser_cancelCompatCheck.js] -[browser_checkAddonCompatibility.js] -[browser_gmpProvider.js] -[browser_installssl.js] -[browser_newaddon.js] -skip-if = e10s -[browser_select_compatoverrides.js] -[browser_select_confirm.js] -[browser_select_selection.js] -[browser_select_update.js] -[browser_updatessl.js] -[browser_task_next_test.js] -[browser_discovery_install.js] - -[include:browser-common.ini] diff --git a/toolkit/mozapps/extensions/test/browser/browser_CTP_plugins.js b/toolkit/mozapps/extensions/test/browser/browser_CTP_plugins.js deleted file mode 100644 index 1b119ca5b..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_CTP_plugins.js +++ /dev/null @@ -1,234 +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 gHttpTestRoot = "http://127.0.0.1:8888/" + RELATIVE_DIR + "/"; -let gManagerWindow; -let gTestPluginId; -let gPluginBrowser; - -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); -} - -function test() { - waitForExplicitFinish(); - Services.prefs.setBoolPref("plugins.click_to_play", true); - Services.prefs.setBoolPref("extensions.blocklist.suppressUI", true); - let pluginTag = getTestPluginTag(); - pluginTag.enabledState = Ci.nsIPluginTag.STATE_CLICKTOPLAY; - open_manager("addons://list/plugin", part1); -} - -function part1(aWindow) { - gManagerWindow = aWindow; - AddonManager.getAddonsByTypes(["plugin"], part2); -} - -function part2(aPlugins) { - for (let plugin of aPlugins) { - if (plugin.name == "Test Plug-in") { - gTestPluginId = plugin.id; - break; - } - } - ok(gTestPluginId, "part2: Test Plug-in should exist"); - AddonManager.getAddonByID(gTestPluginId, part3); -} - -function part3(aTestPlugin) { - let pluginEl = get_addon_element(gManagerWindow, gTestPluginId); - pluginEl.parentNode.ensureElementIsVisible(pluginEl); - let enableButton = gManagerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "enable-btn"); - is_element_hidden(enableButton, "part3: enable button should not be visible"); - let disableButton = gManagerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "enable-btn"); - is_element_hidden(disableButton, "part3: disable button should not be visible"); - let menu = gManagerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "state-menulist"); - is_element_visible(menu, "part3: state menu should be visible"); - let askToActivateItem = gManagerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "ask-to-activate-menuitem"); - is(menu.selectedItem, askToActivateItem, "part3: state menu should have 'Ask To Activate' selected"); - - gBrowser.selectedTab = gBrowser.addTab(); - gPluginBrowser = gBrowser.selectedBrowser; - gPluginBrowser.addEventListener("PluginBindingAttached", part4, true, true); - gPluginBrowser.contentWindow.location = gHttpTestRoot + "plugin_test.html"; -} - -function part4() { - let condition = () => PopupNotifications.getNotification("click-to-play-plugins", gPluginBrowser); - waitForCondition(condition, () => { - gPluginBrowser.removeEventListener("PluginBindingAttached", part4); - gBrowser.removeCurrentTab(); - - let pluginEl = get_addon_element(gManagerWindow, gTestPluginId); - let menu = gManagerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "state-menulist"); - let alwaysActivateItem = gManagerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "always-activate-menuitem"); - menu.selectedItem = alwaysActivateItem; - alwaysActivateItem.doCommand(); - gBrowser.selectedTab = gBrowser.addTab(); - gPluginBrowser = gBrowser.selectedBrowser; - gPluginBrowser.addEventListener("load", part5, true); - gPluginBrowser.contentWindow.location = gHttpTestRoot + "plugin_test.html"; - }, "part4: should have a click-to-play notification"); -} - -function part5() { - let testPlugin = gPluginBrowser.contentDocument.getElementById("test"); - ok(testPlugin, "part5: should have a plugin element in the page"); - let objLoadingContent = testPlugin.QueryInterface(Ci.nsIObjectLoadingContent); - let condition = function() objLoadingContent.activated; - waitForCondition(condition, part6, "part5: waited too long for plugin to activate"); -} - -function part6() { - let testPlugin = gPluginBrowser.contentDocument.getElementById("test"); - ok(testPlugin, "part6: should have a plugin element in the page"); - let objLoadingContent = testPlugin.QueryInterface(Ci.nsIObjectLoadingContent); - ok(objLoadingContent.activated, "part6: plugin should be activated"); - gPluginBrowser.removeEventListener("load", part5); - gBrowser.removeCurrentTab(); - - let pluginEl = get_addon_element(gManagerWindow, gTestPluginId); - let menu = gManagerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "state-menulist"); - let neverActivateItem = gManagerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "never-activate-menuitem"); - menu.selectedItem = neverActivateItem; - neverActivateItem.doCommand(); - gBrowser.selectedTab = gBrowser.addTab(); - gPluginBrowser = gBrowser.selectedBrowser; - gPluginBrowser.addEventListener("PluginBindingAttached", part7, true, true); - gPluginBrowser.contentWindow.location = gHttpTestRoot + "plugin_test.html"; -} - -function part7() { - let condition = () => PopupNotifications.getNotification("click-to-play-plugins", gPluginBrowser); - waitForCondition(condition, () => { - let testPlugin = gPluginBrowser.contentDocument.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"); - - gPluginBrowser.removeEventListener("PluginBindingAttached", part7); - gBrowser.removeCurrentTab(); - - let pluginEl = get_addon_element(gManagerWindow, gTestPluginId); - let details = gManagerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "details-btn"); - is_element_visible(details, "part7: details link should be visible"); - EventUtils.synthesizeMouseAtCenter(details, {}, gManagerWindow); - wait_for_view_load(gManagerWindow, part8); - }, "part7: disabled plugins still show a notification"); -} - -function part8() { - let enableButton = gManagerWindow.document.getElementById("detail-enable-btn"); - is_element_hidden(enableButton, "part8: detail enable button should be hidden"); - let disableButton = gManagerWindow.document.getElementById("detail-disable-btn"); - is_element_hidden(disableButton, "part8: detail disable button should be hidden"); - let menu = gManagerWindow.document.getElementById("detail-state-menulist"); - is_element_visible(menu, "part8: detail state menu should be visible"); - let neverActivateItem = gManagerWindow.document.getElementById("detail-never-activate-menuitem"); - is(menu.selectedItem, neverActivateItem, "part8: state menu should have 'Never Activate' selected"); - - let alwaysActivateItem = gManagerWindow.document.getElementById("detail-always-activate-menuitem"); - menu.selectedItem = alwaysActivateItem; - alwaysActivateItem.doCommand(); - gBrowser.selectedTab = gBrowser.addTab(); - gPluginBrowser = gBrowser.selectedBrowser; - gPluginBrowser.addEventListener("load", part9, true); - gPluginBrowser.contentWindow.location = gHttpTestRoot + "plugin_test.html"; -} - -function part9() { - let testPlugin = gPluginBrowser.contentDocument.getElementById("test"); - ok(testPlugin, "part9: should have a plugin element in the page"); - let objLoadingContent = testPlugin.QueryInterface(Ci.nsIObjectLoadingContent); - let condition = function() objLoadingContent.activated; - waitForCondition(condition, part10, "part9: waited too long for plugin to activate"); -} - -function part10() { - let testPlugin = gPluginBrowser.contentDocument.getElementById("test"); - ok(testPlugin, "part10: should have a plugin element in the page"); - let objLoadingContent = testPlugin.QueryInterface(Ci.nsIObjectLoadingContent); - ok(objLoadingContent.activated, "part10: plugin should be activated"); - gPluginBrowser.removeEventListener("load", part9); - gBrowser.removeCurrentTab(); - - let menu = gManagerWindow.document.getElementById("detail-state-menulist"); - let askToActivateItem = gManagerWindow.document.getElementById("detail-ask-to-activate-menuitem"); - menu.selectedItem = askToActivateItem; - askToActivateItem.doCommand(); - gBrowser.selectedTab = gBrowser.addTab(); - gPluginBrowser = gBrowser.selectedBrowser; - gPluginBrowser.addEventListener("PluginBindingAttached", part11, true, true); - gPluginBrowser.contentWindow.location = gHttpTestRoot + "plugin_test.html"; -} - -function part11() { - let condition = () => PopupNotifications.getNotification("click-to-play-plugins", gPluginBrowser); - waitForCondition(condition, () => { - gPluginBrowser.removeEventListener("PluginBindingAttached", part11); - gBrowser.removeCurrentTab(); - - let pluginTag = getTestPluginTag(); - - // causes appDisabled to be set - setAndUpdateBlocklist(gHttpTestRoot + "blockPluginHard.xml", - function() { - close_manager(gManagerWindow, function() { - open_manager("addons://list/plugin", part12); - }); - }); - }, "part11: should have a click-to-play notification"); -} - -function part12(aWindow) { - gManagerWindow = aWindow; - let pluginEl = get_addon_element(gManagerWindow, gTestPluginId); - pluginEl.parentNode.ensureElementIsVisible(pluginEl); - let menu = gManagerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "state-menulist"); - is(menu.disabled, true, "part12: state menu should be disabled"); - - let details = gManagerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "details-btn"); - EventUtils.synthesizeMouseAtCenter(details, {}, gManagerWindow); - wait_for_view_load(gManagerWindow, part13); -} - -function part13() { - let menu = gManagerWindow.document.getElementById("detail-state-menulist"); - is(menu.disabled, true, "part13: detail state menu should be disabled"); - - setAndUpdateBlocklist(gHttpTestRoot + "blockNoPlugins.xml", function() { - run_next_test(); - }); -} - -function end_test() { - Services.prefs.clearUserPref("plugins.click_to_play"); - Services.prefs.clearUserPref("extensions.blocklist.suppressUI"); - let pluginTag = getTestPluginTag(); - pluginTag.enabledState = Ci.nsIPluginTag.STATE_ENABLED; - resetBlocklist(); - close_manager(gManagerWindow, function() { - finish(); - }); -} diff --git a/toolkit/mozapps/extensions/test/browser/browser_about.js b/toolkit/mozapps/extensions/test/browser/browser_about.js deleted file mode 100644 index f781cf146..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_addonrepository_performance.js b/toolkit/mozapps/extensions/test/browser/browser_addonrepository_performance.js deleted file mode 100644 index 0ba3127cd..000000000 --- a/toolkit/mozapps/extensions/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 - -let tmp = {}; -Components.utils.import("resource://gre/modules/addons/AddonRepository.jsm", tmp); -let 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/extensions/test/browser/browser_bug523784.js b/toolkit/mozapps/extensions/test/browser/browser_bug523784.js deleted file mode 100644 index c467e5cc0..000000000 --- a/toolkit/mozapps/extensions/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"). -let 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(function() 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/extensions/test/browser/browser_bug557943.js b/toolkit/mozapps/extensions/test/browser/browser_bug557943.js deleted file mode 100644 index 94a8b6f49..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug557956.js b/toolkit/mozapps/extensions/test/browser/browser_bug557956.js deleted file mode 100644 index 919564b45..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_bug557956.js +++ /dev/null @@ -1,518 +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_PLATFORM_COMPAT = "extensions.minCompatiblePlatformVersion"; - -Services.prefs.setBoolPref(PREF_STRICT_COMPAT, true); -// avoid the 'leaked window property' check -let scope = {}; -Components.utils.import("resource://gre/modules/TelemetrySession.jsm", scope); -let 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(); - - 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(["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(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() { - TelemetrySession.setup().then(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 = [ - "addon3@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "addon8@tests.mozilla.org", - "addon9@tests.mozilla.org" - ]; - - AddonManager.getAddonsByIDs(["addon5@tests.mozilla.org", - "addon6@tests.mozilla.org"], - function([a5, a6]) { - // Check starting (pre-update) conditions - ok(!a5.isCompatible, "addon5 should not be compatible"); - ok(!a6.isCompatible, "addon6 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, "addon5 should not be compatible"); - ok(a6.isCompatible, "addon6 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(["addon8@tests.mozilla.org", - "addon9@tests.mozilla.org"], - function([a8, a9]) { - is(a8.version, "2.0", "addon8 should have updated"); - is(a9.version, "2.0", "addon9 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 = [ - "addon3@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "addon8@tests.mozilla.org", - "addon9@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(["addon5@tests.mozilla.org", - "addon6@tests.mozilla.org"], - function([a5, a6]) { - ok(!a5.isCompatible, "addon5 should not be compatible"); - ok(a6.isCompatible, "addon6 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(["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(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(["addon7@tests.mozilla.org", - "addon8@tests.mozilla.org", - "addon9@tests.mozilla.org", - "addon10@tests.mozilla.org"], - function(aAddons) { - for (let addon of aAddons) - addon.uninstall(); - - // These add-ons were disabled by the upgrade - var inactiveAddonIds = [ - "addon3@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@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_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(["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(aAddons) { - - for (let addon of aAddons) { - if (addon.id == "addon10@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); - }); - }); - }); - }); - }); -}); - -add_test(function test_shutdown() { - TelemetrySession.shutdown().then(run_next_test); -}); diff --git a/toolkit/mozapps/extensions/test/browser/browser_bug557956.rdf b/toolkit/mozapps/extensions/test/browser/browser_bug557956.rdf deleted file mode 100644 index eebf6c0f9..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_bug557956.rdf +++ /dev/null @@ -1,220 +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.0</em:version> - <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:addon2@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <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:addon3@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <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:addon4@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <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:addon5@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <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:addon6@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <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:addon7@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <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>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:addon8@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <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>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:d6240607c4f202226fa291d9b7e537ff2a309616</em:updateHash> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - </RDF:Seq> - </em:updates> - </RDF:Description> - - <RDF:Description about="urn:mozilla:extension:addon9@tests.mozilla.org"> - <em:updates> - <RDF:Seq> - <RDF:li> - <RDF:Description> - <em:version>1.0</em:version> - <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>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:b25d1ee94acc734a4a039d31c1620051bbbd5633</em:updateHash> - </RDF:Description> - </em:targetApplication> - </RDF:Description> - </RDF:li> - </RDF:Seq> - </em:updates> - </RDF:Description> - -</RDF:RDF> - diff --git a/toolkit/mozapps/extensions/test/browser/browser_bug557956.xml b/toolkit/mozapps/extensions/test/browser/browser_bug557956.xml deleted file mode 100644 index 6184e5214..000000000 --- a/toolkit/mozapps/extensions/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>addon10@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/extensions/test/browser/browser_bug557956_8_2.xpi b/toolkit/mozapps/extensions/test/browser/browser_bug557956_8_2.xpi Binary files differdeleted file mode 100644 index 9476a8907..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_bug557956_8_2.xpi +++ /dev/null diff --git a/toolkit/mozapps/extensions/test/browser/browser_bug557956_9_2.xpi b/toolkit/mozapps/extensions/test/browser/browser_bug557956_9_2.xpi Binary files differdeleted file mode 100644 index df7673672..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_bug557956_9_2.xpi +++ /dev/null diff --git a/toolkit/mozapps/extensions/test/browser/browser_bug562797.js b/toolkit/mozapps/extensions/test/browser/browser_bug562797.js deleted file mode 100644 index 6560e9a2c..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_bug562797.js +++ /dev/null @@ -1,965 +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); - - 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(doc.getElementById("view-port").selectedPanel.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(doc.getElementById("view-port").selectedPanel.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(doc.getElementById("view-port").selectedPanel.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; - } - - info("Part 1"); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI("http://example.com/"); - gBrowser.addEventListener("pageshow", function(event) { - if (event.target.location != "http://example.com/") - return; - gBrowser.removeEventListener("pageshow", arguments.callee, false); - - //Must let the load complete for it to go into the session history - executeSoon(function() { - info("Part 2"); - ok(!gBrowser.canGoBack, "Should not be able to go back"); - ok(!gBrowser.canGoForward, "Should not be able to go forward"); - - gBrowser.loadURI("about:addons"); - gBrowser.addEventListener("pageshow", function(event) { - if (event.target.location != "about:addons") - return; - gBrowser.removeEventListener("pageshow", arguments.callee, true); - - wait_for_view_load(gBrowser.contentWindow.wrappedJSObject, function(aManager) { - info("Part 3"); - is_in_list(aManager, "addons://list/extension", true, false); - - executeSoon(() => go_back(aManager)); - gBrowser.addEventListener("pageshow", function() { - gBrowser.removeEventListener("pageshow", arguments.callee, false); - info("Part 4"); - executeSoon(() => executeSoon(function () { - 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"); - - go_forward(aManager); - gBrowser.addEventListener("pageshow", function() { - gBrowser.removeEventListener("pageshow", arguments.callee, false); - wait_for_view_load(gBrowser.contentWindow.wrappedJSObject, function(aManager) { - info("Part 5"); - is_in_list(aManager, "addons://list/extension", true, false); - - close_manager(aManager, run_next_test); - }); - }, false); - })); - }, false); - }); - }, true); - }); - }, false); -}); - -// 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/extensions/test/browser/browser_bug562854.js b/toolkit/mozapps/extensions/test/browser/browser_bug562854.js deleted file mode 100644 index 4c06cebb7..000000000 --- a/toolkit/mozapps/extensions/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(doc.getElementById("view-port").selectedPanel.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(doc.getElementById("view-port").selectedPanel.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/extensions/test/browser/browser_bug562890.js b/toolkit/mozapps/extensions/test/browser/browser_bug562890.js deleted file mode 100644 index 375cb9ef0..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug562899.js b/toolkit/mozapps/extensions/test/browser/browser_bug562899.js deleted file mode 100644 index 8bfabf004..000000000 --- a/toolkit/mozapps/extensions/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 - -let tempScope = {}; -Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", tempScope); -let 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/extensions/test/browser/browser_bug562992.js b/toolkit/mozapps/extensions/test/browser/browser_bug562992.js deleted file mode 100644 index 1cd4d90cd..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug567127.js b/toolkit/mozapps/extensions/test/browser/browser_bug567127.js deleted file mode 100644 index 5c5dce069..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_bug567127.js +++ /dev/null @@ -1,137 +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); - is(installInfo.installs.length, 2, "Should be installing 2 files.") - 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(function(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(function(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/extensions/test/browser/browser_bug567137.js b/toolkit/mozapps/extensions/test/browser/browser_bug567137.js deleted file mode 100644 index bb9b9a894..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug570760.js b/toolkit/mozapps/extensions/test/browser/browser_bug570760.js deleted file mode 100644 index 765665e8c..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug572561.js b/toolkit/mozapps/extensions/test/browser/browser_bug572561.js deleted file mode 100644 index 69102060e..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug573062.js b/toolkit/mozapps/extensions/test/browser/browser_bug573062.js deleted file mode 100644 index c61131f03..000000000 --- a/toolkit/mozapps/extensions/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) { - ok(aItem._enableBtn.getAttribute("tooltiptext") == aEnable); - ok(aItem._disableBtn.getAttribute("tooltiptext") == aDisable); - ok(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/extensions/test/browser/browser_bug577990.js b/toolkit/mozapps/extensions/test/browser/browser_bug577990.js deleted file mode 100644 index 2c3c7ba5a..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug580298.js b/toolkit/mozapps/extensions/test/browser/browser_bug580298.js deleted file mode 100644 index 8456cc433..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_bug580298.js +++ /dev/null @@ -1,111 +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; - -function test() { - waitForExplicitFinish(); - - 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" - }]); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, finish); -} - -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); - wait_for_view_load(gManagerWindow, aCallback); -} - -function check_addon_has_version(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"); - is(get_node(item, "version").value, aVersion, "Item has correct version"); - return item; - } - } - ok(false, "Item with correct name was not found"); - return null; -} - -add_test(function() { - gCategoryUtilities.openType("extension", function() { - info("Extension"); - let list = gManagerWindow.document.getElementById("addon-list"); - let item = check_addon_has_version(list, "Extension 1", "123"); - open_details(list, item, function() { - is_element_visible(get("detail-version"), "Details view has version visible"); - is(get("detail-version").value, "123", "Details view has correct version"); - run_next_test(); - }); - }); -}); - -add_test(function() { - gCategoryUtilities.openType("theme", function() { - info("Normal theme"); - let list = gManagerWindow.document.getElementById("addon-list"); - let item = check_addon_has_version(list, "Theme 2", "456"); - open_details(list, item, function() { - is_element_visible(get("detail-version"), "Details view has version visible"); - is(get("detail-version").value, "456", "Details view has correct version"); - run_next_test(); - }); - }); -}); - -add_test(function() { - gCategoryUtilities.openType("theme", function() { - info("Lightweight theme"); - let list = gManagerWindow.document.getElementById("addon-list"); - // See that the version isn't displayed - let item = check_addon_has_version(list, "Persona 3", ""); - open_details(list, item, function() { - 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 - run_next_test(); - }); - }); -}); diff --git a/toolkit/mozapps/extensions/test/browser/browser_bug581076.js b/toolkit/mozapps/extensions/test/browser/browser_bug581076.js deleted file mode 100644 index 4c25c409d..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_bug581076.js +++ /dev/null @@ -1,128 +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"; - -var gManagerWindow; - - -function test() { - Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, SEARCH_URL); - Services.prefs.setIntPref(PREF_SEARCH_MAXRESULTS, 15); - - waitForExplicitFinish(); - - open_manager("addons://list/extension", 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() { - if (aRemoteSearch) - var filter = gManagerWindow.document.getElementById("search-filter-remote"); - else - var 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, null, 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); - restart_manager(gManagerWindow, null, 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, null, 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/extensions/test/browser/browser_bug586574.js b/toolkit/mozapps/extensions/test/browser/browser_bug586574.js deleted file mode 100644 index fb5ebf01b..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug587970.js b/toolkit/mozapps/extensions/test/browser/browser_bug587970.js deleted file mode 100644 index 0ff6d1b59..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug590347.js b/toolkit/mozapps/extensions/test/browser/browser_bug590347.js deleted file mode 100644 index 8fe9c715e..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_bug590347.js +++ /dev/null @@ -1,120 +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"); -} - -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/extensions/test/browser/browser_bug591465.js b/toolkit/mozapps/extensions/test/browser/browser_bug591465.js deleted file mode 100644 index 2380deee1..000000000 --- a/toolkit/mozapps/extensions/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 - - -let tempScope = {}; -Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", tempScope); -let 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/extensions/test/browser/browser_bug591465.xml b/toolkit/mozapps/extensions/test/browser/browser_bug591465.xml deleted file mode 100644 index bd648cf0f..000000000 --- a/toolkit/mozapps/extensions/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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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/extensions/test/browser/browser_bug591663.js b/toolkit/mozapps/extensions/test/browser/browser_bug591663.js deleted file mode 100644 index 0736aa391..000000000 --- a/toolkit/mozapps/extensions/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. -let VIEW_ID = "addons://list/mock-addon"; - -let LIST_ID = "addon-list"; -let EMPTY_ID = "addon-list-empty"; - -let gManagerWindow; -let gProvider; -let gItem; - -let gInstallProperties = { - name: "Bug 591663 Mock Install", - type: "mock-addon" -}; -let gAddonProperties = { - id: "test1@tests.mozilla.org", - name: "Bug 591663 Mock Add-on", - type: "mock-addon" -}; -let 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.itemCount, 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/extensions/test/browser/browser_bug593535.js b/toolkit/mozapps/extensions/test/browser/browser_bug593535.js deleted file mode 100644 index a78ef9a23..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_bug593535.js +++ /dev/null @@ -1,118 +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; - -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/extensions/test/browser/browser_bug593535.xml b/toolkit/mozapps/extensions/test/browser/browser_bug593535.xml deleted file mode 100644 index 847c2854d..000000000 --- a/toolkit/mozapps/extensions/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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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/extensions/test/browser/browser_bug596336.js b/toolkit/mozapps/extensions/test/browser/browser_bug596336.js deleted file mode 100644 index 935820613..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_bug596336.js +++ /dev/null @@ -1,180 +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; - -function test() { - waitForExplicitFinish(); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, finish); -} - -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, aCallback) { - AddonManager.getInstallForURL(TESTROOT + "addons/" + aXpi + ".xpi", - function(aInstall) { - aInstall.addListener({ - onInstallEnded: function(aInstall) { - executeSoon(aCallback); - } - }); - aInstall.install(); - }, "application/x-xpinstall"); -} - -function check_addon(aAddon, version) { - is(get_list_item_count(), 1, "Should be one item in the list"); - is(aAddon.version, version, "Add-on should have the right version"); - - let item = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org"); - ok(!!item, "Should see the add-on in the list"); - - // Force XBL to apply - item.clientTop; - - is(get_node(item, "version").value, version, "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_test(function() { - install_addon("browser_bug596336_1", function() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - check_addon(aAddon, "1.0"); - ok(!aAddon.userDisabled, "Add-on should not be disabled"); - - install_addon("browser_bug596336_2", function() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - 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"); - - run_next_test(); - }); - }); - }); - }); -}); - -// Install version 1 mark it as disabled then upgrade to version 2 with the -// manager open -add_test(function() { - install_addon("browser_bug596336_1", function() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - aAddon.userDisabled = true; - check_addon(aAddon, "1.0"); - ok(aAddon.userDisabled, "Add-on should be disabled"); - - install_addon("browser_bug596336_2", function() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - 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"); - - run_next_test(); - }); - }); - }); - }); -}); - -// Install version 1 click the remove button and then upgrade to version 2 with -// the manager open -add_test(function() { - install_addon("browser_bug596336_1", function() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - check_addon(aAddon, "1.0"); - ok(!aAddon.userDisabled, "Add-on should not be disabled"); - - let item = get_addon_element(gManagerWindow, "addon1@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"); - - install_addon("browser_bug596336_2", function() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - 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"); - - run_next_test(); - }); - }); - }); - }); -}); - -// Install version 1, disable it, click the remove button and then upgrade to -// version 2 with the manager open -add_test(function() { - install_addon("browser_bug596336_1", function() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - aAddon.userDisabled = true; - check_addon(aAddon, "1.0"); - ok(aAddon.userDisabled, "Add-on should be disabled"); - - let item = get_addon_element(gManagerWindow, "addon1@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"); - - install_addon("browser_bug596336_2", function() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - 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"); - - run_next_test(); - }); - }); - }); - }); -}); diff --git a/toolkit/mozapps/extensions/test/browser/browser_bug608316.js b/toolkit/mozapps/extensions/test/browser/browser_bug608316.js deleted file mode 100644 index 39986c23b..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug610764.js b/toolkit/mozapps/extensions/test/browser/browser_bug610764.js deleted file mode 100644 index 58de88130..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug616841.js b/toolkit/mozapps/extensions/test/browser/browser_bug616841.js deleted file mode 100644 index 3cf6f5346..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug618502.js b/toolkit/mozapps/extensions/test/browser/browser_bug618502.js deleted file mode 100644 index 36ba8fb69..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug679604.js b/toolkit/mozapps/extensions/test/browser/browser_bug679604.js deleted file mode 100644 index e1ec605c2..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_bug714593.js b/toolkit/mozapps/extensions/test/browser/browser_bug714593.js deleted file mode 100644 index b9a7faa5e..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_cancelCompatCheck.js b/toolkit/mozapps/extensions/test/browser/browser_cancelCompatCheck.js deleted file mode 100644 index 1799adcdd..000000000 --- a/toolkit/mozapps/extensions/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"; - -let 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 -let ao1 = { file: "browser_bug557956_1", id: "addon1@tests.mozilla.org"}; -let ao2 = { file: "browser_bug557956_2", id: "addon2@tests.mozilla.org"}; -let ao3 = { file: "browser_bug557956_3", id: "addon3@tests.mozilla.org"}; -let ao4 = { file: "browser_bug557956_4", id: "addon4@tests.mozilla.org"}; -let ao5 = { file: "browser_bug557956_5", id: "addon5@tests.mozilla.org"}; -let ao6 = { file: "browser_bug557956_6", id: "addon6@tests.mozilla.org"}; -let ao7 = { file: "browser_bug557956_7", id: "addon7@tests.mozilla.org"}; -let ao8 = { file: "browser_bug557956_8_1", id: "addon8@tests.mozilla.org"}; -let ao9 = { file: "browser_bug557956_9_1", id: "addon9@tests.mozilla.org"}; -let ao10 = { file: "browser_bug557956_10", id: "addon10@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 -let 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([addon.id for (addon of aAddonList)]); - 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/extensions/test/browser/browser_checkAddonCompatibility.js b/toolkit/mozapps/extensions/test/browser/browser_checkAddonCompatibility.js deleted file mode 100644 index 6c42e0126..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_debug_button.js b/toolkit/mozapps/extensions/test/browser/browser_debug_button.js deleted file mode 100644 index 3f371e906..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_debug_button.js +++ /dev/null @@ -1,112 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -/** - * Tests debug button for addons in list view - */ - -let { Promise } = Components.utils.import("resource://gre/modules/Promise.jsm", {}); -let { Task } = Components.utils.import("resource://gre/modules/Task.jsm", {}); - -const getDebugButton = node => - node.ownerDocument.getAnonymousElementByAttribute(node, "anonid", "debug-btn"); -const addonDebuggingEnabled = bool => - Services.prefs.setBoolPref("devtools.chrome.enabled", !!bool); -const remoteDebuggingEnabled = bool => - Services.prefs.setBoolPref("devtools.debugger.remote-enabled", !!bool); - -function test() { - requestLongerTimeout(2); - - waitForExplicitFinish(); - - - var gProvider = new MockProvider(); - gProvider.createAddons([{ - id: "non-debuggable@tests.mozilla.org", - name: "No debug", - description: "foo" - }, - { - id: "debuggable@tests.mozilla.org", - name: "Debuggable", - description: "bar", - isDebuggable: true - }]); - - Task.spawn(function* () { - addonDebuggingEnabled(false); - remoteDebuggingEnabled(false); - - yield testDOM((nondebug, debuggable) => { - is(nondebug.disabled, true, - "addon:disabled::remote:disabled button is disabled for legacy addons"); - is(nondebug.hidden, true, - "addon:disabled::remote:disabled button is hidden for legacy addons"); - is(debuggable.disabled, true, - "addon:disabled::remote:disabled button is disabled for debuggable addons"); - is(debuggable.hidden, true, - "addon:disabled::remote:disabled button is hidden for debuggable addons"); - }); - - addonDebuggingEnabled(true); - remoteDebuggingEnabled(false); - - yield testDOM((nondebug, debuggable) => { - is(nondebug.disabled, true, - "addon:enabled::remote:disabled button is disabled for legacy addons"); - is(nondebug.disabled, true, - "addon:enabled::remote:disabled button is hidden for legacy addons"); - is(debuggable.disabled, true, - "addon:enabled::remote:disabled button is disabled for debuggable addons"); - is(debuggable.disabled, true, - "addon:enabled::remote:disabled button is hidden for debuggable addons"); - }); - - addonDebuggingEnabled(false); - remoteDebuggingEnabled(true); - - yield testDOM((nondebug, debuggable) => { - is(nondebug.disabled, true, - "addon:disabled::remote:enabled button is disabled for legacy addons"); - is(nondebug.disabled, true, - "addon:disabled::remote:enabled button is hidden for legacy addons"); - is(debuggable.disabled, true, - "addon:disabled::remote:enabled button is disabled for debuggable addons"); - is(debuggable.disabled, true, - "addon:disabled::remote:enabled button is hidden for debuggable addons"); - }); - - addonDebuggingEnabled(true); - remoteDebuggingEnabled(true); - - yield testDOM((nondebug, debuggable) => { - is(nondebug.disabled, true, - "addon:enabled::remote:enabled button is disabled for legacy addons"); - is(nondebug.disabled, true, - "addon:enabled::remote:enabled button is hidden for legacy addons"); - is(debuggable.disabled, false, - "addon:enabled::remote:enabled button is enabled for debuggable addons"); - is(debuggable.hidden, false, - "addon:enabled::remote:enabled button is visible for debuggable addons"); - }); - - finish(); - }); - - function testDOM (testCallback) { - let deferred = Promise.defer(); - open_manager("addons://list/extension", function(aManager) { - const {document} = aManager; - const addonList = document.getElementById("addon-list"); - const nondebug = addonList.querySelector("[name='No debug']"); - const debuggable = addonList.querySelector("[name='Debuggable']"); - - testCallback.apply(null, [nondebug, debuggable].map(getDebugButton)); - - close_manager(aManager, deferred.resolve); - }); - return deferred.promise; - } -} diff --git a/toolkit/mozapps/extensions/test/browser/browser_details.js b/toolkit/mozapps/extensions/test/browser/browser_details.js deleted file mode 100644 index 7394c87da..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_details.js +++ /dev/null @@ -1,764 +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 PREF_AUTOUPDATE_DEFAULT = "extensions.update.autoUpdateDefault" -const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url"; -const SEARCH_URL = TESTROOT + "browser_details.xml"; - -var gManagerWindow; -var gCategoryUtilities; -var gProvider; - -var gApp = document.getElementById("bundle_brand").getString("brandShortName"); -var gVersion = Services.appinfo.version; -var gBlocklistURL = Services.urlFormatter.formatURLPref("extensions.blocklist.detailsURL"); -var gPluginURL = Services.urlFormatter.formatURLPref("plugins.update.url"); -var gDate = new Date(2010, 7, 1); - -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); - - 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 - }]); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - - run_next_test(); - }); -} - -function end_test() { - 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"), "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"), "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"), "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, gPluginURL, "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, gPluginURL, "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(); - }); - }); -}); - -// 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"), "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/extensions/test/browser/browser_discovery.js b/toolkit/mozapps/extensions/test/browser/browser_discovery.js deleted file mode 100644 index 708ba311b..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_discovery.js +++ /dev/null @@ -1,637 +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); - }); -});
\ No newline at end of file diff --git a/toolkit/mozapps/extensions/test/browser/browser_discovery_install.js b/toolkit/mozapps/extensions/test/browser/browser_discovery_install.js deleted file mode 100644 index bd7d194f2..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_discovery_install.js +++ /dev/null @@ -1,130 +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://test1.example.com/" + RELATIVE_DIR + "discovery_install.html"; -const GOOD_FRAMED_URL = "https://test1.example.com/" + RELATIVE_DIR + "discovery_frame.html"; -const BAD_FRAMED_URL = "https://test2.example.com/" + RELATIVE_DIR + "discovery_frame.html"; - -// Temporarily enable caching -Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); -// Allow SSL from non-built-in certs -Services.prefs.setBoolPref("extensions.install.requireBuiltInCerts", false); -// Allow installs from the test site -Services.perms.add(NetUtil.newURI("https://test1.example.com/"), "install", - Ci.nsIPermissionManager.ALLOW_ACTION); -Services.perms.add(NetUtil.newURI("https://test2.example.com/"), "install", - Ci.nsIPermissionManager.ALLOW_ACTION); - -registerCleanupFunction(() => { - Services.perms.remove("test1.example.com", "install"); - Services.perms.remove("test2.example.com", "install"); -}); - -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/extensions/test/browser/browser_dragdrop.js b/toolkit/mozapps/extensions/test/browser/browser_dragdrop.js deleted file mode 100644 index 1df288323..000000000 --- a/toolkit/mozapps/extensions/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 ChromeUtils.js into the test scope in browser-test.js for all tests, -// we only need ChromeUtils.js for a few files which is why we are using loadSubScript. -var gManagerWindow; -var ChromeUtils = {}; -this._scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"]. - getService(Ci.mozIJSSubScriptLoader); -this._scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", ChromeUtils); - -// 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 = ChromeUtils.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 = ChromeUtils.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 = ChromeUtils.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 = ChromeUtils.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 = ChromeUtils.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/extensions/test/browser/browser_eula.js b/toolkit/mozapps/extensions/test/browser/browser_eula.js deleted file mode 100644 index befe9f1f2..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_eula.xml b/toolkit/mozapps/extensions/test/browser/browser_eula.xml deleted file mode 100644 index 87b5997cf..000000000 --- a/toolkit/mozapps/extensions/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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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/extensions/test/browser/browser_globalinformations.js b/toolkit/mozapps/extensions/test/browser/browser_globalinformations.js deleted file mode 100644 index 33890d8f5..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_globalinformations.js +++ /dev/null @@ -1,55 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Bug 656269 - Add link to Mozilla plugin check from Add-ons Manager - -const MAIN_URL = "https://example.com/" + RELATIVE_DIR + "discovery.html"; -const PREF_PLUGINCHECKURL = "plugins.update.url"; - -function test() { - waitForExplicitFinish(); - - Services.prefs.setCharPref(PREF_PLUGINCHECKURL, MAIN_URL); - registerCleanupFunction(function() { - Services.prefs.clearUserPref(PREF_PLUGINCHECKURL); - }); - - run_next_test(); -} - -function end_test() { - finish(); -} - -add_test(function() { - open_manager("addons://list/extension", function(aManager) { - info("Testing plugin check information"); - var button = aManager.document.querySelector("#list-view button.global-info-plugincheck"); - is_element_hidden(button, "Plugin Check message button should be hidden"); - - info("Changing view to plugins") - EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("category-plugin"), { }, aManager); - - wait_for_view_load(aManager, function(aManager) { - var button = aManager.document.querySelector("#list-view button.global-info-plugincheck"); - is_element_visible(button, "Plugin Check message button should be visible"); - - info("Clicking 'Plugin Check' button"); - EventUtils.synthesizeMouseAtCenter(button, { }, aManager); - gBrowser.addEventListener("load", function(event) { - if (!(event.target instanceof Document) || - event.target.location.href == "about:blank") - return; - gBrowser.removeEventListener("load", arguments.callee, true); - - is(gBrowser.currentURI.spec, Services.urlFormatter.formatURLPref("plugins.update.url"), "Plugin Check URL should match"); - - gBrowser.removeCurrentTab(); - close_manager(aManager, function() { - run_next_test(); - }); - }, true); - }); - }); -});
\ No newline at end of file diff --git a/toolkit/mozapps/extensions/test/browser/browser_globalwarnings.js b/toolkit/mozapps/extensions/test/browser/browser_globalwarnings.js deleted file mode 100644 index 663905a90..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_gmpProvider.js b/toolkit/mozapps/extensions/test/browser/browser_gmpProvider.js deleted file mode 100644 index 1813df78c..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_gmpProvider.js +++ /dev/null @@ -1,401 +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"); -let {AddonTestUtils} = Cu.import("resource://testing-common/AddonManagerTesting.jsm", {}); -let GMPScope = Cu.import("resource://gre/modules/addons/GMPProvider.jsm"); - -const TEST_DATE = new Date(2013, 0, 1, 12); - -let gManagerWindow; -let gCategoryUtilities; -let gIsEnUsLocale; - -let gMockAddons = []; - -for (let plugin of GMPScope.GMP_PLUGINS) { - let mockAddon = Object.freeze({ - id: plugin.id, - isValid: true, - isInstalled: false, - isEME: plugin.id.indexOf("gmp-eme-") == 0 ? true : false, - }); - gMockAddons.push(mockAddon); -} - -let gInstalledAddonId = ""; -let gInstallDeferred = null; -let gPrefs = Services.prefs; -let getKey = GMPScope.GMPPrefs.getPrefKey; - -function MockGMPInstallManager() { -} - -MockGMPInstallManager.prototype = { - checkForAddons: () => Promise.resolve(gMockAddons), - - installAddon: addon => { - gInstalledAddonId = addon.id; - gInstallDeferred.resolve(); - return Promise.resolve(); - }, -}; - -let 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 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."); - - 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_FORCEVISIBLE, 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_FORCEVISIBLE, 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]; - } -}); - -add_task(function* testNotInstalled() { - Assert.ok(gCategoryUtilities.isTypeVisible("plugin"), "Plugin tab visible."); - yield gCategoryUtilities.openType("plugin"); - - 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]; - } -}); - -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"); - - yield gCategoryUtilities.openType("plugin"); - - 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(); - } -}); - -add_task(function* testInstalledGlobalEmeDisabled() { - gPrefs.setBoolPref(GMPScope.GMPPrefs.KEY_EME_ENABLED, false); - for (let addon of gMockAddons) { - yield gCategoryUtilities.openType("plugin"); - - 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_FORCEVISIBLE, 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 (Services.appinfo.OS == "WINNT" && - Services.sysinfo.getPropertyAsInt32("version") >= 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 { - Assert.ok(item, "Found add-on element."); - } - } - - for (let addon of gMockAddons) { - gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_FORCEVISIBLE, addon.id), - true); - } - yield GMPScope.GMPProvider.shutdown(); - GMPScope.GMPProvider.startup(); - -}); - -add_task(function* test_cleanup() { - yield close_manager(gManagerWindow); -}); diff --git a/toolkit/mozapps/extensions/test/browser/browser_inlinesettings.js b/toolkit/mozapps/extensions/test/browser/browser_inlinesettings.js deleted file mode 100644 index c1dd7f762..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_inlinesettings.js +++ /dev/null @@ -1,677 +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; - -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); - var 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); - var 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"); - var 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"); - EventUtils.synthesizeKey("/", {}, gManagerWindow); - is(input.value, "bar/", "Text box should have updated value"); - is(gManagerWindow.document.getBindingParent(gManagerWindow.document.activeElement), input, "Search box should not have focus"); - is(Services.prefs.getCharPref("extensions.inlinesettings1.string"), "bar/", "String pref should have been updated"); - - ok(!settings[4].hasAttribute("first-row"), "Not the first row"); - var 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 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"); - - 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); - var 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"); - var 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(Services.prefs.getCharPref("extensions.inlinesettings3.radioString"), "kilo", "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"); - - var 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); - }); -}); - -// 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); - Services.prefs.setCharPref("extensions.inlinesettings1.string", "bar/"); - 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"); - - var input = gManagerWindow.document.getAnonymousElementByAttribute(settings[1], "anonid", "input"); - is(input.checked, true, "Checkbox should have initial value"); - - var input = gManagerWindow.document.getAnonymousElementByAttribute(settings[2], "anonid", "input"); - is(input.value, "12", "Number box should have initial value"); - - var input = gManagerWindow.document.getAnonymousElementByAttribute(settings[3], "anonid", "input"); - is(input.value, "bar/", "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); - Services.prefs.setCharPref("extensions.inlinesettings3.radioString", "kilo"); - 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"); - - var 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"); - - var 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/extensions/test/browser/browser_inlinesettings_custom.js b/toolkit/mozapps/extensions/test/browser/browser_inlinesettings_custom.js deleted file mode 100644 index ecd10852d..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_inlinesettings_info.js b/toolkit/mozapps/extensions/test/browser/browser_inlinesettings_info.js deleted file mode 100644 index 05b43a238..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_inlinesettings_info.js +++ /dev/null @@ -1,569 +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; - -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); - var 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); - var 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"); - var 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"); - var 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 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); - var 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"); - var 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(Services.prefs.getCharPref("extensions.inlinesettings3.radioString"), "kilo", "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"); - - var 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/extensions/test/browser/browser_install.js b/toolkit/mozapps/extensions/test/browser/browser_install.js deleted file mode 100644 index 3f7d17d37..000000000 --- a/toolkit/mozapps/extensions/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("addon1@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("addon1@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, "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); - } - }); - }); -} - -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, "addon1@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, "addon1@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, "addon1@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, "addon1@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, "addon1@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, "addon1@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/extensions/test/browser/browser_install.rdf b/toolkit/mozapps/extensions/test/browser/browser_install.rdf deleted file mode 100644 index 7dc0477f0..000000000 --- a/toolkit/mozapps/extensions/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: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>*</em:maxVersion> - <em:updateLink>https://example.com/browser/toolkit/mozapps/extensions/test/browser/browser_install1_3.xpi</em:updateLink> - <em:updateHash>sha1:6760e51269941245105a17076afeb5f45621de0e</em:updateHash> - </Description> - </em:targetApplication> - </Description> - </li> - </Seq> - </em:updates> - </Description> - -</RDF> diff --git a/toolkit/mozapps/extensions/test/browser/browser_install.rdf^headers^ b/toolkit/mozapps/extensions/test/browser/browser_install.rdf^headers^ deleted file mode 100644 index 2e4f8163b..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_install.rdf^headers^ +++ /dev/null @@ -1 +0,0 @@ -Connection: close diff --git a/toolkit/mozapps/extensions/test/browser/browser_install.xml b/toolkit/mozapps/extensions/test/browser/browser_install.xml deleted file mode 100644 index 84067a6a3..000000000 --- a/toolkit/mozapps/extensions/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>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> - <compatible_applications> - <application> - <name>Firefox</name> - <appID>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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/extensions/test/browser/browser_install1_3.xpi b/toolkit/mozapps/extensions/test/browser/browser_install1_3.xpi Binary files differdeleted file mode 100644 index 31bb4b2a6..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_install1_3.xpi +++ /dev/null diff --git a/toolkit/mozapps/extensions/test/browser/browser_installssl.js b/toolkit/mozapps/extensions/test/browser/browser_installssl.js deleted file mode 100644 index b0726ef9e..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_list.js b/toolkit/mozapps/extensions/test/browser/browser_list.js deleted file mode 100644 index fd6cfed7e..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_list.js +++ /dev/null @@ -1,760 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests the list view - -let tempScope = {}; -Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", tempScope); -let LightweightThemeManager = tempScope.LightweightThemeManager; - - -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 gPluginURL = Services.urlFormatter.formatURLPref("plugins.update.url"); -var gDate = new Date(2010, 7, 16); - -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: "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, - }]); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - -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) - 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_test(function() { - gCategoryUtilities.openType("extension", function() { - let items = get_test_items(); - is(Object.keys(items).length, 9, "Should be nine add-ons installed"); - - info("Addon 1"); - let addon = items["Test add-on"]; - addon.parentNode.ensureElementIsVisible(addon); - is(get_node(addon, "name").value, "Test add-on", "Name should be correct"); - is_element_visible(get_node(addon, "version"), "Version should be visible"); - is(get_node(addon, "version").value, "1.0", "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_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); - is(get_node(addon, "name").value, "Test add-on 2", "Name should be correct"); - is_element_visible(get_node(addon, "version"), "Version should be visible"); - is(get_node(addon, "version").value, "2.0", "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); - is(get_node(addon, "name").value, "Test add-on 3", "Name should be correct"); - is_element_hidden(get_node(addon, "version"), "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); - is(get_node(addon, "name").value, "Test add-on 4", "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); - is(get_node(addon, "name").value, "Test add-on 5", "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); - is(get_node(addon, "name").value, "Test add-on 6", "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); - is(get_node(addon, "name").value, "Test add-on 7", "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, gPluginURL, "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); - is(get_node(addon, "name").value, "Test add-on 8", "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); - is(get_node(addon, "name").value, "Test add-on 9", "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"); - - run_next_test(); - }); -}); - -// Check the add-ons are now in the right state -add_test(function() { - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon6@tests.mozilla.org"], - function([a1, a2, a4, a6]) { - 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"); - - run_next_test(); - }); -}); - -// Reload the list to make sure the changes are still pending and that undoing -// works -add_test(function() { - gCategoryUtilities.openType("plugin", function() { - gCategoryUtilities.openType("extension", function() { - let items = get_test_items(); - is(Object.keys(items).length, 9, "Should be nine add-ons installed"); - - info("Addon 1"); - let addon = items["Test add-on"]; - addon.parentNode.ensureElementIsVisible(addon); - is(get_node(addon, "name").value, "Test add-on", "Name should be correct"); - is_element_visible(get_node(addon, "version"), "Version should be visible"); - is(get_node(addon, "version").value, "1.0", "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); - is(get_node(addon, "name").value, "Test add-on 2", "Name should be correct"); - is_element_visible(get_node(addon, "version"), "Version should be visible"); - is(get_node(addon, "version").value, "2.0", "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); - is(get_node(addon, "name").value, "Test add-on 4", "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); - is(get_node(addon, "name").value, "Test add-on 6", "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); - is(get_node(addon, "name").value, "Test add-on 7", "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, gPluginURL, "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"); - - run_next_test(); - }); - }); -}); - -// Check the add-ons are now in the right state -add_test(function() { - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon4@tests.mozilla.org"], - function([a1, a2, a4]) { - 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"); - - run_next_test(); - }); -}); - -// Check that upgrades with onExternalInstall take effect immediately -add_test(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 - }]); - - let items = get_test_items(); - is(Object.keys(items).length, 9, "Should be nine add-ons installed"); - - let addon = items["Test add-on replacement"]; - addon.parentNode.ensureElementIsVisible(addon); - is(get_node(addon, "name").value, "Test add-on replacement", "Name should be correct"); - is_element_visible(get_node(addon, "version"), "Version should be visible"); - is(get_node(addon, "version").value, "2.0", "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"); - - run_next_test(); -}); - -// Check that focus changes correctly move around the selected list item -add_test(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"]; - 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) { } - - run_next_test(); -}); - - -add_test(function() { - info("Enabling lightweight theme"); - LightweightThemeManager.currentTheme = gLWTheme; - - gManagerWindow.loadView("addons://list/theme"); - wait_for_view_load(gManagerWindow, function() { - 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"); - - AddonManager.getAddonByID("4@personas.mozilla.org", function(aAddon) { - aAddon.uninstall(); - 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("addon2@tests.mozilla.org", function(aAddon) { - aAddon.userDisabled = true; - aAddon.isCompatible = true; - aAddon.appDisabled = false; - - gManagerWindow.loadView("addons://list/extension"); - wait_for_view_load(gManagerWindow, function() { - 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"); - - run_next_test(); - }); - }); -}); diff --git a/toolkit/mozapps/extensions/test/browser/browser_manualupdates.js b/toolkit/mozapps/extensions/test/browser/browser_manualupdates.js deleted file mode 100644 index 27a4a6cd8..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_manualupdates.js +++ /dev/null @@ -1,242 +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() { - 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"); - run_next_test(); - }, 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"); - is(item._version.value, "1.0", "Should still show the old version in the normal list"); - }); -}); - - -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"); - - // for manual update items, update-related properties are updated asynchronously, - // so we poll for one of the expected changes to know when its done - function waitForAsyncInit() { - if (item._version.value == "1.1") { - run_next_test(); - return; - } - info("Update item not initialized yet, checking again in 100ms"); - setTimeout(waitForAsyncInit, 100); - } - waitForAsyncInit(); -}); - -add_test(function() { - var list = gManagerWindow.document.getElementById("updates-list"); - var item = list.firstChild; - is(item._version.value, "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/extensions/test/browser/browser_metadataTimeout.js b/toolkit/mozapps/extensions/test/browser/browser_metadataTimeout.js deleted file mode 100644 index e2aae6c13..000000000 --- a/toolkit/mozapps/extensions/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"); - -let repo = {}; -let 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 -let pXHRStarted = Promise.defer(); -let oldXHRConstructor = ARContext.XHRequest; -ARContext.XHRequest = 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.XHRequest = oldXHRConstructor; - // The window should close without further interaction - yield promise_window_close(compatWindow); -}); diff --git a/toolkit/mozapps/extensions/test/browser/browser_newaddon.js b/toolkit/mozapps/extensions/test/browser/browser_newaddon.js deleted file mode 100644 index a460d79d8..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_newaddon.js +++ /dev/null @@ -1,186 +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) { - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.loadURI(aURL); - gBrowser.addEventListener("AddonDisplayed", function(event) { - gBrowser.removeEventListener("AddonDisplayed", arguments.callee, false); - - aCallback(gBrowser.selectedTab); - }); -} - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "Test 1", - version: "5.3", - userDisabled: true, - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon2@tests.mozilla.org", - name: "Test 2", - version: "7.1", - creator: "Dave Townsend", - userDisabled: true - }]); - - 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"); - - EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"), - {}, aTab.linkedBrowser.contentWindow); - - is(gBrowser.tabs.length, 1, "Page should have been closed"); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - ok(aAddon.userDisabled, "Add-on should not have been enabled"); - - ok(!aAddon.isActive, "Add-on should not be running"); - - 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"); - - 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"); - - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) { - ok(!aAddon.userDisabled, "Add-on should now have been enabled"); - - ok(aAddon.isActive, "Add-on should now be running"); - - 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"); - - EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"), - {}, aTab.linkedBrowser.contentWindow); - - is(gBrowser.tabs.length, 1, "Page should have been closed"); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(aAddon) { - ok(aAddon.userDisabled, "Add-on should not have been enabled"); - - ok(!aAddon.isActive, "Add-on should not be running"); - - 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"); - - 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"); - - AddonManager.getAddonByID("addon2@tests.mozilla.org", function(aAddon) { - 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"); - - run_next_test(); - }); - }); -}); diff --git a/toolkit/mozapps/extensions/test/browser/browser_openDialog.js b/toolkit/mozapps/extensions/test/browser/browser_openDialog.js deleted file mode 100644 index bdbe9caee..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_openDialog.js +++ /dev/null @@ -1,176 +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. - -let 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; - }, - - newChannel: function CCP_newChannel(aURI) { - let url = "chrome:" + aURI.path; - let ch = NetUtil.newChannel2(url, - null, - null, - null, // aLoadingNode - Services.scriptSecurityManager.getSystemPrincipal(), - null, // aTriggeringPrincipal - Ci.nsILoadInfo.SEC_NORMAL, - Ci.nsIContentPolicy.TYPE_OTHER); - ch.originalURI = aURI; - return ch; - }, - - 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(function () 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/extensions/test/browser/browser_plugin_enabled_state_locked.js b/toolkit/mozapps/extensions/test/browser/browser_plugin_enabled_state_locked.js deleted file mode 100644 index b32d74336..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_plugin_enabled_state_locked.js +++ /dev/null @@ -1,125 +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 -const {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); - -let gManagerWindow; -let gCategoryUtilities; -let gPluginElement; - -function getTestPluginPref() { - let prefix = "plugin.state."; - if (gIsWindows) - return prefix + "nptest"; - else if (gIsLinux) - return prefix + "libnptest"; - else - return prefix + "test"; -} - -registerCleanupFunction(() => { - Services.prefs.unlockPref(getTestPluginPref()); - Services.prefs.clearUserPref(getTestPluginPref()); -}); - -function getPlugins() { - let deferred = Promise.defer(); - AddonManager.getAddonsByTypes(["plugin"], plugins => deferred.resolve(plugins)); - return deferred.promise; -} - -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); - - let deferred = Promise.defer(); - 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."); - deferred.resolve(); - }); - return deferred.promise; -} - -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/extensions/test/browser/browser_pluginprefs.js b/toolkit/mozapps/extensions/test/browser/browser_pluginprefs.js deleted file mode 100644 index 458e8e334..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_purchase.js b/toolkit/mozapps/extensions/test/browser/browser_purchase.js deleted file mode 100644 index bb30a1eb4..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_purchase.js +++ /dev/null @@ -1,195 +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); - - var 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.addEventListener("load", function(event) { - if (!(event.target instanceof Document) || - event.target.location.href == "about:blank") - return; - gBrowser.removeEventListener("load", arguments.callee, true); - - 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.addEventListener("load", function(event) { - if (!(event.target instanceof Document) || - event.target.location.href == "about:blank") - return; - gBrowser.removeEventListener("load", arguments.callee, true); - - 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/extensions/test/browser/browser_purchase.xml b/toolkit/mozapps/extensions/test/browser/browser_purchase.xml deleted file mode 100644 index 470f47d28..000000000 --- a/toolkit/mozapps/extensions/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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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/extensions/test/browser/browser_recentupdates.js b/toolkit/mozapps/extensions/test/browser/browser_recentupdates.js deleted file mode 100644 index 1427d5eba..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_searching.js b/toolkit/mozapps/extensions/test/browser/browser_searching.js deleted file mode 100644 index 9e03e8297..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_searching.js +++ /dev/null @@ -1,695 +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; - } - - var 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) { - var 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 = [result.name for each(result in actualResults)]; - - // 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, null, 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"); - - var 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; - - 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/extensions/test/browser/browser_searching.xml b/toolkit/mozapps/extensions/test/browser/browser_searching.xml deleted file mode 100644 index e88db289e..000000000 --- a/toolkit/mozapps/extensions/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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</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/extensions/test/browser/browser_searching_empty.xml b/toolkit/mozapps/extensions/test/browser/browser_searching_empty.xml deleted file mode 100644 index 24f6cb89f..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_select_compatoverrides.js b/toolkit/mozapps/extensions/test/browser/browser_select_compatoverrides.js deleted file mode 100644 index 747811e63..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_select_compatoverrides.js +++ /dev/null @@ -1,116 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that compatibility overrides are refreshed when showing the addon -// selection UI. - -const PREF_GETADDONS_BYIDS = "extensions.getAddons.get.url"; -const PREF_MIN_PLATFORM_COMPAT = "extensions.minCompatiblePlatformVersion"; - -var gTestAddon = null; -var gWin; - -function waitForView(aView, aCallback) { - var view = gWin.document.getElementById(aView); - if (view.parentNode.selectedPanel == view) { - aCallback(); - return; - } - - view.addEventListener("ViewChanged", function() { - view.removeEventListener("ViewChanged", arguments.callee, false); - aCallback(); - }, false); -} - -function install_test_addon(aCallback) { - AddonManager.getInstallForURL(TESTROOT + "addons/browser_select_compatoverrides_1.xpi", function(aInstall) { - var listener = { - onInstallEnded: function() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(addon) { - gTestAddon = addon; - executeSoon(aCallback); - }); - } - }; - aInstall.addListener(listener); - aInstall.install(); - }, "application/x-xpinstall"); -} - -registerCleanupFunction(function() { - if (gWin) - gWin.close(); - if (gTestAddon) - gTestAddon.uninstall(); - - Services.prefs.clearUserPref(PREF_MIN_PLATFORM_COMPAT); -}); - -function end_test() { - finish(); -} - - -function test() { - waitForExplicitFinish(); - Services.prefs.setCharPref(PREF_UPDATEURL, TESTROOT + "missing.rdf"); - Services.prefs.setBoolPref(PREF_STRICT_COMPAT, false); - Services.prefs.setCharPref(PREF_MIN_PLATFORM_COMPAT, "0"); - - install_test_addon(run_next_test); -} - -add_test(function() { - gWin = Services.ww.openWindow(null, - "chrome://mozapps/content/extensions/selectAddons.xul", - "", - "chrome,centerscreen,dialog,titlebar", - null); - waitForFocus(function() { - waitForView("select", run_next_test); - }, gWin); -}); - -add_test(function() { - for (var row = gWin.document.getElementById("select-rows").firstChild; row; row = row.nextSibling) { - if (row.localName == "separator") - continue; - if (row.id.substr(-18) != "@tests.mozilla.org") - continue; - - is(row.id, "addon1@tests.mozilla.org", "Should get expected addon"); - isnot(row.action, "incompatible", "Addon should not be incompatible"); - - gWin.close(); - gWin = null; - run_next_test(); - } -}); - -add_test(function() { - Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, TESTROOT + "browser_select_compatoverrides.xml"); - Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true); - - gWin = Services.ww.openWindow(null, - "chrome://mozapps/content/extensions/selectAddons.xul", - "", - "chrome,centerscreen,dialog,titlebar", - null); - waitForFocus(function() { - waitForView("select", run_next_test); - }, gWin); -}); - -add_test(function() { - for (var row = gWin.document.getElementById("select-rows").firstChild; row; row = row.nextSibling) { - if (row.localName == "separator") - continue; - if (row.id.substr(-18) != "@tests.mozilla.org") - continue; - is(row.id, "addon1@tests.mozilla.org", "Should get expected addon"); - is(row.action, "incompatible", "Addon should be incompatible"); - run_next_test(); - } -}); diff --git a/toolkit/mozapps/extensions/test/browser/browser_select_compatoverrides.xml b/toolkit/mozapps/extensions/test/browser/browser_select_compatoverrides.xml deleted file mode 100644 index 76d00aa2c..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_select_compatoverrides.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<searchresults total_results="1"> - <addon_compatibility hosted="false"> - <guid>addon1@tests.mozilla.org</guid> - <name>Addon1</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/extensions/test/browser/browser_select_confirm.js b/toolkit/mozapps/extensions/test/browser/browser_select_confirm.js deleted file mode 100644 index 1204777ce..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_select_confirm.js +++ /dev/null @@ -1,181 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests the confirmation part of the post-app-update dialog - -var gProvider; -var gWin; - -function waitForView(aView, aCallback) { - var view = gWin.document.getElementById(aView); - if (view.parentNode.selectedPanel == view) { - aCallback(); - return; - } - - view.addEventListener("ViewChanged", function() { - view.removeEventListener("ViewChanged", arguments.callee, false); - try { - aCallback(); - } - catch (e) { - ok(false, e); - } - }, false); -} - -/** - * Creates 4 test add-ons. Two are disabled and two enabled. - * - * @param aAppDisabled - * The appDisabled property for the test add-ons - * @param aUpdateAvailable - * True if the test add-ons should claim to have an update available - */ -function setupUI(aAppDisabled, aUpdateAvailable, aCallback) { - if (gProvider) - gProvider.unregister(); - - gProvider = new MockProvider(); - - for (var i = 1; i < 5; i++) { - var addon = new MockAddon("test" + i + "@tests.mozilla.org", - "Test Add-on " + i, "extension"); - addon.version = "1.0"; - addon.userDisabled = (i > 2); - addon.appDisabled = aAppDisabled; - addon.isActive = !addon.userDisabled && !addon.appDisabled; - - addon.findUpdates = function(aListener, aReason, aAppVersion, aPlatformVersion) { - if (aUpdateAvailable) { - var newAddon = new MockAddon(this.id, this.name, "extension"); - newAddon.version = "2.0"; - var install = new MockInstall(this.name, this.type, newAddon); - install.existingAddon = this; - aListener.onUpdateAvailable(this, install); - } - - aListener.onUpdateFinished(this, AddonManager.UPDATE_STATUS_NO_ERROR); - }; - - gProvider.addAddon(addon); - } - - gWin = Services.ww.openWindow(null, - "chrome://mozapps/content/extensions/selectAddons.xul", - "", - "chrome,centerscreen,dialog,titlebar", - null); - waitForFocus(function() { - waitForView("select", function() { - var row = gWin.document.getElementById("select-rows").firstChild.nextSibling; - while (row) { - if (!row.id || row.id.indexOf("@tests.mozilla.org") < 0) { - // not a test add-on - row = row.nextSibling; - continue; - } - - if (row.id == "test2@tests.mozilla.org" || - row.id == "test4@tests.mozilla.org") { - row.disable(); - } - else { - row.keep(); - } - row = row.nextSibling; - } - - waitForView("confirm", aCallback); - EventUtils.synthesizeMouseAtCenter(gWin.document.getElementById("next"), {}, gWin); - }); - }, gWin); -} - -function test() { - waitForExplicitFinish(); - - run_next_test(); -} - -function end_test() { - finish(); -} - -// Test for disabling -add_test(function disabling_test() { - setupUI(false, false, function() { - ok(gWin.document.getElementById("incompatible-list").hidden, "Incompatible list should be hidden"); - ok(gWin.document.getElementById("update-list").hidden, "Update list should be hidden"); - - var list = gWin.document.getElementById("disable-list"); - ok(!list.hidden, "Disable list should be visible"); - is(list.childNodes.length, 2, "Should be one add-on getting disabled (plus the header)"); - is(list.childNodes[1].id, "test2@tests.mozilla.org", "Should be the right add-on ID"); - is(list.childNodes[1].getAttribute("name"), "Test Add-on 2", "Should be the right add-on name"); - - var list = gWin.document.getElementById("enable-list"); - ok(!list.hidden, "Enable list should be visible"); - is(list.childNodes.length, 2, "Should be one add-on getting disabled (plus the header)"); - is(list.childNodes[1].id, "test3@tests.mozilla.org", "Should be the right add-on ID"); - is(list.childNodes[1].getAttribute("name"), "Test Add-on 3", "Should be the right add-on name"); - - ok(gWin.document.getElementById("next").hidden, "Next button should be hidden"); - ok(!gWin.document.getElementById("done").hidden, "Done button should be visible"); - gWin.close(); - - run_next_test(); - }); -}); - -// Test for incompatible -add_test(function incompatible_test() { - setupUI(true, false, function() { - ok(gWin.document.getElementById("update-list").hidden, "Update list should be hidden"); - ok(gWin.document.getElementById("disable-list").hidden, "Disable list should be hidden"); - ok(gWin.document.getElementById("enable-list").hidden, "Enable list should be hidden"); - - var list = gWin.document.getElementById("incompatible-list"); - ok(!list.hidden, "Incompatible list should be visible"); - is(list.childNodes.length, 3, "Should be two add-ons waiting to be compatible (plus the header)"); - is(list.childNodes[1].id, "test1@tests.mozilla.org", "Should be the right add-on ID"); - is(list.childNodes[1].getAttribute("name"), "Test Add-on 1", "Should be the right add-on name"); - is(list.childNodes[2].id, "test3@tests.mozilla.org", "Should be the right add-on ID"); - is(list.childNodes[2].getAttribute("name"), "Test Add-on 3", "Should be the right add-on name"); - - ok(gWin.document.getElementById("next").hidden, "Next button should be hidden"); - ok(!gWin.document.getElementById("done").hidden, "Done button should be visible"); - gWin.close(); - - run_next_test(); - }); -}); - -// Test for updates -add_test(function update_test() { - setupUI(false, true, function() { - ok(gWin.document.getElementById("incompatible-list").hidden, "Incompatible list should be hidden"); - ok(gWin.document.getElementById("enable-list").hidden, "Enable list should be hidden"); - - var list = gWin.document.getElementById("update-list"); - ok(!list.hidden, "Update list should be visible"); - is(list.childNodes.length, 3, "Should be two add-ons waiting to be updated (plus the header)"); - is(list.childNodes[1].id, "test1@tests.mozilla.org", "Should be the right add-on ID"); - is(list.childNodes[1].getAttribute("name"), "Test Add-on 1", "Should be the right add-on name"); - is(list.childNodes[2].id, "test3@tests.mozilla.org", "Should be the right add-on ID"); - is(list.childNodes[2].getAttribute("name"), "Test Add-on 3", "Should be the right add-on name"); - - list = gWin.document.getElementById("disable-list"); - ok(!list.hidden, "Disable list should be visible"); - is(list.childNodes.length, 2, "Should be one add-on getting disabled (plus the header)"); - is(list.childNodes[1].id, "test2@tests.mozilla.org", "Should be the right add-on ID"); - is(list.childNodes[1].getAttribute("name"), "Test Add-on 2", "Should be the right add-on name"); - - ok(!gWin.document.getElementById("next").hidden, "Next button should be visible"); - ok(gWin.document.getElementById("done").hidden, "Done button should be hidden"); - gWin.close(); - - run_next_test(); - }); -}); diff --git a/toolkit/mozapps/extensions/test/browser/browser_select_selection.js b/toolkit/mozapps/extensions/test/browser/browser_select_selection.js deleted file mode 100644 index cf83e7c1e..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_select_selection.js +++ /dev/null @@ -1,268 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests the selection part of the post-app-update dialog - -var gProvider; -var gWin; - -const PROFILE = AddonManager.SCOPE_PROFILE; -const USER = AddonManager.SCOPE_USER; -const APP = AddonManager.SCOPE_APPLICATION; -const SYSTEM = AddonManager.SCOPE_SYSTEM; -const DIST = -1; - -// The matrix of testcases for the selection part of the UI -// Note that the isActive flag has the value it had when the previous version -// of the application ran with this add-on. -var ADDONS = [ - //userDisabled wasAppDisabled isAppDisabled isActive hasUpdate autoUpdate scope defaultKeep position keepString disableString - [false, true, false, false, false, true, PROFILE, true, 42, "enabled", ""], // 0 - [false, true, false, false, true, true, PROFILE, true, 43, "enabled", ""], // 1 - [false, true, false, false, true, false, PROFILE, true, 52, "unneededupdate", ""], // 2 - [false, false, false, true, false, true, PROFILE, true, 53, "", "disabled"], // 3 - [false, false, false, true, true, true, PROFILE, true, 54, "", "disabled"], // 4 - [false, false, false, true, true, false, PROFILE, true, 55, "unneededupdate", "disabled"], // 5 - [false, true, true, false, false, true, PROFILE, true, 56, "incompatible", ""], // 6 - [false, true, true, false, true, true, PROFILE, true, 57, "autoupdate", ""], // 7 - [false, true, true, false, true, false, PROFILE, true, 58, "neededupdate", ""], // 8 - [false, false, true, true, false, true, PROFILE, true, 59, "incompatible", "disabled"], // 9 - [false, true, true, true, true, true, PROFILE, true, 44, "autoupdate", "disabled"], // 10 - [false, true, true, true, true, false, PROFILE, true, 45, "neededupdate", "disabled"], // 11 - [true, false, false, false, false, true, PROFILE, false, 46, "enabled", ""], // 12 - [true, false, false, false, true, true, PROFILE, false, 47, "enabled", ""], // 13 - [true, false, false, false, true, false, PROFILE, false, 48, "unneededupdate", ""], // 14 - - // userDisabled and isActive cannot be true on startup - - [true, true, true, false, false, true, PROFILE, false, 49, "incompatible", ""], // 15 - [true, true, true, false, true, true, PROFILE, false, 50, "autoupdate", ""], // 16 - [true, true, true, false, true, false, PROFILE, false, 51, "neededupdate", ""], // 17 - - // userDisabled and isActive cannot be true on startup - - // Being in a different scope should make little difference except no updates are possible so don't exhaustively test each - [false, false, false, true, true, false, USER, false, 0, "", "disabled"], // 18 - [true, true, false, false, true, false, USER, false, 1, "enabled", ""], // 19 - [false, true, true, true, true, false, USER, false, 2, "incompatible", "disabled"], // 20 - [true, true, true, false, true, false, USER, false, 3, "incompatible", ""], // 21 - [false, false, false, true, true, false, SYSTEM, false, 4, "", "disabled"], // 22 - [true, true, false, false, true, false, SYSTEM, false, 5, "enabled", ""], // 23 - [false, true, true, true, true, false, SYSTEM, false, 6, "incompatible", "disabled"], // 24 - [true, true, true, false, true, false, SYSTEM, false, 7, "incompatible", ""], // 25 - [false, false, false, true, true, false, APP, false, 8, "", "disabled"], // 26 - [true, true, false, false, true, false, APP, false, 9, "enabled", ""], // 27 - [false, true, true, true, true, false, APP, false, 10, "incompatible", "disabled"], // 28 - [true, true, true, false, true, false, APP, false, 11, "incompatible", ""], // 29 -]; - -function waitForView(aView, aCallback) { - var view = gWin.document.getElementById(aView); - if (view.parentNode.selectedPanel == view) { - aCallback(); - return; - } - - view.addEventListener("ViewChanged", function() { - view.removeEventListener("ViewChanged", arguments.callee, false); - aCallback(); - }, false); -} - -function getString(aName) { - if (!aName) - return ""; - - var strings = Services.strings.createBundle("chrome://mozapps/locale/extensions/selectAddons.properties"); - return strings.GetStringFromName("action." + aName); -} - -function getSourceString(aSource) { - if (!aSource) - return ""; - - var strings = Services.strings.createBundle("chrome://mozapps/locale/extensions/selectAddons.properties"); - switch (aSource) { - case PROFILE: - return strings.GetStringFromName("source.profile"); - case DIST: - return strings.GetStringFromName("source.bundled"); - default: - return strings.GetStringFromName("source.other"); - } -} - -function test() { - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - // Set prefs for Distributed Extension Source tests. - Services.prefs.setBoolPref("extensions.installedDistroAddon.test3@tests.mozilla.org", true); - Services.prefs.setBoolPref("extensions.installedDistroAddon.test12@tests.mozilla.org", true); - Services.prefs.setBoolPref("extensions.installedDistroAddon.test15@tests.mozilla.org", true); - - for (let pos in ADDONS) { - let addonItem = ADDONS[pos]; - let addon = new MockAddon("test" + pos + "@tests.mozilla.org", - "Test Add-on " + pos, "extension"); - addon.version = "1.0"; - addon.userDisabled = addonItem[0]; - addon.appDisabled = addonItem[1]; - addon.isActive = addonItem[3]; - addon.applyBackgroundUpdates = addonItem[5] ? AddonManager.AUTOUPDATE_ENABLE - : AddonManager.AUTOUPDATE_DISABLE; - addon.scope = addonItem[6]; - - // Remove the upgrade permission from non-profile add-ons - if (addon.scope != AddonManager.SCOPE_PROFILE) - addon._permissions -= AddonManager.PERM_CAN_UPGRADE; - - addon.findUpdates = function(aListener, aReason, aAppVersion, aPlatformVersion) { - addon.appDisabled = addonItem[2]; - addon.isActive = addon.shouldBeActive; - - if (addonItem[4]) { - var newAddon = new MockAddon(this.id, this.name, "extension"); - newAddon.version = "2.0"; - var install = new MockInstall(this.name, this.type, newAddon); - install.existingAddon = this; - aListener.onUpdateAvailable(this, install); - } - - aListener.onUpdateFinished(this, AddonManager.UPDATE_STATUS_NO_ERROR); - }; - - gProvider.addAddon(addon); - } - - gWin = Services.ww.openWindow(null, - "chrome://mozapps/content/extensions/selectAddons.xul", - "", - "chrome,centerscreen,dialog,titlebar", - null); - waitForFocus(function() { - waitForView("select", run_next_test); - }, gWin); -} - -function end_test() { - gWin.close(); - finish(); -} - -// Minimal test for the checking UI -add_test(function checking_test() { - // By the time we're here the progress bar should be full - var progress = gWin.document.getElementById("checking-progress"); - is(progress.mode, "determined", "Should be a determined progress bar"); - is(progress.value, progress.max, "Should be at full progress"); - - run_next_test(); -}); - -// Tests that the selection UI behaves correctly -add_test(function selection_test() { - function check_state() { - var str = addon[keep.checked ? 9 : 10]; - var expected = getString(str); - var showCheckbox = str == "neededupdate" || str == "unneededupdate"; - is(action.textContent, expected, "Action message should have the right text"); - is(!is_hidden(update), showCheckbox, "Checkbox should have the right visibility"); - is(is_hidden(action), showCheckbox, "Message should have the right visibility"); - if (showCheckbox) - ok(update.checked, "Optional update checkbox should be checked"); - - if (keep.checked) { - is(row.hasAttribute("active"), !addon[2] || hasUpdate, - "Add-on will be active if it isn't appDisabled or an update is available"); - - if (showCheckbox) { - info("Flipping update checkbox"); - EventUtils.synthesizeMouseAtCenter(update, { }, gWin); - is(row.hasAttribute("active"), str == "unneededupdate", - "If the optional update isn't needed then the add-on will still be active"); - - info("Flipping update checkbox"); - EventUtils.synthesizeMouseAtCenter(update, { }, gWin); - is(row.hasAttribute("active"), !addon[2] || hasUpdate, - "Add-on will be active if it isn't appDisabled or an update is available"); - } - } - else { - ok(!row.hasAttribute("active"), "Add-on won't be active when not keeping"); - - if (showCheckbox) { - info("Flipping update checkbox"); - EventUtils.synthesizeMouseAtCenter(update, { }, gWin); - ok(!row.hasAttribute("active"), - "Unchecking the update checkbox shouldn't make the add-on active"); - - info("Flipping update checkbox"); - EventUtils.synthesizeMouseAtCenter(update, { }, gWin); - ok(!row.hasAttribute("active"), - "Re-checking the update checkbox shouldn't make the add-on active"); - } - } - } - - is(gWin.document.getElementById("view-deck").selectedPanel.id, "select", - "Should be on the right view"); - - var pos = 0; - var scrollbox = gWin.document.getElementById("select-scrollbox"); - var scrollBoxObject = scrollbox.boxObject; - for (var row = gWin.document.getElementById("select-rows").firstChild; row; row = row.nextSibling) { - // Ignore separators but increase the position by a large amount so we - // can verify they were in the right place - if (row.localName == "separator") { - pos += 30; - continue; - } - - is(row._addon.type, "extension", "Should only be listing extensions"); - - // Ignore non-test add-ons that may be present - if (row.id.substr(-18) != "@tests.mozilla.org") - continue; - - var id = parseInt(row.id.substring(4, row.id.length - 18)); - var addon = ADDONS[id]; - - info("Testing add-on " + id); - scrollBoxObject.ensureElementIsVisible(row); - var keep = gWin.document.getAnonymousElementByAttribute(row, "anonid", "keep"); - var action = gWin.document.getAnonymousElementByAttribute(row, "class", "addon-action-message"); - var update = gWin.document.getAnonymousElementByAttribute(row, "anonid", "update"); - var source = gWin.document.getAnonymousElementByAttribute(row, "class", "addon-source"); - - if (id == 3 || id == 12 || id == 15) { - // Distro Installed To Profile - is(source.textContent, getSourceString(DIST), "Source message should have the right text for Distributed Addons"); - } else { - is(source.textContent, getSourceString(addon[6]), "Source message should have the right text"); - } - - // Non-profile add-ons don't appear to have updates since we won't install - // them - var hasUpdate = addon[4] && addon[6] == PROFILE; - - is(pos, addon[8], "Should have been in the right position"); - is(keep.checked, addon[7], "Keep checkbox should be in the right state"); - - check_state(); - - info("Flipping keep"); - EventUtils.synthesizeMouseAtCenter(keep, { }, gWin); - is(keep.checked, !addon[7], "Keep checkbox should be in the right state"); - - check_state(); - - pos++; - } - - is(pos, 60, "Should have seen the right number of add-ons"); - - run_next_test(); -}); diff --git a/toolkit/mozapps/extensions/test/browser/browser_select_update.js b/toolkit/mozapps/extensions/test/browser/browser_select_update.js deleted file mode 100644 index 58f1de687..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_select_update.js +++ /dev/null @@ -1,181 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests the update part of the post-app-update dialog - -var gProvider; -var gWin; - -function waitForView(aView, aCallback) { - var view = gWin.document.getElementById(aView); - if (view.parentNode.selectedPanel == view) { - aCallback(); - return; - } - - view.addEventListener("ViewChanged", function() { - view.removeEventListener("ViewChanged", arguments.callee, false); - aCallback(); - }, false); -} - -function waitForClose(aCallback) { - gWin.addEventListener("unload", function() { - gWin.removeEventListener("unload", arguments.callee, false); - - aCallback(); - }, false); -} - -/** - * Creates 4 test add-ons. Two are disabled and two enabled. - */ -function setupUI(aFailDownloads, aFailInstalls, aCallback) { - if (gProvider) - gProvider.unregister(); - - gProvider = new MockProvider(); - - for (var i = 1; i < 5; i++) { - var addon = new MockAddon("test" + i + "@tests.mozilla.org", - "Test Add-on " + i, "extension"); - addon.version = "1.0"; - addon.userDisabled = (i > 2); - addon.appDisabled = false; - addon.isActive = !addon.userDisabled && !addon.appDisabled; - - addon.findUpdates = function(aListener, aReason, aAppVersion, aPlatformVersion) { - var newAddon = new MockAddon(this.id, this.name, "extension"); - newAddon.version = "2.0"; - var install = new MockInstall(this.name, this.type, newAddon); - install.existingAddon = this; - - install.install = function() { - this.state = AddonManager.STATE_DOWNLOADING; - this.callListeners("onDownloadStarted"); - - var self = this; - executeSoon(function() { - if (aFailDownloads) { - self.state = AddonManager.STATE_DOWNLOAD_FAILED; - self.callListeners("onDownloadFailed"); - return; - } - - self.type = self._type; - self.addon = new MockAddon(self.existingAddon.id, self.name, self.type); - self.addon.version = self.version; - self.addon.pendingOperations = AddonManager.PENDING_INSTALL; - self.addon.install = self; - - self.existingAddon.pendingUpgrade = self.addon; - self.existingAddon.pendingOperations |= AddonManager.PENDING_UPGRADE; - - self.state = AddonManager.STATE_DOWNLOADED; - self.callListeners("onDownloadEnded"); - - self.state = AddonManager.STATE_INSTALLING; - self.callListeners("onInstallStarted"); - - if (aFailInstalls) { - self.state = AddonManager.STATE_INSTALL_FAILED; - self.callListeners("onInstallFailed"); - return; - } - - self.state = AddonManager.STATE_INSTALLED; - self.callListeners("onInstallEnded"); - }); - } - - aListener.onUpdateAvailable(this, install); - - aListener.onUpdateFinished(this, AddonManager.UPDATE_STATUS_NO_ERROR); - }; - - gProvider.addAddon(addon); - } - - gWin = Services.ww.openWindow(null, - "chrome://mozapps/content/extensions/selectAddons.xul", - "", - "chrome,centerscreen,dialog,titlebar", - null); - waitForFocus(function() { - waitForView("select", function() { - var row = gWin.document.getElementById("select-rows").firstChild.nextSibling; - while (row) { - if (!row.id || row.id.indexOf("@tests.mozilla.org") < 0) { - // not a test add-on - row = row.nextSibling; - continue; - } - - if (row.id == "test2@tests.mozilla.org" || - row.id == "test4@tests.mozilla.org") { - row.disable(); - } - else { - row.keep(); - } - row = row.nextSibling; - } - - waitForView("confirm", function() { - waitForView("update", aCallback); - EventUtils.synthesizeMouseAtCenter(gWin.document.getElementById("next"), {}, gWin); - }); - EventUtils.synthesizeMouseAtCenter(gWin.document.getElementById("next"), {}, gWin); - }); - }, gWin); -} - -function test() { - waitForExplicitFinish(); - run_next_test(); -} - -function end_test() { - finish(); -} - -// Test for working updates -add_test(function working_test() { - setupUI(false, false, function() { - waitForClose(function() { - is(gWin.document.getElementById("update-progress").value, 2, "Should have finished 2 downloads"); - run_next_test(); - }); - - EventUtils.synthesizeMouseAtCenter(gWin.document.getElementById("next"), {}, gWin); - }); -}); - -// Test for failed updates -add_test(function working_test() { - setupUI(true, false, function() { - waitForView("errors", function() { - is(gWin.document.getElementById("update-progress").value, 2, "Should have finished 2 downloads"); - gWin.close(); - - run_next_test(); - }); - - EventUtils.synthesizeMouseAtCenter(gWin.document.getElementById("next"), {}, gWin); - }); -}); - -// Test for failed updates -add_test(function working_test() { - setupUI(false, true, function() { - waitForView("errors", function() { - is(gWin.document.getElementById("update-progress").value, 2, "Should have finished 2 downloads"); - gWin.close(); - - run_next_test(); - }); - - EventUtils.synthesizeMouseAtCenter(gWin.document.getElementById("next"), {}, gWin); - }); -}); diff --git a/toolkit/mozapps/extensions/test/browser/browser_sorting.js b/toolkit/mozapps/extensions/test/browser/browser_sorting.js deleted file mode 100644 index 7bf697b36..000000000 --- a/toolkit/mozapps/extensions/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, 04, 02, 00, 00, 00), - size: 1, - pendingOperations: AddonManager.PENDING_NONE, - }, { - id: "test2@tests.mozilla.org", - name: "a first add-on", - description: "foo", - updateDate: new Date(2010, 04, 01, 23, 59, 59), - size: 0265, - 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, 04, 02, 00, 00, 01), - size: 12, - pendingOperations: AddonManager.PENDING_INSTALL, - isActive: false, - }, { - id: "test4@tests.mozilla.org", - name: "canadian dictionary", - updateDate: new Date(1970, 0, 01, 00, 00, 00), - description: "foo", - isActive: true, - }, { - id: "test5@tests.mozilla.org", - name: "croatian dictionary", - description: "foo", - updateDate: new Date(2012, 12, 12, 00, 00, 00), - 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, 04, 02, 00, 00, 00), - 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, 04, 01, 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, 04, 03, 00, 00, 01), - size: 125, - pendingOperations: AddonManager.PENDING_DISABLE, - }, { - id: "test9@tests.mozilla.org", - name: "red Add-on", - updateDate: new Date(2011, 04, 01, 00, 00, 00), - 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, 00, 00, 00), - 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, 04, 02, 00, 00, 00), - 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, 04, 01, 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, 04, 02, 00, 00, 01), - size: 125, - isActive: false, - userDisabled: true, - pendingOperations: AddonManager.PENDING_UNINSTALL, - }, { - id: "test14@tests.mozilla.org", - name: "Violet Add-on", - updateDate: new Date(2010, 05, 01, 00, 00, 00), - 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, 04, 12, 00, 00, 00), - 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, 04, 01, 00, 00, 00), - size: 142, - isActive: false, - appDisabled: true, - }, { - id: "test17@tests.mozilla.org", - name: "beamsville Add-on", - description: "foo", - updateDate: new Date(2010, 04, 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, 04, 03, 00, 00, 01), - size: 125, - isActive: false, - userDisabled: true, - blocklistState: Ci.nsIBlocklistService.STATE_OUTDATED, - }, { - id: "test19@tests.mozilla.org", - name: "dunnville Add-on", - updateDate: new Date(2010, 04, 02, 00, 00, 00), - 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, 04, 12, 00, 00, 00), - 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/extensions/test/browser/browser_sorting_plugins.js b/toolkit/mozapps/extensions/test/browser/browser_sorting_plugins.js deleted file mode 100644 index 2bb6b4ba4..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_tabsettings.js b/toolkit/mozapps/extensions/test/browser/browser_tabsettings.js deleted file mode 100644 index 2838698c7..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_task_next_test.js b/toolkit/mozapps/extensions/test/browser/browser_task_next_test.js deleted file mode 100644 index 5ff2aff78..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_types.js b/toolkit/mozapps/extensions/test/browser/browser_types.js deleted file mode 100644 index 8abb0ff73..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_uninstalling.js b/toolkit/mozapps/extensions/test/browser/browser_uninstalling.js deleted file mode 100644 index 9fcb9de66..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_uninstalling.js +++ /dev/null @@ -1,1099 +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"); - - 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 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 not be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - 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 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"); - - 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 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"); - - 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 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"); - - 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 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"); - - 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 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(gDocument.getElementById("view-port").selectedPanel.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(gDocument.getElementById("view-port").selectedPanel.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(gDocument.getElementById("view-port").selectedPanel.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"); - - 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"); - - 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"); - - 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"); - - 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("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/extensions/test/browser/browser_updateid.js b/toolkit/mozapps/extensions/test/browser/browser_updateid.js deleted file mode 100644 index a6672e825..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_updateid.js +++ /dev/null @@ -1,80 +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"); - is(item._version.value, "1.0", "Should still show the old version in the normal list"); - var name = gManagerWindow.document.getAnonymousElementByAttribute(item, "anonid", "name"); - is(name.value, "manually updating addon", "Should show the old name in the list"); - 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/extensions/test/browser/browser_updatessl.js b/toolkit/mozapps/extensions/test/browser/browser_updatessl.js deleted file mode 100644 index 7a9149aa5..000000000 --- a/toolkit/mozapps/extensions/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/ - */ - -let tempScope = {}; -Components.utils.import("resource://gre/modules/addons/AddonUpdateChecker.jsm", tempScope); -let 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/extensions/test/browser/browser_updatessl.rdf b/toolkit/mozapps/extensions/test/browser/browser_updatessl.rdf deleted file mode 100644 index f24573847..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/browser_updatessl.rdf^headers^ b/toolkit/mozapps/extensions/test/browser/browser_updatessl.rdf^headers^ deleted file mode 100644 index 2e4f8163b..000000000 --- a/toolkit/mozapps/extensions/test/browser/browser_updatessl.rdf^headers^ +++ /dev/null @@ -1 +0,0 @@ -Connection: close diff --git a/toolkit/mozapps/extensions/test/browser/cancelCompatCheck.sjs b/toolkit/mozapps/extensions/test/browser/cancelCompatCheck.sjs deleted file mode 100644 index 38bc25d08..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/discovery.html b/toolkit/mozapps/extensions/test/browser/discovery.html deleted file mode 100644 index 72f4fe374..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/discovery_frame.html b/toolkit/mozapps/extensions/test/browser/discovery_frame.html deleted file mode 100644 index ca0223a9c..000000000 --- a/toolkit/mozapps/extensions/test/browser/discovery_frame.html +++ /dev/null @@ -1,6 +0,0 @@ -<!DOCTYPE html> - -<html> -<body> -<iframe id="frame" width="100%" height="100%" src="https://test1.example.com/browser/toolkit/mozapps/extensions/test/browser/discovery_install.html"></iframe> -</body> diff --git a/toolkit/mozapps/extensions/test/browser/discovery_install.html b/toolkit/mozapps/extensions/test/browser/discovery_install.html deleted file mode 100644 index 3832adff6..000000000 --- a/toolkit/mozapps/extensions/test/browser/discovery_install.html +++ /dev/null @@ -1,18 +0,0 @@ -<html> -<head> -<script type="text/javascript"> -function install() { - InstallTrigger.install({ - "Test Add-on": { - URL: "https://example.com/browser/toolkit/mozapps/extensions/test/xpinstall/unsigned.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/unsigned.xpi">Direct install</a></p> - <p><a id="install-js" href="javascript:install()">JS install</a></p> -</body> -</html> diff --git a/toolkit/mozapps/extensions/test/browser/head.js b/toolkit/mozapps/extensions/test/browser/head.js deleted file mode 100644 index 8e96b9b3f..000000000 --- a/toolkit/mozapps/extensions/test/browser/head.js +++ /dev/null @@ -1,1393 +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"); - -let tmp = {}; -Components.utils.import("resource://gre/modules/AddonManager.jsm", tmp); -Components.utils.import("resource://gre/modules/Log.jsm", tmp); -let AddonManager = tmp.AddonManager; -let AddonManagerPrivate = tmp.AddonManagerPrivate; -let 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 TESTROOT2 = "http://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_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") { - 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: "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: "devtools.debugger.remote-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); - -// 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. -let 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() -let backgroundUpdateConfig = "@mozilla.org/addons/integration;1,getService,addon-background-update-timer,extensions.update.interval,86400"; -let blocklistUpdateConfig = "@mozilla.org/extensions/blocklist;1,getService,blocklist-background-update-timer,extensions.blocklist.interval,86400"; - -let UTIMER = "update-timer"; -let AMANAGER = "addonManager"; -let 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)); -} - -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_test_items_in_list(aManager) { - var tests = "@tests.mozilla.org"; - - let view = aManager.document.getElementById("view-port").selectedPanel; - 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 = doc.getElementById("view-port").selectedPanel; - 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 = doc.getElementById("view-port").selectedPanel; - 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) { - return Cc["@mozilla.org/intl/scriptabledateformat;1"] - .getService(Ci.nsIScriptableDateFormat) - .FormatDate("", - Ci.nsIScriptableDateFormat.dateFormatLong, - aDate.getFullYear(), - aDate.getMonth() + 1, - aDate.getDate() - ); -} - -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")); -} - -/** - * 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(function(aOldAddon) aOldAddon.id == aAddon.id); - var oldAddon = oldAddons.length > 0 ? oldAddons[0] : null; - - this.addons = this.addons.filter(function(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.isDebuggable = false; - 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 || - (AddonManager.OP_NEEDS_RESTART_INSTALL | - AddonManager.OP_NEEDS_RESTART_UNINSTALL | - AddonManager.OP_NEEDS_RESTART_ENABLE | - AddonManager.OP_NEEDS_RESTART_DISABLE); -} - -MockAddon.prototype = { - 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); - }, - - _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) { - var 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 { - var 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; - } - - AddonManagerPrivate.callAddonListeners("onInstalling", this.addon); - - this.state = AddonManager.STATE_INSTALLED; - this.callListeners("onInstallEnded"); - break; - case AddonManager.STATE_DOWNLOADING: - case AddonManager.STATE_CHECKING: - case AddonManger.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(function(i) i == aListener)) - this.listeners.push(aListener); - }, - - removeListener: function(aListener) { - this.listeners = this.listeners.filter(function(i) i != aListener); - }, - - addTestListener: function(aListener) { - if (!this.testListeners.some(function(i) i == aListener)) - this.testListeners.push(aListener); - }, - - removeTestListener: function(aListener) { - this.testListeners = this.testListeners.filter(function(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/extensions/test/browser/more_options.xul b/toolkit/mozapps/extensions/test/browser/more_options.xul deleted file mode 100644 index 4c8474a79..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/moz.build b/toolkit/mozapps/extensions/test/browser/moz.build deleted file mode 100644 index 9acb42133..000000000 --- a/toolkit/mozapps/extensions/test/browser/moz.build +++ /dev/null @@ -1,10 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; 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/extensions/test/browser/options.xul b/toolkit/mozapps/extensions/test/browser/options.xul deleted file mode 100644 index 1b6827915..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/plugin_test.html b/toolkit/mozapps/extensions/test/browser/plugin_test.html deleted file mode 100644 index 0709eda06..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/redirect.sjs b/toolkit/mozapps/extensions/test/browser/redirect.sjs deleted file mode 100644 index 8f9d1c08a..000000000 --- a/toolkit/mozapps/extensions/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/extensions/test/browser/releaseNotes.xhtml b/toolkit/mozapps/extensions/test/browser/releaseNotes.xhtml deleted file mode 100644 index 63ae07901..000000000 --- a/toolkit/mozapps/extensions/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> |