зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1364805 part 3 - Implement Type() by indexing a static array using the mClass field. Remove the nsIFrame::mType field. r=jfkthame
In the nsWindowMemoryReporter.cpp / nsArenaMemoryStats.h I'm only including the concrete frame classes now - we obviously never have instances of the other IDs so there's no need to collect stats for them. MozReview-Commit-ID: 48uFCZ3xKBC
This commit is contained in:
Родитель
1242172259
Коммит
483a804512
|
@ -407,7 +407,7 @@ CollectWindowReports(nsGlobalWindow *aWindow,
|
|||
js::MemoryReportingSundriesThreshold();
|
||||
|
||||
size_t frameSundriesSize = 0;
|
||||
#define FRAME_ID(classname) \
|
||||
#define FRAME_ID(classname, ...) \
|
||||
{ \
|
||||
size_t frameSize \
|
||||
= windowSizes.mArenaStats.FRAME_ID_STAT_FIELD(classname); \
|
||||
|
@ -421,8 +421,10 @@ CollectWindowReports(nsGlobalWindow *aWindow,
|
|||
aWindowTotalSizes->mArenaStats.FRAME_ID_STAT_FIELD(classname) \
|
||||
+= frameSize; \
|
||||
}
|
||||
#define ABSTRACT_FRAME_ID(...)
|
||||
#include "nsFrameIdList.h"
|
||||
#undef FRAME_ID
|
||||
#undef ABSTRACT_FRAME_ID
|
||||
|
||||
if (frameSundriesSize > 0) {
|
||||
REPORT_SIZE("/layout/frames/sundries", frameSundriesSize,
|
||||
|
@ -564,10 +566,12 @@ nsWindowMemoryReporter::CollectReports(nsIHandleReportCallback* aHandleReport,
|
|||
"This is the sum of all windows' 'layout/pres-contexts' numbers.");
|
||||
|
||||
size_t frameTotal = 0;
|
||||
#define FRAME_ID(classname) \
|
||||
#define FRAME_ID(classname, ...) \
|
||||
frameTotal += windowTotalSizes.mArenaStats.FRAME_ID_STAT_FIELD(classname);
|
||||
#define ABSTRACT_FRAME_ID(...)
|
||||
#include "nsFrameIdList.h"
|
||||
#undef FRAME_ID
|
||||
#undef ABSTRACT_FRAME_ID
|
||||
|
||||
REPORT("window-objects/layout/frames", frameTotal,
|
||||
"Memory used for layout frames within windows. "
|
||||
|
|
|
@ -50,9 +50,11 @@ struct nsArenaMemoryStats {
|
|||
#define ZERO_SIZE(kind, mSize) mSize(0),
|
||||
FOR_EACH_SIZE(ZERO_SIZE)
|
||||
#undef ZERO_SIZE
|
||||
#define FRAME_ID(classname) FRAME_ID_STAT_FIELD(classname)(),
|
||||
#define FRAME_ID(classname, ...) FRAME_ID_STAT_FIELD(classname)(),
|
||||
#define ABSTRACT_FRAME_ID(...)
|
||||
#include "nsFrameIdList.h"
|
||||
#undef FRAME_ID
|
||||
#undef ABSTRACT_FRAME_ID
|
||||
dummy()
|
||||
{}
|
||||
|
||||
|
@ -61,10 +63,12 @@ struct nsArenaMemoryStats {
|
|||
#define ADD_TO_TAB_SIZES(kind, mSize) sizes->add(nsTabSizes::kind, mSize);
|
||||
FOR_EACH_SIZE(ADD_TO_TAB_SIZES)
|
||||
#undef ADD_TO_TAB_SIZES
|
||||
#define FRAME_ID(classname) \
|
||||
#define FRAME_ID(classname, ...) \
|
||||
sizes->add(nsTabSizes::Other, FRAME_ID_STAT_FIELD(classname));
|
||||
#define ABSTRACT_FRAME_ID(...)
|
||||
#include "nsFrameIdList.h"
|
||||
#undef FRAME_ID
|
||||
#undef ABSTRACT_FRAME_ID
|
||||
}
|
||||
|
||||
size_t getTotalSize() const
|
||||
|
@ -73,19 +77,23 @@ struct nsArenaMemoryStats {
|
|||
#define ADD_TO_TOTAL_SIZE(kind, mSize) total += mSize;
|
||||
FOR_EACH_SIZE(ADD_TO_TOTAL_SIZE)
|
||||
#undef ADD_TO_TOTAL_SIZE
|
||||
#define FRAME_ID(classname) \
|
||||
total += FRAME_ID_STAT_FIELD(classname);
|
||||
#define FRAME_ID(classname, ...) \
|
||||
total += FRAME_ID_STAT_FIELD(classname);
|
||||
#define ABSTRACT_FRAME_ID(...)
|
||||
#include "nsFrameIdList.h"
|
||||
#undef FRAME_ID
|
||||
#undef ABSTRACT_FRAME_ID
|
||||
return total;
|
||||
}
|
||||
|
||||
#define DECL_SIZE(kind, mSize) size_t mSize;
|
||||
FOR_EACH_SIZE(DECL_SIZE)
|
||||
#undef DECL_SIZE
|
||||
#define FRAME_ID(classname) size_t FRAME_ID_STAT_FIELD(classname);
|
||||
#define FRAME_ID(classname, ...) size_t FRAME_ID_STAT_FIELD(classname);
|
||||
#define ABSTRACT_FRAME_ID(...)
|
||||
#include "nsFrameIdList.h"
|
||||
#undef FRAME_ID
|
||||
#undef ABSTRACT_FRAME_ID
|
||||
int dummy; // present just to absorb the trailing comma from FRAME_ID in the
|
||||
// constructor
|
||||
|
||||
|
|
|
@ -194,12 +194,14 @@ nsPresArena::AddSizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf,
|
|||
size_t* p;
|
||||
|
||||
switch (entry - mFreeLists) {
|
||||
#define FRAME_ID(classname) \
|
||||
#define FRAME_ID(classname, ...) \
|
||||
case nsQueryFrame::classname##_id: \
|
||||
p = &aArenaStats->FRAME_ID_STAT_FIELD(classname); \
|
||||
break;
|
||||
#define ABSTRACT_FRAME_ID(...)
|
||||
#include "nsFrameIdList.h"
|
||||
#undef FRAME_ID
|
||||
#undef ABSTRACT_FRAME_ID
|
||||
case eArenaObjectID_nsLineBox:
|
||||
p = &aArenaStats->mLineBoxes;
|
||||
break;
|
||||
|
|
|
@ -116,6 +116,20 @@ using namespace mozilla::layers;
|
|||
using namespace mozilla::layout;
|
||||
typedef nsAbsoluteContainingBlock::AbsPosReflowFlags AbsPosReflowFlags;
|
||||
|
||||
const mozilla::LayoutFrameType nsIFrame::sLayoutFrameTypes[
|
||||
#define FRAME_ID(...) 1 +
|
||||
#define ABSTRACT_FRAME_ID(...)
|
||||
#include "nsFrameIdList.h"
|
||||
#undef FRAME_ID
|
||||
#undef ABSTRACT_FRAME_ID
|
||||
0] = {
|
||||
#define FRAME_ID(class_, type_, ...) mozilla::LayoutFrameType:: type_,
|
||||
#define ABSTRACT_FRAME_ID(...)
|
||||
#include "nsFrameIdList.h"
|
||||
#undef FRAME_ID
|
||||
#undef ABSTRACT_FRAME_ID
|
||||
};
|
||||
|
||||
// Struct containing cached metrics for box-wrapped frames.
|
||||
struct nsBoxLayoutMetrics
|
||||
{
|
||||
|
|
|
@ -2,179 +2,183 @@
|
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
FRAME_ID(BRFrame)
|
||||
FRAME_ID(DetailsFrame)
|
||||
FRAME_ID(nsAutoRepeatBoxFrame)
|
||||
FRAME_ID(nsBCTableCellFrame)
|
||||
FRAME_ID(nsBackdropFrame)
|
||||
FRAME_ID(nsBlockFrame)
|
||||
FRAME_ID(nsBox)
|
||||
FRAME_ID(nsBoxFrame)
|
||||
FRAME_ID(nsBulletFrame)
|
||||
FRAME_ID(nsButtonBoxFrame)
|
||||
FRAME_ID(nsCanvasFrame)
|
||||
FRAME_ID(nsColorControlFrame)
|
||||
FRAME_ID(nsColumnSetFrame)
|
||||
FRAME_ID(nsComboboxControlFrame)
|
||||
FRAME_ID(nsComboboxDisplayFrame)
|
||||
FRAME_ID(nsContainerFrame)
|
||||
FRAME_ID(nsContinuingTextFrame)
|
||||
FRAME_ID(nsDateTimeControlFrame)
|
||||
FRAME_ID(nsDeckFrame)
|
||||
FRAME_ID(nsDocElementBoxFrame)
|
||||
FRAME_ID(nsFieldSetFrame)
|
||||
FRAME_ID(nsFileControlFrame)
|
||||
FRAME_ID(nsFirstLetterFrame)
|
||||
FRAME_ID(nsFirstLineFrame)
|
||||
FRAME_ID(nsFlexContainerFrame)
|
||||
FRAME_ID(nsFormControlFrame)
|
||||
FRAME_ID(nsFrame)
|
||||
FRAME_ID(nsGfxButtonControlFrame)
|
||||
FRAME_ID(nsGfxCheckboxControlFrame)
|
||||
FRAME_ID(nsGfxRadioControlFrame)
|
||||
FRAME_ID(nsGridContainerFrame)
|
||||
FRAME_ID(nsGridRowGroupFrame)
|
||||
FRAME_ID(nsGridRowLeafFrame)
|
||||
FRAME_ID(nsGroupBoxFrame)
|
||||
FRAME_ID(nsHTMLButtonControlFrame)
|
||||
FRAME_ID(nsHTMLCanvasFrame)
|
||||
FRAME_ID(nsHTMLFramesetBlankFrame)
|
||||
FRAME_ID(nsHTMLFramesetBorderFrame)
|
||||
FRAME_ID(nsHTMLFramesetFrame)
|
||||
FRAME_ID(nsHTMLScrollFrame)
|
||||
FRAME_ID(nsIAnonymousContentCreator)
|
||||
FRAME_ID(nsIComboboxControlFrame)
|
||||
FRAME_ID(nsIFormControlFrame)
|
||||
FRAME_ID(nsIFrame)
|
||||
FRAME_ID(nsIFrameFrame)
|
||||
FRAME_ID(nsIListControlFrame)
|
||||
FRAME_ID(nsIMathMLFrame)
|
||||
FRAME_ID(nsIMenuFrame)
|
||||
FRAME_ID(nsIObjectFrame)
|
||||
FRAME_ID(nsIPageSequenceFrame)
|
||||
FRAME_ID(nsIPercentBSizeObserver)
|
||||
FRAME_ID(nsIRootBox)
|
||||
FRAME_ID(nsSVGDisplayableFrame)
|
||||
FRAME_ID(nsISVGSVGFrame)
|
||||
FRAME_ID(nsIScrollableFrame)
|
||||
FRAME_ID(nsIScrollbarMediator)
|
||||
FRAME_ID(nsISelectControlFrame)
|
||||
FRAME_ID(nsIStatefulFrame)
|
||||
FRAME_ID(nsITableCellLayout)
|
||||
FRAME_ID(nsITableLayout)
|
||||
FRAME_ID(nsITextControlFrame)
|
||||
FRAME_ID(nsITreeBoxObject)
|
||||
FRAME_ID(nsImageBoxFrame)
|
||||
FRAME_ID(nsImageControlFrame)
|
||||
FRAME_ID(nsImageFrame)
|
||||
FRAME_ID(nsInlineFrame)
|
||||
FRAME_ID(nsLeafBoxFrame)
|
||||
FRAME_ID(nsLeafFrame)
|
||||
FRAME_ID(nsLegendFrame)
|
||||
FRAME_ID(nsListBoxBodyFrame)
|
||||
FRAME_ID(nsListControlFrame)
|
||||
FRAME_ID(nsListItemFrame)
|
||||
FRAME_ID(nsMathMLContainerFrame)
|
||||
FRAME_ID(nsMathMLFrame)
|
||||
FRAME_ID(nsMathMLmactionFrame)
|
||||
FRAME_ID(nsMathMLmathBlockFrame)
|
||||
FRAME_ID(nsMathMLmathInlineFrame)
|
||||
FRAME_ID(nsMathMLmencloseFrame)
|
||||
FRAME_ID(nsMathMLmfencedFrame)
|
||||
FRAME_ID(nsMathMLmfracFrame)
|
||||
FRAME_ID(nsMathMLmmultiscriptsFrame)
|
||||
FRAME_ID(nsMathMLmoFrame)
|
||||
FRAME_ID(nsMathMLmoverFrame)
|
||||
FRAME_ID(nsMathMLmpaddedFrame)
|
||||
FRAME_ID(nsMathMLmrootFrame)
|
||||
FRAME_ID(nsMathMLmrowFrame)
|
||||
FRAME_ID(nsMathMLmspaceFrame)
|
||||
FRAME_ID(nsMathMLmsqrtFrame)
|
||||
FRAME_ID(nsMathMLmstyleFrame)
|
||||
FRAME_ID(nsMathMLmtableFrame)
|
||||
FRAME_ID(nsMathMLmtableWrapperFrame)
|
||||
FRAME_ID(nsMathMLmtdFrame)
|
||||
FRAME_ID(nsMathMLmtdInnerFrame)
|
||||
FRAME_ID(nsMathMLmtrFrame)
|
||||
FRAME_ID(nsMathMLmunderFrame)
|
||||
FRAME_ID(nsMathMLmunderoverFrame)
|
||||
FRAME_ID(nsMathMLsemanticsFrame)
|
||||
FRAME_ID(nsMathMLTokenFrame)
|
||||
FRAME_ID(nsMenuBarFrame)
|
||||
FRAME_ID(nsMenuFrame)
|
||||
FRAME_ID(nsMenuPopupFrame)
|
||||
FRAME_ID(nsMeterFrame)
|
||||
FRAME_ID(nsNumberControlFrame)
|
||||
FRAME_ID(nsPluginFrame)
|
||||
FRAME_ID(nsPageBreakFrame)
|
||||
FRAME_ID(nsPageContentFrame)
|
||||
FRAME_ID(nsPageFrame)
|
||||
FRAME_ID(nsPlaceholderFrame)
|
||||
FRAME_ID(nsPopupSetFrame)
|
||||
FRAME_ID(nsProgressFrame)
|
||||
FRAME_ID(nsProgressMeterFrame)
|
||||
FRAME_ID(nsRangeFrame)
|
||||
FRAME_ID(nsResizerFrame)
|
||||
FRAME_ID(nsRootBoxFrame)
|
||||
FRAME_ID(nsRubyBaseContainerFrame)
|
||||
FRAME_ID(nsRubyBaseFrame)
|
||||
FRAME_ID(nsRubyContentFrame)
|
||||
FRAME_ID(nsRubyFrame)
|
||||
FRAME_ID(nsRubyTextContainerFrame)
|
||||
FRAME_ID(nsRubyTextFrame)
|
||||
FRAME_ID(nsScrollbarButtonFrame)
|
||||
FRAME_ID(nsScrollbarFrame)
|
||||
FRAME_ID(nsSelectsAreaFrame)
|
||||
FRAME_ID(nsSimplePageSequenceFrame)
|
||||
FRAME_ID(nsSliderFrame)
|
||||
FRAME_ID(nsSplittableFrame)
|
||||
FRAME_ID(nsSplitterFrame)
|
||||
FRAME_ID(nsStackFrame)
|
||||
FRAME_ID(nsSubDocumentFrame)
|
||||
FRAME_ID(nsSVGAFrame)
|
||||
FRAME_ID(nsSVGClipPathFrame)
|
||||
FRAME_ID(nsSVGContainerFrame)
|
||||
FRAME_ID(nsSVGDisplayContainerFrame)
|
||||
FRAME_ID(SVGFEContainerFrame)
|
||||
FRAME_ID(SVGFEImageFrame)
|
||||
FRAME_ID(SVGFELeafFrame)
|
||||
FRAME_ID(SVGFEUnstyledLeafFrame)
|
||||
FRAME_ID(nsSVGFilterFrame)
|
||||
FRAME_ID(nsSVGForeignObjectFrame)
|
||||
FRAME_ID(nsSVGGenericContainerFrame)
|
||||
FRAME_ID(nsSVGGFrame)
|
||||
FRAME_ID(nsSVGGradientFrame)
|
||||
FRAME_ID(nsSVGImageFrame)
|
||||
FRAME_ID(nsSVGInnerSVGFrame)
|
||||
FRAME_ID(nsSVGLinearGradientFrame)
|
||||
FRAME_ID(nsSVGMarkerFrame)
|
||||
FRAME_ID(nsSVGMarkerAnonChildFrame)
|
||||
FRAME_ID(nsSVGMaskFrame)
|
||||
FRAME_ID(nsSVGOuterSVGFrame)
|
||||
FRAME_ID(nsSVGOuterSVGAnonChildFrame)
|
||||
FRAME_ID(nsSVGPaintServerFrame)
|
||||
FRAME_ID(SVGGeometryFrame)
|
||||
FRAME_ID(nsSVGPatternFrame)
|
||||
FRAME_ID(nsSVGRadialGradientFrame)
|
||||
FRAME_ID(nsSVGStopFrame)
|
||||
FRAME_ID(nsSVGSwitchFrame)
|
||||
FRAME_ID(SVGTextFrame)
|
||||
FRAME_ID(nsSVGUseFrame)
|
||||
FRAME_ID(SVGViewFrame)
|
||||
FRAME_ID(nsTableCellFrame)
|
||||
FRAME_ID(nsTableColFrame)
|
||||
FRAME_ID(nsTableColGroupFrame)
|
||||
FRAME_ID(nsTableFrame)
|
||||
FRAME_ID(nsTableWrapperFrame)
|
||||
FRAME_ID(nsTableRowFrame)
|
||||
FRAME_ID(nsTableRowGroupFrame)
|
||||
FRAME_ID(nsTextBoxFrame)
|
||||
FRAME_ID(nsTextControlFrame)
|
||||
FRAME_ID(nsTextFrame)
|
||||
FRAME_ID(nsTitleBarFrame)
|
||||
FRAME_ID(nsTreeBodyFrame)
|
||||
FRAME_ID(nsTreeColFrame)
|
||||
FRAME_ID(nsVideoFrame)
|
||||
FRAME_ID(nsXULLabelFrame)
|
||||
FRAME_ID(nsXULScrollFrame)
|
||||
FRAME_ID(ViewportFrame)
|
||||
FRAME_ID(BRFrame, Br)
|
||||
FRAME_ID(DetailsFrame, Details)
|
||||
FRAME_ID(nsAutoRepeatBoxFrame, Box)
|
||||
FRAME_ID(nsBCTableCellFrame, BCTableCell)
|
||||
FRAME_ID(nsBackdropFrame, Backdrop)
|
||||
FRAME_ID(nsBlockFrame, Block)
|
||||
FRAME_ID(nsBox, None)
|
||||
FRAME_ID(nsBoxFrame, Box)
|
||||
FRAME_ID(nsBulletFrame, Bullet)
|
||||
FRAME_ID(nsButtonBoxFrame, Box)
|
||||
FRAME_ID(nsCanvasFrame, Canvas)
|
||||
FRAME_ID(nsColorControlFrame, ColorControl)
|
||||
FRAME_ID(nsColumnSetFrame, ColumnSet)
|
||||
FRAME_ID(nsComboboxControlFrame, ComboboxControl)
|
||||
FRAME_ID(nsComboboxDisplayFrame, ComboboxDisplay)
|
||||
FRAME_ID(nsContinuingTextFrame, Text)
|
||||
FRAME_ID(nsDateTimeControlFrame, DateTimeControl)
|
||||
FRAME_ID(nsDeckFrame, Deck)
|
||||
FRAME_ID(nsDocElementBoxFrame, Box)
|
||||
FRAME_ID(nsFieldSetFrame, FieldSet)
|
||||
FRAME_ID(nsFileControlFrame, Block)
|
||||
FRAME_ID(nsFirstLetterFrame, Letter)
|
||||
FRAME_ID(nsFirstLineFrame, Line)
|
||||
FRAME_ID(nsFlexContainerFrame, FlexContainer)
|
||||
FRAME_ID(nsFrame, None)
|
||||
FRAME_ID(nsGfxButtonControlFrame, GfxButtonControl)
|
||||
FRAME_ID(nsGfxCheckboxControlFrame, FormControl)
|
||||
FRAME_ID(nsGfxRadioControlFrame, FormControl)
|
||||
FRAME_ID(nsGridContainerFrame, GridContainer)
|
||||
FRAME_ID(nsGridRowGroupFrame, Box)
|
||||
FRAME_ID(nsGridRowLeafFrame, Box)
|
||||
FRAME_ID(nsGroupBoxFrame, Box)
|
||||
FRAME_ID(nsHTMLButtonControlFrame, HTMLButtonControl)
|
||||
FRAME_ID(nsHTMLCanvasFrame, HTMLCanvas)
|
||||
FRAME_ID(nsHTMLFramesetBlankFrame, None)
|
||||
FRAME_ID(nsHTMLFramesetBorderFrame, None)
|
||||
FRAME_ID(nsHTMLFramesetFrame, FrameSet)
|
||||
FRAME_ID(nsHTMLScrollFrame, Scroll)
|
||||
FRAME_ID(nsImageBoxFrame, ImageBox)
|
||||
FRAME_ID(nsImageControlFrame, ImageControl)
|
||||
FRAME_ID(nsImageFrame, Image)
|
||||
FRAME_ID(nsInlineFrame, Inline)
|
||||
FRAME_ID(nsLeafBoxFrame, LeafBox)
|
||||
FRAME_ID(nsLegendFrame, Legend)
|
||||
FRAME_ID(nsListBoxBodyFrame, Box)
|
||||
FRAME_ID(nsListControlFrame, ListControl)
|
||||
FRAME_ID(nsListItemFrame, Box)
|
||||
FRAME_ID(nsMathMLFrame, None)
|
||||
FRAME_ID(nsMathMLmactionFrame, None)
|
||||
FRAME_ID(nsMathMLmathBlockFrame, Block)
|
||||
FRAME_ID(nsMathMLmathInlineFrame, Inline)
|
||||
FRAME_ID(nsMathMLmencloseFrame, None)
|
||||
FRAME_ID(nsMathMLmfencedFrame, None)
|
||||
FRAME_ID(nsMathMLmfracFrame, None)
|
||||
FRAME_ID(nsMathMLmmultiscriptsFrame, None)
|
||||
FRAME_ID(nsMathMLmoFrame, None)
|
||||
FRAME_ID(nsMathMLmoverFrame, None) // XXX unused?
|
||||
FRAME_ID(nsMathMLmpaddedFrame, None)
|
||||
FRAME_ID(nsMathMLmrootFrame, None)
|
||||
FRAME_ID(nsMathMLmrowFrame, None)
|
||||
FRAME_ID(nsMathMLmspaceFrame, None)
|
||||
FRAME_ID(nsMathMLmsqrtFrame, None)
|
||||
FRAME_ID(nsMathMLmstyleFrame, None) // XXX unused?
|
||||
FRAME_ID(nsMathMLmtableFrame, Table)
|
||||
FRAME_ID(nsMathMLmtableWrapperFrame, TableWrapper)
|
||||
FRAME_ID(nsMathMLmtdFrame, TableCell)
|
||||
FRAME_ID(nsMathMLmtdInnerFrame, Block)
|
||||
FRAME_ID(nsMathMLmtrFrame, TableRow)
|
||||
FRAME_ID(nsMathMLmunderFrame, None) // XXX unused?
|
||||
FRAME_ID(nsMathMLmunderoverFrame, None)
|
||||
FRAME_ID(nsMathMLsemanticsFrame, None)
|
||||
FRAME_ID(nsMathMLTokenFrame, None)
|
||||
FRAME_ID(nsMenuBarFrame, Box)
|
||||
FRAME_ID(nsMenuFrame, Menu)
|
||||
FRAME_ID(nsMenuPopupFrame, MenuPopup)
|
||||
FRAME_ID(nsMeterFrame, Meter)
|
||||
FRAME_ID(nsNumberControlFrame, NumberControl)
|
||||
FRAME_ID(nsPluginFrame, Object)
|
||||
FRAME_ID(nsPageBreakFrame, PageBreak)
|
||||
FRAME_ID(nsPageContentFrame, PageContent)
|
||||
FRAME_ID(nsPageFrame, Page)
|
||||
FRAME_ID(nsPlaceholderFrame, Placeholder)
|
||||
FRAME_ID(nsPopupSetFrame, PopupSet)
|
||||
FRAME_ID(nsProgressFrame, Progress)
|
||||
FRAME_ID(nsProgressMeterFrame, Box)
|
||||
FRAME_ID(nsRangeFrame, Range)
|
||||
FRAME_ID(nsResizerFrame, Box)
|
||||
FRAME_ID(nsRootBoxFrame, Root)
|
||||
FRAME_ID(nsRubyBaseContainerFrame, RubyBaseContainer)
|
||||
FRAME_ID(nsRubyBaseFrame, RubyBase)
|
||||
FRAME_ID(nsRubyFrame, Ruby)
|
||||
FRAME_ID(nsRubyTextContainerFrame, RubyTextContainer)
|
||||
FRAME_ID(nsRubyTextFrame, RubyText)
|
||||
FRAME_ID(nsScrollbarButtonFrame, Box)
|
||||
FRAME_ID(nsScrollbarFrame, Scrollbar)
|
||||
FRAME_ID(nsSelectsAreaFrame, Block)
|
||||
FRAME_ID(nsSimplePageSequenceFrame, Sequence)
|
||||
FRAME_ID(nsSliderFrame, Slider)
|
||||
FRAME_ID(nsSplitterFrame, Box)
|
||||
FRAME_ID(nsStackFrame, Box)
|
||||
FRAME_ID(nsSubDocumentFrame, SubDocument)
|
||||
FRAME_ID(nsSVGAFrame, SVGA)
|
||||
FRAME_ID(nsSVGClipPathFrame, SVGClipPath)
|
||||
FRAME_ID(nsSVGContainerFrame, None)
|
||||
FRAME_ID(SVGFEContainerFrame, SVGFEContainer)
|
||||
FRAME_ID(SVGFEImageFrame, SVGFEImage)
|
||||
FRAME_ID(SVGFELeafFrame, SVGFELeaf)
|
||||
FRAME_ID(SVGFEUnstyledLeafFrame, SVGFEUnstyledLeaf)
|
||||
FRAME_ID(nsSVGFilterFrame, SVGFilter)
|
||||
FRAME_ID(nsSVGForeignObjectFrame, SVGForeignObject)
|
||||
FRAME_ID(nsSVGGenericContainerFrame, SVGGenericContainer)
|
||||
FRAME_ID(nsSVGGFrame, SVGG)
|
||||
FRAME_ID(nsSVGImageFrame, SVGImage)
|
||||
FRAME_ID(nsSVGInnerSVGFrame, SVGInnerSVG)
|
||||
FRAME_ID(nsSVGLinearGradientFrame, SVGLinearGradient)
|
||||
FRAME_ID(nsSVGMarkerFrame, SVGMarker)
|
||||
FRAME_ID(nsSVGMarkerAnonChildFrame, SVGMarkerAnonChild)
|
||||
FRAME_ID(nsSVGMaskFrame, SVGMask)
|
||||
FRAME_ID(nsSVGOuterSVGFrame, SVGOuterSVG)
|
||||
FRAME_ID(nsSVGOuterSVGAnonChildFrame, SVGOuterSVGAnonChild)
|
||||
FRAME_ID(SVGGeometryFrame, SVGGeometry)
|
||||
FRAME_ID(nsSVGPatternFrame, SVGPattern)
|
||||
FRAME_ID(nsSVGRadialGradientFrame, SVGRadialGradient)
|
||||
FRAME_ID(nsSVGStopFrame, SVGStop)
|
||||
FRAME_ID(nsSVGSwitchFrame, SVGSwitch)
|
||||
FRAME_ID(SVGTextFrame, SVGText)
|
||||
FRAME_ID(nsSVGUseFrame, SVGUse)
|
||||
FRAME_ID(SVGViewFrame, SVGView)
|
||||
FRAME_ID(nsTableCellFrame, TableCell)
|
||||
FRAME_ID(nsTableColFrame, TableCol)
|
||||
FRAME_ID(nsTableColGroupFrame, TableColGroup)
|
||||
FRAME_ID(nsTableFrame, Table)
|
||||
FRAME_ID(nsTableWrapperFrame, TableWrapper)
|
||||
FRAME_ID(nsTableRowFrame, TableRow)
|
||||
FRAME_ID(nsTableRowGroupFrame, TableRowGroup)
|
||||
FRAME_ID(nsTextBoxFrame, LeafBox)
|
||||
FRAME_ID(nsTextControlFrame, TextInput)
|
||||
FRAME_ID(nsTextFrame, Text)
|
||||
FRAME_ID(nsTitleBarFrame, Box)
|
||||
FRAME_ID(nsTreeBodyFrame, LeafBox)
|
||||
FRAME_ID(nsTreeColFrame, Box)
|
||||
FRAME_ID(nsVideoFrame, HTMLVideo)
|
||||
FRAME_ID(nsXULLabelFrame, XULLabel)
|
||||
FRAME_ID(nsXULScrollFrame, Scroll)
|
||||
FRAME_ID(ViewportFrame, Viewport)
|
||||
|
||||
// Non-concrete classes (for FrameIID use)
|
||||
ABSTRACT_FRAME_ID(nsContainerFrame)
|
||||
ABSTRACT_FRAME_ID(nsFormControlFrame)
|
||||
ABSTRACT_FRAME_ID(nsIFrame)
|
||||
ABSTRACT_FRAME_ID(nsLeafFrame)
|
||||
ABSTRACT_FRAME_ID(nsMathMLContainerFrame)
|
||||
ABSTRACT_FRAME_ID(nsRubyContentFrame)
|
||||
ABSTRACT_FRAME_ID(nsSplittableFrame)
|
||||
ABSTRACT_FRAME_ID(nsSVGDisplayContainerFrame)
|
||||
ABSTRACT_FRAME_ID(nsSVGGradientFrame)
|
||||
ABSTRACT_FRAME_ID(nsSVGPaintServerFrame)
|
||||
|
||||
// Interfaces (for FrameIID use)
|
||||
ABSTRACT_FRAME_ID(nsIAnonymousContentCreator)
|
||||
ABSTRACT_FRAME_ID(nsIComboboxControlFrame)
|
||||
ABSTRACT_FRAME_ID(nsIFormControlFrame)
|
||||
ABSTRACT_FRAME_ID(nsIFrameFrame)
|
||||
ABSTRACT_FRAME_ID(nsIListControlFrame)
|
||||
ABSTRACT_FRAME_ID(nsIMathMLFrame)
|
||||
ABSTRACT_FRAME_ID(nsIMenuFrame)
|
||||
ABSTRACT_FRAME_ID(nsIObjectFrame)
|
||||
ABSTRACT_FRAME_ID(nsIPageSequenceFrame)
|
||||
ABSTRACT_FRAME_ID(nsIPercentBSizeObserver)
|
||||
ABSTRACT_FRAME_ID(nsIRootBox)
|
||||
ABSTRACT_FRAME_ID(nsIScrollableFrame)
|
||||
ABSTRACT_FRAME_ID(nsIScrollbarMediator)
|
||||
ABSTRACT_FRAME_ID(nsISelectControlFrame)
|
||||
ABSTRACT_FRAME_ID(nsISVGSVGFrame)
|
||||
ABSTRACT_FRAME_ID(nsIStatefulFrame)
|
||||
ABSTRACT_FRAME_ID(nsITableCellLayout)
|
||||
ABSTRACT_FRAME_ID(nsITableLayout)
|
||||
ABSTRACT_FRAME_ID(nsITextControlFrame)
|
||||
ABSTRACT_FRAME_ID(nsITreeBoxObject)
|
||||
ABSTRACT_FRAME_ID(nsSVGDisplayableFrame)
|
||||
|
|
|
@ -615,7 +615,6 @@ public:
|
|||
, mNextSibling(nullptr)
|
||||
, mPrevSibling(nullptr)
|
||||
, mState(NS_FRAME_FIRST_REFLOW | NS_FRAME_IS_DIRTY)
|
||||
, mType(aType)
|
||||
, mClass(aID)
|
||||
{
|
||||
mozilla::PodZero(&mOverflow);
|
||||
|
@ -2704,12 +2703,15 @@ public:
|
|||
*
|
||||
* @see mozilla::LayoutFrameType
|
||||
*/
|
||||
mozilla::LayoutFrameType Type() const { return mType; }
|
||||
mozilla::LayoutFrameType Type() const {
|
||||
MOZ_ASSERT(uint8_t(mClass) < mozilla::ArrayLength(sLayoutFrameTypes));
|
||||
return sLayoutFrameTypes[uint8_t(mClass)];
|
||||
}
|
||||
|
||||
#define FRAME_TYPE(name_) \
|
||||
bool Is##name_##Frame() const \
|
||||
{ \
|
||||
return mType == mozilla::LayoutFrameType::name_; \
|
||||
return Type() == mozilla::LayoutFrameType::name_; \
|
||||
}
|
||||
#include "mozilla/FrameTypeList.h"
|
||||
#undef FRAME_TYPE
|
||||
|
@ -3901,9 +3903,6 @@ protected:
|
|||
/** @see GetWritingMode() */
|
||||
mozilla::WritingMode mWritingMode;
|
||||
|
||||
/** The type of the frame. */
|
||||
mozilla::LayoutFrameType mType;
|
||||
|
||||
/** The ClassID of the concrete class of this instance. */
|
||||
ClassID mClass; // 1 byte
|
||||
|
||||
|
@ -4030,6 +4029,15 @@ private:
|
|||
bool HasOpacityInternal(float aThreshold,
|
||||
mozilla::EffectSet* aEffectSet = nullptr) const;
|
||||
|
||||
// Maps mClass to LayoutFrameType.
|
||||
static const mozilla::LayoutFrameType sLayoutFrameTypes[
|
||||
#define FRAME_ID(...) 1 +
|
||||
#define ABSTRACT_FRAME_ID(...)
|
||||
#include "nsFrameIdList.h"
|
||||
#undef FRAME_ID
|
||||
#undef ABSTRACT_FRAME_ID
|
||||
0];
|
||||
|
||||
#ifdef DEBUG_FRAME_DUMP
|
||||
public:
|
||||
static void IndentBy(FILE* out, int32_t aIndent) {
|
||||
|
|
|
@ -58,9 +58,11 @@ class nsQueryFrame
|
|||
{
|
||||
public:
|
||||
enum FrameIID {
|
||||
#define FRAME_ID(classname) classname##_id,
|
||||
#define FRAME_ID(classname, ...) classname##_id,
|
||||
#define ABSTRACT_FRAME_ID(classname) classname##_id,
|
||||
#include "nsFrameIdList.h"
|
||||
#undef FRAME_ID
|
||||
#undef ABSTRACT_FRAME_ID
|
||||
|
||||
// This marker allows mozilla::ArenaObjectID to "extend" this enum
|
||||
// with additional sequential values for use in nsPresArena and
|
||||
|
|
Загрузка…
Ссылка в новой задаче