1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/mozapps/extensions/test/browser/browser_list.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,760 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ 1.6 + */ 1.7 + 1.8 +// Tests the list view 1.9 + 1.10 +let tempScope = {}; 1.11 +Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", tempScope); 1.12 +let LightweightThemeManager = tempScope.LightweightThemeManager; 1.13 + 1.14 + 1.15 +var gProvider; 1.16 +var gManagerWindow; 1.17 +var gCategoryUtilities; 1.18 + 1.19 +var gApp = document.getElementById("bundle_brand").getString("brandShortName"); 1.20 +var gVersion = Services.appinfo.version; 1.21 +var gBlocklistURL = Services.urlFormatter.formatURLPref("extensions.blocklist.detailsURL"); 1.22 +var gPluginURL = Services.urlFormatter.formatURLPref("plugins.update.url"); 1.23 +var gDate = new Date(2010, 7, 16); 1.24 + 1.25 +var gLWTheme = { 1.26 + id: "4", 1.27 + version: "1", 1.28 + name: "Bling", 1.29 + description: "SO MUCH BLING!", 1.30 + author: "Pixel Pusher", 1.31 + homepageURL: "http://mochi.test:8888/data/index.html", 1.32 + headerURL: "http://mochi.test:8888/data/header.png", 1.33 + footerURL: "http://mochi.test:8888/data/footer.png", 1.34 + previewURL: "http://mochi.test:8888/data/preview.png", 1.35 + iconURL: "http://mochi.test:8888/data/icon.png" 1.36 + }; 1.37 + 1.38 + 1.39 +function test() { 1.40 + waitForExplicitFinish(); 1.41 + 1.42 + gProvider = new MockProvider(); 1.43 + 1.44 + gProvider.createAddons([{ 1.45 + id: "addon1@tests.mozilla.org", 1.46 + name: "Test add-on", 1.47 + version: "1.0", 1.48 + description: "A test add-on", 1.49 + longDescription: " A longer description", 1.50 + updateDate: gDate 1.51 + }, { 1.52 + id: "addon2@tests.mozilla.org", 1.53 + name: "Test add-on 2", 1.54 + version: "2.0", 1.55 + longDescription: " A longer description", 1.56 + _userDisabled: true, 1.57 + isActive: false, 1.58 + }, { 1.59 + id: "addon3@tests.mozilla.org", 1.60 + name: "Test add-on 3", 1.61 + longDescription: " A longer description", 1.62 + isActive: false, 1.63 + isCompatible: false, 1.64 + appDisabled: true, 1.65 + permissions: AddonManager.PERM_CAN_ENABLE | 1.66 + AddonManager.PERM_CAN_DISABLE | 1.67 + AddonManager.PERM_CAN_UPGRADE 1.68 + }, { 1.69 + id: "addon4@tests.mozilla.org", 1.70 + blocklistURL: "http://example.com/addon4@tests.mozilla.org", 1.71 + name: "Test add-on 4", 1.72 + _userDisabled: true, 1.73 + isActive: false, 1.74 + blocklistState: Ci.nsIBlocklistService.STATE_SOFTBLOCKED 1.75 + }, { 1.76 + id: "addon5@tests.mozilla.org", 1.77 + blocklistURL: "http://example.com/addon5@tests.mozilla.org", 1.78 + name: "Test add-on 5", 1.79 + isActive: false, 1.80 + blocklistState: Ci.nsIBlocklistService.STATE_BLOCKED, 1.81 + appDisabled: true 1.82 + }, { 1.83 + id: "addon6@tests.mozilla.org", 1.84 + blocklistURL: "http://example.com/addon6@tests.mozilla.org", 1.85 + name: "Test add-on 6", 1.86 + operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE 1.87 + }, { 1.88 + id: "addon7@tests.mozilla.org", 1.89 + blocklistURL: "http://example.com/addon7@tests.mozilla.org", 1.90 + name: "Test add-on 7", 1.91 + blocklistState: Ci.nsIBlocklistService.STATE_OUTDATED, 1.92 + }, { 1.93 + id: "addon8@tests.mozilla.org", 1.94 + blocklistURL: "http://example.com/addon8@tests.mozilla.org", 1.95 + name: "Test add-on 8", 1.96 + blocklistState: Ci.nsIBlocklistService.STATE_VULNERABLE_UPDATE_AVAILABLE, 1.97 + }, { 1.98 + id: "addon9@tests.mozilla.org", 1.99 + blocklistURL: "http://example.com/addon9@tests.mozilla.org", 1.100 + name: "Test add-on 9", 1.101 + blocklistState: Ci.nsIBlocklistService.STATE_VULNERABLE_NO_UPDATE, 1.102 + }]); 1.103 + 1.104 + open_manager(null, function(aWindow) { 1.105 + gManagerWindow = aWindow; 1.106 + gCategoryUtilities = new CategoryUtilities(gManagerWindow); 1.107 + run_next_test(); 1.108 + }); 1.109 +} 1.110 + 1.111 +function end_test() { 1.112 + close_manager(gManagerWindow, function() { 1.113 + finish(); 1.114 + }); 1.115 +} 1.116 + 1.117 +function get_test_items() { 1.118 + var tests = "@tests.mozilla.org"; 1.119 + 1.120 + var items = {}; 1.121 + var item = gManagerWindow.document.getElementById("addon-list").firstChild; 1.122 + 1.123 + while (item) { 1.124 + if (item.mAddon.id.substring(item.mAddon.id.length - tests.length) == tests) 1.125 + items[item.mAddon.name] = item; 1.126 + item = item.nextSibling; 1.127 + } 1.128 + 1.129 + return items; 1.130 +} 1.131 + 1.132 +function get_node(parent, anonid) { 1.133 + return parent.ownerDocument.getAnonymousElementByAttribute(parent, "anonid", anonid); 1.134 +} 1.135 + 1.136 +function get_class_node(parent, cls) { 1.137 + return parent.ownerDocument.getAnonymousElementByAttribute(parent, "class", cls); 1.138 +} 1.139 + 1.140 +// Check that the list appears to have displayed correctly and trigger some 1.141 +// changes 1.142 +add_test(function() { 1.143 + gCategoryUtilities.openType("extension", function() { 1.144 + let items = get_test_items(); 1.145 + is(Object.keys(items).length, 9, "Should be nine add-ons installed"); 1.146 + 1.147 + info("Addon 1"); 1.148 + let addon = items["Test add-on"]; 1.149 + addon.parentNode.ensureElementIsVisible(addon); 1.150 + is(get_node(addon, "name").value, "Test add-on", "Name should be correct"); 1.151 + is_element_visible(get_node(addon, "version"), "Version should be visible"); 1.152 + is(get_node(addon, "version").value, "1.0", "Version should be correct"); 1.153 + is_element_visible(get_node(addon, "description"), "Description should be visible"); 1.154 + is(get_node(addon, "description").value, "A test add-on", "Description should be correct"); 1.155 + is_element_hidden(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be hidden"); 1.156 + is_element_hidden(get_class_node(addon, "update-postfix"), "Update postfix should be hidden"); 1.157 + is(get_node(addon, "date-updated").value, formatDate(gDate), "Update date should be correct"); 1.158 + 1.159 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.160 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.161 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.162 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.163 + 1.164 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.165 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.166 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.167 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.168 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.169 + 1.170 + info("Disabling"); 1.171 + EventUtils.synthesizeMouseAtCenter(get_node(addon, "disable-btn"), {}, gManagerWindow); 1.172 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.173 + is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); 1.174 + is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); 1.175 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.176 + 1.177 + is_element_hidden(get_node(addon, "warning"), "Warning message should be visible"); 1.178 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.179 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.180 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.181 + is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); 1.182 + is(get_node(addon, "pending").textContent, "Test add-on will be disabled after you restart " + gApp + ".", "Pending message should be correct"); 1.183 + 1.184 + info("Addon 2"); 1.185 + addon = items["Test add-on 2"]; 1.186 + addon.parentNode.ensureElementIsVisible(addon); 1.187 + is(get_node(addon, "name").value, "Test add-on 2", "Name should be correct"); 1.188 + is_element_visible(get_node(addon, "version"), "Version should be visible"); 1.189 + is(get_node(addon, "version").value, "2.0", "Version should be correct"); 1.190 + is_element_hidden(get_node(addon, "description"), "Description should be hidden"); 1.191 + is_element_visible(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be visible"); 1.192 + is_element_hidden(get_class_node(addon, "update-postfix"), "Update postfix should be hidden"); 1.193 + is(get_node(addon, "date-updated").value, "Unknown", "Date should be correct"); 1.194 + 1.195 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.196 + is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); 1.197 + is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); 1.198 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.199 + 1.200 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.201 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.202 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.203 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.204 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.205 + 1.206 + info("Enabling"); 1.207 + EventUtils.synthesizeMouseAtCenter(get_node(addon, "enable-btn"), {}, gManagerWindow); 1.208 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.209 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.210 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.211 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.212 + 1.213 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.214 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.215 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.216 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.217 + is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); 1.218 + is(get_node(addon, "pending").textContent, "Test add-on 2 will be enabled after you restart " + gApp + ".", "Pending message should be correct"); 1.219 + 1.220 + info("Addon 3"); 1.221 + addon = items["Test add-on 3"]; 1.222 + addon.parentNode.ensureElementIsVisible(addon); 1.223 + is(get_node(addon, "name").value, "Test add-on 3", "Name should be correct"); 1.224 + is_element_hidden(get_node(addon, "version"), "Version should be hidden"); 1.225 + 1.226 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.227 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.228 + is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); 1.229 + is_element_hidden(get_node(addon, "remove-btn"), "Remove button should be hidden"); 1.230 + 1.231 + is_element_visible(get_node(addon, "warning"), "Warning message should be visible"); 1.232 + is(get_node(addon, "warning").textContent, "Test add-on 3 is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); 1.233 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.234 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.235 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.236 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.237 + 1.238 + info("Addon 4"); 1.239 + addon = items["Test add-on 4"]; 1.240 + addon.parentNode.ensureElementIsVisible(addon); 1.241 + is(get_node(addon, "name").value, "Test add-on 4", "Name should be correct"); 1.242 + 1.243 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.244 + is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); 1.245 + is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); 1.246 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.247 + 1.248 + is_element_visible(get_node(addon, "warning"), "Warning message should be visible"); 1.249 + is(get_node(addon, "warning").textContent, "Test add-on 4 is known to cause security or stability issues.", "Warning message should be correct"); 1.250 + is_element_visible(get_node(addon, "warning-link"), "Warning link should be visible"); 1.251 + is(get_node(addon, "warning-link").value, "More Information", "Warning link text should be correct"); 1.252 + is(get_node(addon, "warning-link").href, "http://example.com/addon4@tests.mozilla.org", "Warning link should be correct"); 1.253 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.254 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.255 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.256 + 1.257 + info("Enabling"); 1.258 + EventUtils.synthesizeMouseAtCenter(get_node(addon, "enable-btn"), {}, gManagerWindow); 1.259 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.260 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.261 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.262 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.263 + 1.264 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.265 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.266 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.267 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.268 + is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); 1.269 + is(get_node(addon, "pending").textContent, "Test add-on 4 will be enabled after you restart " + gApp + ".", "Pending message should be correct"); 1.270 + 1.271 + info("Addon 5"); 1.272 + addon = items["Test add-on 5"]; 1.273 + addon.parentNode.ensureElementIsVisible(addon); 1.274 + is(get_node(addon, "name").value, "Test add-on 5", "Name should be correct"); 1.275 + 1.276 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.277 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.278 + is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); 1.279 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.280 + 1.281 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.282 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.283 + is_element_visible(get_node(addon, "error"), "Error message should be visible"); 1.284 + is(get_node(addon, "error").textContent, "Test add-on 5 has been disabled due to security or stability issues.", "Error message should be correct"); 1.285 + is_element_visible(get_node(addon, "error-link"), "Error link should be visible"); 1.286 + is(get_node(addon, "error-link").value, "More Information", "Error link text should be correct"); 1.287 + is(get_node(addon, "error-link").href, "http://example.com/addon5@tests.mozilla.org", "Error link should be correct"); 1.288 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.289 + 1.290 + info("Addon 6"); 1.291 + addon = items["Test add-on 6"]; 1.292 + addon.parentNode.ensureElementIsVisible(addon); 1.293 + is(get_node(addon, "name").value, "Test add-on 6", "Name should be correct"); 1.294 + is_element_hidden(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be hidden"); 1.295 + 1.296 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.297 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.298 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.299 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.300 + 1.301 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.302 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.303 + is_element_hidden(get_node(addon, "error"), "Error message should be visible"); 1.304 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.305 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.306 + 1.307 + info("Disabling"); 1.308 + EventUtils.synthesizeMouseAtCenter(get_node(addon, "disable-btn"), {}, gManagerWindow); 1.309 + is_element_visible(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be visible"); 1.310 + 1.311 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.312 + is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); 1.313 + is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); 1.314 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.315 + 1.316 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.317 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.318 + is_element_hidden(get_node(addon, "error"), "Error message should be visible"); 1.319 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.320 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.321 + 1.322 + info("Addon 7"); 1.323 + addon = items["Test add-on 7"]; 1.324 + addon.parentNode.ensureElementIsVisible(addon); 1.325 + is(get_node(addon, "name").value, "Test add-on 7", "Name should be correct"); 1.326 + 1.327 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.328 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.329 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.330 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.331 + 1.332 + is_element_visible(get_node(addon, "warning"), "Warning message should be hidden"); 1.333 + is(get_node(addon, "warning").textContent, "An important update is available for Test add-on 7.", "Warning message should be correct"); 1.334 + is_element_visible(get_node(addon, "warning-link"), "Warning link should be visible"); 1.335 + is(get_node(addon, "warning-link").value, "Update Now", "Warning link text should be correct"); 1.336 + is(get_node(addon, "warning-link").href, gPluginURL, "Warning link should be correct"); 1.337 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.338 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.339 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.340 + 1.341 + info("Disabling"); 1.342 + EventUtils.synthesizeMouseAtCenter(get_node(addon, "disable-btn"), {}, gManagerWindow); 1.343 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.344 + is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); 1.345 + is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); 1.346 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.347 + 1.348 + is_element_hidden(get_node(addon, "warning"), "Warning message should be visible"); 1.349 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.350 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.351 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.352 + is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); 1.353 + is(get_node(addon, "pending").textContent, "Test add-on 7 will be disabled after you restart " + gApp + ".", "Pending message should be correct"); 1.354 + 1.355 + info("Addon 8"); 1.356 + addon = items["Test add-on 8"]; 1.357 + addon.parentNode.ensureElementIsVisible(addon); 1.358 + is(get_node(addon, "name").value, "Test add-on 8", "Name should be correct"); 1.359 + 1.360 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.361 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.362 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.363 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.364 + 1.365 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.366 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.367 + is_element_visible(get_node(addon, "error"), "Error message should be visible"); 1.368 + is(get_node(addon, "error").textContent, "Test add-on 8 is known to be vulnerable and should be updated.", "Error message should be correct"); 1.369 + is_element_visible(get_node(addon, "error-link"), "Error link should be visible"); 1.370 + is(get_node(addon, "error-link").value, "Update Now", "Error link text should be correct"); 1.371 + is(get_node(addon, "error-link").href, "http://example.com/addon8@tests.mozilla.org", "Error link should be correct"); 1.372 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.373 + 1.374 + info("Addon 9"); 1.375 + addon = items["Test add-on 9"]; 1.376 + addon.parentNode.ensureElementIsVisible(addon); 1.377 + is(get_node(addon, "name").value, "Test add-on 9", "Name should be correct"); 1.378 + 1.379 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.380 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.381 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.382 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.383 + 1.384 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.385 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.386 + is_element_visible(get_node(addon, "error"), "Error message should be visible"); 1.387 + is(get_node(addon, "error").textContent, "Test add-on 9 is known to be vulnerable. Use with caution.", "Error message should be correct"); 1.388 + is_element_visible(get_node(addon, "error-link"), "Error link should be visible"); 1.389 + is(get_node(addon, "error-link").value, "More Information", "Error link text should be correct"); 1.390 + is(get_node(addon, "error-link").href, "http://example.com/addon9@tests.mozilla.org", "Error link should be correct"); 1.391 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.392 + 1.393 + run_next_test(); 1.394 + }); 1.395 +}); 1.396 + 1.397 +// Check the add-ons are now in the right state 1.398 +add_test(function() { 1.399 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.400 + "addon2@tests.mozilla.org", 1.401 + "addon4@tests.mozilla.org", 1.402 + "addon6@tests.mozilla.org"], 1.403 + function([a1, a2, a4, a6]) { 1.404 + is(a1.pendingOperations, AddonManager.PENDING_DISABLE, "Add-on 1 should be pending disable"); 1.405 + is(a2.pendingOperations, AddonManager.PENDING_ENABLE, "Add-on 2 should be pending enable"); 1.406 + is(a4.pendingOperations, AddonManager.PENDING_ENABLE, "Add-on 4 should be pending enable"); 1.407 + 1.408 + run_next_test(); 1.409 + }); 1.410 +}); 1.411 + 1.412 +// Reload the list to make sure the changes are still pending and that undoing 1.413 +// works 1.414 +add_test(function() { 1.415 + gCategoryUtilities.openType("plugin", function() { 1.416 + gCategoryUtilities.openType("extension", function() { 1.417 + let items = get_test_items(); 1.418 + is(Object.keys(items).length, 9, "Should be nine add-ons installed"); 1.419 + 1.420 + info("Addon 1"); 1.421 + let addon = items["Test add-on"]; 1.422 + addon.parentNode.ensureElementIsVisible(addon); 1.423 + is(get_node(addon, "name").value, "Test add-on", "Name should be correct"); 1.424 + is_element_visible(get_node(addon, "version"), "Version should be visible"); 1.425 + is(get_node(addon, "version").value, "1.0", "Version should be correct"); 1.426 + is_element_visible(get_node(addon, "description"), "Description should be visible"); 1.427 + is(get_node(addon, "description").value, "A test add-on", "Description should be correct"); 1.428 + is_element_hidden(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be hidden"); 1.429 + is_element_hidden(get_class_node(addon, "update-postfix"), "Update postfix should be hidden"); 1.430 + is(get_node(addon, "date-updated").value, formatDate(gDate), "Update date should be correct"); 1.431 + 1.432 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.433 + is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); 1.434 + is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); 1.435 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.436 + 1.437 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.438 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.439 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.440 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.441 + is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); 1.442 + is(get_node(addon, "pending").textContent, "Test add-on will be disabled after you restart " + gApp + ".", "Pending message should be correct"); 1.443 + 1.444 + info("Undoing"); 1.445 + EventUtils.synthesizeMouseAtCenter(get_node(addon, "undo-btn"), {}, gManagerWindow); 1.446 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.447 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.448 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.449 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.450 + 1.451 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.452 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.453 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.454 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.455 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.456 + 1.457 + info("Addon 2"); 1.458 + addon = items["Test add-on 2"]; 1.459 + addon.parentNode.ensureElementIsVisible(addon); 1.460 + is(get_node(addon, "name").value, "Test add-on 2", "Name should be correct"); 1.461 + is_element_visible(get_node(addon, "version"), "Version should be visible"); 1.462 + is(get_node(addon, "version").value, "2.0", "Version should be correct"); 1.463 + is_element_hidden(get_node(addon, "description"), "Description should be hidden"); 1.464 + is_element_visible(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be visible"); 1.465 + is_element_hidden(get_class_node(addon, "update-postfix"), "Update postfix should be hidden"); 1.466 + is(get_node(addon, "date-updated").value, "Unknown", "Date should be correct"); 1.467 + 1.468 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.469 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.470 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.471 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.472 + 1.473 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.474 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.475 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.476 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.477 + is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); 1.478 + is(get_node(addon, "pending").textContent, "Test add-on 2 will be enabled after you restart " + gApp + ".", "Pending message should be correct"); 1.479 + 1.480 + info("Undoing"); 1.481 + EventUtils.synthesizeMouseAtCenter(get_node(addon, "undo-btn"), {}, gManagerWindow); 1.482 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.483 + is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); 1.484 + is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); 1.485 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.486 + 1.487 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.488 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.489 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.490 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.491 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.492 + 1.493 + info("Addon 4"); 1.494 + addon = items["Test add-on 4"]; 1.495 + addon.parentNode.ensureElementIsVisible(addon); 1.496 + is(get_node(addon, "name").value, "Test add-on 4", "Name should be correct"); 1.497 + 1.498 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.499 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.500 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.501 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.502 + 1.503 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.504 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.505 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.506 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.507 + is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); 1.508 + is(get_node(addon, "pending").textContent, "Test add-on 4 will be enabled after you restart " + gApp + ".", "Pending message should be correct"); 1.509 + 1.510 + info("Undoing"); 1.511 + EventUtils.synthesizeMouseAtCenter(get_node(addon, "undo-btn"), {}, gManagerWindow); 1.512 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.513 + is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); 1.514 + is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); 1.515 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.516 + 1.517 + is_element_visible(get_node(addon, "warning"), "Warning message should be visible"); 1.518 + is(get_node(addon, "warning").textContent, "Test add-on 4 is known to cause security or stability issues.", "Warning message should be correct"); 1.519 + is_element_visible(get_node(addon, "warning-link"), "Warning link should be visible"); 1.520 + is(get_node(addon, "warning-link").value, "More Information", "Warning link text should be correct"); 1.521 + is(get_node(addon, "warning-link").href, "http://example.com/addon4@tests.mozilla.org", "Warning link should be correct"); 1.522 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.523 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.524 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.525 + 1.526 + info("Addon 6"); 1.527 + addon = items["Test add-on 6"]; 1.528 + addon.parentNode.ensureElementIsVisible(addon); 1.529 + is(get_node(addon, "name").value, "Test add-on 6", "Name should be correct"); 1.530 + is_element_visible(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be visible"); 1.531 + 1.532 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.533 + is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); 1.534 + is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); 1.535 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.536 + 1.537 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.538 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.539 + is_element_hidden(get_node(addon, "error"), "Error message should be visible"); 1.540 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.541 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.542 + 1.543 + info("Enabling"); 1.544 + EventUtils.synthesizeMouseAtCenter(get_node(addon, "enable-btn"), {}, gManagerWindow); 1.545 + is_element_hidden(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be hidden"); 1.546 + 1.547 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.548 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.549 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.550 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.551 + 1.552 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.553 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.554 + is_element_hidden(get_node(addon, "error"), "Error message should be visible"); 1.555 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.556 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.557 + 1.558 + info("Addon 7"); 1.559 + addon = items["Test add-on 7"]; 1.560 + addon.parentNode.ensureElementIsVisible(addon); 1.561 + is(get_node(addon, "name").value, "Test add-on 7", "Name should be correct"); 1.562 + 1.563 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.564 + is_element_visible(get_node(addon, "enable-btn"), "Enable button should be visible"); 1.565 + is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be hidden"); 1.566 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.567 + 1.568 + is_element_hidden(get_node(addon, "warning"), "Warning message should be visible"); 1.569 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.570 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.571 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.572 + is_element_visible(get_node(addon, "pending"), "Pending message should be visible"); 1.573 + is(get_node(addon, "pending").textContent, "Test add-on 7 will be disabled after you restart " + gApp + ".", "Pending message should be correct"); 1.574 + 1.575 + info("Undoing"); 1.576 + EventUtils.synthesizeMouseAtCenter(get_node(addon, "undo-btn"), {}, gManagerWindow); 1.577 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.578 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.579 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.580 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.581 + 1.582 + is_element_visible(get_node(addon, "warning"), "Warning message should be hidden"); 1.583 + is(get_node(addon, "warning").textContent, "An important update is available for Test add-on 7.", "Warning message should be correct"); 1.584 + is_element_visible(get_node(addon, "warning-link"), "Warning link should be visible"); 1.585 + is(get_node(addon, "warning-link").value, "Update Now", "Warning link text should be correct"); 1.586 + is(get_node(addon, "warning-link").href, gPluginURL, "Warning link should be correct"); 1.587 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.588 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.589 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.590 + 1.591 + run_next_test(); 1.592 + }); 1.593 + }); 1.594 +}); 1.595 + 1.596 +// Check the add-ons are now in the right state 1.597 +add_test(function() { 1.598 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.599 + "addon2@tests.mozilla.org", 1.600 + "addon4@tests.mozilla.org"], 1.601 + function([a1, a2, a4]) { 1.602 + is(a1.pendingOperations, 0, "Add-on 1 should not have any pending operations"); 1.603 + is(a2.pendingOperations, 0, "Add-on 1 should not have any pending operations"); 1.604 + is(a4.pendingOperations, 0, "Add-on 1 should not have any pending operations"); 1.605 + 1.606 + run_next_test(); 1.607 + }); 1.608 +}); 1.609 + 1.610 +// Check that upgrades with onExternalInstall take effect immediately 1.611 +add_test(function() { 1.612 + gProvider.createAddons([{ 1.613 + id: "addon1@tests.mozilla.org", 1.614 + name: "Test add-on replacement", 1.615 + version: "2.0", 1.616 + description: "A test add-on with a new description", 1.617 + updateDate: gDate, 1.618 + operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE 1.619 + }]); 1.620 + 1.621 + let items = get_test_items(); 1.622 + is(Object.keys(items).length, 9, "Should be nine add-ons installed"); 1.623 + 1.624 + let addon = items["Test add-on replacement"]; 1.625 + addon.parentNode.ensureElementIsVisible(addon); 1.626 + is(get_node(addon, "name").value, "Test add-on replacement", "Name should be correct"); 1.627 + is_element_visible(get_node(addon, "version"), "Version should be visible"); 1.628 + is(get_node(addon, "version").value, "2.0", "Version should be correct"); 1.629 + is_element_visible(get_node(addon, "description"), "Description should be visible"); 1.630 + is(get_node(addon, "description").value, "A test add-on with a new description", "Description should be correct"); 1.631 + is_element_hidden(get_class_node(addon, "disabled-postfix"), "Disabled postfix should be hidden"); 1.632 + is_element_hidden(get_class_node(addon, "update-postfix"), "Update postfix should be hidden"); 1.633 + is(get_node(addon, "date-updated").value, formatDate(gDate), "Update date should be correct"); 1.634 + 1.635 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.636 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.637 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.638 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.639 + 1.640 + is_element_hidden(get_node(addon, "warning"), "Warning message should be hidden"); 1.641 + is_element_hidden(get_node(addon, "warning-link"), "Warning link should be hidden"); 1.642 + is_element_hidden(get_node(addon, "error"), "Error message should be hidden"); 1.643 + is_element_hidden(get_node(addon, "error-link"), "Error link should be hidden"); 1.644 + is_element_hidden(get_node(addon, "pending"), "Pending message should be hidden"); 1.645 + 1.646 + run_next_test(); 1.647 +}); 1.648 + 1.649 +// Check that focus changes correctly move around the selected list item 1.650 +add_test(function() { 1.651 + function is_node_in_list(aNode) { 1.652 + var list = gManagerWindow.document.getElementById("addon-list"); 1.653 + 1.654 + while (aNode && aNode != list) 1.655 + aNode = aNode.parentNode; 1.656 + 1.657 + if (aNode) 1.658 + return true; 1.659 + return false; 1.660 + } 1.661 + 1.662 + // Ignore the OSX full keyboard access setting 1.663 + Services.prefs.setBoolPref("accessibility.tabfocus_applies_to_xul", false); 1.664 + 1.665 + let items = get_test_items(); 1.666 + 1.667 + var fm = Cc["@mozilla.org/focus-manager;1"]. 1.668 + getService(Ci.nsIFocusManager); 1.669 + 1.670 + let addon = items["Test add-on 6"]; 1.671 + EventUtils.synthesizeMouseAtCenter(addon, { }, gManagerWindow); 1.672 + is(fm.focusedElement, addon.parentNode, "Focus should have moved to the list"); 1.673 + 1.674 + EventUtils.synthesizeKey("VK_TAB", { }, gManagerWindow); 1.675 + is(fm.focusedElement, get_node(addon, "details-btn"), "Focus should have moved to the more button"); 1.676 + 1.677 + EventUtils.synthesizeKey("VK_TAB", { }, gManagerWindow); 1.678 + is(fm.focusedElement, get_node(addon, "disable-btn"), "Focus should have moved to the disable button"); 1.679 + 1.680 + EventUtils.synthesizeKey("VK_TAB", { }, gManagerWindow); 1.681 + is(fm.focusedElement, get_node(addon, "remove-btn"), "Focus should have moved to the remove button"); 1.682 + 1.683 + EventUtils.synthesizeKey("VK_TAB", { }, gManagerWindow); 1.684 + ok(!is_node_in_list(fm.focusedElement), "Focus should be outside the list"); 1.685 + 1.686 + EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, gManagerWindow); 1.687 + is(fm.focusedElement, get_node(addon, "remove-btn"), "Focus should have moved to the remove button"); 1.688 + 1.689 + EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, gManagerWindow); 1.690 + EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, gManagerWindow); 1.691 + is(fm.focusedElement, get_node(addon, "details-btn"), "Focus should have moved to the more button"); 1.692 + 1.693 + EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, gManagerWindow); 1.694 + is(fm.focusedElement, addon.parentNode, "Focus should have moved to the list"); 1.695 + 1.696 + EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, gManagerWindow); 1.697 + ok(!is_node_in_list(fm.focusedElement), "Focus should be outside the list"); 1.698 + 1.699 + try { 1.700 + Services.prefs.clearUserPref("accessibility.tabfocus_applies_to_xul"); 1.701 + } 1.702 + catch (e) { } 1.703 + 1.704 + run_next_test(); 1.705 +}); 1.706 + 1.707 + 1.708 +add_test(function() { 1.709 + info("Enabling lightweight theme"); 1.710 + LightweightThemeManager.currentTheme = gLWTheme; 1.711 + 1.712 + gManagerWindow.loadView("addons://list/theme"); 1.713 + wait_for_view_load(gManagerWindow, function() { 1.714 + var addon = get_addon_element(gManagerWindow, "4@personas.mozilla.org"); 1.715 + 1.716 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.717 + is_element_hidden(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.718 + is_element_visible(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.719 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.720 + 1.721 + info("Disabling lightweight theme"); 1.722 + LightweightThemeManager.currentTheme = null; 1.723 + 1.724 + is_element_hidden(get_node(addon, "preferences-btn"), "Preferences button should be hidden"); 1.725 + is_element_visible(get_node(addon, "enable-btn"), "Enable button should be hidden"); 1.726 + is_element_hidden(get_node(addon, "disable-btn"), "Disable button should be visible"); 1.727 + is_element_visible(get_node(addon, "remove-btn"), "Remove button should be visible"); 1.728 + 1.729 + AddonManager.getAddonByID("4@personas.mozilla.org", function(aAddon) { 1.730 + aAddon.uninstall(); 1.731 + run_next_test(); 1.732 + }); 1.733 + }); 1.734 +}); 1.735 + 1.736 +// Check that onPropertyChanges for appDisabled updates the UI 1.737 +add_test(function() { 1.738 + info("Checking that onPropertyChanges for appDisabled updates the UI"); 1.739 + 1.740 + AddonManager.getAddonByID("addon2@tests.mozilla.org", function(aAddon) { 1.741 + aAddon.userDisabled = true; 1.742 + aAddon.isCompatible = true; 1.743 + aAddon.appDisabled = false; 1.744 + 1.745 + gManagerWindow.loadView("addons://list/extension"); 1.746 + wait_for_view_load(gManagerWindow, function() { 1.747 + var el = get_addon_element(gManagerWindow, "addon2@tests.mozilla.org"); 1.748 + 1.749 + is(el.getAttribute("active"), "false", "Addon should not be marked as active"); 1.750 + is_element_hidden(get_node(el, "warning"), "Warning message should not be visible"); 1.751 + 1.752 + info("Making addon incompatible and appDisabled"); 1.753 + aAddon.isCompatible = false; 1.754 + aAddon.appDisabled = true; 1.755 + 1.756 + is(el.getAttribute("active"), "false", "Addon should not be marked as active"); 1.757 + is_element_visible(get_node(el, "warning"), "Warning message should be visible"); 1.758 + is(get_node(el, "warning").textContent, "Test add-on 2 is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); 1.759 + 1.760 + run_next_test(); 1.761 + }); 1.762 + }); 1.763 +});