1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug566626.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,112 @@ 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 that multiple calls to the async API return fully formed 1.9 +// add-ons 1.10 + 1.11 +var addon1 = { 1.12 + id: "addon1@tests.mozilla.org", 1.13 + version: "1.0", 1.14 + name: "Test 1", 1.15 + targetApplications: [{ 1.16 + id: "xpcshell@tests.mozilla.org", 1.17 + minVersion: "1", 1.18 + maxVersion: "1" 1.19 + }] 1.20 +}; 1.21 + 1.22 +const profileDir = gProfD.clone(); 1.23 +profileDir.append("extensions"); 1.24 + 1.25 +var gAddon; 1.26 + 1.27 +// Sets up the profile by installing an add-on. 1.28 +function run_test() { 1.29 + do_test_pending(); 1.30 + 1.31 + createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); 1.32 + 1.33 + writeInstallRDFForExtension(addon1, profileDir); 1.34 + 1.35 + startupManager(); 1.36 + 1.37 + run_test_1(); 1.38 +} 1.39 + 1.40 +// Verifies that multiple calls to get an add-on at various stages of execution 1.41 +// return an add-on with a valid name. 1.42 +function run_test_1() { 1.43 + var count = 0; 1.44 + 1.45 + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { 1.46 + do_check_neq(a1, null); 1.47 + do_check_eq(a1.name, "Test 1"); 1.48 + 1.49 + if (count == 0) 1.50 + gAddon = a1; 1.51 + else 1.52 + do_check_eq(a1, gAddon); 1.53 + count++; 1.54 + if (count == 4) 1.55 + run_test_2(); 1.56 + }); 1.57 + 1.58 + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { 1.59 + do_check_neq(a1, null); 1.60 + do_check_eq(a1.name, "Test 1"); 1.61 + 1.62 + if (count == 0) 1.63 + gAddon = a1; 1.64 + else 1.65 + do_check_eq(a1, gAddon); 1.66 + count++; 1.67 + if (count == 4) 1.68 + run_test_2(); 1.69 + }); 1.70 + 1.71 + do_execute_soon(function() { 1.72 + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { 1.73 + do_check_neq(a1, null); 1.74 + do_check_eq(a1.name, "Test 1"); 1.75 + 1.76 + if (count == 0) 1.77 + gAddon = a1; 1.78 + else 1.79 + do_check_eq(a1, gAddon); 1.80 + count++; 1.81 + if (count == 4) 1.82 + run_test_2(); 1.83 + }); 1.84 + }); 1.85 + 1.86 + do_execute_soon(function() { 1.87 + do_execute_soon(function() { 1.88 + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { 1.89 + do_check_neq(a1, null); 1.90 + do_check_eq(a1.name, "Test 1"); 1.91 + 1.92 + if (count == 0) 1.93 + gAddon = a1; 1.94 + else 1.95 + do_check_eq(a1, gAddon); 1.96 + count++; 1.97 + if (count == 4) 1.98 + run_test_2(); 1.99 + }); 1.100 + }); 1.101 + }); 1.102 +} 1.103 + 1.104 +// Verifies that a subsequent call gets the same add-on from the cache 1.105 +function run_test_2() { 1.106 + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { 1.107 + do_check_neq(a1, null); 1.108 + do_check_eq(a1.name, "Test 1"); 1.109 + 1.110 + do_check_eq(a1, gAddon); 1.111 + 1.112 + do_execute_soon(do_test_finished); 1.113 + }); 1.114 + 1.115 +}