Closed
Bug 986499
Opened 10 years ago
Closed 10 years ago
Avoid the Deprecated.jsm compartment when not needed
Categories
(Toolkit :: General, defect)
Toolkit
General
Tracking
()
RESOLVED
FIXED
mozilla31
People
(Reporter: mak, Assigned: avp)
References
Details
(Whiteboard: [mentor=Yoric][lang=js])
Attachments
(1 file, 4 obsolete files)
5.80 KB,
patch
|
Yoric
:
review+
|
Details | Diff | Splinter Review |
As in many other cases people keeps forgetting about defineLazyModuleGetter. Deprecated.jsm is a module that is needed only in certain cases, Cu.import-ing it doesn't make sense. We may avoid this compartment on startup.
Updated•10 years ago
|
Whiteboard: [mentor=Yoric][lang=js]
Assignee | ||
Comment 1•10 years ago
|
||
Hi Yoric, I would like to work on this, can you please help me get started with it? Thanks.
Comment 2•10 years ago
|
||
Hi Abhishek! The goal of this bug, overall, is to change any Cu.import("resource://gre/modules/Deprecated.jsm"); calls into the equivalent defineLazyModuleGetter calls, so that the module import is made lazy. Let us know if you have specific questions about how to get started. Here's a list of affected callers: http://mxr.mozilla.org/mozilla-central/search?string=%28%22resource%3A%2F%2Fgre%2Fmodules%2FDeprecated (there's probably no value in changing the browser_Deprecated.js caller since that's just a test)
Assignee | ||
Comment 3•10 years ago
|
||
Thanks Gavin, will attach a patch soon !
Assignee | ||
Updated•10 years ago
|
Assignee: nobody → abhishekp.bugzilla
Assignee | ||
Updated•10 years ago
|
Status: NEW → ASSIGNED
Assignee | ||
Comment 4•10 years ago
|
||
Attachment #8395504 -
Flags: feedback?(dteller)
Comment 5•10 years ago
|
||
Comment on attachment 8395504 [details] [diff] [review] Made the calls to import Deprecated.jsm lazy Review of attachment 8395504 [details] [diff] [review]: ----------------------------------------------------------------- Good start, thanks. ::: toolkit/components/contentprefs/nsContentPrefService.js @@ +1239,5 @@ > }; > > function warnDeprecated() { > + XPCOMUtils.defineLazyModuleGetter(this, 'Deprecated', > + 'resource://gre/modules/Deprecated.jsm'); That one is not necessary, since warnDeprecated() itself is called only when needed. On the other hand, there is a small error in the original import, so let's take the opportunity to fix it. Let's replace Cu.import("resource://gre/modules/Deprecated.jsm"); with let Deprecated = Cu.import("resource://gre/modules/Deprecated.jsm", {}); This will ensure that we do not pollute the global scope. ::: toolkit/mozapps/downloads/DownloadLastDir.jsm @@ +105,5 @@ > // This function is now deprecated as it uses the sync nsIContentPrefService > // interface. New consumers should use the getFileAsync function. > getFile: function (aURI) { > + XPCOMUtils.defineLazyModuleGetter(this, 'Deprecated', > + 'resource://gre/modules/Deprecated.jsm'); As in nsContentPrefService.js .
Attachment #8395504 -
Flags: feedback?(dteller) → feedback+
Assignee | ||
Comment 6•10 years ago
|
||
Attachment #8395504 -
Attachment is obsolete: true
Attachment #8395602 -
Flags: feedback?(dteller)
Comment 7•10 years ago
|
||
Comment on attachment 8395602 [details] [diff] [review] Made the suggested changes Review of attachment 8395602 [details] [diff] [review]: ----------------------------------------------------------------- r=me with the modification below (assuming it passes tests) ::: toolkit/components/osfile/modules/osfile_async_front.jsm @@ +25,5 @@ > const Ci = Components.interfaces; > > let SharedAll = {}; > Cu.import("resource://gre/modules/osfile/osfile_shared_allthreads.jsm", SharedAll); > +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); , this);
Attachment #8395602 -
Flags: feedback?(dteller) → review+
Assignee | ||
Comment 8•10 years ago
|
||
I have made the changes. All the Mochitests on Toolkit directory passed, but the some xpcshell tests failed. Test Results on Pastebin : http://pastebin.mozilla.org/4668606 The error is in /toolkit/components/contentprefs/nsContentPrefService.js The call to Deprecated.warning() is not happening with the error "Deprecated.warning is not a function". So is the Deprecated object not being initialized before the call? How do I debug and resolve this?
Attachment #8395602 -
Attachment is obsolete: true
Flags: needinfo?(dteller)
Comment 9•10 years ago
|
||
Sorry, I meant let Deprecated = Cu.import(..., {}).Deprecated;
Flags: needinfo?(dteller)
Assignee | ||
Comment 10•10 years ago
|
||
All Tests Passed !
Attachment #8395779 -
Attachment is obsolete: true
Attachment #8396336 -
Flags: review?(dteller)
Comment on attachment 8396336 [details] [diff] [review] bug-986499-fix.diff Review of attachment 8396336 [details] [diff] [review]: ----------------------------------------------------------------- Good for me, with the change below. ::: toolkit/components/telemetry/TelemetryFile.jsm @@ +12,5 @@ > const Cr = Components.results; > const Cu = Components.utils; > > Cu.import("resource://gre/modules/Services.jsm", this); > +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Please add argument |this|, for compatibility with B2G.
Attachment #8396336 -
Flags: review?(dteller) → review+
Assignee | ||
Comment 12•10 years ago
|
||
Attachment #8396336 -
Attachment is obsolete: true
Attachment #8396338 -
Flags: review?(dteller)
Comment on attachment 8396338 [details] [diff] [review] bug-986499-fix.diff Review of attachment 8396338 [details] [diff] [review]: ----------------------------------------------------------------- Looks good to me, thanks for the patch.
Attachment #8396338 -
Flags: review?(dteller) → review+
Is everything ready for checkin, abhishekp?
Flags: needinfo?(abhishekp.bugzilla)
Updated•10 years ago
|
Keywords: checkin-needed
Comment 16•10 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/8d3f9720851c
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/8d3f9720851c
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla31
You need to log in
before you can comment on or make changes to this bug.
Description
•