Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2026 - (hide 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 niro 2026 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]