toolkit/mozapps/extensions/test/browser/browser_details.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/
     3  */
     5 // Tests various aspects of the details view
     7 const PREF_AUTOUPDATE_DEFAULT = "extensions.update.autoUpdateDefault"
     8 const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url";
     9 const SEARCH_URL = TESTROOT + "browser_details.xml";
    10 const PREF_EM_HOTFIX_ID = "extensions.hotfix.id";
    12 var gManagerWindow;
    13 var gCategoryUtilities;
    14 var gProvider;
    16 var gApp = document.getElementById("bundle_brand").getString("brandShortName");
    17 var gVersion = Services.appinfo.version;
    18 var gBlocklistURL = Services.urlFormatter.formatURLPref("extensions.blocklist.detailsURL");
    19 var gPluginURL = Services.urlFormatter.formatURLPref("plugins.update.url");
    20 var gDate = new Date(2010, 7, 1);
    22 function open_details(aId, aType, aCallback) {
    23   requestLongerTimeout(2);
    25   gCategoryUtilities.openType(aType, function() {
    26     var list = gManagerWindow.document.getElementById("addon-list");
    27     var item = list.firstChild;
    28     while (item) {
    29       if ("mAddon" in item && item.mAddon.id == aId) {
    30         list.ensureElementIsVisible(item);
    31         EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow);
    32         EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow);
    33         wait_for_view_load(gManagerWindow, aCallback);
    34         return;
    35       }
    36       item = item.nextSibling;
    37     }
    38     ok(false, "Should have found the add-on in the list");
    39   });
    40 }
    42 function get(aId) {
    43   return gManagerWindow.document.getElementById(aId);
    44 }
    46 function test() {
    47   requestLongerTimeout(2);
    48   // Turn on searching for this test
    49   Services.prefs.setIntPref(PREF_SEARCH_MAXRESULTS, 15);
    50   Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, SEARCH_URL);
    51   Services.prefs.setCharPref(PREF_EM_HOTFIX_ID, "hotfix@tests.mozilla.org");
    53   waitForExplicitFinish();
    55   gProvider = new MockProvider();
    57   gProvider.createAddons([{
    58     id: "addon1@tests.mozilla.org",
    59     name: "Test add-on 1",
    60     version: "2.1",
    61     description: "Short description",
    62     fullDescription: "Longer description",
    63     type: "extension",
    64     iconURL: "chrome://foo/skin/icon.png",
    65     icon64URL: "chrome://foo/skin/icon64.png",
    66     contributionURL: "http://foo.com",
    67     contributionAmount: "$0.99",
    68     sourceURI: Services.io.newURI("http://example.com/foo", null, null),
    69     averageRating: 4,
    70     reviewCount: 5,
    71     reviewURL: "http://example.com/reviews",
    72     homepageURL: "http://example.com/addon1",
    73     applyBackgroundUpdates: AddonManager.AUTOUPDATE_ENABLE
    74   }, {
    75     id: "addon2@tests.mozilla.org",
    76     name: "Test add-on 2",
    77     version: "2.2",
    78     description: "Short description",
    79     creator: { name: "Mozilla", url: null },
    80     type: "extension",
    81     iconURL: "chrome://foo/skin/icon.png",
    82     contributionURL: "http://foo.com",
    83     contributionAmount: null,
    84     updateDate: gDate,
    85     permissions: 0,
    86     screenshots: [{
    87       url: "chrome://branding/content/about.png",
    88       width: 200,
    89       height: 150
    90     }],
    91   }, {
    92     id: "addon3@tests.mozilla.org",
    93     name: "Test add-on 3",
    94     description: "Short description",
    95     creator: { name: "Mozilla", url: "http://www.mozilla.org" },
    96     type: "extension",
    97     sourceURI: Services.io.newURI("http://example.com/foo", null, null),
    98     updateDate: gDate,
    99     reviewCount: 1,
   100     reviewURL: "http://example.com/reviews",
   101     applyBackgroundUpdates: AddonManager.AUTOUPDATE_DISABLE,
   102     isActive: false,
   103     isCompatible: false,
   104     appDisabled: true,
   105     permissions: AddonManager.PERM_CAN_ENABLE |
   106                  AddonManager.PERM_CAN_DISABLE |
   107                  AddonManager.PERM_CAN_UPGRADE,
   108     screenshots: [{
   109       url: "http://example.com/screenshot",
   110       width: 400,
   111       height: 300,
   112       thumbnailURL: "chrome://branding/content/icon64.png",
   113       thumbnailWidth: 160,
   114       thumbnailHeight: 120
   115     }],
   116   }, {
   117     id: "addon4@tests.mozilla.org",
   118     blocklistURL: "http://example.com/addon4@tests.mozilla.org",
   119     name: "Test add-on 4",
   120     _userDisabled: true,
   121     isActive: false,
   122     blocklistState: Ci.nsIBlocklistService.STATE_SOFTBLOCKED
   123   }, {
   124     id: "addon5@tests.mozilla.org",
   125     blocklistURL: "http://example.com/addon5@tests.mozilla.org",
   126     name: "Test add-on 5",
   127     isActive: false,
   128     blocklistState: Ci.nsIBlocklistService.STATE_BLOCKED,
   129     appDisabled: true
   130   }, {
   131     id: "addon6@tests.mozilla.org",
   132     blocklistURL: "http://example.com/addon6@tests.mozilla.org",
   133     name: "Test add-on 6",
   134     operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE
   135   }, {
   136     id: "addon7@tests.mozilla.org",
   137     blocklistURL: "http://example.com/addon7@tests.mozilla.org",
   138     name: "Test add-on 7",
   139     _userDisabled: true,
   140     isActive: false
   141   }, {
   142     id: "addon8@tests.mozilla.org",
   143     blocklistURL: "http://example.com/addon8@tests.mozilla.org",
   144     name: "Test add-on 8",
   145     blocklistState: Ci.nsIBlocklistService.STATE_OUTDATED
   146   }, {
   147     id: "hotfix@tests.mozilla.org",
   148     name: "Test hotfix 1",
   149   }]);
   151   open_manager(null, function(aWindow) {
   152     gManagerWindow = aWindow;
   153     gCategoryUtilities = new CategoryUtilities(gManagerWindow);
   155     run_next_test();
   156   });
   157 }
   159 function end_test() {
   160   Services.prefs.clearUserPref(PREF_EM_HOTFIX_ID);
   161   close_manager(gManagerWindow, function() {
   162     finish();
   163   });
   164 }
   166 // Opens and tests the details view for add-on 1
   167 add_test(function() {
   168   open_details("addon1@tests.mozilla.org", "extension", function() {
   169     is(get("detail-name").textContent, "Test add-on 1", "Name should be correct");
   170     is_element_visible(get("detail-version"), "Version should not be hidden");
   171     is(get("detail-version").value, "2.1", "Version should be correct");
   172     is(get("detail-icon").src, "chrome://foo/skin/icon64.png", "Icon should be correct");
   173     is_element_hidden(get("detail-creator"), "Creator should be hidden");
   174     is_element_hidden(get("detail-screenshot"), "Screenshot should be hidden");
   175     is(get("detail-screenshot").width, "", "Screenshot dimensions should not be set");
   176     is(get("detail-screenshot").height, "", "Screenshot dimensions should not be set");
   177     is(get("detail-desc").textContent, "Short description", "Description should be correct");
   178     is(get("detail-fulldesc").textContent, "Longer description", "Full description should be correct");
   180     is_element_visible(get("detail-contributions"), "Contributions section should be visible");
   181     is_element_visible(get("detail-contrib-suggested"), "Contributions amount should be visible");
   182     ok(get("detail-contrib-suggested").value, "$0.99");
   184     is_element_visible(get("detail-updates-row"), "Updates should not be hidden");
   185     is_element_hidden(get("detail-dateUpdated"), "Update date should be hidden");
   187     is_element_visible(get("detail-rating-row"), "Rating row should not be hidden");
   188     is_element_visible(get("detail-rating"), "Rating should not be hidden");
   189     is(get("detail-rating").averageRating, 4, "Rating should be correct");
   190     is_element_visible(get("detail-reviews"), "Reviews should not be hidden");
   191     is(get("detail-reviews").href, "http://example.com/reviews", "Review URL should be correct");
   192     is(get("detail-reviews").value, "5 reviews", "Review text should be correct");
   194     is_element_visible(get("detail-homepage-row"), "Homepage should be visible");
   195     ok(get("detail-homepage").href, "http://example.com/addon1");
   196     is_element_hidden(get("detail-repository-row"), "Repository profile should not be visible");
   198     is_element_hidden(get("detail-size"), "Size should be hidden");
   200     is_element_hidden(get("detail-downloads"), "Downloads should be hidden");
   202     is_element_visible(get("detail-autoUpdate"), "Updates should not be hidden");
   203     ok(get("detail-autoUpdate").childNodes[1].selected, "Updates ahould be automatic");
   204     is_element_hidden(get("detail-findUpdates-btn"), "Check for updates should be hidden");
   205     EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").lastChild, {}, gManagerWindow);
   206     ok(get("detail-autoUpdate").lastChild.selected, "Updates should be manual");
   207     is_element_visible(get("detail-findUpdates-btn"), "Check for updates should be visible");
   208     EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").firstChild, {}, gManagerWindow);
   209     ok(get("detail-autoUpdate").firstChild.selected, "Updates should be automatic");
   210     is_element_hidden(get("detail-findUpdates-btn"), "Check for updates should be hidden");
   212     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   213     is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   214     is_element_visible(get("detail-disable-btn"), "Disable button should be visible");
   215     is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   217     is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   218     is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   219     is_element_hidden(get("detail-error"), "Error message should be hidden");
   220     is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   222     // Disable it
   223     EventUtils.synthesizeMouseAtCenter(get("detail-disable-btn"), {}, gManagerWindow);
   224     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   225     is_element_visible(get("detail-enable-btn"), "Enable button should be visible");
   226     is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden");
   227     is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   229     is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   230     is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   231     is_element_hidden(get("detail-error"), "Error message should be hidden");
   232     is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   233     is_element_visible(get("detail-pending"), "Pending message should be visible");
   234     is(get("detail-pending").textContent, "Test add-on 1 will be disabled after you restart " + gApp + ".", "Pending message should be correct");
   236     // Reopen it
   237     open_details("addon1@tests.mozilla.org", "extension", function() {
   238       is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   239       is_element_visible(get("detail-enable-btn"), "Enable button should be visible");
   240       is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden");
   241       is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   243       is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   244       is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   245       is_element_hidden(get("detail-error"), "Error message should be hidden");
   246       is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   247       is_element_visible(get("detail-pending"), "Pending message should be visible");
   248       is(get("detail-pending").textContent, "Test add-on 1 will be disabled after you restart " + gApp + ".", "Pending message should be correct");
   250       // Undo disabling
   251       EventUtils.synthesizeMouseAtCenter(get("detail-undo-btn"), {}, gManagerWindow);
   252       is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   253       is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   254       is_element_visible(get("detail-disable-btn"), "Disable button should be visible");
   255       is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   257       is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   258       is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   259       is_element_hidden(get("detail-error"), "Error message should be hidden");
   260       is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   261       is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   263       run_next_test();
   264     });
   265   });
   266 });
   268 // Opens and tests the details view for add-on 2
   269 add_test(function() {
   270   open_details("addon2@tests.mozilla.org", "extension", function() {
   271     is(get("detail-name").textContent, "Test add-on 2", "Name should be correct");
   272     is_element_visible(get("detail-version"), "Version should not be hidden");
   273     is(get("detail-version").value, "2.2", "Version should be correct");
   274     is(get("detail-icon").src, "chrome://foo/skin/icon.png", "Icon should be correct");
   276     is_element_visible(get("detail-creator"), "Creator should not be hidden");
   277     is_element_visible(get("detail-creator")._creatorName, "Creator name should not be hidden");
   278     is(get("detail-creator")._creatorName.value, "Mozilla", "Creator should be correct");
   279     is_element_hidden(get("detail-creator")._creatorLink, "Creator link should be hidden");
   281     is_element_visible(get("detail-screenshot"), "Screenshot should be visible");
   282     is(get("detail-screenshot").src, "chrome://branding/content/about.png", "Should be showing the full sized screenshot");
   283     is(get("detail-screenshot").width, 200, "Screenshot dimensions should be set");
   284     is(get("detail-screenshot").height, 150, "Screenshot dimensions should be set");
   285     is(get("detail-screenshot").hasAttribute("loading"), true, "Screenshot should have loading attribute");
   286     is(get("detail-desc").textContent, "Short description", "Description should be correct");
   287     is_element_hidden(get("detail-fulldesc"), "Full description should be hidden");
   289     is_element_visible(get("detail-contributions"), "Contributions section should be visible");
   290     is_element_hidden(get("detail-contrib-suggested"), "Contributions amount should be hidden");
   292     is_element_visible(get("detail-dateUpdated"), "Update date should not be hidden");
   293     is(get("detail-dateUpdated").value, formatDate(gDate), "Update date should be correct");
   295     is_element_hidden(get("detail-rating-row"), "Rating should be hidden");
   297     is_element_hidden(get("detail-homepage-row"), "Homepage should not be visible");
   298     is_element_hidden(get("detail-repository-row"), "Repository profile should not be visible");
   300     is_element_hidden(get("detail-size"), "Size should be hidden");
   302     is_element_hidden(get("detail-downloads"), "Downloads should be hidden");
   304     is_element_hidden(get("detail-updates-row"), "Updates should be hidden");
   306     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   307     is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   308     is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden");
   309     is_element_hidden(get("detail-uninstall-btn"), "Remove button should be hidden");
   311     is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   312     is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   313     is_element_hidden(get("detail-error"), "Error message should be hidden");
   314     is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   315     is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   317     get("detail-screenshot").addEventListener("load", function() {
   318       this.removeEventListener("load", arguments.callee, false);
   319       is(this.hasAttribute("loading"), false, "Screenshot should not have loading attribute");
   320       run_next_test();
   321     }, false);
   322   });
   323 });
   325 // Opens and tests the details view for add-on 3
   326 add_test(function() {
   327   open_details("addon3@tests.mozilla.org", "extension", function() {
   328     is(get("detail-name").textContent, "Test add-on 3", "Name should be correct");
   329     is_element_hidden(get("detail-version"), "Version should be hidden");
   330     is(get("detail-icon").src, "", "Icon should be correct");
   332     is_element_visible(get("detail-creator"), "Creator should not be hidden");
   333     is_element_hidden(get("detail-creator")._creatorName, "Creator name should be hidden");
   334     is_element_visible(get("detail-creator")._creatorLink, "Creator link should not be hidden");
   335     is(get("detail-creator")._creatorLink.value, "Mozilla", "Creator link should be correct");
   336     is(get("detail-creator")._creatorLink.href, "http://www.mozilla.org", "Creator link href should be correct");
   338     is_element_visible(get("detail-screenshot"), "Screenshot should be visible");
   339     is(get("detail-screenshot").src, "chrome://branding/content/icon64.png", "Should be showing the thumbnail");
   340     is(get("detail-screenshot").width, 160, "Screenshot dimensions should be set");
   341     is(get("detail-screenshot").height, 120, "Screenshot dimensions should be set");
   342     is(get("detail-screenshot").hasAttribute("loading"), true, "Screenshot should have loading attribute");
   344     is_element_hidden(get("detail-contributions"), "Contributions section should be hidden");
   346     is_element_visible(get("detail-updates-row"), "Updates should not be hidden");
   347     is_element_visible(get("detail-dateUpdated"), "Update date should not be hidden");
   348     is(get("detail-dateUpdated").value, formatDate(gDate), "Update date should be correct");
   350     is_element_visible(get("detail-rating-row"), "Rating row should not be hidden");
   351     is_element_hidden(get("detail-rating"), "Rating should be hidden");
   352     is_element_visible(get("detail-reviews"), "Reviews should not be hidden");
   353     is(get("detail-reviews").href, "http://example.com/reviews", "Review URL should be correct");
   354     is(get("detail-reviews").value, "1 review", "Review text should be correct");
   356     is_element_hidden(get("detail-size"), "Size should be hidden");
   358     is_element_hidden(get("detail-downloads"), "Downloads should be hidden");
   360     is_element_visible(get("detail-autoUpdate"), "Updates should not be hidden");
   361     ok(get("detail-autoUpdate").lastChild.selected, "Updates should be manual");
   362     is_element_visible(get("detail-findUpdates-btn"), "Check for updates should be visible");
   363     EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").childNodes[1], {}, gManagerWindow);
   364     ok(get("detail-autoUpdate").childNodes[1].selected, "Updates should be automatic");
   365     is_element_hidden(get("detail-findUpdates-btn"), "Check for updates should be hidden");
   366     EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").lastChild, {}, gManagerWindow);
   367     ok(get("detail-autoUpdate").lastChild.selected, "Updates should be manual");
   368     is_element_visible(get("detail-findUpdates-btn"), "Check for updates should be visible");
   370     info("Setting " + PREF_AUTOUPDATE_DEFAULT + " to true");
   371     Services.prefs.setBoolPref(PREF_AUTOUPDATE_DEFAULT, true);
   372     EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").firstChild, {}, gManagerWindow);
   373     ok(get("detail-autoUpdate").firstChild.selected, "Updates should be default");
   374     is_element_hidden(get("detail-findUpdates-btn"), "Check for updates should be hidden");
   376     info("Setting " + PREF_AUTOUPDATE_DEFAULT + " to false");
   377     Services.prefs.setBoolPref(PREF_AUTOUPDATE_DEFAULT, false);
   378     ok(get("detail-autoUpdate").firstChild.selected, "Updates should be default");
   379     is_element_visible(get("detail-findUpdates-btn"), "Check for updates should be visible");
   380     EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").childNodes[1], {}, gManagerWindow);
   381     ok(get("detail-autoUpdate").childNodes[1].selected, "Updates should be automatic");
   382     is_element_hidden(get("detail-findUpdates-btn"), "Check for updates should be hidden");
   383     EventUtils.synthesizeMouseAtCenter(get("detail-autoUpdate").firstChild, {}, gManagerWindow);
   384     ok(get("detail-autoUpdate").firstChild.selected, "Updates should be default");
   385     is_element_visible(get("detail-findUpdates-btn"), "Check for updates should be visible");
   386     Services.prefs.clearUserPref(PREF_AUTOUPDATE_DEFAULT);
   388     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   389     is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   390     is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden");
   391     is_element_hidden(get("detail-uninstall-btn"), "Remove button should be hidden");
   393     is_element_visible(get("detail-warning"), "Warning message should be visible");
   394     is(get("detail-warning").textContent, "Test add-on 3 is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct");
   395     is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   396     is_element_hidden(get("detail-error"), "Error message should be hidden");
   397     is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   398     is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   400     get("detail-screenshot").addEventListener("load", function() {
   401       this.removeEventListener("load", arguments.callee, false);
   402       is(this.hasAttribute("loading"), false, "Screenshot should not have loading attribute");
   403       run_next_test();
   404     }, false);
   405   });
   406 });
   408 // Opens and tests the details view for add-on 4
   409 add_test(function() {
   410   open_details("addon4@tests.mozilla.org", "extension", function() {
   411     is(get("detail-name").textContent, "Test add-on 4", "Name should be correct");
   413     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   414     is_element_visible(get("detail-enable-btn"), "Enable button should be visible");
   415     is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden");
   416     is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   418     is_element_visible(get("detail-warning"), "Warning message should be visible");
   419     is(get("detail-warning").textContent, "Test add-on 4 is known to cause security or stability issues.", "Warning message should be correct");
   420     is_element_visible(get("detail-warning-link"), "Warning link should be visible");
   421     is(get("detail-warning-link").value, "More Information", "Warning link text should be correct");
   422     is(get("detail-warning-link").href, "http://example.com/addon4@tests.mozilla.org", "Warning link should be correct");
   423     is_element_hidden(get("detail-error"), "Error message should be hidden");
   424     is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   425     is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   427     // Enable it
   428     EventUtils.synthesizeMouseAtCenter(get("detail-enable-btn"), {}, gManagerWindow);
   429     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   430     is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   431     is_element_visible(get("detail-disable-btn"), "Disable button should be visible");
   432     is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   434     is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   435     is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   436     is_element_hidden(get("detail-error"), "Error message should be hidden");
   437     is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   438     is_element_visible(get("detail-pending"), "Pending message should be visible");
   439     is(get("detail-pending").textContent, "Test add-on 4 will be enabled after you restart " + gApp + ".", "Pending message should be correct");
   441     // Reopen it
   442     open_details("addon4@tests.mozilla.org", "extension", function() {
   443       is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   444       is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   445       is_element_visible(get("detail-disable-btn"), "Disable button should be visible");
   446       is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   448       is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   449       is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   450       is_element_hidden(get("detail-error"), "Error message should be hidden");
   451       is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   452       is_element_visible(get("detail-pending"), "Pending message should be visible");
   453       is(get("detail-pending").textContent, "Test add-on 4 will be enabled after you restart " + gApp + ".", "Pending message should be correct");
   455       // Undo enabling
   456       EventUtils.synthesizeMouseAtCenter(get("detail-undo-btn"), {}, gManagerWindow);
   457       is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   458       is_element_visible(get("detail-enable-btn"), "Enable button should be visible");
   459       is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden");
   460       is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   462       is_element_visible(get("detail-warning"), "Warning message should be visible");
   463       is(get("detail-warning").textContent, "Test add-on 4 is known to cause security or stability issues.", "Warning message should be correct");
   464       is_element_visible(get("detail-warning-link"), "Warning link should be visible");
   465       is(get("detail-warning-link").value, "More Information", "Warning link text should be correct");
   466       is(get("detail-warning-link").href, "http://example.com/addon4@tests.mozilla.org", "Warning link should be correct");
   467       is_element_hidden(get("detail-error"), "Error message should be hidden");
   468       is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   469       is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   471       run_next_test();
   472     });
   473   });
   474 });
   476 // Opens and tests the details view for add-on 5
   477 add_test(function() {
   478   open_details("addon5@tests.mozilla.org", "extension", function() {
   479     is(get("detail-name").textContent, "Test add-on 5", "Name should be correct");
   481     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   482     is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   483     is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden");
   484     is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   486     is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   487     is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   488     is_element_visible(get("detail-error"), "Error message should be visible");
   489     is(get("detail-error").textContent, "Test add-on 5 has been disabled due to security or stability issues.", "Error message should be correct");
   490     is_element_visible(get("detail-error-link"), "Error link should be visible");
   491     is(get("detail-error-link").value, "More Information", "Error link text should be correct");
   492     is(get("detail-error-link").href, "http://example.com/addon5@tests.mozilla.org", "Error link should be correct");
   493     is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   495     run_next_test();
   496   });
   497 });
   499 // Opens and tests the details view for add-on 6
   500 add_test(function() {
   501   open_details("addon6@tests.mozilla.org", "extension", function() {
   502     is(get("detail-name").textContent, "Test add-on 6", "Name should be correct");
   504     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   505     is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   506     is_element_visible(get("detail-disable-btn"), "Disable button should be visible");
   507     is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   509     is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   510     is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   511     is_element_hidden(get("detail-error"), "Error message should be hidden");
   512     is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   513     is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   515     // Disable it
   516     EventUtils.synthesizeMouseAtCenter(get("detail-disable-btn"), {}, gManagerWindow);
   517     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   518     is_element_visible(get("detail-enable-btn"), "Enable button should be visible");
   519     is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden");
   520     is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   522     is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   523     is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   524     is_element_hidden(get("detail-error"), "Error message should be hidden");
   525     is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   526     is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   528     // Reopen it
   529     open_details("addon6@tests.mozilla.org", "extension", function() {
   530       is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   531       is_element_visible(get("detail-enable-btn"), "Enable button should be visible");
   532       is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden");
   533       is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   535       is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   536       is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   537       is_element_hidden(get("detail-error"), "Error message should be hidden");
   538       is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   539       is_element_hidden(get("detail-pending"), "Pending message should be visible");
   541       // Enable it
   542       EventUtils.synthesizeMouseAtCenter(get("detail-enable-btn"), {}, gManagerWindow);
   543       is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   544       is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   545       is_element_visible(get("detail-disable-btn"), "Disable button should be visible");
   546       is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   548       is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   549       is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   550       is_element_hidden(get("detail-error"), "Error message should be hidden");
   551       is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   552       is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   554       run_next_test();
   555     });
   556   });
   557 });
   559 // Opens and tests the details view for add-on 7
   560 add_test(function() {
   561   open_details("addon7@tests.mozilla.org", "extension", function() {
   562     is(get("detail-name").textContent, "Test add-on 7", "Name should be correct");
   564     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   565     is_element_visible(get("detail-enable-btn"), "Enable button should be visible");
   566     is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden");
   567     is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   569     is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   570     is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   571     is_element_hidden(get("detail-error"), "Error message should be hidden");
   572     is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   573     is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   575     // Enable it
   576     EventUtils.synthesizeMouseAtCenter(get("detail-enable-btn"), {}, gManagerWindow);
   577     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   578     is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   579     is_element_visible(get("detail-disable-btn"), "Disable button should be visible");
   580     is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   582     is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   583     is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   584     is_element_hidden(get("detail-error"), "Error message should be hidden");
   585     is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   586     is_element_visible(get("detail-pending"), "Pending message should be visible");
   587     is(get("detail-pending").textContent, "Test add-on 7 will be enabled after you restart " + gApp + ".", "Pending message should be correct");
   589     // Reopen it
   590     open_details("addon7@tests.mozilla.org", "extension", function() {
   591       is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   592       is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   593       is_element_visible(get("detail-disable-btn"), "Disable button should be visible");
   594       is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   596       is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   597       is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   598       is_element_hidden(get("detail-error"), "Error message should be hidden");
   599       is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   600       is_element_visible(get("detail-pending"), "Pending message should be visible");
   601       is(get("detail-pending").textContent, "Test add-on 7 will be enabled after you restart " + gApp + ".", "Pending message should be correct");
   603       // Undo enabling
   604       EventUtils.synthesizeMouseAtCenter(get("detail-undo-btn"), {}, gManagerWindow);
   605       is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   606       is_element_visible(get("detail-enable-btn"), "Enable button should be visible");
   607       is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden");
   608       is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   610       is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   611       is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   612       is_element_hidden(get("detail-error"), "Error message should be hidden");
   613       is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   614       is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   616       run_next_test();
   617     });
   618   });
   619 });
   621 // Opens and tests the details view for add-on 8
   622 add_test(function() {
   623   open_details("addon8@tests.mozilla.org", "extension", function() {
   624     is(get("detail-name").textContent, "Test add-on 8", "Name should be correct");
   626     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   627     is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   628     is_element_visible(get("detail-disable-btn"), "Disable button should be visible");
   629     is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   631     is_element_visible(get("detail-warning"), "Warning message should be visible");
   632     is(get("detail-warning").textContent, "An important update is available for Test add-on 8.", "Warning message should be correct");
   633     is_element_visible(get("detail-warning-link"), "Warning link should be visible");
   634     is(get("detail-warning-link").value, "Update Now", "Warning link text should be correct");
   635     is(get("detail-warning-link").href, gPluginURL, "Warning link should be correct");
   636     is_element_hidden(get("detail-error"), "Error message should be hidden");
   637     is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   638     is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   640     // Disable it
   641     EventUtils.synthesizeMouseAtCenter(get("detail-disable-btn"), {}, gManagerWindow);
   642     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   643     is_element_visible(get("detail-enable-btn"), "Enable button should be visible");
   644     is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden");
   645     is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   647     is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   648     is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   649     is_element_hidden(get("detail-error"), "Error message should be hidden");
   650     is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   651     is_element_visible(get("detail-pending"), "Pending message should be visible");
   652     is(get("detail-pending").textContent, "Test add-on 8 will be disabled after you restart " + gApp + ".", "Pending message should be correct");
   654     // Reopen it
   655     open_details("addon8@tests.mozilla.org", "extension", function() {
   656       is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   657       is_element_visible(get("detail-enable-btn"), "Enable button should be visible");
   658       is_element_hidden(get("detail-disable-btn"), "Disable button should be hidden");
   659       is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   661       is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   662       is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   663       is_element_hidden(get("detail-error"), "Error message should be hidden");
   664       is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   665       is_element_visible(get("detail-pending"), "Pending message should be visible");
   666       is(get("detail-pending").textContent, "Test add-on 8 will be disabled after you restart " + gApp + ".", "Pending message should be correct");
   668       // Undo disabling
   669       EventUtils.synthesizeMouseAtCenter(get("detail-undo-btn"), {}, gManagerWindow);
   670       is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   671       is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   672       is_element_visible(get("detail-disable-btn"), "Disable button should be visible");
   673       is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   675       is_element_visible(get("detail-warning"), "Warning message should be visible");
   676       is(get("detail-warning").textContent, "An important update is available for Test add-on 8.", "Warning message should be correct");
   677       is_element_visible(get("detail-warning-link"), "Warning link should be visible");
   678       is(get("detail-warning-link").value, "Update Now", "Warning link text should be correct");
   679       is(get("detail-warning-link").href, gPluginURL, "Warning link should be correct");
   680       is_element_hidden(get("detail-error"), "Error message should be hidden");
   681       is_element_hidden(get("detail-error-link"), "Error link should be hidden");
   682       is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   684       run_next_test();
   685     });
   686   });
   687 });
   689 // Opens and tests the details view for hotfix 1
   690 add_test(function() {
   691   open_details("hotfix@tests.mozilla.org", "extension", function() {
   692     is(get("detail-name").textContent, "Test hotfix 1", "Name should be correct");
   694     is_element_hidden(get("detail-updates-row"), "Updates should be hidden");
   696     is_element_hidden(get("detail-prefs-btn"), "Preferences button should be hidden");
   697     is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   698     is_element_visible(get("detail-disable-btn"), "Disable button should be visible");
   699     is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   701     is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   702     is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   703     is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   705     run_next_test();
   706   });
   707 });
   709 // Tests that upgrades with onExternalInstall apply immediately
   710 add_test(function() {
   711   open_details("addon1@tests.mozilla.org", "extension", function() {
   712     gProvider.createAddons([{
   713       id: "addon1@tests.mozilla.org",
   714       name: "Test add-on replacement",
   715       version: "2.5",
   716       description: "Short description replacement",
   717       fullDescription: "Longer description replacement",
   718       type: "extension",
   719       iconURL: "chrome://foo/skin/icon.png",
   720       icon64URL: "chrome://foo/skin/icon264.png",
   721       sourceURI: Services.io.newURI("http://example.com/foo", null, null),
   722       averageRating: 2,
   723       optionsURL: "chrome://foo/content/options.xul",
   724       applyBackgroundUpdates: AddonManager.AUTOUPDATE_ENABLE,
   725       operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE
   726     }]);
   728     is(get("detail-name").textContent, "Test add-on replacement", "Name should be correct");
   729     is_element_visible(get("detail-version"), "Version should not be hidden");
   730     is(get("detail-version").value, "2.5", "Version should be correct");
   731     is(get("detail-icon").src, "chrome://foo/skin/icon264.png", "Icon should be correct");
   732     is_element_hidden(get("detail-creator"), "Creator should be hidden");
   733     is_element_hidden(get("detail-screenshot"), "Screenshot should be hidden");
   734     is(get("detail-desc").textContent, "Short description replacement", "Description should be correct");
   735     is(get("detail-fulldesc").textContent, "Longer description replacement", "Full description should be correct");
   737     is_element_hidden(get("detail-contributions"), "Contributions section should be hidden");
   739     is_element_hidden(get("detail-dateUpdated"), "Update date should be hidden");
   741     is_element_visible(get("detail-rating-row"), "Rating row should not be hidden");
   742     is_element_visible(get("detail-rating"), "Rating should not be hidden");
   743     is(get("detail-rating").averageRating, 2, "Rating should be correct");
   744     is_element_hidden(get("detail-reviews"), "Reviews should be hidden");
   746     is_element_hidden(get("detail-homepage-row"), "Homepage should be hidden");
   748     is_element_hidden(get("detail-size"), "Size should be hidden");
   750     is_element_hidden(get("detail-downloads"), "Downloads should be hidden");
   752     is_element_visible(get("detail-prefs-btn"), "Preferences button should be visible");
   753     is_element_hidden(get("detail-enable-btn"), "Enable button should be hidden");
   754     is_element_visible(get("detail-disable-btn"), "Disable button should be visible");
   755     is_element_visible(get("detail-uninstall-btn"), "Remove button should be visible");
   757     is_element_hidden(get("detail-warning"), "Warning message should be hidden");
   758     is_element_hidden(get("detail-warning-link"), "Warning link should be hidden");
   759     is_element_hidden(get("detail-error"), "Error message should be hidden");
   760     is_element_hidden(get("detail-pending"), "Pending message should be hidden");
   762     run_next_test();
   763   });
   764 });
   766 // Check that onPropertyChanges for appDisabled updates the UI
   767 add_test(function() {
   768   info("Checking that onPropertyChanges for appDisabled updates the UI");
   770   AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) {
   771     aAddon.userDisabled = true;
   772     aAddon.isCompatible = true;
   773     aAddon.appDisabled = false;
   775     open_details("addon1@tests.mozilla.org", "extension", function() {
   776       is(get("detail-view").getAttribute("active"), "false", "Addon should not be marked as active");
   777       is_element_hidden(get("detail-warning"), "Warning message should not be visible");
   779       info("Making addon incompatible and appDisabled");
   780       aAddon.isCompatible = false;
   781       aAddon.appDisabled = true;
   783       is(get("detail-view").getAttribute("active"), "false", "Addon should not be marked as active");
   784       is_element_visible(get("detail-warning"), "Warning message should be visible");
   785       is(get("detail-warning").textContent, "Test add-on replacement is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct");
   787       run_next_test();
   788     });
   789   });
   790 });

mercurial