Closed
Bug 986499
Opened 11 years ago
Closed 11 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•11 years ago
|
Whiteboard: [mentor=Yoric][lang=js]
| Assignee | ||
Comment 1•11 years ago
|
||
Hi Yoric,
I would like to work on this, can you please help me get started with it?
Thanks.
Comment 2•11 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•11 years ago
|
||
Thanks Gavin, will attach a patch soon !
| Assignee | ||
Updated•11 years ago
|
Assignee: nobody → abhishekp.bugzilla
| Assignee | ||
Updated•11 years ago
|
Status: NEW → ASSIGNED
| Assignee | ||
Comment 4•11 years ago
|
||
Attachment #8395504 -
Flags: feedback?(dteller)
Comment 5•11 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•11 years ago
|
||
Attachment #8395504 -
Attachment is obsolete: true
Attachment #8395602 -
Flags: feedback?(dteller)
Comment 7•11 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•11 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•11 years ago
|
||
Sorry, I meant
let Deprecated = Cu.import(..., {}).Deprecated;
Flags: needinfo?(dteller)
| Assignee | ||
Comment 10•11 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•11 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•11 years ago
|
Keywords: checkin-needed
Comment 16•11 years ago
|
||
Keywords: checkin-needed
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla31
You need to log in
before you can comment on or make changes to this bug.
Description
•