1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/mozapps/extensions/test/xpcshell/test_startup.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,917 @@ 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 +// This verifies startup detection of added/removed/changed items and install 1.9 +// location priorities 1.10 + 1.11 +// Enable loading extensions from the user and system scopes 1.12 +Services.prefs.setIntPref("extensions.enabledScopes", 1.13 + AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER + 1.14 + AddonManager.SCOPE_SYSTEM); 1.15 + 1.16 +var addon1 = { 1.17 + id: "addon1@tests.mozilla.org", 1.18 + version: "1.0", 1.19 + name: "Test 1", 1.20 + targetApplications: [{ 1.21 + id: "xpcshell@tests.mozilla.org", 1.22 + minVersion: "1", 1.23 + maxVersion: "1" 1.24 + }, { // Repeated target application entries should be ignored 1.25 + id: "xpcshell@tests.mozilla.org", 1.26 + minVersion: "2", 1.27 + maxVersion: "2" 1.28 + }] 1.29 +}; 1.30 + 1.31 +var addon2 = { 1.32 + id: "addon2@tests.mozilla.org", 1.33 + version: "2.0", 1.34 + name: "Test 2", 1.35 + targetApplications: [{ // Bad target application entries should be ignored 1.36 + minVersion: "3", 1.37 + maxVersion: "4" 1.38 + }, { 1.39 + id: "xpcshell@tests.mozilla.org", 1.40 + minVersion: "1", 1.41 + maxVersion: "2" 1.42 + }] 1.43 +}; 1.44 + 1.45 +var addon3 = { 1.46 + id: "addon3@tests.mozilla.org", 1.47 + version: "3.0", 1.48 + name: "Test 3", 1.49 + targetApplications: [{ 1.50 + id: "toolkit@mozilla.org", 1.51 + minVersion: "1.9.2", 1.52 + maxVersion: "1.9.2.*" 1.53 + }] 1.54 +}; 1.55 + 1.56 +// Should be ignored because it has no ID 1.57 +var addon4 = { 1.58 + version: "4.0", 1.59 + name: "Test 4", 1.60 + targetApplications: [{ 1.61 + id: "xpcshell@tests.mozilla.org", 1.62 + minVersion: "1", 1.63 + maxVersion: "1" 1.64 + }] 1.65 +}; 1.66 + 1.67 +// Should be ignored because it has no version 1.68 +var addon5 = { 1.69 + id: "addon5@tests.mozilla.org", 1.70 + name: "Test 5", 1.71 + targetApplications: [{ 1.72 + id: "xpcshell@tests.mozilla.org", 1.73 + minVersion: "1", 1.74 + maxVersion: "1" 1.75 + }] 1.76 +}; 1.77 + 1.78 +// Should be ignored because it has an invalid type 1.79 +var addon6 = { 1.80 + id: "addon6@tests.mozilla.org", 1.81 + version: "3.0", 1.82 + name: "Test 6", 1.83 + type: 5, 1.84 + targetApplications: [{ 1.85 + id: "toolkit@mozilla.org", 1.86 + minVersion: "1.9.2", 1.87 + maxVersion: "1.9.2.*" 1.88 + }] 1.89 +}; 1.90 + 1.91 +// Should be ignored because it has an invalid type 1.92 +var addon7 = { 1.93 + id: "addon7@tests.mozilla.org", 1.94 + version: "3.0", 1.95 + name: "Test 3", 1.96 + type: "extension", 1.97 + targetApplications: [{ 1.98 + id: "toolkit@mozilla.org", 1.99 + minVersion: "1.9.2", 1.100 + maxVersion: "1.9.2.*" 1.101 + }] 1.102 +}; 1.103 + 1.104 +createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); 1.105 + 1.106 +const globalDir = gProfD.clone(); 1.107 +globalDir.append("extensions2"); 1.108 +globalDir.append(gAppInfo.ID); 1.109 +registerDirectory("XRESysSExtPD", globalDir.parent); 1.110 +const userDir = gProfD.clone(); 1.111 +userDir.append("extensions3"); 1.112 +userDir.append(gAppInfo.ID); 1.113 +registerDirectory("XREUSysExt", userDir.parent); 1.114 +const profileDir = gProfD.clone(); 1.115 +profileDir.append("extensions"); 1.116 + 1.117 +var gCachePurged = false; 1.118 + 1.119 +// Set up the profile 1.120 +function run_test() { 1.121 + do_test_pending("test_startup main"); 1.122 + 1.123 + let obs = AM_Cc["@mozilla.org/observer-service;1"]. 1.124 + getService(AM_Ci.nsIObserverService); 1.125 + obs.addObserver({ 1.126 + observe: function(aSubject, aTopic, aData) { 1.127 + gCachePurged = true; 1.128 + } 1.129 + }, "startupcache-invalidate", false); 1.130 + 1.131 + startupManager(); 1.132 + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); 1.133 + check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); 1.134 + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); 1.135 + check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); 1.136 + check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); 1.137 + 1.138 + do_check_false(gExtensionsJSON.exists()); 1.139 + 1.140 + do_check_false(gExtensionsINI.exists()); 1.141 + 1.142 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.143 + "addon2@tests.mozilla.org", 1.144 + "addon3@tests.mozilla.org", 1.145 + "addon4@tests.mozilla.org", 1.146 + "addon5@tests.mozilla.org", 1.147 + "addon6@tests.mozilla.org", 1.148 + "addon7@tests.mozilla.org"], 1.149 + function([a1, a2, a3, a4, a5, a6, a7]) { 1.150 + 1.151 + do_check_eq(a1, null); 1.152 + do_check_not_in_crash_annotation(addon1.id, addon1.version); 1.153 + do_check_eq(a2, null); 1.154 + do_check_not_in_crash_annotation(addon2.id, addon2.version); 1.155 + do_check_eq(a3, null); 1.156 + do_check_not_in_crash_annotation(addon3.id, addon3.version); 1.157 + do_check_eq(a4, null); 1.158 + do_check_eq(a5, null); 1.159 + 1.160 + do_execute_soon(run_test_1); 1.161 + }); 1.162 +} 1.163 + 1.164 +function end_test() { 1.165 + do_test_finished("test_startup main"); 1.166 +} 1.167 + 1.168 +// Try to install all the items into the profile 1.169 +function run_test_1() { 1.170 + writeInstallRDFForExtension(addon1, profileDir); 1.171 + var dest = writeInstallRDFForExtension(addon2, profileDir); 1.172 + // Attempt to make this look like it was added some time in the past so 1.173 + // the change in run_test_2 makes the last modified time change. 1.174 + setExtensionModifiedTime(dest, dest.lastModifiedTime - 5000); 1.175 + 1.176 + writeInstallRDFForExtension(addon3, profileDir); 1.177 + writeInstallRDFForExtension(addon4, profileDir); 1.178 + writeInstallRDFForExtension(addon5, profileDir); 1.179 + writeInstallRDFForExtension(addon6, profileDir); 1.180 + writeInstallRDFForExtension(addon7, profileDir); 1.181 + 1.182 + gCachePurged = false; 1.183 + restartManager(); 1.184 + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, ["addon1@tests.mozilla.org", 1.185 + "addon2@tests.mozilla.org", 1.186 + "addon3@tests.mozilla.org"]); 1.187 + check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); 1.188 + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); 1.189 + check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); 1.190 + check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); 1.191 + do_check_true(gCachePurged); 1.192 + 1.193 + do_print("Checking for " + gExtensionsINI.path); 1.194 + do_check_true(gExtensionsINI.exists()); 1.195 + 1.196 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.197 + "addon2@tests.mozilla.org", 1.198 + "addon3@tests.mozilla.org", 1.199 + "addon4@tests.mozilla.org", 1.200 + "addon5@tests.mozilla.org", 1.201 + "addon6@tests.mozilla.org", 1.202 + "addon7@tests.mozilla.org"], 1.203 + function([a1, a2, a3, a4, a5, a6, a7]) { 1.204 + 1.205 + do_check_neq(a1, null); 1.206 + do_check_eq(a1.id, "addon1@tests.mozilla.org"); 1.207 + do_check_neq(a1.syncGUID, null); 1.208 + do_check_true(a1.syncGUID.length >= 9); 1.209 + do_check_eq(a1.version, "1.0"); 1.210 + do_check_eq(a1.name, "Test 1"); 1.211 + do_check_true(isExtensionInAddonsList(profileDir, a1.id)); 1.212 + do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.213 + do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.214 + do_check_in_crash_annotation(addon1.id, addon1.version); 1.215 + do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); 1.216 + do_check_eq(a1.sourceURI, null); 1.217 + do_check_true(a1.foreignInstall); 1.218 + 1.219 + do_check_neq(a2, null); 1.220 + do_check_eq(a2.id, "addon2@tests.mozilla.org"); 1.221 + do_check_neq(a2.syncGUID, null); 1.222 + do_check_true(a2.syncGUID.length >= 9); 1.223 + do_check_eq(a2.version, "2.0"); 1.224 + do_check_eq(a2.name, "Test 2"); 1.225 + do_check_true(isExtensionInAddonsList(profileDir, a2.id)); 1.226 + do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.227 + do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.228 + do_check_in_crash_annotation(addon2.id, addon2.version); 1.229 + do_check_eq(a2.scope, AddonManager.SCOPE_PROFILE); 1.230 + do_check_eq(a2.sourceURI, null); 1.231 + do_check_true(a2.foreignInstall); 1.232 + 1.233 + do_check_neq(a3, null); 1.234 + do_check_eq(a3.id, "addon3@tests.mozilla.org"); 1.235 + do_check_neq(a3.syncGUID, null); 1.236 + do_check_true(a3.syncGUID.length >= 9); 1.237 + do_check_eq(a3.version, "3.0"); 1.238 + do_check_eq(a3.name, "Test 3"); 1.239 + do_check_true(isExtensionInAddonsList(profileDir, a3.id)); 1.240 + do_check_true(hasFlag(a3.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.241 + do_check_true(hasFlag(a3.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.242 + do_check_in_crash_annotation(addon3.id, addon3.version); 1.243 + do_check_eq(a3.scope, AddonManager.SCOPE_PROFILE); 1.244 + do_check_eq(a3.sourceURI, null); 1.245 + do_check_true(a3.foreignInstall); 1.246 + 1.247 + do_check_eq(a4, null); 1.248 + do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); 1.249 + dest = profileDir.clone(); 1.250 + dest.append(do_get_expected_addon_name("addon4@tests.mozilla.org")); 1.251 + do_check_false(dest.exists()); 1.252 + 1.253 + do_check_eq(a5, null); 1.254 + do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); 1.255 + dest = profileDir.clone(); 1.256 + dest.append(do_get_expected_addon_name("addon5@tests.mozilla.org")); 1.257 + do_check_false(dest.exists()); 1.258 + 1.259 + do_check_eq(a6, null); 1.260 + do_check_false(isExtensionInAddonsList(profileDir, "addon6@tests.mozilla.org")); 1.261 + dest = profileDir.clone(); 1.262 + dest.append(do_get_expected_addon_name("addon6@tests.mozilla.org")); 1.263 + do_check_false(dest.exists()); 1.264 + 1.265 + do_check_eq(a7, null); 1.266 + do_check_false(isExtensionInAddonsList(profileDir, "addon7@tests.mozilla.org")); 1.267 + dest = profileDir.clone(); 1.268 + dest.append(do_get_expected_addon_name("addon7@tests.mozilla.org")); 1.269 + do_check_false(dest.exists()); 1.270 + 1.271 + AddonManager.getAddonsByTypes(["extension"], function(extensionAddons) { 1.272 + do_check_eq(extensionAddons.length, 3); 1.273 + 1.274 + do_execute_soon(run_test_2); 1.275 + }); 1.276 + }); 1.277 +} 1.278 + 1.279 +// Test that modified items are detected and items in other install locations 1.280 +// are ignored 1.281 +function run_test_2() { 1.282 + addon1.version = "1.1"; 1.283 + writeInstallRDFForExtension(addon1, userDir); 1.284 + addon2.version="2.1"; 1.285 + writeInstallRDFForExtension(addon2, profileDir); 1.286 + addon2.version="2.2"; 1.287 + writeInstallRDFForExtension(addon2, globalDir); 1.288 + addon2.version="2.3"; 1.289 + writeInstallRDFForExtension(addon2, userDir); 1.290 + var dest = profileDir.clone(); 1.291 + dest.append(do_get_expected_addon_name("addon3@tests.mozilla.org")); 1.292 + dest.remove(true); 1.293 + 1.294 + gCachePurged = false; 1.295 + restartManager(); 1.296 + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); 1.297 + check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon2@tests.mozilla.org"]); 1.298 + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon3@tests.mozilla.org"]); 1.299 + check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); 1.300 + check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); 1.301 + do_check_true(gCachePurged); 1.302 + 1.303 + do_check_true(gExtensionsINI.exists()); 1.304 + 1.305 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.306 + "addon2@tests.mozilla.org", 1.307 + "addon3@tests.mozilla.org", 1.308 + "addon4@tests.mozilla.org", 1.309 + "addon5@tests.mozilla.org"], 1.310 + function([a1, a2, a3, a4, a5]) { 1.311 + 1.312 + do_check_neq(a1, null); 1.313 + do_check_eq(a1.id, "addon1@tests.mozilla.org"); 1.314 + do_check_eq(a1.version, "1.0"); 1.315 + do_check_true(isExtensionInAddonsList(profileDir, a1.id)); 1.316 + do_check_false(isExtensionInAddonsList(userDir, a1.id)); 1.317 + do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.318 + do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.319 + do_check_in_crash_annotation(addon1.id, a1.version); 1.320 + do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); 1.321 + do_check_true(a1.foreignInstall); 1.322 + 1.323 + do_check_neq(a2, null); 1.324 + do_check_eq(a2.id, "addon2@tests.mozilla.org"); 1.325 + do_check_eq(a2.version, "2.1"); 1.326 + do_check_true(isExtensionInAddonsList(profileDir, a2.id)); 1.327 + do_check_false(isExtensionInAddonsList(userDir, a2.id)); 1.328 + do_check_false(isExtensionInAddonsList(globalDir, a2.id)); 1.329 + do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.330 + do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.331 + do_check_in_crash_annotation(addon2.id, a2.version); 1.332 + do_check_eq(a2.scope, AddonManager.SCOPE_PROFILE); 1.333 + do_check_true(a2.foreignInstall); 1.334 + 1.335 + do_check_eq(a3, null); 1.336 + do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); 1.337 + do_check_not_in_crash_annotation(addon3.id, addon3.version); 1.338 + 1.339 + do_check_eq(a4, null); 1.340 + do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); 1.341 + 1.342 + do_check_eq(a5, null); 1.343 + do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); 1.344 + 1.345 + do_execute_soon(run_test_3); 1.346 + }); 1.347 +} 1.348 + 1.349 +// Check that removing items from the profile reveals their hidden versions. 1.350 +function run_test_3() { 1.351 + var dest = profileDir.clone(); 1.352 + dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); 1.353 + dest.remove(true); 1.354 + dest = profileDir.clone(); 1.355 + dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); 1.356 + dest.remove(true); 1.357 + writeInstallRDFForExtension(addon3, profileDir, "addon4@tests.mozilla.org"); 1.358 + 1.359 + gCachePurged = false; 1.360 + restartManager(); 1.361 + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); 1.362 + check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon1@tests.mozilla.org", 1.363 + "addon2@tests.mozilla.org"]); 1.364 + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); 1.365 + check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); 1.366 + check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); 1.367 + do_check_true(gCachePurged); 1.368 + 1.369 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.370 + "addon2@tests.mozilla.org", 1.371 + "addon3@tests.mozilla.org", 1.372 + "addon4@tests.mozilla.org", 1.373 + "addon5@tests.mozilla.org"], 1.374 + function([a1, a2, a3, a4, a5]) { 1.375 + 1.376 + do_check_neq(a1, null); 1.377 + do_check_eq(a1.id, "addon1@tests.mozilla.org"); 1.378 + do_check_eq(a1.version, "1.1"); 1.379 + do_check_false(isExtensionInAddonsList(profileDir, a1.id)); 1.380 + do_check_true(isExtensionInAddonsList(userDir, a1.id)); 1.381 + do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.382 + do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.383 + do_check_in_crash_annotation(addon1.id, a1.version); 1.384 + do_check_eq(a1.scope, AddonManager.SCOPE_USER); 1.385 + 1.386 + do_check_neq(a2, null); 1.387 + do_check_eq(a2.id, "addon2@tests.mozilla.org"); 1.388 + do_check_eq(a2.version, "2.3"); 1.389 + do_check_false(isExtensionInAddonsList(profileDir, a2.id)); 1.390 + do_check_true(isExtensionInAddonsList(userDir, a2.id)); 1.391 + do_check_false(isExtensionInAddonsList(globalDir, a2.id)); 1.392 + do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.393 + do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.394 + do_check_in_crash_annotation(addon2.id, a2.version); 1.395 + do_check_eq(a2.scope, AddonManager.SCOPE_USER); 1.396 + 1.397 + do_check_eq(a3, null); 1.398 + do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); 1.399 + 1.400 + do_check_eq(a4, null); 1.401 + do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); 1.402 + 1.403 + do_check_eq(a5, null); 1.404 + do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); 1.405 + 1.406 + dest = profileDir.clone(); 1.407 + dest.append(do_get_expected_addon_name("addon4@tests.mozilla.org")); 1.408 + do_check_false(dest.exists()); 1.409 + 1.410 + do_execute_soon(run_test_4); 1.411 + }); 1.412 +} 1.413 + 1.414 +// Test that disabling an install location works 1.415 +function run_test_4() { 1.416 + Services.prefs.setIntPref("extensions.enabledScopes", AddonManager.SCOPE_SYSTEM); 1.417 + 1.418 + gCachePurged = false; 1.419 + restartManager(); 1.420 + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); 1.421 + check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon2@tests.mozilla.org"]); 1.422 + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon1@tests.mozilla.org"]); 1.423 + check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); 1.424 + check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); 1.425 + do_check_true(gCachePurged); 1.426 + 1.427 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.428 + "addon2@tests.mozilla.org", 1.429 + "addon3@tests.mozilla.org", 1.430 + "addon4@tests.mozilla.org", 1.431 + "addon5@tests.mozilla.org"], 1.432 + function([a1, a2, a3, a4, a5]) { 1.433 + 1.434 + do_check_eq(a1, null); 1.435 + do_check_false(isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org")); 1.436 + do_check_false(isExtensionInAddonsList(userDir, "addon1@tests.mozilla.org")); 1.437 + 1.438 + do_check_neq(a2, null); 1.439 + do_check_eq(a2.id, "addon2@tests.mozilla.org"); 1.440 + do_check_eq(a2.version, "2.2"); 1.441 + do_check_false(isExtensionInAddonsList(profileDir, a2.id)); 1.442 + do_check_false(isExtensionInAddonsList(userDir, a2.id)); 1.443 + do_check_true(isExtensionInAddonsList(globalDir, a2.id)); 1.444 + do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.445 + do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.446 + do_check_in_crash_annotation(addon2.id, a2.version); 1.447 + do_check_eq(a2.scope, AddonManager.SCOPE_SYSTEM); 1.448 + 1.449 + do_execute_soon(run_test_5); 1.450 + }); 1.451 +} 1.452 + 1.453 +// Switching disabled locations works 1.454 +function run_test_5() { 1.455 + Services.prefs.setIntPref("extensions.enabledScopes", AddonManager.SCOPE_USER); 1.456 + 1.457 + gCachePurged = false; 1.458 + restartManager(); 1.459 + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, ["addon1@tests.mozilla.org"]); 1.460 + check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon2@tests.mozilla.org"]); 1.461 + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); 1.462 + check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); 1.463 + check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); 1.464 + do_check_true(gCachePurged); 1.465 + 1.466 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.467 + "addon2@tests.mozilla.org", 1.468 + "addon3@tests.mozilla.org", 1.469 + "addon4@tests.mozilla.org", 1.470 + "addon5@tests.mozilla.org"], 1.471 + function([a1, a2, a3, a4, a5]) { 1.472 + 1.473 + do_check_neq(a1, null); 1.474 + do_check_eq(a1.id, "addon1@tests.mozilla.org"); 1.475 + do_check_eq(a1.version, "1.1"); 1.476 + do_check_false(isExtensionInAddonsList(profileDir, a1.id)); 1.477 + do_check_true(isExtensionInAddonsList(userDir, a1.id)); 1.478 + do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.479 + do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.480 + do_check_in_crash_annotation(addon1.id, a1.version); 1.481 + do_check_eq(a1.scope, AddonManager.SCOPE_USER); 1.482 + 1.483 + do_check_neq(a2, null); 1.484 + do_check_eq(a2.id, "addon2@tests.mozilla.org"); 1.485 + do_check_eq(a2.version, "2.3"); 1.486 + do_check_false(isExtensionInAddonsList(profileDir, a2.id)); 1.487 + do_check_true(isExtensionInAddonsList(userDir, a2.id)); 1.488 + do_check_false(isExtensionInAddonsList(globalDir, a2.id)); 1.489 + do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.490 + do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.491 + do_check_in_crash_annotation(addon2.id, a2.version); 1.492 + do_check_eq(a2.scope, AddonManager.SCOPE_USER); 1.493 + 1.494 + do_execute_soon(run_test_6); 1.495 + }); 1.496 +} 1.497 + 1.498 +// Resetting the pref makes everything visible again 1.499 +function run_test_6() { 1.500 + Services.prefs.clearUserPref("extensions.enabledScopes"); 1.501 + 1.502 + gCachePurged = false; 1.503 + restartManager(); 1.504 + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); 1.505 + check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); 1.506 + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); 1.507 + check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); 1.508 + check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); 1.509 + do_check_true(gCachePurged); 1.510 + 1.511 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.512 + "addon2@tests.mozilla.org", 1.513 + "addon3@tests.mozilla.org", 1.514 + "addon4@tests.mozilla.org", 1.515 + "addon5@tests.mozilla.org"], 1.516 + function([a1, a2, a3, a4, a5]) { 1.517 + 1.518 + do_check_neq(a1, null); 1.519 + do_check_eq(a1.id, "addon1@tests.mozilla.org"); 1.520 + do_check_eq(a1.version, "1.1"); 1.521 + do_check_false(isExtensionInAddonsList(profileDir, a1.id)); 1.522 + do_check_true(isExtensionInAddonsList(userDir, a1.id)); 1.523 + do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.524 + do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.525 + do_check_in_crash_annotation(addon1.id, a1.version); 1.526 + do_check_eq(a1.scope, AddonManager.SCOPE_USER); 1.527 + 1.528 + do_check_neq(a2, null); 1.529 + do_check_eq(a2.id, "addon2@tests.mozilla.org"); 1.530 + do_check_eq(a2.version, "2.3"); 1.531 + do_check_false(isExtensionInAddonsList(profileDir, a2.id)); 1.532 + do_check_true(isExtensionInAddonsList(userDir, a2.id)); 1.533 + do_check_false(isExtensionInAddonsList(globalDir, a2.id)); 1.534 + do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.535 + do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.536 + do_check_in_crash_annotation(addon2.id, a2.version); 1.537 + do_check_eq(a2.scope, AddonManager.SCOPE_USER); 1.538 + 1.539 + do_execute_soon(run_test_7); 1.540 + }); 1.541 +} 1.542 + 1.543 +// Check that items in the profile hide the others again. 1.544 +function run_test_7() { 1.545 + addon1.version = "1.2"; 1.546 + writeInstallRDFForExtension(addon1, profileDir); 1.547 + var dest = userDir.clone(); 1.548 + dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); 1.549 + dest.remove(true); 1.550 + 1.551 + gCachePurged = false; 1.552 + restartManager(); 1.553 + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); 1.554 + check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon1@tests.mozilla.org", 1.555 + "addon2@tests.mozilla.org"]); 1.556 + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); 1.557 + check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); 1.558 + check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); 1.559 + do_check_true(gCachePurged); 1.560 + 1.561 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.562 + "addon2@tests.mozilla.org", 1.563 + "addon3@tests.mozilla.org", 1.564 + "addon4@tests.mozilla.org", 1.565 + "addon5@tests.mozilla.org"], 1.566 + function([a1, a2, a3, a4, a5]) { 1.567 + 1.568 + do_check_neq(a1, null); 1.569 + do_check_eq(a1.id, "addon1@tests.mozilla.org"); 1.570 + do_check_eq(a1.version, "1.2"); 1.571 + do_check_true(isExtensionInAddonsList(profileDir, a1.id)); 1.572 + do_check_false(isExtensionInAddonsList(userDir, a1.id)); 1.573 + do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.574 + do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.575 + do_check_in_crash_annotation(addon1.id, a1.version); 1.576 + do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); 1.577 + 1.578 + do_check_neq(a2, null); 1.579 + do_check_eq(a2.id, "addon2@tests.mozilla.org"); 1.580 + do_check_eq(a2.version, "2.2"); 1.581 + do_check_false(isExtensionInAddonsList(profileDir, a2.id)); 1.582 + do_check_false(isExtensionInAddonsList(userDir, a2.id)); 1.583 + do_check_true(isExtensionInAddonsList(globalDir, a2.id)); 1.584 + do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.585 + do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.586 + do_check_in_crash_annotation(addon2.id, a2.version); 1.587 + do_check_eq(a2.scope, AddonManager.SCOPE_SYSTEM); 1.588 + 1.589 + do_check_eq(a3, null); 1.590 + do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); 1.591 + 1.592 + do_check_eq(a4, null); 1.593 + do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); 1.594 + 1.595 + do_check_eq(a5, null); 1.596 + do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); 1.597 + 1.598 + do_execute_soon(run_test_8); 1.599 + }); 1.600 +} 1.601 + 1.602 +// Disabling all locations still leaves the profile working 1.603 +function run_test_8() { 1.604 + Services.prefs.setIntPref("extensions.enabledScopes", 0); 1.605 + 1.606 + gCachePurged = false; 1.607 + restartManager(); 1.608 + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); 1.609 + check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); 1.610 + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon2@tests.mozilla.org"]); 1.611 + check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); 1.612 + check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); 1.613 + do_check_true(gCachePurged); 1.614 + 1.615 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.616 + "addon2@tests.mozilla.org", 1.617 + "addon3@tests.mozilla.org", 1.618 + "addon4@tests.mozilla.org", 1.619 + "addon5@tests.mozilla.org"], 1.620 + function([a1, a2, a3, a4, a5]) { 1.621 + 1.622 + do_check_neq(a1, null); 1.623 + do_check_eq(a1.id, "addon1@tests.mozilla.org"); 1.624 + do_check_eq(a1.version, "1.2"); 1.625 + do_check_true(isExtensionInAddonsList(profileDir, a1.id)); 1.626 + do_check_false(isExtensionInAddonsList(userDir, a1.id)); 1.627 + do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.628 + do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.629 + do_check_in_crash_annotation(addon1.id, a1.version); 1.630 + do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); 1.631 + 1.632 + do_check_eq(a2, null); 1.633 + do_check_false(isExtensionInAddonsList(profileDir, "addon2@tests.mozilla.org")); 1.634 + do_check_false(isExtensionInAddonsList(userDir, "addon2@tests.mozilla.org")); 1.635 + do_check_false(isExtensionInAddonsList(globalDir, "addon2@tests.mozilla.org")); 1.636 + 1.637 + do_execute_soon(run_test_9); 1.638 + }); 1.639 +} 1.640 + 1.641 +// More hiding and revealing 1.642 +function run_test_9() { 1.643 + Services.prefs.clearUserPref("extensions.enabledScopes", 0); 1.644 + 1.645 + var dest = userDir.clone(); 1.646 + dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); 1.647 + dest.remove(true); 1.648 + dest = globalDir.clone(); 1.649 + dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); 1.650 + dest.remove(true); 1.651 + addon2.version = "2.4"; 1.652 + writeInstallRDFForExtension(addon2, profileDir); 1.653 + 1.654 + gCachePurged = false; 1.655 + restartManager(); 1.656 + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, ["addon2@tests.mozilla.org"]); 1.657 + check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); 1.658 + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); 1.659 + check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); 1.660 + check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); 1.661 + do_check_true(gCachePurged); 1.662 + 1.663 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.664 + "addon2@tests.mozilla.org", 1.665 + "addon3@tests.mozilla.org", 1.666 + "addon4@tests.mozilla.org", 1.667 + "addon5@tests.mozilla.org"], 1.668 + function([a1, a2, a3, a4, a5]) { 1.669 + 1.670 + do_check_neq(a1, null); 1.671 + do_check_eq(a1.id, "addon1@tests.mozilla.org"); 1.672 + do_check_eq(a1.version, "1.2"); 1.673 + do_check_true(isExtensionInAddonsList(profileDir, a1.id)); 1.674 + do_check_false(isExtensionInAddonsList(userDir, a1.id)); 1.675 + do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.676 + do_check_true(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.677 + do_check_eq(a1.scope, AddonManager.SCOPE_PROFILE); 1.678 + 1.679 + do_check_neq(a2, null); 1.680 + do_check_eq(a2.id, "addon2@tests.mozilla.org"); 1.681 + do_check_eq(a2.version, "2.4"); 1.682 + do_check_true(isExtensionInAddonsList(profileDir, a2.id)); 1.683 + do_check_false(isExtensionInAddonsList(userDir, a2.id)); 1.684 + do_check_false(isExtensionInAddonsList(globalDir, a2.id)); 1.685 + do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.686 + do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.687 + do_check_eq(a2.scope, AddonManager.SCOPE_PROFILE); 1.688 + 1.689 + do_check_eq(a3, null); 1.690 + do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); 1.691 + 1.692 + do_check_eq(a4, null); 1.693 + do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); 1.694 + 1.695 + do_check_eq(a5, null); 1.696 + do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); 1.697 + 1.698 + do_execute_soon(run_test_10); 1.699 + }); 1.700 +} 1.701 + 1.702 +// Checks that a removal from one location and an addition in another location 1.703 +// for the same item is handled 1.704 +function run_test_10() { 1.705 + var dest = profileDir.clone(); 1.706 + dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); 1.707 + dest.remove(true); 1.708 + addon1.version = "1.3"; 1.709 + writeInstallRDFForExtension(addon1, userDir); 1.710 + 1.711 + gCachePurged = false; 1.712 + restartManager(); 1.713 + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); 1.714 + check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon1@tests.mozilla.org"]); 1.715 + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); 1.716 + check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); 1.717 + check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); 1.718 + do_check_true(gCachePurged); 1.719 + 1.720 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.721 + "addon2@tests.mozilla.org", 1.722 + "addon3@tests.mozilla.org", 1.723 + "addon4@tests.mozilla.org", 1.724 + "addon5@tests.mozilla.org"], 1.725 + function([a1, a2, a3, a4, a5]) { 1.726 + 1.727 + do_check_neq(a1, null); 1.728 + do_check_eq(a1.id, "addon1@tests.mozilla.org"); 1.729 + do_check_eq(a1.version, "1.3"); 1.730 + do_check_false(isExtensionInAddonsList(profileDir, a1.id)); 1.731 + do_check_true(isExtensionInAddonsList(userDir, a1.id)); 1.732 + do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.733 + do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.734 + do_check_eq(a1.scope, AddonManager.SCOPE_USER); 1.735 + 1.736 + do_check_neq(a2, null); 1.737 + do_check_eq(a2.id, "addon2@tests.mozilla.org"); 1.738 + do_check_eq(a2.version, "2.4"); 1.739 + do_check_true(isExtensionInAddonsList(profileDir, a2.id)); 1.740 + do_check_false(isExtensionInAddonsList(userDir, a2.id)); 1.741 + do_check_false(isExtensionInAddonsList(globalDir, a2.id)); 1.742 + do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL)); 1.743 + do_check_true(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE)); 1.744 + do_check_eq(a2.scope, AddonManager.SCOPE_PROFILE); 1.745 + 1.746 + do_check_eq(a3, null); 1.747 + do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); 1.748 + 1.749 + do_check_eq(a4, null); 1.750 + do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); 1.751 + 1.752 + do_check_eq(a5, null); 1.753 + do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); 1.754 + 1.755 + do_execute_soon(run_test_11); 1.756 + }); 1.757 +} 1.758 + 1.759 +// This should remove any remaining items 1.760 +function run_test_11() { 1.761 + var dest = userDir.clone(); 1.762 + dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); 1.763 + dest.remove(true); 1.764 + dest = profileDir.clone(); 1.765 + dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); 1.766 + dest.remove(true); 1.767 + 1.768 + gCachePurged = false; 1.769 + restartManager(); 1.770 + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); 1.771 + check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); 1.772 + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon1@tests.mozilla.org", 1.773 + "addon2@tests.mozilla.org"]); 1.774 + check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); 1.775 + check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); 1.776 + do_check_true(gCachePurged); 1.777 + 1.778 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.779 + "addon2@tests.mozilla.org", 1.780 + "addon3@tests.mozilla.org", 1.781 + "addon4@tests.mozilla.org", 1.782 + "addon5@tests.mozilla.org"], 1.783 + function([a1, a2, a3, a4, a5]) { 1.784 + 1.785 + do_check_eq(a1, null); 1.786 + do_check_eq(a2, null); 1.787 + do_check_eq(a3, null); 1.788 + do_check_eq(a4, null); 1.789 + do_check_eq(a5, null); 1.790 + do_check_false(isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org")); 1.791 + do_check_false(isExtensionInAddonsList(profileDir, "addon2@tests.mozilla.org")); 1.792 + do_check_false(isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org")); 1.793 + do_check_false(isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org")); 1.794 + do_check_false(isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org")); 1.795 + do_check_false(isExtensionInAddonsList(userDir, "addon1@tests.mozilla.org")); 1.796 + do_check_false(isExtensionInAddonsList(userDir, "addon2@tests.mozilla.org")); 1.797 + do_check_false(isExtensionInAddonsList(userDir, "addon3@tests.mozilla.org")); 1.798 + do_check_false(isExtensionInAddonsList(userDir, "addon4@tests.mozilla.org")); 1.799 + do_check_false(isExtensionInAddonsList(userDir, "addon5@tests.mozilla.org")); 1.800 + do_check_false(isExtensionInAddonsList(globalDir, "addon1@tests.mozilla.org")); 1.801 + do_check_false(isExtensionInAddonsList(globalDir, "addon2@tests.mozilla.org")); 1.802 + do_check_false(isExtensionInAddonsList(globalDir, "addon3@tests.mozilla.org")); 1.803 + do_check_false(isExtensionInAddonsList(globalDir, "addon4@tests.mozilla.org")); 1.804 + do_check_false(isExtensionInAddonsList(globalDir, "addon5@tests.mozilla.org")); 1.805 + do_check_not_in_crash_annotation(addon1.id, addon1.version); 1.806 + do_check_not_in_crash_annotation(addon2.id, addon2.version); 1.807 + 1.808 + do_execute_soon(run_test_12); 1.809 + }); 1.810 +} 1.811 + 1.812 +// Test that auto-disabling for specific scopes works 1.813 +function run_test_12() { 1.814 + Services.prefs.setIntPref("extensions.autoDisableScopes", AddonManager.SCOPE_USER); 1.815 + 1.816 + writeInstallRDFForExtension(addon1, profileDir); 1.817 + writeInstallRDFForExtension(addon2, userDir); 1.818 + writeInstallRDFForExtension(addon3, globalDir); 1.819 + 1.820 + restartManager(); 1.821 + 1.822 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.823 + "addon2@tests.mozilla.org", 1.824 + "addon3@tests.mozilla.org", 1.825 + "addon4@tests.mozilla.org", 1.826 + "addon5@tests.mozilla.org"], 1.827 + callback_soon(function([a1, a2, a3, a4, a5]) { 1.828 + do_check_neq(a1, null); 1.829 + do_check_false(a1.userDisabled); 1.830 + do_check_true(a1.isActive); 1.831 + 1.832 + do_check_neq(a2, null); 1.833 + do_check_true(a2.userDisabled); 1.834 + do_check_false(a2.isActive); 1.835 + 1.836 + do_check_neq(a3, null); 1.837 + do_check_false(a3.userDisabled); 1.838 + do_check_true(a3.isActive); 1.839 + 1.840 + var dest = profileDir.clone(); 1.841 + dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); 1.842 + dest.remove(true); 1.843 + dest = userDir.clone(); 1.844 + dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); 1.845 + dest.remove(true); 1.846 + dest = globalDir.clone(); 1.847 + dest.append(do_get_expected_addon_name("addon3@tests.mozilla.org")); 1.848 + dest.remove(true); 1.849 + 1.850 + restartManager(); 1.851 + 1.852 + Services.prefs.setIntPref("extensions.autoDisableScopes", AddonManager.SCOPE_SYSTEM); 1.853 + 1.854 + writeInstallRDFForExtension(addon1, profileDir); 1.855 + writeInstallRDFForExtension(addon2, userDir); 1.856 + writeInstallRDFForExtension(addon3, globalDir); 1.857 + 1.858 + restartManager(); 1.859 + 1.860 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.861 + "addon2@tests.mozilla.org", 1.862 + "addon3@tests.mozilla.org", 1.863 + "addon4@tests.mozilla.org", 1.864 + "addon5@tests.mozilla.org"], 1.865 + function([a1, a2, a3, a4, a5]) { 1.866 + do_check_neq(a1, null); 1.867 + do_check_false(a1.userDisabled); 1.868 + do_check_true(a1.isActive); 1.869 + 1.870 + do_check_neq(a2, null); 1.871 + do_check_false(a2.userDisabled); 1.872 + do_check_true(a2.isActive); 1.873 + 1.874 + do_check_neq(a3, null); 1.875 + do_check_true(a3.userDisabled); 1.876 + do_check_false(a3.isActive); 1.877 + 1.878 + var dest = profileDir.clone(); 1.879 + dest.append(do_get_expected_addon_name("addon1@tests.mozilla.org")); 1.880 + dest.remove(true); 1.881 + dest = userDir.clone(); 1.882 + dest.append(do_get_expected_addon_name("addon2@tests.mozilla.org")); 1.883 + dest.remove(true); 1.884 + dest = globalDir.clone(); 1.885 + dest.append(do_get_expected_addon_name("addon3@tests.mozilla.org")); 1.886 + dest.remove(true); 1.887 + 1.888 + restartManager(); 1.889 + 1.890 + Services.prefs.setIntPref("extensions.autoDisableScopes", AddonManager.SCOPE_USER + AddonManager.SCOPE_SYSTEM); 1.891 + 1.892 + writeInstallRDFForExtension(addon1, profileDir); 1.893 + writeInstallRDFForExtension(addon2, userDir); 1.894 + writeInstallRDFForExtension(addon3, globalDir); 1.895 + 1.896 + restartManager(); 1.897 + 1.898 + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", 1.899 + "addon2@tests.mozilla.org", 1.900 + "addon3@tests.mozilla.org", 1.901 + "addon4@tests.mozilla.org", 1.902 + "addon5@tests.mozilla.org"], 1.903 + function([a1, a2, a3, a4, a5]) { 1.904 + do_check_neq(a1, null); 1.905 + do_check_false(a1.userDisabled); 1.906 + do_check_true(a1.isActive); 1.907 + 1.908 + do_check_neq(a2, null); 1.909 + do_check_true(a2.userDisabled); 1.910 + do_check_false(a2.isActive); 1.911 + 1.912 + do_check_neq(a3, null); 1.913 + do_check_true(a3.userDisabled); 1.914 + do_check_false(a3.isActive); 1.915 + 1.916 + do_execute_soon(end_test); 1.917 + }); 1.918 + }); 1.919 + })); 1.920 +}