Index: Source/core/css/parser/CSSParserFastPaths.cpp |
diff --git a/Source/core/css/parser/CSSParserFastPaths.cpp b/Source/core/css/parser/CSSParserFastPaths.cpp |
index 83d290a3eaf83ff7eb2fbea7ac560ed83a94e22d..00e6fc516bc285d9d8fea4f2222bb3fc9723d678 100644 |
--- a/Source/core/css/parser/CSSParserFastPaths.cpp |
+++ b/Source/core/css/parser/CSSParserFastPaths.cpp |
@@ -462,6 +462,12 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId |
return false; |
switch (propertyId) { |
+ case CSSPropertyAlignmentBaseline: |
+ // auto | baseline | before-edge | text-before-edge | middle | |
+ // central | after-edge | text-after-edge | ideographic | alphabetic | |
+ // hanging | mathematical |
+ return valueID == CSSValueAuto || valueID == CSSValueBaseline || valueID == CSSValueMiddle |
+ || (valueID >= CSSValueBeforeEdge && valueID <= CSSValueMathematical); |
case CSSPropertyAll: |
return false; // Only accepts css-wide keywords |
case CSSPropertyBackgroundRepeatX: // repeat | no-repeat |
@@ -481,10 +487,20 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId |
return valueID >= CSSValueNone && valueID <= CSSValueDouble; |
case CSSPropertyBoxSizing: |
return valueID == CSSValueBorderBox || valueID == CSSValueContentBox; |
+ case CSSPropertyBufferedRendering: |
+ return valueID == CSSValueAuto || valueID == CSSValueDynamic || valueID == CSSValueStatic; |
case CSSPropertyCaptionSide: // top | bottom | left | right |
return valueID == CSSValueLeft || valueID == CSSValueRight || valueID == CSSValueTop || valueID == CSSValueBottom; |
case CSSPropertyClear: // none | left | right | both |
return valueID == CSSValueNone || valueID == CSSValueLeft || valueID == CSSValueRight || valueID == CSSValueBoth; |
+ case CSSPropertyClipRule: |
+ case CSSPropertyFillRule: |
+ return valueID == CSSValueNonzero || valueID == CSSValueEvenodd; |
+ case CSSPropertyColorInterpolation: |
+ case CSSPropertyColorInterpolationFilters: |
+ return valueID == CSSValueAuto || valueID == CSSValueSRGB || valueID == CSSValueLinearRGB; |
+ case CSSPropertyColorRendering: |
+ return valueID == CSSValueAuto || valueID == CSSValueOptimizeSpeed || valueID == CSSValueOptimizeQuality; |
case CSSPropertyDirection: // ltr | rtl |
return valueID == CSSValueLtr || valueID == CSSValueRtl; |
case CSSPropertyDisplay: |
@@ -494,6 +510,13 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId |
// flex | inline-flex | -webkit-flex | -webkit-inline-flex | grid | inline-grid |
return (valueID >= CSSValueInline && valueID <= CSSValueInlineFlex) || valueID == CSSValueWebkitFlex || valueID == CSSValueWebkitInlineFlex || valueID == CSSValueNone |
|| (RuntimeEnabledFeatures::cssGridLayoutEnabled() && (valueID == CSSValueGrid || valueID == CSSValueInlineGrid)); |
+ case CSSPropertyDominantBaseline: |
+ // auto | use-script | no-change | reset-size | ideographic | |
+ // alphabetic | hanging | mathematical | central | middle | |
+ // text-after-edge | text-before-edge |
+ return valueID == CSSValueAuto || valueID == CSSValueMiddle |
+ || (valueID >= CSSValueUseScript && valueID <= CSSValueResetSize) |
+ || (valueID >= CSSValueCentral && valueID <= CSSValueMathematical); |
case CSSPropertyEmptyCells: // show | hide |
return valueID == CSSValueShow || valueID == CSSValueHide; |
case CSSPropertyFloat: // left | right | none |
@@ -513,6 +536,8 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId |
// See section CSS_PROP_LIST_STYLE_TYPE of file CSSValueKeywords.in |
// for the list of supported list-style-types. |
return (valueID >= CSSValueDisc && valueID <= CSSValueKatakanaIroha) || valueID == CSSValueNone; |
+ case CSSPropertyMaskType: |
+ return valueID == CSSValueLuminance || valueID == CSSValueAlpha; |
case CSSPropertyObjectFit: |
return valueID == CSSValueFill || valueID == CSSValueContain || valueID == CSSValueCover || valueID == CSSValueNone || valueID == CSSValueScaleDown; |
case CSSPropertyOutlineStyle: // (<border-style> except hidden) | auto |
@@ -543,14 +568,22 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId |
case CSSPropertyScrollBehavior: // auto | smooth |
ASSERT(RuntimeEnabledFeatures::cssomSmoothScrollEnabled()); |
return valueID == CSSValueAuto || valueID == CSSValueSmooth; |
+ case CSSPropertyShapeRendering: |
+ return valueID == CSSValueAuto || valueID == CSSValueOptimizeSpeed || valueID == CSSValueCrispEdges || valueID == CSSValueGeometricPrecision; |
case CSSPropertySpeak: // none | normal | spell-out | digits | literal-punctuation | no-punctuation |
return valueID == CSSValueNone || valueID == CSSValueNormal || valueID == CSSValueSpellOut || valueID == CSSValueDigits || valueID == CSSValueLiteralPunctuation || valueID == CSSValueNoPunctuation; |
+ case CSSPropertyStrokeLinejoin: |
+ return valueID == CSSValueMiter || valueID == CSSValueRound || valueID == CSSValueBevel; |
+ case CSSPropertyStrokeLinecap: |
+ return valueID == CSSValueButt || valueID == CSSValueRound || valueID == CSSValueSquare; |
case CSSPropertyTableLayout: // auto | fixed |
return valueID == CSSValueAuto || valueID == CSSValueFixed; |
case CSSPropertyTextAlignLast: |
// auto | start | end | left | right | center | justify |
ASSERT(RuntimeEnabledFeatures::css3TextEnabled()); |
return (valueID >= CSSValueLeft && valueID <= CSSValueJustify) || valueID == CSSValueStart || valueID == CSSValueEnd || valueID == CSSValueAuto; |
+ case CSSPropertyTextAnchor: |
+ return valueID == CSSValueStart || valueID == CSSValueMiddle || valueID == CSSValueEnd; |
case CSSPropertyTextDecorationStyle: |
// solid | double | dotted | dashed | wavy |
ASSERT(RuntimeEnabledFeatures::css3TextDecorationsEnabled()); |
@@ -569,6 +602,8 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId |
return valueID == CSSValueNormal || valueID == CSSValueEmbed |
|| valueID == CSSValueBidiOverride || valueID == CSSValueWebkitIsolate |
|| valueID == CSSValueWebkitIsolateOverride || valueID == CSSValueWebkitPlaintext; |
+ case CSSPropertyVectorEffect: |
+ return valueID == CSSValueNone || valueID == CSSValueNonScalingStroke; |
case CSSPropertyVisibility: // visible | hidden | collapse |
return valueID == CSSValueVisible || valueID == CSSValueHidden || valueID == CSSValueCollapse; |
case CSSPropertyWebkitAppearance: |
@@ -639,6 +674,9 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId |
return valueID == CSSValueAuto || valueID == CSSValueNone || valueID == CSSValueText || valueID == CSSValueAll; |
case CSSPropertyWebkitWritingMode: |
return valueID >= CSSValueHorizontalTb && valueID <= CSSValueHorizontalBt; |
+ case CSSPropertyWritingMode: |
+ return valueID == CSSValueLrTb || valueID == CSSValueRlTb || valueID == CSSValueTbRl |
+ || valueID == CSSValueLr || valueID == CSSValueRl || valueID == CSSValueTb; |
case CSSPropertyWhiteSpace: // normal | pre | nowrap |
return valueID == CSSValueNormal || valueID == CSSValuePre || valueID == CSSValuePreWrap || valueID == CSSValuePreLine || valueID == CSSValueNowrap; |
case CSSPropertyWordBreak: // normal | break-all | keep-all | break-word (this is a custom extension) |
@@ -655,6 +693,7 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId |
bool CSSParserFastPaths::isKeywordPropertyID(CSSPropertyID propertyId) |
{ |
switch (propertyId) { |
+ case CSSPropertyAlignmentBaseline: |
case CSSPropertyAll: |
case CSSPropertyMixBlendMode: |
case CSSPropertyIsolation: |
@@ -666,17 +705,25 @@ bool CSSParserFastPaths::isKeywordPropertyID(CSSPropertyID propertyId) |
case CSSPropertyBorderRightStyle: |
case CSSPropertyBorderTopStyle: |
case CSSPropertyBoxSizing: |
+ case CSSPropertyBufferedRendering: |
case CSSPropertyCaptionSide: |
case CSSPropertyClear: |
+ case CSSPropertyClipRule: |
+ case CSSPropertyColorInterpolation: |
+ case CSSPropertyColorInterpolationFilters: |
+ case CSSPropertyColorRendering: |
case CSSPropertyDirection: |
case CSSPropertyDisplay: |
+ case CSSPropertyDominantBaseline: |
case CSSPropertyEmptyCells: |
+ case CSSPropertyFillRule: |
case CSSPropertyFloat: |
case CSSPropertyFontStyle: |
case CSSPropertyFontStretch: |
case CSSPropertyImageRendering: |
case CSSPropertyListStylePosition: |
case CSSPropertyListStyleType: |
+ case CSSPropertyMaskType: |
case CSSPropertyObjectFit: |
case CSSPropertyOutlineStyle: |
case CSSPropertyOverflowWrap: |
@@ -689,15 +736,20 @@ bool CSSParserFastPaths::isKeywordPropertyID(CSSPropertyID propertyId) |
case CSSPropertyPosition: |
case CSSPropertyResize: |
case CSSPropertyScrollBehavior: |
+ case CSSPropertyShapeRendering: |
case CSSPropertySpeak: |
+ case CSSPropertyStrokeLinecap: |
+ case CSSPropertyStrokeLinejoin: |
case CSSPropertyTableLayout: |
case CSSPropertyTextAlignLast: |
+ case CSSPropertyTextAnchor: |
case CSSPropertyTextDecorationStyle: |
case CSSPropertyTextJustify: |
case CSSPropertyTextOverflow: |
case CSSPropertyTextRendering: |
case CSSPropertyTextTransform: |
case CSSPropertyUnicodeBidi: |
+ case CSSPropertyVectorEffect: |
case CSSPropertyVisibility: |
case CSSPropertyWebkitAppearance: |
case CSSPropertyBackfaceVisibility: |
@@ -739,6 +791,7 @@ bool CSSParserFastPaths::isKeywordPropertyID(CSSPropertyID propertyId) |
case CSSPropertyWhiteSpace: |
case CSSPropertyWordBreak: |
case CSSPropertyWordWrap: |
+ case CSSPropertyWritingMode: |
case CSSPropertyScrollSnapType: |
return true; |
case CSSPropertyAlignItems: |