Closed
Bug 974687
Opened 11 years ago
Closed 11 years ago
always more MOZ_OVERRIDE in layout
Categories
(Core :: Layout, defect)
Core
Layout
Tracking
()
RESOLVED
FIXED
mozilla30
People
(Reporter: Six, Assigned: Six)
References
Details
Attachments
(2 files, 2 obsolete files)
30.00 KB,
patch
|
dholbert
:
review+
|
Details | Diff | Splinter Review |
130.30 KB,
patch
|
dholbert
:
review+
|
Details | Diff | Splinter Review |
There are about 300 methods in layout/ that aren't yet defined as MOZ_OVERRIDE.
Assignee | ||
Updated•11 years ago
|
Assignee: nobody → six.dsn
Status: NEW → ASSIGNED
Assignee | ||
Comment 2•11 years ago
|
||
Adds 297 MOZ_OVERRIDE in layout/
build in progress: https://tbpl.mozilla.org/?tree=Try&rev=40d4f8d72763
went fine earlier on linux64,win32 -do
If needed a whitespace patch will be filed as part2
Attachment #8379111 -
Flags: review?(dholbert)
Comment 3•11 years ago
|
||
Comment on attachment 8379111 [details] [diff] [review]
always_override_layout.patch
>Bug 974687: adds about 300 MOZ_OVERRIDE in layout/ r=dholbert
s/adds/add/
>+++ b/layout/svg/SVGTextFrame.cpp
>- void NotifyBeforeText(nscolor aColor);
>+ void NotifyBeforeText(nscolor aColor) MOZ_OVERRIDE;
> void NotifyGlyphPathEmitted();
> void NotifyBeforeSVGGlyphPainted();
> void NotifyAfterSVGGlyphPainted();
>- void NotifyAfterText();
>- void NotifyBeforeSelectionBackground(nscolor aColor);
>- void NotifySelectionBackgroundPathEmitted();
So there are three methods in the middle that stand out as being left untouched there -- NotifyGlyphPathEmitted, NotifyBeforeSVGGlyphPainted, NotifyAfterSVGGlyphPainted. I believe those all should be MOZ_OVERRIDE as well.
I'll bet your script didn't catch them because the superclass version of those methods is declared in gfx/thebes, outside of layout:
http://mxr.mozilla.org/mozilla-central/source/gfx/thebes/gfxFont.h#2704
(This is in SVGTextDrawPathCallbacks, which inherits from DrawPathCallbacks, which inherits from gfxTextRunDrawCallbacks, defined in gfxFont.h)
Could you either
(a) just annotate these 3 methods as MOZ_OVERRIDE by hand
...or...
(b) run your script in way that covers /gfx and /layout simultaneously, and see if it catches these (and maybe other stuff)
(not sure if (b) is too tricky to be worth it, just for these 3 methods. I'll bet it'd find another few opportunities, though.)
>+++ b/layout/xul/nsTextBoxFrame.cpp
[...]
> virtual nsRect GetComponentAlphaBounds(nsDisplayListBuilder* aBuilder);
>
>- virtual void DisableComponentAlpha() { mDisableSubpixelAA = true; }
>+ virtual void DisableComponentAlpha() MOZ_OVERRIDE { mDisableSubpixelAA = true; }
I think GetComponentAlphaBounds should be annotated, too.
This is:
http://mxr.mozilla.org/mozilla-central/source/layout/xul/nsTextBoxFrame.cpp#300
which overrides:
http://mxr.mozilla.org/mozilla-central/source/layout/base/nsDisplayList.h#1208
Do you know why that didn't get caught?
Assignee | ||
Comment 4•11 years ago
|
||
I don't think it hasn't been caught because the superclass is in another folder as i parse all headers present in m-c (including idl files as i do a ./mach build export) and only modify thoses in layout/
maybe my build export wasn't up-to-date, i will look if it changes something.
my guess i that the superclass header parsing failed because of something that isn't recognised, or by another macro that the parser doesn't handle correctly.
Whatever what makes thoses methods untouched i will take a look at it and if i don't find a way i will fix them manually but it won't be ideal as there might be a few more missing.
thanks for the comments
Comment 5•11 years ago
|
||
(In reply to Arnaud Sourioux [:Six] from comment #4)
> if i don't find a way i will fix them manually but it won't be ideal as there
> might be a few more missing.
Thanks!
Yeah, ideally it'd be great to catch absolutely everything. :) But that's probably not going to happen; and in the meantime, it's at least nice to have *contiguous* blocks of overridding methods annotated consistently. (And these were the only instances I saw in the patch where that wasn't happening.)
Assignee | ||
Comment 6•11 years ago
|
||
The same patch but including missing MOZ_OVERRIDE pointed out by Daniel.
A second patch will come to fix lines superior to 80col due to MOZ_OVERRIDE annotation.
About this:
>+++ b/layout/xul/nsTextBoxFrame.cpp
[...]
> virtual nsRect GetComponentAlphaBounds(nsDisplayListBuilder* aBuilder);
>
>- virtual void DisableComponentAlpha() { mDisableSubpixelAA = true; }
>+ virtual void DisableComponentAlpha() MOZ_OVERRIDE { mDisableSubpixelAA = true; }
it was the macro NS_DISPLAY_DECL_NAME("XULTextBox", TYPE_XUL_TEXT_BOX) just above that made the parser failed (as usual) so the script undestands this macro now.
about this:
> void NotifyGlyphPathEmitted();
> void NotifyBeforeSVGGlyphPainted();
> void NotifyAfterSVGGlyphPainted();
I added them manually as they are not automatically MOZ_OVERRIDED.
There still are many files that the cppheaderparser fails to parse correctly so the heritage tree is incomplete and i miss some MOZ_OVERRIDE.
Attachment #8379111 -
Attachment is obsolete: true
Attachment #8379111 -
Flags: review?(dholbert)
Attachment #8379236 -
Flags: review?(dholbert)
Assignee | ||
Comment 7•11 years ago
|
||
This is the 80col fix patch.
Part 2/2
Attachment #8379256 -
Flags: review?(dholbert)
Comment 8•11 years ago
|
||
Comment on attachment 8379236 [details] [diff] [review]
always_override_layout.patch
># HG changeset patch
># Parent cf9666cc3f36ec029d906a62168e22cff368c13d
># User Arnaud Sourioux <six.dsn@gmail.com>
>Bug 974687: Part 1/2 Add about 300 MOZ_OVERRIDE in layout/ r=dholbert
This looks good! Looks like you picked up a lot of methods after the NS_DISPLAY_DECL_NAME() macro. :)
However, there are a number of methods that were annotated in the first version that aren't annotated in this new version.
In particular, these methods (from the original patch) are no longer annotated:
nsDocumentViewer.cpp: Run()
nsPresContext.cpp: Run()
nsPresShell.cpp: Run()
nsComboboxControlFrame.cpp: HandleEvent()
nsSelection.cpp: Notify()
nsVideoFrame.cpp: Run()
nsPrintEngine.cpp: Run()
nsTableFrame.cpp: Run()
nsTreeBodyFrame.cpp: Run()
nsImageBoxFrame.cpp: Run()
nsMenuBarFrame.cpp: Run()
nsMenuFrame.cpp: Run() (two different Run() methods, actually)
nsMenuPopupFrame.cpp: Run()
You can see these on bugzilla's "differences between [] and this patch" view, here:
https://bugzilla.mozilla.org/attachment.cgi?oldid=8379111&action=interdiff&newid=8379236&headers=1
Ideally it'd be nice to keep all those annotations that you had in the original patch -- could you fix things to get those back in?
Comment 9•11 years ago
|
||
Comment on attachment 8379256 [details] [diff] [review]
always_override_layout_indent.patch
80-col fixes look good. Thanks!
Attachment #8379256 -
Flags: review?(dholbert) → review+
Assignee | ||
Comment 10•11 years ago
|
||
This one looks good, it looks like it includes all your remarks.
i don't know what happend on the last one as i just add to launch again my script and the Run() methods were annotate MOZ_OVERRIDE.
Attachment #8379236 -
Attachment is obsolete: true
Attachment #8379236 -
Flags: review?(dholbert)
Attachment #8379925 -
Flags: review?(dholbert)
Comment 11•11 years ago
|
||
Comment on attachment 8379925 [details] [diff] [review]
always_override_layout.patch
Looks good to me - thanks!
Attachment #8379925 -
Flags: review?(dholbert) → review+
Assignee | ||
Updated•11 years ago
|
Keywords: checkin-needed
Comment 12•11 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/5c277d91fcd6
https://hg.mozilla.org/integration/mozilla-inbound/rev/ac6b0bcdea0b
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/5c277d91fcd6
https://hg.mozilla.org/mozilla-central/rev/ac6b0bcdea0b
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla30
You need to log in
before you can comment on or make changes to this bug.
Description
•