| { |
| // 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", |
| "image-orientation", "-webkit-ruby-position", |
| "TextEmphasisMark", "-webkit-text-emphasis-position", |
| "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", |
| "NamedGridColumnLines", "NamedGridRowLines", "OrderedNamedGridColumnLines", |
| "OrderedNamedGridRowLines", "AutoRepeatNamedGridColumnLines", |
| "AutoRepeatNamedGridRowLines", "AutoRepeatOrderedNamedGridColumnLines", |
| "AutoRepeatOrderedNamedGridRowLines", "NamedGridArea", "grid-auto-rows", |
| "grid-template-rows", "grid-template-columns", "grid-auto-columns", "grid-row-gap", |
| "grid-column-gap", "NamedGridAreaRowCount", "NamedGridAreaColumnCount", |
| "GridAutoRepeatColumns", "GridAutoRepeatRows", "GridAutoRepeatColumnsInsertionPoint", |
| "GridAutoRepeatRowsInsertionPoint", "grid-auto-flow", "GridAutoRepeatColumnsType", |
| "GridAutoRepeatRowsType", "-webkit-box-flex", |
| "-webkit-box-ordinal-group", "-webkit-box-flex-group", "flex-basis", |
| "flex-shrink", "flex-grow", "flex-direction", "flex-wrap", "-webkit-box-align", |
| "-webkit-box-pack", "-webkit-box-lines", "-webkit-box-orient", |
| "grid-row-start", "grid-row-end", "grid-column-start", "grid-column-end", |
| "column-gap", "column-width", "column-rule-style", |
| "column-rule-width", "column-rule-color", "ColumnRuleColorIsCurrentColor", "VisitedLinkColumnRuleColor", |
| "column-count", "ColumnAutoCount", "ColumnAutoWidth", "column-fill", "ColumnNormalGap", "column-span",], |
| 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"] |
| }, |
| { |
| predicate: "a.CounterDirectivesEqual(b)", |
| field_dependencies: ["CounterDirectives"] |
| }, |
| ] |
| }, |
| { |
| 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: ["mix-blend-mode", "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-width", "outline-color", "OutlineColorIsCurrentColor", "outline-offset", "outline-style", "OutlineStyleIsAuto"] |
| }, |
| { |
| 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: "DiffTransformData", |
| fields_to_diff: ["transform", "translate", "rotate", |
| "scale", "offset-path", "offset-rotate", "transform-origin", |
| "offset-position", "offset-anchor", "offset-distance"], |
| }, |
| { |
| name: "UpdatePropertySpecificDifferencesTransform", |
| fields_to_diff: ["transform", "translate", "rotate", |
| "scale", "offset-path", "offset-rotate", "transform-origin", |
| "offset-position", "offset-anchor", "offset-distance", |
| "perspective", "perspective-origin"], |
| methods_to_diff: [ |
| { |
| // It's possible for the old and new style transform data to be equivalent |
| // while hasTransform() differs, as it checks a number of conditions aside |
| // from just the matrix, including but not limited to animation state. |
| method: "HasTransform()", |
| field_dependencies: ["transform", "offset-position", |
| "HasCurrentTransformAnimation", "translate", "rotate", |
| "scale"] |
| }, |
| ] |
| }, |
| { |
| 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-width", "outline-color", "OutlineColorIsCurrentColor", "outline-offset", "outline-style", "OutlineStyleIsAuto"] |
| }, |
| { |
| predicate: "a.BorderVisualOverflowEqual(b)", |
| field_dependencies: ["border-image"] |
| }, |
| ] |
| }, |
| { |
| name: "UpdatePropertySpecificDifferencesBackdropFilter", |
| fields_to_diff: ["backdrop-filter"], |
| }, |
| { |
| name: "UpdatePropertySpecificDifferencesTextDecorationOrColor", |
| fields_to_diff: ["color", "VisitedLinkColor", "text-decoration-line", |
| "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"] |
| }, |
| ] |
| }, |
| ], |
| } |