Magellan Linux

Contents of /trunk/mozilla-firefox/patches/firefox-18.0-bug677092.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2026 - (show annotations) (download)
Fri Jan 11 09:36:19 2013 UTC (11 years, 4 months ago) by niro
File size: 11002 byte(s)
-aded upstream patch
1 exporting patch:
2 # HG changeset patch
3 # User Axel Hecht <axel@pike.org>
4 # Date 1348128099 -7200
5 # Node ID 812d0ba8317507c4026958a740960384eac1507a
6 # Parent 97e49e7a33266a0680e5af59289264a07e4321f8
7 bug 677092, make language packs restartless, r=Unfocused
8 Make language packs just trigger the chrome registration hooks, and
9 disable picking up bootstrap.js, and declare them restartless.
10
11 diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/XPIProvider.jsm
12 --- a/toolkit/mozapps/extensions/XPIProvider.jsm Wed Sep 26 13:08:50 2012 +0200
13 +++ b/toolkit/mozapps/extensions/XPIProvider.jsm Thu Sep 20 10:01:39 2012 +0200
14 @@ -740,8 +740,8 @@
15 }
16 }
17 else {
18 - // spell check dictionaries never require a restart
19 - if (addon.type == "dictionary")
20 + // spell check dictionaries and language packs never require a restart
21 + if (addon.type == "dictionary" || addon.type == "locale")
22 addon.bootstrap = true;
23
24 // Only extensions are allowed to provide an optionsURL, optionsType or aboutURL. For
25 @@ -3695,6 +3695,11 @@
26 Components.manager.addBootstrappedManifestLocation(aFile);
27
28 try {
29 + // Don't call bootstrap.js methods for language packs,
30 + // they only contain chrome.
31 + if (aType == "locale")
32 + return;
33 +
34 // Load the scope if it hasn't already been loaded
35 if (!(aId in this.bootstrapScopes))
36 this.loadBootstrapScope(aId, aFile, aVersion, aType);
37 diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/addons/test_langpack/chrome.manifest
38 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
39 +++ b/toolkit/mozapps/extensions/test/addons/test_langpack/chrome.manifest Thu Sep 20 10:01:39 2012 +0200
40 @@ -0,0 +1,1 @@
41 +locale test-langpack x-testing locale/x-testing
42 diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/addons/test_langpack/install.rdf
43 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
44 +++ b/toolkit/mozapps/extensions/test/addons/test_langpack/install.rdf Thu Sep 20 10:01:39 2012 +0200
45 @@ -0,0 +1,23 @@
46 +<?xml version="1.0"?>
47 +
48 +<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
49 + xmlns:em="http://www.mozilla.org/2004/em-rdf#">
50 +
51 + <Description about="urn:mozilla:install-manifest">
52 + <em:id>langpack-x-testing@tests.mozilla.org</em:id>
53 + <em:type>8</em:type>
54 + <em:version>1.0</em:version>
55 +
56 + <!-- Front End MetaData -->
57 + <em:name>Language Pack x-testing</em:name>
58 +
59 + <em:targetApplication>
60 + <Description>
61 + <em:id>xpcshell@tests.mozilla.org</em:id>
62 + <em:minVersion>1</em:minVersion>
63 + <em:maxVersion>2</em:maxVersion>
64 + </Description>
65 + </em:targetApplication>
66 +
67 + </Description>
68 +</RDF>
69 diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/xpcshell/test_langpack.js
70 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
71 +++ b/toolkit/mozapps/extensions/test/xpcshell/test_langpack.js Thu Sep 20 10:01:39 2012 +0200
72 @@ -0,0 +1,247 @@
73 +/* Any copyright is dedicated to the Public Domain.
74 + * http://creativecommons.org/publicdomain/zero/1.0/
75 + */
76 +
77 +// This verifies that language packs can be used without restarts.
78 +Components.utils.import("resource://gre/modules/Services.jsm");
79 +
80 +// Enable loading extensions from the user scopes
81 +Services.prefs.setIntPref("extensions.enabledScopes",
82 + AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER);
83 +
84 +createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
85 +
86 +const profileDir = gProfD.clone();
87 +profileDir.append("extensions");
88 +const userExtDir = gProfD.clone();
89 +userExtDir.append("extensions2");
90 +userExtDir.append(gAppInfo.ID);
91 +registerDirectory("XREUSysExt", userExtDir.parent);
92 +
93 +var chrome = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
94 + .getService(Components.interfaces.nsIXULChromeRegistry);
95 +
96 +function do_check_locale_not_registered(provider) {
97 + let didThrow = false;
98 + try {
99 + chrome.getSelectedLocale(provider);
100 + } catch (e) {
101 + didThrow = true;
102 + }
103 + do_check_true(didThrow);
104 +}
105 +
106 +function run_test() {
107 + do_test_pending();
108 +
109 + startupManager();
110 +
111 + run_test_1();
112 +}
113 +
114 +// Tests that installing doesn't require a restart
115 +function run_test_1() {
116 + prepare_test({ }, [
117 + "onNewInstall"
118 + ]);
119 +
120 + AddonManager.getInstallForFile(do_get_addon("test_langpack"), function(install) {
121 + ensure_test_completed();
122 +
123 + do_check_neq(install, null);
124 + do_check_eq(install.type, "locale");
125 + do_check_eq(install.version, "1.0");
126 + do_check_eq(install.name, "Language Pack x-testing");
127 + do_check_eq(install.state, AddonManager.STATE_DOWNLOADED);
128 + do_check_true(install.addon.hasResource("install.rdf"));
129 + do_check_false(install.addon.hasResource("bootstrap.js"));
130 + do_check_eq(install.addon.operationsRequiringRestart &
131 + AddonManager.OP_NEEDS_RESTART_INSTALL, 0);
132 +
133 + let addon = install.addon;
134 + prepare_test({
135 + "langpack-x-testing@tests.mozilla.org": [
136 + ["onInstalling", false],
137 + "onInstalled"
138 + ]
139 + }, [
140 + "onInstallStarted",
141 + "onInstallEnded",
142 + ], function() {
143 + do_check_true(addon.hasResource("install.rdf"));
144 + check_test_1();
145 + });
146 + install.install();
147 + });
148 +}
149 +
150 +function check_test_1() {
151 + AddonManager.getAllInstalls(function(installs) {
152 + // There should be no active installs now since the install completed and
153 + // doesn't require a restart.
154 + do_check_eq(installs.length, 0);
155 +
156 + AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
157 + do_check_neq(b1, null);
158 + do_check_eq(b1.version, "1.0");
159 + do_check_false(b1.appDisabled);
160 + do_check_false(b1.userDisabled);
161 + do_check_true(b1.isActive);
162 + // check chrome reg that language pack is registered
163 + do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
164 + do_check_true(b1.hasResource("install.rdf"));
165 + do_check_false(b1.hasResource("bootstrap.js"));
166 +
167 + let dir = do_get_addon_root_uri(profileDir, "langpack-x-testing@tests.mozilla.org");
168 +
169 + AddonManager.getAddonsWithOperationsByTypes(null, function(list) {
170 + do_check_eq(list.length, 0);
171 +
172 + run_test_2();
173 + });
174 + });
175 + });
176 +}
177 +
178 +// Tests that disabling doesn't require a restart
179 +function run_test_2() {
180 + AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
181 + prepare_test({
182 + "langpack-x-testing@tests.mozilla.org": [
183 + ["onDisabling", false],
184 + "onDisabled"
185 + ]
186 + });
187 +
188 + do_check_eq(b1.operationsRequiringRestart &
189 + AddonManager.OP_NEEDS_RESTART_DISABLE, 0);
190 + b1.userDisabled = true;
191 + ensure_test_completed();
192 +
193 + do_check_neq(b1, null);
194 + do_check_eq(b1.version, "1.0");
195 + do_check_false(b1.appDisabled);
196 + do_check_true(b1.userDisabled);
197 + do_check_false(b1.isActive);
198 + // check chrome reg that language pack is not registered
199 + do_check_locale_not_registered("test-langpack");
200 +
201 + AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) {
202 + do_check_neq(newb1, null);
203 + do_check_eq(newb1.version, "1.0");
204 + do_check_false(newb1.appDisabled);
205 + do_check_true(newb1.userDisabled);
206 + do_check_false(newb1.isActive);
207 +
208 + run_test_3();
209 + });
210 + });
211 +}
212 +
213 +// Test that restarting doesn't accidentally re-enable
214 +function run_test_3() {
215 + shutdownManager();
216 + startupManager(false);
217 + // check chrome reg that language pack is not registered
218 + do_check_locale_not_registered("test-langpack");
219 +
220 + AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
221 + do_check_neq(b1, null);
222 + do_check_eq(b1.version, "1.0");
223 + do_check_false(b1.appDisabled);
224 + do_check_true(b1.userDisabled);
225 + do_check_false(b1.isActive);
226 +
227 + run_test_4();
228 + });
229 +}
230 +
231 +// Tests that enabling doesn't require a restart
232 +function run_test_4() {
233 + AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
234 + prepare_test({
235 + "langpack-x-testing@tests.mozilla.org": [
236 + ["onEnabling", false],
237 + "onEnabled"
238 + ]
239 + });
240 +
241 + do_check_eq(b1.operationsRequiringRestart &
242 + AddonManager.OP_NEEDS_RESTART_ENABLE, 0);
243 + b1.userDisabled = false;
244 + ensure_test_completed();
245 +
246 + do_check_neq(b1, null);
247 + do_check_eq(b1.version, "1.0");
248 + do_check_false(b1.appDisabled);
249 + do_check_false(b1.userDisabled);
250 + do_check_true(b1.isActive);
251 + // check chrome reg that language pack is registered
252 + do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
253 +
254 + AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) {
255 + do_check_neq(newb1, null);
256 + do_check_eq(newb1.version, "1.0");
257 + do_check_false(newb1.appDisabled);
258 + do_check_false(newb1.userDisabled);
259 + do_check_true(newb1.isActive);
260 +
261 + run_test_5();
262 + });
263 + });
264 +}
265 +
266 +// Tests that a restart shuts down and restarts the add-on
267 +function run_test_5() {
268 + shutdownManager();
269 + startupManager(false);
270 + // check chrome reg that language pack is registered
271 + do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
272 +
273 + AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
274 + do_check_neq(b1, null);
275 + do_check_eq(b1.version, "1.0");
276 + do_check_false(b1.appDisabled);
277 + do_check_false(b1.userDisabled);
278 + do_check_true(b1.isActive);
279 + do_check_false(isExtensionInAddonsList(profileDir, b1.id));
280 +
281 + run_test_7();
282 + });
283 +}
284 +
285 +// Tests that uninstalling doesn't require a restart
286 +function run_test_7() {
287 + AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
288 + prepare_test({
289 + "langpack-x-testing@tests.mozilla.org": [
290 + ["onUninstalling", false],
291 + "onUninstalled"
292 + ]
293 + });
294 +
295 + do_check_eq(b1.operationsRequiringRestart &
296 + AddonManager.OP_NEEDS_RESTART_UNINSTALL, 0);
297 + b1.uninstall();
298 +
299 + check_test_7();
300 + });
301 +}
302 +
303 +function check_test_7() {
304 + ensure_test_completed();
305 + // check chrome reg that language pack is not registered
306 + do_check_locale_not_registered("test-langpack");
307 +
308 + AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
309 + do_check_eq(b1, null);
310 +
311 + restartManager();
312 +
313 + AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) {
314 + do_check_eq(newb1, null);
315 +
316 + do_test_finished();
317 + });
318 + });
319 +}
320 diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini
321 --- a/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini Wed Sep 26 13:08:50 2012 +0200
322 +++ b/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini Thu Sep 20 10:01:39 2012 +0200
323 @@ -139,6 +139,7 @@
324 [test_corrupt_strictcompat.js]
325 [test_db_sanity.js]
326 [test_dictionary.js]
327 +[test_langpack.js]
328 [test_disable.js]
329 [test_distribution.js]
330 [test_dss.js]