| 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:
|
|
|