blob: d4e3d6aa8ce7595aa1e6f59ecea712d3d5feb2fe [file] [log] [blame]
{
// This file specifies fields in ComputedStyle that we would like to
// generate, but are not CSS properties.
parameters: {
// If true, we do not include this field in ComputedStyleBase::InheritFrom
// and ComputedStyleBase::CopyNonInheritedFromCached.
custom_copy: {
default: false,
},
// If true, we do not include this field in ComputedStyleBase::InheritedEqual
// and ComputedStyleBase::NonInheritedEqual.
custom_compare: {
default: false,
},
// The rest is the same as CSSProperties.json5, but the only relevant ones in
// this file are:
// name, field_template, include_paths, default_value, type_name, keyword,
// inherited
},
data: [
{
name: "IsLink",
field_template: "monotonic_flag",
default_value: "false",
custom_copy: true,
custom_compare: true,
},
{
name: "BorderLeftColorIsCurrentColor",
field_template: "primitive",
default_value: "true",
type_name: "bool",
field_group: "surround",
},
{
name: "BorderRightColorIsCurrentColor",
field_template: "primitive",
default_value: "true",
type_name: "bool",
field_group: "surround",
},
{
name: "BorderTopColorIsCurrentColor",
field_template: "primitive",
default_value: "true",
type_name: "bool",
field_group: "surround",
},
{
name: "BorderBottomColorIsCurrentColor",
field_template: "primitive",
default_value: "true",
type_name: "bool",
field_group: "surround",
},
{
name: "OriginalDisplay",
field_template: "keyword",
default_value: "inline",
type_name: "EDisplay",
keywords: [
"inline", "block", "list-item", "inline-block", "table", "inline-table", "table-row-group", "table-header-group",
"table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption", "-webkit-box",
"-webkit-inline-box", "flex", "inline-flex", "grid", "inline-grid", "contents", "flow-root", "none",
],
},
{
name: "InsideLink",
field_template: "keyword",
default_value: "not-inside-link",
keywords: ["not-inside-link", "inside-unvisited-link", "inside-visited-link"],
inherited: true,
},
// Style can not be shared.
{
name: "Unique",
field_template: "monotonic_flag",
default_value: "false",
custom_copy: true,
custom_compare: true,
},
// Whether this style is affected by these pseudo-classes.
{
name: "AffectedByFocusWithin",
field_template: "monotonic_flag",
default_value: "false",
custom_copy: true,
custom_compare: true,
},
{
name: "AffectedByHover",
field_template: "monotonic_flag",
default_value: "false",
custom_copy: true,
custom_compare: true,
},
{
name: "AffectedByActive",
field_template: "monotonic_flag",
default_value: "false",
custom_copy: true,
custom_compare: true,
},
{
name: "AffectedByDrag",
field_template: "monotonic_flag",
default_value: "false",
custom_copy: true,
custom_compare: true,
},
// A non-inherited property references a variable or @apply is used
{
name: "HasVariableReferenceFromNonInheritedProperty",
field_template: "monotonic_flag",
default_value: "false",
custom_copy: true,
custom_compare: true,
},
// Explicitly inherits a non-inherited property
{
name: "HasExplicitlyInheritedProperties",
field_template: "monotonic_flag",
default_value: "false",
custom_copy: true,
custom_compare: true,
},
// These are set if we used viewport or rem units when resolving a length.
// TODO(shend): HasViewportUnits should be a monotonic_flag.
{
name: "HasViewportUnits",
field_template: "primitive",
default_value: "false",
type_name: "bool",
custom_compare: true,
},
{
name: "HasRemUnits",
field_template: "monotonic_flag",
default_value: "false",
custom_compare: true,
},
// These properties only have generated storage, and their methods are handwritten in ComputedStyle.
// TODO(shend): Remove these fields and delete the 'storage_only' template.
{
name: "EmptyState",
field_template: "storage_only",
field_size: 1,
default_value: "false",
type_name: "bool",
custom_copy: true,
custom_compare: true,
},
{
name: "StyleType",
field_template: "storage_only",
field_size: 6,
default_value: "0",
type_name: "PseudoId",
custom_copy: true,
custom_compare: true,
},
{
name: "PseudoBits",
field_template: "storage_only",
field_size: 8,
default_value: "kPseudoIdNone",
type_name: "PseudoId",
custom_copy: true,
custom_compare: true,
},
// True if 'underline solid' is the only text decoration on this element.
{
name: "HasSimpleUnderline",
field_template: "storage_only",
field_size: 1,
default_value: "false",
type_name: "bool",
inherited: true,
},
// TODO(shend): vertical align is actually a CSS property, but since we don't support union fields
// which can be either a keyword or Length, this is specified in this file for now. Remove this
// once we can support union fields.
{
name: "VerticalAlign",
field_template: "storage_only",
field_size: 4,
default_value: "EVerticalAlign::kBaseline",
type_name: "EVerticalAlign",
},
{
name: "VerticalAlignLength",
field_template: "storage_only",
default_value: "Length()",
include_paths: ["platform/Length.h"],
type_name: "Length",
field_group: "box",
},
{
name: "border-image",
field_template: "external",
include_paths: ["core/style/NinePieceImage.h"],
type_name: "NinePieceImage",
field_group: "surround",
default_value: "NinePieceImage()",
},
{
name: "Background",
field_template: "storage_only",
include_paths: ["core/style/FillLayer.h"],
type_name: "FillLayer",
default_value: "FillLayer(kBackgroundFillLayer, true)",
field_group: "background",
},
{
name: "BackgroundColor",
field_template: "storage_only",
include_paths: ["core/css/StyleColor.h"],
type_name: "StyleColor",
default_value: "Color::kTransparent",
field_group: "background",
},
{
name: "TextDecoration",
field_template: "storage_only",
type_name: "TextDecoration",
field_size: 4,
default_value: "TextDecoration::kNone",
field_group: "visual",
},
{
name: "HasAutoClip",
field_template: "storage_only",
type_name: "bool",
field_size: 1,
default_value: "true",
field_group: "visual",
},
{
name: "HasAutoZIndex",
field_template: "storage_only",
type_name: "bool",
field_size: 1,
field_group: "box",
default_value: "true",
},
{
name: "font",
field_template: "storage_only",
include_paths: ["platform/fonts/Font.h"],
type_name: "Font",
field_group: "inherited",
inherited: true,
default_value: "Font()",
},
{
name: "color",
inherited: true,
field_template: "storage_only",
include_paths: ["platform/graphics/Color.h"],
type_name: "Color",
field_group: "inherited",
default_value: "Color::kBlack",
},
{
name: "VisitedLinkColor",
inherited: true,
field_template: "external",
include_paths: ["platform/graphics/Color.h"],
type_name: "Color",
field_group: "inherited",
default_value: "Color::kBlack",
},
{
name: "TextAutosizingMultiplier",
inherited: true,
field_template: "storage_only",
type_name: "float",
field_group: "inherited",
default_value: "1.0",
},
{
name: "VisitedLinkTextStrokeColor",
inherited: true,
field_template: "storage_only",
type_name: "Color",
include_paths: ["platform/graphics/Color.h"],
default_value: "Color()",
field_group: "rare-inherited",
},
{
name: "VisitedLinkTextFillColor",
inherited: true,
field_template: "storage_only",
type_name: "Color",
include_paths: ["platform/graphics/Color.h"],
default_value: "Color()",
field_group: "rare-inherited",
},
{
name: "VisitedLinkTextEmphasisColor",
inherited: true,
field_template: "storage_only",
type_name: "Color",
include_paths: ["platform/graphics/Color.h"],
default_value: "Color()",
field_group: "rare-inherited",
},
{
name: "VisitedLinkCaretColor",
inherited: true,
field_template: "storage_only",
type_name: "Color",
include_paths: ["platform/graphics/Color.h"],
default_value: "Color()",
field_group: "rare-inherited",
},
{
name: "CursorData",
inherited: true,
field_template: "storage_only",
type_name: "CursorList",
include_paths: ["core/style/CursorList.h"],
default_value: "nullptr",
wrapper_pointer_name: "Persistent",
field_group: "rare-inherited",
},
{
name: "EffectiveZoom",
inherited: true,
field_template: "storage_only",
type_name: "float",
default_value: "1.0f",
field_group: "rare-inherited",
},
{
name: "TextStrokeColorIsCurrentColor",
inherited: true,
field_template: "storage_only",
type_name: "bool",
default_value: "true",
field_size: 1,
field_group: "rare-inherited",
},
{
name: "TextFillColorIsCurrentColor",
inherited: true,
field_template: "storage_only",
type_name: "bool",
default_value: "true",
field_size: 1,
field_group: "rare-inherited",
},
{
name: "TextEmphasisColorIsCurrentColor",
inherited: true,
field_template: "storage_only",
type_name: "bool",
default_value: "true",
field_size: 1,
field_group: "rare-inherited",
},
{
name: "CaretColorIsCurrentColor",
inherited: true,
field_template: "storage_only",
type_name: "bool",
default_value: "false",
field_size: 1,
field_group: "rare-inherited",
},
{
name: "CaretColorIsAuto",
inherited: true,
field_template: "storage_only",
type_name: "bool",
default_value: "true",
field_size: 1,
field_group: "rare-inherited",
},
{
name: "VisitedLinkTextStrokeColorIsCurrentColor",
inherited: true,
field_template: "storage_only",
type_name: "bool",
default_value: "true",
field_size: 1,
field_group: "rare-inherited",
},
{
name: "VisitedLinkTextFillColorIsCurrentColor",
inherited: true,
field_template: "storage_only",
type_name: "bool",
default_value: "true",
field_size: 1,
field_group: "rare-inherited",
},
{
name: "VisitedLinkTextEmphasisColorIsCurrentColor",
inherited: true,
field_template: "storage_only",
type_name: "bool",
default_value: "true",
field_size: 1,
field_group: "rare-inherited",
},
{
name: "VisitedLinkCaretColorIsCurrentColor",
inherited: true,
field_template: "storage_only",
type_name: "bool",
default_value: "false",
field_size: 1,
field_group: "rare-inherited",
},
{
name: "VisitedLinkCaretColorIsAuto",
inherited: true,
field_template: "storage_only",
type_name: "bool",
default_value: "true",
field_size: 1,
field_group: "rare-inherited",
},
{
name: "TextEmphasisFill",
inherited: true,
field_template: "keyword",
type_name: "TextEmphasisFill",
default_value: "filled",
keywords: ["filled", "open"],
field_group: "rare-inherited",
},
{
name: "TextEmphasisMark",
inherited: true,
field_template: "storage_only",
type_name: "TextEmphasisMark",
default_value: "TextEmphasisMark::kNone",
field_size: 3,
field_group: "rare-inherited",
},
{
name: "TextIndentLine",
inherited: true,
field_template: "keyword",
type_name: "TextIndentLine",
keywords: ["first-line", "each-line"],
default_value: "first-line",
field_group: "rare-inherited",
},
{
name: "TextIndentType",
inherited: true,
field_template: "keyword",
type_name: "TextIndentType",
keywords: ["normal", "hanging"],
default_value: "normal",
field_group: "rare-inherited",
},
// Though will-change is not itself an inherited property, the intent
// expressed by 'will-change: contents' includes descendants.
{
name: "SubtreeWillChangeContents",
inherited: true,
field_template: "primitive",
type_name: "bool",
default_value: "false",
field_group: "rare-inherited",
},
{
name: "SelfOrAncestorHasDirAutoAttribute",
inherited: true,
field_template: "storage_only",
type_name: "bool",
default_value: "false",
field_size: 1,
field_group: "rare-inherited",
},
{
name: "RespectImageOrientation",
inherited: true,
field_template: "storage_only",
type_name: "bool",
default_value: "false",
field_size: 1,
field_group: "rare-inherited",
},
// Though position: sticky is not itself an inherited property, being a
// descendent of a sticky element changes some document lifecycle logic.
{
name: "SubtreeIsSticky",
inherited: true,
field_template: "primitive",
type_name: "bool",
default_value: "false",
field_size: 1,
field_group: "rare-inherited",
},
{
name: "HyphenationLimitBefore",
inherited: true,
field_template: "storage_only",
type_name: "short",
default_value: "-1",
field_group: "rare-inherited",
},
{
name: "HyphenationLimitAfter",
inherited: true,
field_template: "storage_only",
type_name: "short",
default_value: "-1",
field_group: "rare-inherited",
},
{
name: "HyphenationLimitLines",
inherited: true,
field_template: "storage_only",
type_name: "short",
default_value: "-1",
field_group: "rare-inherited",
},
{
name: "TextEmphasisCustomMark",
inherited: true,
field_template: "external",
type_name: "AtomicString",
include_paths: ["platform/wtf/text/AtomicString.h"],
default_value: "AtomicString()",
field_group: "rare-inherited",
},
{
name: "AppliedTextDecorations",
inherited: true,
field_template: "storage_only",
type_name: "AppliedTextDecorationList",
include_paths: ["core/style/AppliedTextDecorationList.h"],
default_value: "nullptr",
wrapper_pointer_name: "RefPtr",
field_group: "rare-inherited",
},
{
name: "InheritedVariables",
inherited: true,
field_template: "storage_only",
type_name: "StyleInheritedVariables",
include_paths: ["core/style/StyleInheritedVariables.h"],
default_value: "nullptr",
wrapper_pointer_name: "RefPtr",
field_group: "rare-inherited",
},
{
name: "DraggableRegionMode",
field_template: "storage_only",
type_name: "DraggableRegionMode",
field_group: "rare-non-inherited",
default_value: "kDraggableRegionNone",
field_size: 2,
},
{
name: "Mask",
field_template: "storage_only",
type_name: "FillLayer",
field_group: "rare-non-inherited",
default_value: "FillLayer(kMaskFillLayer, true)",
},
{
name: "Filter",
field_template: "storage_only",
type_name: "StyleFilterData",
field_group: "rare-non-inherited",
default_value: "",
wrapper_pointer_name: "DataPersistent",
include_paths: ["core/style/StyleFilterData.h"],
},
{
name: "BackdropFilter",
field_template: "storage_only",
type_name: "StyleFilterData",
field_group: "rare-non-inherited",
default_value: "",
wrapper_pointer_name: "DataPersistent",
include_paths: ["core/style/StyleFilterData.h"],
},
{
name: "CounterDirectives",
field_template: "storage_only",
type_name: "CounterDirectiveMap",
field_group: "rare-non-inherited",
default_value: "nullptr",
wrapper_pointer_name: "std::unique_ptr",
include_paths: ["core/style/CounterDirectives.h"],
},
{
name: "Animations",
field_template: "storage_only",
type_name: "CSSAnimationData",
field_group: "rare-non-inherited",
default_value: "nullptr",
wrapper_pointer_name: "std::unique_ptr",
include_paths: ["core/animation/css/CSSAnimationData.h"],
},
{
name: "Transitions",
field_template: "storage_only",
type_name: "CSSTransitionData",
field_group: "rare-non-inherited",
default_value: "nullptr",
wrapper_pointer_name: "std::unique_ptr",
include_paths: ["core/animation/css/CSSTransitionData.h"],
},
{
name: "MaskBoxImage",
field_template: "storage_only",
type_name: "NinePieceImage",
field_group: "rare-non-inherited",
default_value: "NinePieceImage::MaskDefaults()",
include_paths: ["core/style/NinePieceImage.h"],
},
{
name: "PageSize",
field_template: "storage_only",
type_name: "FloatSize",
field_group: "rare-non-inherited",
default_value: "FloatSize()",
include_paths: ["platform/geometry/FloatSize.h"],
},
{
name: "Outline",
field_template: "storage_only",
type_name: "OutlineValue",
include_paths: ["core/style/OutlineValue.h"],
field_group: "rare-non-inherited",
default_value: "OutlineValue()",
include_paths: ["core/style/OutlineValue.h"],
},
{
name: "VisitedLinkTextDecorationColor",
field_template: "storage_only",
type_name: "StyleColor",
field_group: "rare-non-inherited",
default_value: "StyleColor::CurrentColor()",
},
{
name: "VisitedLinkBackgroundColor",
field_template: "storage_only",
type_name: "StyleColor",
field_group: "rare-non-inherited",
default_value: "Color::kTransparent",
},
{
name: "VisitedLinkOutlineColor",
field_template: "storage_only",
type_name: "StyleColor",
field_group: "rare-non-inherited",
default_value: "StyleColor::CurrentColor()",
},
{
name: "VisitedLinkBorderLeftColor",
field_template: "storage_only",
type_name: "StyleColor",
field_group: "rare-non-inherited",
default_value: "StyleColor::CurrentColor()",
},
{
name: "VisitedLinkBorderRightColor",
field_template: "storage_only",
type_name: "StyleColor",
field_group: "rare-non-inherited",
default_value: "StyleColor::CurrentColor()",
},
{
name: "VisitedLinkBorderTopColor",
field_template: "storage_only",
type_name: "StyleColor",
field_group: "rare-non-inherited",
default_value: "StyleColor::CurrentColor()",
},
{
name: "VisitedLinkBorderBottomColor",
field_template: "storage_only",
type_name: "StyleColor",
field_group: "rare-non-inherited",
default_value: "StyleColor::CurrentColor()",
},
{
name: "CallbackSelectors",
field_template: "storage_only",
type_name: "Vector<String>",
field_group: "rare-non-inherited",
default_value: "Vector<String>()",
include_paths: ["platform/wtf/Vector.h", "platform/wtf/text/WTFString.h"],
},
{
name: "PaintImages",
field_template: "storage_only",
type_name: "PaintImages",
field_group: "rare-non-inherited",
default_value: "nullptr",
wrapper_pointer_name: "std::unique_ptr",
custom_compare: true,
include_paths: ["core/style/PaintImages.h"],
},
{
name: "NonInheritedVariables",
field_template: "storage_only",
type_name: "StyleNonInheritedVariables",
field_group: "rare-non-inherited",
default_value: "nullptr",
wrapper_pointer_name: "std::unique_ptr",
include_paths: ["core/style/StyleNonInheritedVariables.h"],
},
{
name: "PageSizeType",
field_template: "storage_only",
type_name: "PageSizeType",
field_group: "rare-non-inherited",
default_value: "PageSizeType::kAuto",
field_size: 2,
},
{
name: "HasCurrentOpacityAnimation",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
default_value: "false",
},
{
name: "HasCurrentTransformAnimation",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
default_value: "false",
},
{
name: "HasCurrentFilterAnimation",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
default_value: "false",
},
{
name: "HasCurrentBackdropFilterAnimation",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
default_value: "false",
},
{
name: "RunningOpacityAnimationOnCompositor",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
custom_compare: true,
default_value: "false",
},
{
name: "RunningTransformAnimationOnCompositor",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
custom_compare: true,
default_value: "false",
},
{
name: "RunningFilterAnimationOnCompositor",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
custom_compare: true,
default_value: "false",
},
{
name: "RunningBackdropFilterAnimationOnCompositor",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
custom_compare: true,
default_value: "false",
},
{
name: "IsStackingContext",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
default_value: "false",
},
// TODO(shend): Is this the same as mix-blend-mode?
{
name: "EffectiveBlendMode",
type_name: "WebBlendMode",
field_template: "storage_only",
field_group: "rare-non-inherited",
field_size: 5,
default_value: "false",
include_paths: ["public/platform/WebBlendMode.h"],
},
// Plugins require accelerated compositing for reasons external to blink.
// In which case, we need to update the ComputedStyle on the
// LayoutEmbeddedObject, so store this bit so that the style actually changes
// when the plugin becomes composited.
{
name: "RequiresAcceleratedCompositingForExternalReasons",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
default_value: "false",
},
{
name: "HasInlineTransform",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
default_value: "false",
},
{
name: "HasCompositorProxy",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
default_value: "false",
},
// Style adjustment for appearance is disabled when certain properties are set.
{
name: "HasAuthorBackground",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
default_value: "false",
},
{
name: "HasAuthorBorder",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited",
field_size: 1,
default_value: "false",
},
{
name: "WillChangeProperties",
field_template: "external",
type_name: "Vector<CSSPropertyID>",
field_group: "rare-non-inherited->will-change",
default_value: "Vector<CSSPropertyID>()",
include_paths: ["platform/wtf/Vector.h", "core/CSSPropertyNames.h"],
},
{
name: "WillChangeContents",
field_template: "primitive",
type_name: "bool",
field_group: "rare-non-inherited->will-change",
default_value: "false",
},
{
name: "WillChangeScrollPosition",
field_template: "primitive",
type_name: "bool",
field_group: "rare-non-inherited->will-change",
default_value: "false",
},
{
name: "ColumnRule",
field_template: "storage_only",
type_name: "BorderValue",
field_group: "rare-non-inherited->multi-col",
default_value: "BorderValue()",
include_paths: ["core/style/BorderValue.h"],
},
{
name: "VisitedLinkColumnRuleColor",
field_template: "storage_only",
type_name: "StyleColor",
field_group: "rare-non-inherited->multi-col",
default_value: "StyleColor::CurrentColor()",
include_paths: ["core/css/StyleColor.h"],
},
{
name: "ColumnAutoWidth",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited->multi-col",
default_value: "true",
field_size: 1,
},
{
name: "ColumnAutoCount",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited->multi-col",
default_value: "true",
field_size: 1,
},
{
name: "ColumnNormalGap",
field_template: "storage_only",
type_name: "bool",
field_group: "rare-non-inherited->multi-col",
default_value: "true",
field_size: 1,
},
{
name: "TransformOperations",
field_template: "storage_only",
type_name: "TransformOperations",
field_group: "rare-non-inherited->transform",
default_value: "EmptyTransformOperations()",
include_paths: ["platform/transforms/TransformOperations.h"]
},
{
name: "Motion",
field_template: "storage_only",
type_name: "StyleMotionData",
field_group: "rare-non-inherited->transform",
default_value: "StyleMotionData(LengthPoint(Length(kAuto), Length(kAuto)), LengthPoint(Length(kAuto), Length(kAuto)), nullptr, Length(0, kFixed), StyleOffsetRotation(0, kOffsetRotationAuto))",
include_paths: ["core/style/StyleMotionData.h"],
},
{
name: "ScrollPadding",
field_template: "storage_only",
type_name: "ScrollPadding",
field_group: "rare-non-inherited->scroll-snap",
default_value: "Length()",
include_paths: ["core/style/ScrollSnap.h"],
},
{
name: "ScrollSnapMargin",
field_template: "storage_only",
type_name: "ScrollSnapMargin",
field_group: "rare-non-inherited->scroll-snap",
default_value: "Length()",
include_paths: ["core/style/ScrollSnap.h"],
},
// TODO(shend): These are subgroups and should be removed when we can
// generate them propertly.
{
name: "GridData",
field_template: "storage_only",
type_name: "StyleGridData",
field_group: "rare-non-inherited",
default_value: "",
wrapper_pointer_name: "DataRef",
include_paths: ["core/style/StyleGridData.h"],
},
],
}