зеркало из https://github.com/mozilla/gecko-dev.git
204 строки
10 KiB
Python
204 строки
10 KiB
Python
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# 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 class definitions, used to generate FrameIdList.h and FrameTypeList.h
|
|
|
|
from FrameClass import AbstractFrame, Frame
|
|
|
|
# Most frames support these.
|
|
COMMON = {
|
|
"SupportsCSSTransforms",
|
|
"SupportsContainLayoutAndPaint",
|
|
"SupportsAspectRatio",
|
|
}
|
|
LEAF = {"Leaf"}
|
|
MATHML = {"MathML"}
|
|
SVG = {"SVG"}
|
|
|
|
BLOCK = COMMON | {"CanContainOverflowContainers"}
|
|
|
|
REPLACED = COMMON | {"Replaced"}
|
|
REPLACED_SIZING = REPLACED | {"ReplacedSizing"}
|
|
REPLACED_WITH_BLOCK = REPLACED | {"ReplacedContainsBlock"}
|
|
REPLACED_SIZING_WITH_BLOCK = REPLACED_SIZING | REPLACED_WITH_BLOCK
|
|
|
|
TABLE = COMMON - {"SupportsCSSTransforms"}
|
|
TABLE_PART = {"SupportsCSSTransforms", "TablePart"}
|
|
TABLE_CELL = TABLE_PART | {"SupportsContainLayoutAndPaint"}
|
|
MATHML_CONTAINER = (COMMON - {"SupportsContainLayoutAndPaint"}) | MATHML
|
|
SVG_CONTENT = (COMMON - {"SupportsContainLayoutAndPaint"}) | SVG
|
|
SVG_CONTAINER = SVG_CONTENT | {"SVGContainer"}
|
|
|
|
# NOTE: Intentionally not including "COMMON" here.
|
|
INLINE = {"BidiInlineContainer", "LineParticipant"}
|
|
RUBY_CONTENT = {"LineParticipant"}
|
|
# FIXME(bug 713387): Shouldn't be Replaced, probably.
|
|
TEXT = COMMON | {"Replaced", "LineParticipant"} | LEAF
|
|
|
|
# See FrameClass.py and GenerateFrameLists.py for implementation details.
|
|
# The following is a list of all the frame classes, followed by the frame type,
|
|
# and a set of flags.
|
|
#
|
|
# The frame type is somewhat arbitrary (could literally be anything) but for
|
|
# new frame class implementations it's probably a good idea to make it a unique
|
|
# string (maybe matching the frame name).
|
|
#
|
|
# See bug 1555477 for some related discussion about the whole Type() set-up.
|
|
FRAME_CLASSES = [
|
|
Frame("BRFrame", "Br", REPLACED | LEAF | {"LineParticipant"}),
|
|
Frame("nsBCTableCellFrame", "TableCell", TABLE_CELL),
|
|
Frame("nsBackdropFrame", "Backdrop", COMMON | LEAF),
|
|
Frame("nsBlockFrame", "Block", BLOCK),
|
|
Frame("nsCanvasFrame", "Canvas", BLOCK),
|
|
# FIXME(emilio, bug 1866692): These don't have a block, wtf? Can we remove the "ReplacedContainsBlock" flag
|
|
Frame("nsCheckboxRadioFrame", "CheckboxRadio", REPLACED_WITH_BLOCK | LEAF),
|
|
Frame("nsColorControlFrame", "ColorControl", REPLACED_WITH_BLOCK | LEAF),
|
|
Frame("nsColumnSetFrame", "ColumnSet", COMMON),
|
|
Frame("ColumnSetWrapperFrame", "ColumnSetWrapper", BLOCK),
|
|
Frame("nsComboboxControlFrame", "ComboboxControl", BLOCK | REPLACED_WITH_BLOCK),
|
|
# FIXME(emilio, bug 1362907): Revisit these after that bug, this is the
|
|
# only frame that has ReplacedContainsBlock but not Replaced, which is
|
|
# sketchy.
|
|
Frame(
|
|
"nsComboboxDisplayFrame", "ComboboxDisplay", REPLACED_WITH_BLOCK - {"Replaced"}
|
|
),
|
|
Frame("nsContinuingTextFrame", "Text", TEXT),
|
|
Frame("nsDateTimeControlFrame", "DateTimeControl", REPLACED_WITH_BLOCK),
|
|
Frame("nsFieldSetFrame", "FieldSet", BLOCK),
|
|
Frame("nsFileControlFrame", "Block", REPLACED_WITH_BLOCK | LEAF),
|
|
Frame("FileControlLabelFrame", "Block", BLOCK | LEAF),
|
|
Frame("nsFirstLetterFrame", "Letter", INLINE),
|
|
Frame("nsFloatingFirstLetterFrame", "Letter", INLINE - {"LineParticipant"}),
|
|
Frame("nsFirstLineFrame", "Line", INLINE),
|
|
Frame("nsFlexContainerFrame", "FlexContainer", BLOCK),
|
|
Frame("nsIFrame", "None", COMMON),
|
|
Frame("nsGfxButtonControlFrame", "GfxButtonControl", REPLACED_WITH_BLOCK | LEAF),
|
|
Frame("nsGridContainerFrame", "GridContainer", BLOCK),
|
|
Frame("nsHTMLButtonControlFrame", "HTMLButtonControl", REPLACED_WITH_BLOCK),
|
|
Frame("nsHTMLCanvasFrame", "HTMLCanvas", REPLACED_SIZING),
|
|
Frame("nsHTMLFramesetBlankFrame", "None", COMMON | LEAF),
|
|
Frame("nsHTMLFramesetBorderFrame", "None", COMMON | LEAF),
|
|
Frame("nsHTMLFramesetFrame", "FrameSet", COMMON | LEAF),
|
|
Frame("nsHTMLScrollFrame", "Scroll", COMMON),
|
|
Frame("nsImageControlFrame", "ImageControl", REPLACED_SIZING | LEAF),
|
|
Frame("nsImageFrame", "Image", REPLACED_SIZING | {"LeafDynamic"}),
|
|
Frame("nsInlineFrame", "Inline", INLINE),
|
|
Frame("nsListControlFrame", "ListControl", REPLACED_WITH_BLOCK),
|
|
Frame("nsMathMLmathBlockFrame", "Block", BLOCK | MATHML),
|
|
Frame("nsMathMLmathInlineFrame", "Inline", INLINE | MATHML),
|
|
Frame("nsMathMLmencloseFrame", "None", MATHML_CONTAINER),
|
|
Frame("nsMathMLmfracFrame", "None", MATHML_CONTAINER),
|
|
Frame("nsMathMLmmultiscriptsFrame", "None", MATHML_CONTAINER),
|
|
Frame("nsMathMLmoFrame", "None", MATHML_CONTAINER),
|
|
Frame("nsMathMLmpaddedFrame", "None", MATHML_CONTAINER),
|
|
Frame("nsMathMLmrootFrame", "None", MATHML_CONTAINER),
|
|
Frame("nsMathMLmrowFrame", "None", MATHML_CONTAINER),
|
|
Frame("nsMathMLmspaceFrame", "None", MATHML_CONTAINER | LEAF),
|
|
Frame("nsMathMLmsqrtFrame", "None", MATHML_CONTAINER),
|
|
Frame("nsMathMLmtableFrame", "Table", TABLE | MATHML),
|
|
Frame("nsMathMLmtableWrapperFrame", "TableWrapper", BLOCK | MATHML),
|
|
Frame("nsMathMLmtdFrame", "TableCell", TABLE_CELL | MATHML),
|
|
Frame("nsMathMLmtdInnerFrame", "Block", BLOCK | MATHML),
|
|
Frame("nsMathMLmtrFrame", "TableRow", TABLE_PART | MATHML),
|
|
Frame("nsMathMLmunderoverFrame", "None", MATHML_CONTAINER),
|
|
Frame("nsMathMLTokenFrame", "None", MATHML_CONTAINER),
|
|
Frame("nsMenuPopupFrame", "MenuPopup", BLOCK),
|
|
Frame("nsMeterFrame", "Meter", REPLACED_WITH_BLOCK | LEAF),
|
|
Frame("nsNumberControlFrame", "TextInput", REPLACED_WITH_BLOCK | LEAF),
|
|
Frame("nsPageBreakFrame", "PageBreak", COMMON | LEAF),
|
|
Frame("nsPageContentFrame", "PageContent", BLOCK),
|
|
Frame("nsPageFrame", "Page", COMMON),
|
|
Frame("nsPlaceholderFrame", "Placeholder", COMMON | LEAF),
|
|
Frame("nsProgressFrame", "Progress", REPLACED_WITH_BLOCK | LEAF),
|
|
Frame("nsRangeFrame", "Range", REPLACED_WITH_BLOCK | LEAF),
|
|
Frame("nsRubyBaseContainerFrame", "RubyBaseContainer", RUBY_CONTENT),
|
|
Frame("nsRubyBaseFrame", "RubyBase", RUBY_CONTENT),
|
|
Frame("nsRubyFrame", "Ruby", RUBY_CONTENT),
|
|
Frame("nsRubyTextContainerFrame", "RubyTextContainer", {"None"}),
|
|
Frame("nsRubyTextFrame", "RubyText", RUBY_CONTENT),
|
|
Frame("SimpleXULLeafFrame", "SimpleXULLeaf", COMMON | LEAF),
|
|
Frame("nsScrollbarButtonFrame", "SimpleXULLeaf", COMMON | LEAF),
|
|
Frame("nsScrollbarFrame", "Scrollbar", COMMON),
|
|
Frame("nsSearchControlFrame", "SearchControl", LEAF),
|
|
Frame("nsSelectsAreaFrame", "Block", BLOCK),
|
|
Frame("nsPageSequenceFrame", "PageSequence", COMMON),
|
|
Frame("nsSliderFrame", "Slider", COMMON),
|
|
Frame("nsSplitterFrame", "SimpleXULLeaf", COMMON | LEAF),
|
|
Frame("nsSubDocumentFrame", "SubDocument", REPLACED_SIZING_WITH_BLOCK | LEAF),
|
|
Frame("PrintedSheetFrame", "PrintedSheet", COMMON),
|
|
Frame("SVGAFrame", "SVGA", SVG_CONTAINER),
|
|
Frame("SVGClipPathFrame", "SVGClipPath", SVG_CONTAINER),
|
|
Frame("SVGContainerFrame", "None", SVG_CONTAINER),
|
|
Frame("SVGFEContainerFrame", "SVGFEContainer", SVG_CONTENT),
|
|
Frame("SVGFEImageFrame", "SVGFEImage", SVG_CONTENT | LEAF),
|
|
Frame("SVGFELeafFrame", "SVGFELeaf", SVG_CONTENT | LEAF),
|
|
Frame("SVGFEUnstyledLeafFrame", "SVGFEUnstyledLeaf", SVG_CONTENT | LEAF),
|
|
Frame("SVGFilterFrame", "SVGFilter", SVG_CONTAINER),
|
|
Frame("SVGForeignObjectFrame", "SVGForeignObject", SVG_CONTENT),
|
|
Frame("SVGGeometryFrame", "SVGGeometry", SVG_CONTENT | LEAF),
|
|
Frame("SVGGFrame", "SVGG", SVG_CONTAINER),
|
|
Frame("SVGImageFrame", "SVGImage", SVG_CONTENT | LEAF),
|
|
Frame("SVGInnerSVGFrame", "SVGInnerSVG", SVG_CONTAINER),
|
|
Frame("SVGLinearGradientFrame", "SVGLinearGradient", SVG_CONTAINER),
|
|
Frame("SVGMarkerFrame", "SVGMarker", SVG_CONTAINER),
|
|
Frame("SVGMarkerAnonChildFrame", "SVGMarkerAnonChild", SVG_CONTAINER),
|
|
Frame("SVGMaskFrame", "SVGMask", SVG_CONTAINER),
|
|
Frame(
|
|
"SVGOuterSVGFrame",
|
|
"SVGOuterSVG",
|
|
SVG_CONTAINER | {"Replaced", "ReplacedSizing", "SupportsContainLayoutAndPaint"},
|
|
),
|
|
Frame("SVGOuterSVGAnonChildFrame", "SVGOuterSVGAnonChild", SVG_CONTAINER),
|
|
Frame("SVGPatternFrame", "SVGPattern", SVG_CONTAINER),
|
|
Frame("SVGRadialGradientFrame", "SVGRadialGradient", SVG_CONTAINER),
|
|
Frame("SVGStopFrame", "SVGStop", SVG_CONTENT | LEAF),
|
|
Frame("SVGSwitchFrame", "SVGSwitch", SVG_CONTAINER),
|
|
Frame("SVGSymbolFrame", "SVGSymbol", SVG_CONTAINER),
|
|
Frame("SVGTextFrame", "SVGText", SVG_CONTAINER),
|
|
# Not a leaf, though it always has a ShadowRoot, so in practice light DOM
|
|
# children never render.
|
|
Frame("SVGUseFrame", "SVGUse", SVG_CONTAINER),
|
|
Frame("MiddleCroppingLabelFrame", "MiddleCroppingLabel", BLOCK | LEAF),
|
|
Frame("SVGViewFrame", "SVGView", SVG_CONTENT | LEAF),
|
|
Frame("nsTableCellFrame", "TableCell", TABLE_CELL),
|
|
Frame("nsTableColFrame", "TableCol", TABLE_PART),
|
|
Frame("nsTableColGroupFrame", "TableColGroup", TABLE_PART),
|
|
Frame("nsTableFrame", "Table", TABLE),
|
|
Frame("nsTableWrapperFrame", "TableWrapper", BLOCK),
|
|
Frame("nsTableRowFrame", "TableRow", TABLE_PART),
|
|
Frame("nsTableRowGroupFrame", "TableRowGroup", TABLE_PART),
|
|
Frame("nsTextControlFrame", "TextInput", REPLACED_WITH_BLOCK | LEAF),
|
|
Frame("nsTextFrame", "Text", TEXT),
|
|
Frame("nsTreeBodyFrame", "SimpleXULLeaf", COMMON | LEAF),
|
|
Frame("nsVideoFrame", "HTMLVideo", REPLACED_SIZING),
|
|
Frame("nsAudioFrame", "HTMLVideo", REPLACED_SIZING - {"SupportsAspectRatio"}),
|
|
Frame("ViewportFrame", "Viewport", COMMON),
|
|
Frame("WBRFrame", "Wbr", COMMON | LEAF),
|
|
# Non-concrete classes (for FrameIID use)
|
|
AbstractFrame("MiddleCroppingBlockFrame"),
|
|
AbstractFrame("nsContainerFrame"),
|
|
AbstractFrame("nsLeafFrame"),
|
|
AbstractFrame("nsMathMLFrame"),
|
|
AbstractFrame("nsMathMLContainerFrame"),
|
|
AbstractFrame("nsRubyContentFrame"),
|
|
AbstractFrame("nsSplittableFrame"),
|
|
AbstractFrame("SVGDisplayContainerFrame"),
|
|
AbstractFrame("SVGGradientFrame"),
|
|
AbstractFrame("SVGPaintServerFrame"),
|
|
# Interfaces (for FrameIID use)
|
|
AbstractFrame("nsIAnonymousContentCreator"),
|
|
AbstractFrame("nsIFormControlFrame"),
|
|
AbstractFrame("nsIMathMLFrame"),
|
|
AbstractFrame("nsIPercentBSizeObserver"),
|
|
AbstractFrame("nsIPopupContainer"),
|
|
AbstractFrame("nsIScrollableFrame"),
|
|
AbstractFrame("nsIScrollbarMediator"),
|
|
AbstractFrame("nsISelectControlFrame"),
|
|
AbstractFrame("nsIStatefulFrame"),
|
|
AbstractFrame("ISVGDisplayableFrame"),
|
|
AbstractFrame("ISVGSVGFrame"),
|
|
AbstractFrame("nsITableCellLayout"),
|
|
AbstractFrame("nsITableLayout"),
|
|
AbstractFrame("nsITextControlFrame"),
|
|
]
|