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

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:aa1367778bb9
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/
3 */
4
5 // This verifies that moving an extension in the filesystem without any other
6 // change still keeps updated compatibility information
7
8 // The test extension uses an insecure update url.
9 Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
10 // Enable loading extensions from the user and system scopes
11 Services.prefs.setIntPref("extensions.enabledScopes",
12 AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER);
13
14 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "1.9.2");
15
16 Components.utils.import("resource://testing-common/httpd.js");
17 var testserver = new HttpServer();
18 testserver.start(-1);
19 gPort = testserver.identity.primaryPort;
20 mapFile("/data/test_bug655254.rdf", testserver);
21
22 var userDir = gProfD.clone();
23 userDir.append("extensions2");
24 userDir.append(gAppInfo.ID);
25
26 var dirProvider = {
27 getFile: function(aProp, aPersistent) {
28 aPersistent.value = false;
29 if (aProp == "XREUSysExt")
30 return userDir.parent;
31 return null;
32 },
33
34 QueryInterface: XPCOMUtils.generateQI([AM_Ci.nsIDirectoryServiceProvider,
35 AM_Ci.nsISupports])
36 };
37 Services.dirsvc.registerProvider(dirProvider);
38
39 var addon1 = {
40 id: "addon1@tests.mozilla.org",
41 version: "1.0",
42 name: "Test 1",
43 updateURL: "http://localhost:" + gPort + "/data/test_bug655254.rdf",
44 targetApplications: [{
45 id: "xpcshell@tests.mozilla.org",
46 minVersion: "1",
47 maxVersion: "1"
48 }]
49 };
50
51 // Set up the profile
52 function run_test() {
53 do_test_pending();
54 run_test_1();
55 }
56
57 function end_test() {
58 testserver.stop(do_test_finished);
59 }
60
61 function run_test_1() {
62 var time = Date.now();
63 var dir = writeInstallRDFForExtension(addon1, userDir);
64 setExtensionModifiedTime(dir, time);
65
66 manuallyInstall(do_get_addon("test_bug655254_2"), userDir, "addon2@tests.mozilla.org");
67
68 startupManager();
69
70 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
71 "addon2@tests.mozilla.org"], function([a1, a2]) {
72 do_check_neq(a1, null);
73 do_check_true(a1.appDisabled);
74 do_check_false(a1.isActive);
75 do_check_false(isExtensionInAddonsList(userDir, a1.id));
76
77 do_check_neq(a2, null);
78 do_check_false(a2.appDisabled);
79 do_check_true(a2.isActive);
80 do_check_false(isExtensionInAddonsList(userDir, a2.id));
81 do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 1);
82
83 a1.findUpdates({
84 onUpdateFinished: function() {
85 restartManager();
86
87 AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) {
88 do_check_neq(a1, null);
89 do_check_false(a1.appDisabled);
90 do_check_true(a1.isActive);
91 do_check_true(isExtensionInAddonsList(userDir, a1.id));
92
93 shutdownManager();
94
95 do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 0);
96
97 userDir.parent.moveTo(gProfD, "extensions3");
98 userDir = gProfD.clone();
99 userDir.append("extensions3");
100 userDir.append(gAppInfo.ID);
101 do_check_true(userDir.exists());
102
103 startupManager(false);
104
105 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
106 "addon2@tests.mozilla.org"], function([a1, a2]) {
107 do_check_neq(a1, null);
108 do_check_false(a1.appDisabled);
109 do_check_true(a1.isActive);
110 do_check_true(isExtensionInAddonsList(userDir, a1.id));
111
112 do_check_neq(a2, null);
113 do_check_false(a2.appDisabled);
114 do_check_true(a2.isActive);
115 do_check_false(isExtensionInAddonsList(userDir, a2.id));
116 do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 1);
117
118 do_execute_soon(run_test_2);
119 });
120 }));
121 }
122 }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
123 });
124 }
125
126 //Set up the profile
127 function run_test_2() {
128 AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(a2) {
129 do_check_neq(a2, null);
130 do_check_false(a2.appDisabled);
131 do_check_true(a2.isActive);
132 do_check_false(isExtensionInAddonsList(userDir, a2.id));
133 do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 1);
134
135 a2.userDisabled = true;
136 do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 0);
137
138 shutdownManager();
139
140 userDir.parent.moveTo(gProfD, "extensions4");
141 userDir = gProfD.clone();
142 userDir.append("extensions4");
143 userDir.append(gAppInfo.ID);
144 do_check_true(userDir.exists());
145
146 startupManager(false);
147
148 AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
149 "addon2@tests.mozilla.org"], function([a1, a2]) {
150 do_check_neq(a1, null);
151 do_check_false(a1.appDisabled);
152 do_check_true(a1.isActive);
153 do_check_true(isExtensionInAddonsList(userDir, a1.id));
154
155 do_check_neq(a2, null);
156 do_check_true(a2.userDisabled);
157 do_check_false(a2.isActive);
158 do_check_false(isExtensionInAddonsList(userDir, a2.id));
159 do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 0);
160
161 end_test();
162 });
163 }));
164 }

mercurial