Bug 1630704 - Part 25: Construct nsIFrame from NS_NewEmptyFrame r=emilio

Differential Revision: https://phabricator.services.mozilla.com/D81844
This commit is contained in:
Kagami Sascha Rosylight 2020-07-06 20:13:05 +00:00
Родитель dbd0071486
Коммит 9bfce76b8d
3 изменённых файлов: 13 добавлений и 2 удалений

Просмотреть файл

@ -32,6 +32,7 @@ FRAME_CLASSES = [
Frame("nsFirstLineFrame", "Line", NOT_LEAF), Frame("nsFirstLineFrame", "Line", NOT_LEAF),
Frame("nsFlexContainerFrame", "FlexContainer", NOT_LEAF), Frame("nsFlexContainerFrame", "FlexContainer", NOT_LEAF),
Frame("nsFrame", "None", NOT_LEAF), Frame("nsFrame", "None", NOT_LEAF),
Frame("nsIFrame", "None", NOT_LEAF),
Frame("nsGfxButtonControlFrame", "GfxButtonControl", LEAF), Frame("nsGfxButtonControlFrame", "GfxButtonControl", LEAF),
Frame("nsGridContainerFrame", "GridContainer", NOT_LEAF), Frame("nsGridContainerFrame", "GridContainer", NOT_LEAF),
Frame("nsGridRowGroupFrame", "Box", NOT_LEAF), Frame("nsGridRowGroupFrame", "Box", NOT_LEAF),
@ -150,7 +151,6 @@ FRAME_CLASSES = [
# Non-concrete classes (for FrameIID use) # Non-concrete classes (for FrameIID use)
AbstractFrame("nsContainerFrame"), AbstractFrame("nsContainerFrame"),
AbstractFrame("nsIFrame"),
AbstractFrame("nsLeafFrame"), AbstractFrame("nsLeafFrame"),
AbstractFrame("nsMathMLContainerFrame"), AbstractFrame("nsMathMLContainerFrame"),
AbstractFrame("nsRubyContentFrame"), AbstractFrame("nsRubyContentFrame"),

Просмотреть файл

@ -466,7 +466,7 @@ void WeakFrame::Init(nsIFrame* aFrame) {
} }
nsIFrame* NS_NewEmptyFrame(PresShell* aPresShell, ComputedStyle* aStyle) { nsIFrame* NS_NewEmptyFrame(PresShell* aPresShell, ComputedStyle* aStyle) {
return new (aPresShell) nsFrame(aStyle, aPresShell->GetPresContext()); return new (aPresShell) nsIFrame(aStyle, aPresShell->GetPresContext());
} }
nsFrame::nsFrame(ComputedStyle* aStyle, nsPresContext* aPresContext, nsFrame::nsFrame(ComputedStyle* aStyle, nsPresContext* aPresContext,
@ -481,6 +481,7 @@ nsIFrame::~nsIFrame() {
} }
NS_IMPL_FRAMEARENA_HELPERS(nsFrame) NS_IMPL_FRAMEARENA_HELPERS(nsFrame)
NS_IMPL_FRAMEARENA_HELPERS(nsIFrame)
// Dummy operator delete. Will never be called, but must be defined // Dummy operator delete. Will never be called, but must be defined
// to satisfy some C++ ABIs. // to satisfy some C++ ABIs.
@ -490,6 +491,10 @@ void nsFrame::operator delete(void*, size_t) {
NS_QUERYFRAME_HEAD(nsFrame) NS_QUERYFRAME_HEAD(nsFrame)
NS_QUERYFRAME_ENTRY(nsIFrame) NS_QUERYFRAME_ENTRY(nsIFrame)
NS_QUERYFRAME_TAIL_INHERITING(nsIFrame)
NS_QUERYFRAME_HEAD(nsIFrame)
NS_QUERYFRAME_ENTRY(nsIFrame)
NS_QUERYFRAME_TAIL_INHERITANCE_ROOT NS_QUERYFRAME_TAIL_INHERITANCE_ROOT
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////

Просмотреть файл

@ -660,6 +660,8 @@ class nsIFrame : public nsQueryFrame {
DisplayItemDataArray; DisplayItemDataArray;
typedef nsQueryFrame::ClassID ClassID; typedef nsQueryFrame::ClassID ClassID;
// nsQueryFrame
NS_DECL_QUERYFRAME
NS_DECL_QUERYFRAME_TARGET(nsIFrame) NS_DECL_QUERYFRAME_TARGET(nsIFrame)
explicit nsIFrame(ComputedStyle* aStyle, nsPresContext* aPresContext, explicit nsIFrame(ComputedStyle* aStyle, nsPresContext* aPresContext,
@ -699,6 +701,8 @@ class nsIFrame : public nsQueryFrame {
mozilla::PodZero(&mOverflow); mozilla::PodZero(&mOverflow);
MOZ_COUNT_CTOR(nsIFrame); MOZ_COUNT_CTOR(nsIFrame);
} }
explicit nsIFrame(ComputedStyle* aStyle, nsPresContext* aPresContext)
: nsIFrame(aStyle, aPresContext, ClassID::nsIFrame_id) {}
nsPresContext* PresContext() const { return mPresContext; } nsPresContext* PresContext() const { return mPresContext; }
@ -725,6 +729,8 @@ class nsIFrame : public nsQueryFrame {
virtual void Init(nsIContent* aContent, nsContainerFrame* aParent, virtual void Init(nsIContent* aContent, nsContainerFrame* aParent,
nsIFrame* aPrevInFlow); nsIFrame* aPrevInFlow);
void* operator new(size_t, mozilla::PresShell*) MOZ_MUST_OVERRIDE;
using PostDestroyData = mozilla::layout::PostFrameDestroyData; using PostDestroyData = mozilla::layout::PostFrameDestroyData;
struct MOZ_RAII AutoPostDestroyData { struct MOZ_RAII AutoPostDestroyData {
explicit AutoPostDestroyData(nsPresContext* aPresContext) explicit AutoPostDestroyData(nsPresContext* aPresContext)