Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 90df063ab65a7573a3197f1f05216a410ee43789
      
https://github.com/WebKit/WebKit/commit/90df063ab65a7573a3197f1f05216a410ee43789
  Author: Antti Koivisto <[email protected]>
  Date:   2025-02-01 (Sat, 01 Feb 2025)

  Changed paths:
    M Source/WebCore/animation/TimelineRange.cpp
    M Source/WebCore/animation/TimelineRange.h
    M Source/WebCore/css/CSSToStyleMap.cpp
    M Source/WebCore/css/CSSToStyleMap.h
    M Source/WebCore/platform/graphics/TabSize.h
    M Source/WebCore/rendering/style/GridTrackSize.h
    M Source/WebCore/rendering/style/TextDecorationThickness.h
    M Source/WebCore/style/StyleBuilderConverter.h
    M Source/WebCore/style/StyleBuilderState.h

  Log Message:
  -----------
  Add Style::BuilderConverter::requiredDowncast<> and use it
https://bugs.webkit.org/show_bug.cgi?id=286804
rdar://143955747

Reviewed by Alan Baradlay.

Add Style::BuilderConverter::requiredDowncast<> and 
Style::BuilderConverter::requiredPairDowncast<> and use them to
replace the use of unchecked downcast<> in BuilderConverter and CSSToStyleMap. 
These perform dynamicDowncast and on
failure mark the property invalid at computed value time (so it behaves like 
value 'unset').

This patch doesn't yet cover CSSValueList cases.

It also
- passes Style::BuilderState as non-const reference in some places which still 
used const.
- adds default constructors to some style types so we can return { } on failure.

* Source/WebCore/animation/TimelineRange.cpp:
(WebCore::SingleTimelineRange::range):
* Source/WebCore/animation/TimelineRange.h:
* Source/WebCore/css/CSSToStyleMap.cpp:
(WebCore::CSSToStyleMap::CSSToStyleMap):
(WebCore::CSSToStyleMap::styleImage):
(WebCore::CSSToStyleMap::mapFillImage):
(WebCore::convertToLengthSize):
(WebCore::CSSToStyleMap::mapFillSize):
(WebCore::CSSToStyleMap::mapFillXPosition):
(WebCore::CSSToStyleMap::mapFillYPosition):
(WebCore::CSSToStyleMap::mapAnimationDelay):
(WebCore::CSSToStyleMap::mapAnimationDuration):
(WebCore::CSSToStyleMap::mapAnimationIterationCount):
(WebCore::CSSToStyleMap::mapAnimationName):
(WebCore::CSSToStyleMap::mapAnimationTimeline):
(WebCore::CSSToStyleMap::mapAnimationTimingFunction):
(WebCore::CSSToStyleMap::mapAnimationRangeStart):
(WebCore::CSSToStyleMap::mapAnimationRangeEnd):
(WebCore::CSSToStyleMap::mapNinePieceImage):
(WebCore::CSSToStyleMap::mapNinePieceImageSlice):
(WebCore::CSSToStyleMap::mapNinePieceImageWidth):
(WebCore::CSSToStyleMap::mapNinePieceImageQuad):
(WebCore::CSSToStyleMap::mapNinePieceImageSide):
(WebCore::CSSToStyleMap::styleImage const): Deleted.
(WebCore::CSSToStyleMap::mapFillImage const): Deleted.
(WebCore::CSSToStyleMap::mapFillSize const): Deleted.
(WebCore::CSSToStyleMap::mapFillXPosition const): Deleted.
(WebCore::CSSToStyleMap::mapFillYPosition const): Deleted.
(WebCore::CSSToStyleMap::mapAnimationDelay const): Deleted.
(WebCore::CSSToStyleMap::mapAnimationDuration const): Deleted.
(WebCore::CSSToStyleMap::mapAnimationIterationCount const): Deleted.
(WebCore::CSSToStyleMap::mapAnimationName const): Deleted.
(WebCore::CSSToStyleMap::mapAnimationTimeline const): Deleted.
(WebCore::CSSToStyleMap::mapAnimationTimingFunction const): Deleted.
(WebCore::CSSToStyleMap::mapAnimationRangeStart const): Deleted.
(WebCore::CSSToStyleMap::mapAnimationRangeEnd const): Deleted.
(WebCore::CSSToStyleMap::mapNinePieceImage const): Deleted.
(WebCore::CSSToStyleMap::mapNinePieceImageSlice const): Deleted.
(WebCore::CSSToStyleMap::mapNinePieceImageWidth const): Deleted.
(WebCore::CSSToStyleMap::mapNinePieceImageQuad const): Deleted.
(WebCore::CSSToStyleMap::mapNinePieceImageSide const): Deleted.
* Source/WebCore/css/CSSToStyleMap.h:
* Source/WebCore/platform/graphics/TabSize.h:
* Source/WebCore/rendering/style/GridTrackSize.h:
(WebCore::GridTrackSize::GridTrackSize):
* Source/WebCore/rendering/style/TextDecorationThickness.h:
* Source/WebCore/style/StyleBuilderConverter.h:
(WebCore::Style::BuilderConverter::convertStringOrAutoAtom):
(WebCore::Style::BuilderConverter::convertStringOrNoneAtom):
(WebCore::Style::BuilderConverter::requiredDowncast):
(WebCore::Style::BuilderConverter::requiredPairDowncast):
(WebCore::Style::BuilderConverter::convertLength):
(WebCore::Style::BuilderConverter::convertLengthAllowingNumber):
(WebCore::Style::BuilderConverter::convertLengthOrAuto):
(WebCore::Style::BuilderConverter::convertLengthSizing):
(WebCore::Style::BuilderConverter::convertListStyleType):
(WebCore::Style::BuilderConverter::convertLengthMaxSizing):
(WebCore::Style::BuilderConverter::convertTabSize):
(WebCore::Style::BuilderConverter::convertComputedLength):
(WebCore::Style::BuilderConverter::convertLineWidth):
(WebCore::Style::BuilderConverter::convertToRadiusLength):
(WebCore::Style::BuilderConverter::convertRadius):
(WebCore::Style::BuilderConverter::convertPositionComponentX):
(WebCore::Style::BuilderConverter::convertPositionComponentY):
(WebCore::Style::BuilderConverter::convertPositionComponent):
(WebCore::Style::BuilderConverter::convertPosition):
(WebCore::Style::BuilderConverter::convertPositionOrAutoOrNormal):
(WebCore::Style::BuilderConverter::convertPositionOrAuto):
(WebCore::Style::BuilderConverter::convertTextDecorationLine):
(WebCore::Style::BuilderConverter::convertTextTransform):
(WebCore::Style::BuilderConverter::convertNumber):
(WebCore::Style::BuilderConverter::convertNumberOrAuto):
(WebCore::Style::BuilderConverter::convertWebkitHyphenateLimitLines):
(WebCore::Style::BuilderConverter::convertStyleImage):
(WebCore::Style::BuilderConverter::convertImageOrientation):
(WebCore::Style::BuilderConverter::convertTransform):
(WebCore::Style::BuilderConverter::convertTranslate):
(WebCore::Style::BuilderConverter::convertRotate):
(WebCore::Style::BuilderConverter::convertScale):
(WebCore::Style::BuilderConverter::convertColorScheme):
(WebCore::Style::BuilderConverter::convertString):
(WebCore::Style::BuilderConverter::convertStringOrAuto):
(WebCore::Style::BuilderConverter::convertStringOrNone):
(WebCore::Style::BuilderConverter::convertTextEmphasisPosition):
(WebCore::Style::BuilderConverter::convertTextAlign):
(WebCore::Style::BuilderConverter::convertTextAlignLast):
(WebCore::Style::BuilderConverter::convertDPath):
(WebCore::Style::BuilderConverter::convertPathOperation):
(WebCore::Style::BuilderConverter::convertBasicShape):
(WebCore::Style::BuilderConverter::convertResize):
(WebCore::Style::BuilderConverter::convertMarqueeRepetition):
(WebCore::Style::BuilderConverter::convertMarqueeSpeed):
(WebCore::Style::BuilderConverter::convertQuotes):
(WebCore::Style::BuilderConverter::convertTextUnderlinePosition):
(WebCore::Style::BuilderConverter::convertTextUnderlineOffset):
(WebCore::Style::BuilderConverter::convertTextDecorationThickness):
(WebCore::Style::BuilderConverter::convertReflection):
(WebCore::Style::BuilderConverter::convertTextEdge):
(WebCore::Style::BuilderConverter::convertInitialLetter):
(WebCore::Style::BuilderConverter::convertTextStrokeWidth):
(WebCore::Style::BuilderConverter::convertLineBoxContain):
(WebCore::Style::BuilderConverter::convertShapeValue):
(WebCore::Style::BuilderConverter::convertScrollSnapType):
(WebCore::Style::BuilderConverter::convertScrollSnapAlign):
(WebCore::Style::BuilderConverter::convertScrollSnapStop):
(WebCore::Style::BuilderConverter::convertScrollbarColor):
(WebCore::Style::BuilderConverter::convertScrollbarGutter):
(WebCore::Style::BuilderConverter::convertScrollbarWidth):
(WebCore::Style::BuilderConverter::createGridTrackBreadth):
(WebCore::Style::BuilderConverter::createGridTrackSize):
(WebCore::Style::BuilderConverter::createGridTrackList):
(WebCore::Style::BuilderConverter::createGridPosition):
(WebCore::Style::BuilderConverter::createImplicitNamedGridLinesFromGridArea):
(WebCore::Style::BuilderConverter::convertGridTrackSizeList):
(WebCore::Style::BuilderConverter::convertGridTrackSize):
(WebCore::Style::BuilderConverter::convertGridTrackList):
(WebCore::Style::BuilderConverter::convertGridPosition):
(WebCore::Style::BuilderConverter::convertGridAutoFlow):
(WebCore::Style::BuilderConverter::convertContentAlignmentDataList):
(WebCore::Style::BuilderConverter::convertMasonryAutoFlow):
(WebCore::Style::zoomWithTextZoomFactor):
(WebCore::Style::BuilderConverter::cssToLengthConversionDataWithTextZoomFactor):
(WebCore::Style::BuilderConverter::convertTextLengthOrNormal):
(WebCore::Style::BuilderConverter::convertPerspective):
(WebCore::Style::BuilderConverter::convertMarqueeIncrement):
(WebCore::Style::BuilderConverter::convertFilterOperations):
(WebCore::Style::BuilderConverter::convertAppleColorFilterOperations):
(WebCore::Style::BuilderConverter::convertFontStyleFromValue):
(WebCore::Style::BuilderConverter::convertFontWeight):
(WebCore::Style::BuilderConverter::convertFontWidth):
(WebCore::Style::BuilderConverter::convertFontFeatureSettings):
(WebCore::Style::BuilderConverter::convertFontVariationSettings):
(WebCore::Style::BuilderConverter::convertFontSizeAdjust):
(WebCore::Style::BuilderConverter::convertTouchCallout):
(WebCore::Style::BuilderConverter::convertTapHighlightColor):
(WebCore::Style::BuilderConverter::convertTouchAction):
(WebCore::Style::BuilderConverter::convertOverflowScrolling):
(WebCore::Style::BuilderConverter::convertSmoothScrolling):
(WebCore::Style::BuilderConverter::convertSVGLengthValue):
(WebCore::Style::BuilderConverter::convertSVGLengthVector):
(WebCore::Style::BuilderConverter::convertStrokeDashArray):
(WebCore::Style::BuilderConverter::convertPaintOrder):
(WebCore::Style::BuilderConverter::convertOpacity):
(WebCore::Style::BuilderConverter::convertSVGURIReference):
(WebCore::Style::BuilderConverter::convertSelfOrDefaultAlignmentData):
(WebCore::Style::BuilderConverter::convertContentAlignmentData):
(WebCore::Style::BuilderConverter::convertGlyphOrientation):
(WebCore::Style::BuilderConverter::convertGlyphOrientationOrAuto):
(WebCore::Style::BuilderConverter::convertLineHeight):
(WebCore::Style::BuilderConverter::convertFontPalette):
(WebCore::Style::BuilderConverter::convertSpeakAs):
(WebCore::Style::BuilderConverter::convertHangingPunctuation):
(WebCore::Style::BuilderConverter::convertGapLength):
(WebCore::Style::BuilderConverter::convertOffsetRotate):
(WebCore::Style::BuilderConverter::convertContainerName):
(WebCore::Style::BuilderConverter::convertMarginTrim):
(WebCore::Style::BuilderConverter::convertTextSpacingTrim):
(WebCore::Style::BuilderConverter::convertTextAutospace):
(WebCore::Style::BuilderConverter::convertBlockStepSize):
(WebCore::Style::BuilderConverter::convertContain):
(WebCore::Style::BuilderConverter::convertViewTransitionClass):
(WebCore::Style::BuilderConverter::convertViewTransitionName):
(WebCore::Style::BuilderConverter::convertWillChange):
(WebCore::Style::BuilderConverter::convertScrollTimelineName):
(WebCore::Style::BuilderConverter::convertScrollTimelineAxis):
(WebCore::Style::BuilderConverter::convertViewTimelineInset):
(WebCore::Style::BuilderConverter::convertAnchorName):
(WebCore::Style::BuilderConverter::convertPositionAnchor):
(WebCore::Style::BuilderConverter::convertBlockEllipsis):
(WebCore::Style::BuilderConverter::convertMaxLines):
(WebCore::Style::BuilderConverter::convertLineClamp):
(WebCore::Style::BuilderConverter::convertTimingFunction):
(WebCore::Style::BuilderConverter::convertTimelineScope):
(WebCore::Style::BuilderConverter::convertPositionTryFallbacks):
* Source/WebCore/style/StyleBuilderState.h:
(WebCore::Style::BuilderState::styleMap):
(WebCore::Style::BuilderState::styleMap const): Deleted.

Canonical link: https://commits.webkit.org/289694@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to