Closed Bug 974687 Opened 11 years ago Closed 11 years ago

always more MOZ_OVERRIDE in layout

Categories

(Core :: Layout, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla30

People

(Reporter: Six, Assigned: Six)

References

Details

Attachments

(2 files, 2 obsolete files)

There are about 300 methods in layout/ that aren't yet defined as MOZ_OVERRIDE.
Assignee: nobody → six.dsn
Status: NEW → ASSIGNED
Depends on: 733186
Attached patch always_override_layout.patch (obsolete) — Splinter Review
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 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?
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
(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.)
Attached patch always_override_layout.patch (obsolete) — Splinter Review
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)
This is the 80col fix patch. Part 2/2
Attachment #8379256 - Flags: review?(dholbert)
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 on attachment 8379256 [details] [diff] [review] always_override_layout_indent.patch 80-col fixes look good. Thanks!
Attachment #8379256 - Flags: review?(dholbert) → review+
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 on attachment 8379925 [details] [diff] [review] always_override_layout.patch Looks good to me - thanks!
Attachment #8379925 - Flags: review?(dholbert) → review+
Keywords: checkin-needed
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.

Attachment

General

Created:
Updated:
Size: