blob: 57759f442dd9ba1509b6659bdf51a712c0e94660 [file] [log] [blame]
{
// This file specifies the fields we want to diff in the various diff functions
// in ComputedStyle.
parameters: {
// The name parameter represents the name of the function to be created.
fields_to_diff: {
default: [],
},
// A list of methods to diff (these can be public getters of fields or
// functions that use fields to determine a value).
// Each entry is expressed as a dict of two fields:
// 1. method: the method to be diffed
// 2. field_dependencies: lists the properties this method depends on.
methods_to_diff: {
default: [],
},
// A list of predicates that have the diff logic built into them and are only
// called by the diff functions in ComputedStyle.
// Each entry is expressed as a dict of two fields:
// 1. predicate: the predicate to be tested
// 2. field_dependencies: lists the properties this predicate test depends on.
// TODO: Note that you also have to pass in the arguments for the predicate.
// This may be removed in the future if we are always passing the other ComputedStyle
predicates_to_test: {
default: [],
},
},
data: [
{
name: "ScrollAnchorDisablingPropertyChanged",
fields_to_diff: ["width", "min-width", "max-width", "height", "min-height", "max-height", "margin-top", "margin-left", "margin-right", "margin-bottom",
"left", "right", "top", "bottom", "padding-top",
"padding-left", "padding-right", "padding-bottom"],
methods_to_diff: [
{
method: "GetPosition()",
field_dependencies: ["position"]
},
]
},
{
name: "DiffNeedsFullLayoutAndPaintInvalidation",
fields_to_diff: ["padding-top", "padding-left", "padding-right",
"padding-bottom", "-webkit-appearance",
"-webkit-margin-before-collapse",
"-webkit-margin-after-collapse", "-webkit-line-clamp",
"text-overflow", "shape-margin", "order", "-webkit-highlight",
"text-indent", "text-align-last", "TextIndentLine", "EffectiveZoom",
"word-break", "overflow-wrap", "-webkit-line-break",
"-webkit-text-security", "hyphens", "HyphenationLimitBefore",
"HyphenationLimitAfter", "-webkit-hyphenate-character",
"RespectImageOrientation", "-webkit-ruby-position",
"TextEmphasisMark", "TextEmphasisPosition",
"TextEmphasisCustomMark", "text-justify", "text-orientation",
"text-combine-upright", "tab-size", "text-size-adjust",
"list-style-image", "line-height-step",
"-webkit-text-stroke-width", "line-height", "font",
"-webkit-border-horizontal-spacing",
"-webkit-border-vertical-spacing", "TextAutosizingMultiplier"],
methods_to_diff: [
{
method: "BorderLeftWidth()",
field_dependencies: ["border-left-width"]
},
{
method: "BorderTopWidth()",
field_dependencies: ["border-top-width"]
},
{
method: "BorderBottomWidth()",
field_dependencies: ["border-bottom-width"]
},
{
method: "BorderRightWidth()",
field_dependencies: ["border-right-width"]
},
{
method: "HasFilters()",
field_dependencies: ["Filter"]
},
{
method: "FontInternal().LoadingCustomFonts()",
field_dependencies: ["font"]
},
{
method: "HasPseudoStyle(kPseudoIdScrollbar)",
field_dependencies: ["StyleType"]
},
{
method: "BoxDirection()",
field_dependencies: ["-webkit-box-direction"]
},
{
method: "RtlOrdering()",
field_dependencies: ["-webkit-rtl-ordering"]
},
{
method: "GetTextAlign()",
field_dependencies: ["text-align"]
},
{
method: "TextTransform()",
field_dependencies: ["text-transform"]
},
{
method: "Direction()",
field_dependencies: ["direction"]
},
{
method: "WhiteSpace()",
field_dependencies: ["white-space"]
},
{
method: "GetWritingMode()",
field_dependencies: ["writing-mode"]
},
{
method: "OverflowX()",
field_dependencies: ["overflow-x"]
},
{
method: "OverflowY()",
field_dependencies: ["overflow-y"]
},
{
method: "Clear()",
field_dependencies: ["clear"]
},
{
method: "GetUnicodeBidi()",
field_dependencies: ["unicode-bidi"]
},
{
method: "Floating()",
field_dependencies: ["float"]
},
{
method: "OriginalDisplay()",
field_dependencies: ["OriginalDisplay"]
}
],
predicates_to_test: [
{
predicate: "a.TextShadowDataEquivalent(b)",
field_dependencies: ["text-shadow"]
},
{
predicate: "a.QuotesDataEquivalent(b)",
field_dependencies: ["quotes"]
},
{
predicate: "a.OpacityChangedStackingContext(b)",
field_dependencies: ["IsStackingContext", "opacity"]
},
]
},
{
name: "DiffNeedsFullLayoutAndPaintInvalidationDisplayTableType",
methods_to_diff: [
{
method: "BorderCollapse()",
field_dependencies: ["border-collapse"]
},
{
method: "EmptyCells()",
field_dependencies: ["empty-cells"]
},
{
method: "CaptionSide()",
field_dependencies: ["caption-side"]
},
{
method: "TableLayout()",
field_dependencies: ["table-layout"]
},
]
},
{
name: "DiffNeedsFullLayoutAndPaintInvalidationDisplayListItem",
methods_to_diff: [
{
method: "ListStyleType()",
field_dependencies: ["list-style-type"]
},
{
method: "ListStylePosition()",
field_dependencies: ["list-style-position"]
},
]
},
{
name: "DiffNeedsFullLayout",
fields_to_diff: ["width", "min-width", "max-width", "height", "min-height",
"max-height", "VerticalAlignLength", "box-sizing", "align-content",
"align-items", "align-self", "justify-content", "justify-items",
"justify-self", "contain"],
methods_to_diff: [
{
method: "VerticalAlign()",
field_dependencies: ["VerticalAlign"]
},
{
method: "GetPosition()",
field_dependencies: ["position"]
},
]
},
{
name: "DiffNeedsPaintInvalidationSubtree",
fields_to_diff: ["EffectiveBlendMode", "isolation", "Mask", "MaskBoxImage"],
},
{
name: "DiffNeedsPaintInvalidationObject",
fields_to_diff: ["-webkit-user-modify", "user-select", "image-rendering",
"-webkit-user-drag", "object-fit", "object-position"],
methods_to_diff: [
{
method: "Visibility()",
field_dependencies: ["visibility"]
},
{
method: "PrintColorAdjust()",
field_dependencies: ["-webkit-print-color-adjust"]
},
{
method: "InsideLink()",
field_dependencies: ["InsideLink"]
},
{
method: "VisitedLinkBackgroundColor()",
field_dependencies: ["VisitedLinkBackgroundColor"]
},
{
method: "Resize()",
field_dependencies: ["resize"]
},
],
predicates_to_test: [
{
predicate: "a.BoxShadowDataEquivalent(b)",
field_dependencies: ["box-shadow"]
},
{
predicate: "a.ShapeOutsideDataEquivalent(b)",
field_dependencies: ["shape-outside"]
},
{
predicate: "a.ClipPathDataEquivalent(b)",
field_dependencies: ["clip-path"]
},
{
predicate: "a.OutlineVisuallyEqual(b)",
field_dependencies: ["Outline"]
},
{
predicate: "a.VisitedLinkBorderLeftColorHasNotChanged(b)",
field_dependencies: ["VisitedLinkBorderLeftColor"]
},
{
predicate: "a.VisitedLinkBorderRightColorHasNotChanged(b)",
field_dependencies: ["VisitedLinkBorderRightColor"]
},
{
predicate: "a.VisitedLinkBorderBottomColorHasNotChanged(b)",
field_dependencies: ["VisitedLinkBorderBottomColor"]
},
{
predicate: "a.VisitedLinkBorderTopColorHasNotChanged(b)",
field_dependencies: ["VisitedLinkBorderTopColor"]
},
{
predicate: "a.VisitedLinkOutlineColorHasNotChanged(b)",
field_dependencies: ["VisitedLinkOutlineColor"]
},
]
},
{
name: "DiffNeedsVisualRectUpdate",
methods_to_diff: [
{
method: "Visibility()",
field_dependencies: ["visibility"]
},
{
method: "Resize()",
field_dependencies: ["resize"]
},
]
},
{
name: "UpdatePropertySpecificDifferencesZIndex",
fields_to_diff: ["z-index"],
methods_to_diff: [
{
method: "IsStackingContext()",
field_dependencies: ["IsStackingContext"]
},
]
},
{
name: "UpdatePropertySpecificDifferencesOpacity",
fields_to_diff: ["opacity"],
},
{
name: "UpdatePropertySpecificDifferencesFilter",
fields_to_diff: ["Filter"],
predicates_to_test: [
{
predicate: "a.ReflectionDataEquivalent(b)",
field_dependencies: ["-webkit-box-reflect"]
},
]
},
{
name: "UpdatePropertySpecificDifferencesNeedsRecomputeOverflow",
predicates_to_test: [
{
predicate: "a.BoxShadowDataEquivalent(b)",
field_dependencies: ["box-shadow"]
},
{
predicate: "a.OutlineVisuallyEqual(b)",
field_dependencies: ["Outline"]
},
{
predicate: "a.BorderVisualOverflowEqual(b)",
field_dependencies: ["border-image"]
},
]
},
{
name: "UpdatePropertySpecificDifferencesBackdropFilter",
fields_to_diff: ["BackdropFilter"],
},
{
name: "UpdatePropertySpecificDifferencesTextDecorationOrColor",
fields_to_diff: ["color", "VisitedLinkColor", "TextDecoration",
"text-decoration-style", "text-decoration-color",
"VisitedLinkTextDecorationColor", "TextEmphasisFill",
"text-underline-position", "text-decoration-skip", "AppliedTextDecorations"],
methods_to_diff: [
{
method: "HasSimpleUnderlineInternal()",
field_dependencies: ["HasSimpleUnderline"]
},
{
method: "TextFillColor()",
field_dependencies: ["-webkit-text-fill-color"]
},
{
method: "TextStrokeColor()",
field_dependencies: ["-webkit-text-stroke-color"]
},
{
method: "TextEmphasisColor()",
field_dependencies: ["-webkit-text-emphasis-color"]
},
{
method: "VisitedLinkTextFillColor()",
field_dependencies: ["VisitedLinkTextFillColor"]
},
{
method: "VisitedLinkTextStrokeColor()",
field_dependencies: ["VisitedLinkTextStrokeColor"]
},
{
method: "VisitedLinkTextEmphasisColor()",
field_dependencies: ["VisitedLinkTextEmphasisColor"]
},
{
method: "CaretColor()",
field_dependencies: ["caret-color"]
},
{
method: "VisitedLinkCaretColor()",
field_dependencies: ["VisitedLinkCaretColor"]
},
]
},
],
}