Closed
Bug 1024084
Opened 11 years ago
Closed 11 years ago
Use more specific #includes / forward-declarations in nsFrameManager.h
Categories
(Core :: Layout, defect)
Core
Layout
Tracking
()
RESOLVED
FIXED
mozilla33
People
(Reporter: dholbert, Assigned: dholbert)
References
Details
Attachments
(1 file, 2 obsolete files)
3.46 KB,
patch
|
jwatt
:
review+
|
Details | Diff | Splinter Review |
No description provided.
Assignee | ||
Comment 1•11 years ago
|
||
Attachment #8438676 -
Flags: review?(jwatt)
Assignee | ||
Comment 2•11 years ago
|
||
ChildListID now lives in nsFrameList.h, not nsIFrame.h -- hence the nsFrameList #include and the typedef-conversion.
(nsIFrame has its own convenience-typedef, but we don't need to depend on that here.)
![]() |
||
Updated•11 years ago
|
Attachment #8438676 -
Flags: review?(jwatt) → review+
Assignee | ||
Comment 3•11 years ago
|
||
Assignee | ||
Updated•11 years ago
|
Flags: in-testsuite-
Assignee | ||
Comment 4•11 years ago
|
||
Backed out: https://hg.mozilla.org/integration/mozilla-inbound/rev/5466ec649b54
...because this causes bustage in widget/android/nsAppShell.cpp, which #includes this header for no good reason (and depends on it to provide #includes of nsIContent.h and [indirectly] nsStyleContext.h)
Assignee | ||
Comment 5•11 years ago
|
||
Actually, the last part of comment 4 wasn't true - nsAppShell.cpp doesn't depend on this header to provide those things -- this header assumes those things, because (I'd forgotten) nsRefPtr<Foo> and nsCOMPtr<Foo> require that we've seen the class definition for Foo, since it expands to code that calls Foo's AddRef()/Release() methods.
I tested this more thoroughly by creating an empty .cpp file, adding it to SOURCES in moz.build, and giving it a single line "#include nsFrameManagerBase.h", and then (separately) "#include nsFrameManager.h", and rewrote this patch based on the results.
(Also, incidentally, we don't need the nsIPresShell include from the previous patch-version anymore, now that bug 1024138 has removed GetPresContext.)
Depends on: 1024138
Assignee | ||
Comment 6•11 years ago
|
||
(So in particular, the Android build failure was a hint that we need nsStyleContext.h and nsIContent.h, since we have a nsRefPtr of the former and a nsCOMPtr of the latter.)
Assignee | ||
Comment 7•11 years ago
|
||
Attachment #8438676 -
Attachment is obsolete: true
Attachment #8438812 -
Flags: review?(jwatt)
Assignee | ||
Comment 8•11 years ago
|
||
Comment on attachment 8438812 [details] [diff] [review]
fix v2
Some notes on the patch:
>diff --git a/layout/base/nsFrameManager.h b/layout/base/nsFrameManager.h
>+#include "nsAutoPtr.h"
>+#include "nsFrameList.h"
> #include "nsIContent.h"
>+#include "nsStyleContext.h"
>
> class nsContainerFrame;
>+class nsPlaceholderFrame;
(nsPlaceholderFrame fwd-decl is needed because we have a function that returns nsPlaceholderFrame*. Previously we got the nsPlaceholderFrame fwd-decl from the base header file, but the base header file doesn't actually need that fwd-decl, so I moved it here.)
>diff --git a/layout/base/nsFrameManagerBase.h b/layout/base/nsFrameManagerBase.h
>
>+#include "nsDebug.h"
(Needed because we have a NS_ASSERTION in this file)
> #include "pldhash.h"
>
>+class nsIFrame;
> class nsIPresShell;
> class nsStyleSet;
>-class nsIContent;
>-class nsPlaceholderFrame;
>-class nsIFrame;
>-class nsStyleContext;
>-class nsIAtom;
>-class nsStyleChangeList;
>-class nsILayoutHistoryState;
All the removed decls here aren't actually used in this file. (And I moved nsIFrame up top to preserve alphabetical order.)
Assignee | ||
Comment 9•11 years ago
|
||
...and that last patch didn't build, because a few other header files use nsStyleChangeList without forward-declaring it.
They were previously getting a forward-decl from nsFrameManagerBase.h, but they don't anymore, so they need their own forward-decl. I've added them in this version.
Try run: https://tbpl.mozilla.org/?tree=Try&rev=8691970c0128
Attachment #8438857 -
Flags: review?(jwatt)
Assignee | ||
Updated•11 years ago
|
Attachment #8438812 -
Attachment is obsolete: true
Attachment #8438812 -
Flags: review?(jwatt)
![]() |
||
Comment 10•11 years ago
|
||
Comment on attachment 8438857 [details] [diff] [review]
fix v3
Nice. :)
Attachment #8438857 -
Flags: review?(jwatt) → review+
Assignee | ||
Comment 11•11 years ago
|
||
Assignee | ||
Comment 12•11 years ago
|
||
(In reply to Daniel Holbert [:dholbert] from comment #4)
> [...] widget/android/nsAppShell.cpp, which
> #includes this header for no good reason
(FWIW, I filed bug 1024328 on removing this & other unnecessary {#include "nsFrameManager.h"} scattered across the tree.)
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla33
You need to log in
before you can comment on or make changes to this bug.
Description
•