toolkit/mozapps/extensions/test/xpcshell/test_bug596607.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:e0b7949b2a9d
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/
3 */
4
5 // Tests that a reference to a non-existent extension in the registry doesn't
6 // break things
7 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
8
9 // Enable loading extensions from the user and system scopes
10 Services.prefs.setIntPref("extensions.enabledScopes",
11 AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER +
12 AddonManager.SCOPE_SYSTEM);
13
14 var addon1 = {
15 id: "addon1@tests.mozilla.org",
16 version: "1.0",
17 name: "Test 1",
18 targetApplications: [{
19 id: "xpcshell@tests.mozilla.org",
20 minVersion: "1",
21 maxVersion: "1"
22 }]
23 };
24
25 var addon2 = {
26 id: "addon2@tests.mozilla.org",
27 version: "2.0",
28 name: "Test 2",
29 targetApplications: [{
30 id: "xpcshell@tests.mozilla.org",
31 minVersion: "1",
32 maxVersion: "2"
33 }]
34 };
35
36 const addon1Dir = writeInstallRDFForExtension(addon1, gProfD, "addon1");
37 const addon2Dir = writeInstallRDFForExtension(addon2, gProfD, "addon2");
38 const addon3Dir = gProfD.clone();
39 addon3Dir.append("addon3@tests.mozilla.org");
40
41 function run_test() {
42 // This test only works where there is a registry.
43 if (!("nsIWindowsRegKey" in AM_Ci))
44 return;
45
46 do_test_pending();
47
48 run_test_1();
49 }
50
51 // Tests whether starting a fresh profile with a bad entry works
52 function run_test_1() {
53 MockRegistry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE,
54 "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
55 "addon1@tests.mozilla.org", addon1Dir.path);
56 MockRegistry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
57 "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
58 "addon2@tests.mozilla.org", addon2Dir.path);
59 MockRegistry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
60 "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
61 "addon3@tests.mozilla.org", addon3Dir.path);
62
63 startupManager();
64
65 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
66 "addon2@tests.mozilla.org",
67 "addon3@tests.mozilla.org"], function([a1, a2, a3]) {
68 do_check_neq(a1, null);
69 do_check_true(a1.isActive);
70 do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
71 do_check_eq(a1.scope, AddonManager.SCOPE_SYSTEM);
72
73 do_check_neq(a2, null);
74 do_check_true(a2.isActive);
75 do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
76 do_check_eq(a2.scope, AddonManager.SCOPE_USER);
77
78 do_check_eq(a3, null);
79
80 do_execute_soon(run_test_2);
81 });
82 }
83
84 // Tests whether removing the bad entry has any effect
85 function run_test_2() {
86 shutdownManager();
87
88 MockRegistry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
89 "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
90 "addon3@tests.mozilla.org", addon3Dir.path);
91
92 startupManager(false);
93
94 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
95 "addon2@tests.mozilla.org",
96 "addon3@tests.mozilla.org"], function([a1, a2, a3]) {
97 do_check_neq(a1, null);
98 do_check_true(a1.isActive);
99 do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
100 do_check_eq(a1.scope, AddonManager.SCOPE_SYSTEM);
101
102 do_check_neq(a2, null);
103 do_check_true(a2.isActive);
104 do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
105 do_check_eq(a2.scope, AddonManager.SCOPE_USER);
106
107 do_check_eq(a3, null);
108
109 do_execute_soon(run_test_3);
110 });
111 }
112
113 // Tests adding the bad entry to an existing profile has any effect
114 function run_test_3() {
115 shutdownManager();
116
117 MockRegistry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
118 "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
119 "addon3@tests.mozilla.org", null);
120
121 startupManager(false);
122
123 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
124 "addon2@tests.mozilla.org",
125 "addon3@tests.mozilla.org"], function([a1, a2, a3]) {
126 do_check_neq(a1, null);
127 do_check_true(a1.isActive);
128 do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
129 do_check_eq(a1.scope, AddonManager.SCOPE_SYSTEM);
130
131 do_check_neq(a2, null);
132 do_check_true(a2.isActive);
133 do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
134 do_check_eq(a2.scope, AddonManager.SCOPE_USER);
135
136 do_check_eq(a3, null);
137
138 do_execute_soon(do_test_finished);
139 });
140 }

mercurial