Changeset 276550 in webkit
- Timestamp:
- Apr 24, 2021, 9:02:06 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 16 edited
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/animation/CSSPropertyAnimation.cpp (modified) (6 diffs)
-
Source/WebCore/css/CSSCalculationValue.cpp (modified) (1 diff)
-
Source/WebCore/css/CSSCalculationValue.h (modified) (1 diff)
-
Source/WebCore/css/MediaQueryExpression.cpp (modified) (1 diff)
-
Source/WebCore/css/parser/CSSPropertyParser.cpp (modified) (77 diffs)
-
Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp (modified) (24 diffs)
-
Source/WebCore/css/parser/CSSPropertyParserHelpers.h (modified) (2 diffs)
-
Source/WebCore/css/parser/CSSPropertyParserWorkerSafe.cpp (modified) (2 diffs)
-
Source/WebCore/page/IntersectionObserver.cpp (modified) (1 diff)
-
Source/WebCore/platform/CalculationValue.h (modified) (1 diff)
-
Source/WebCore/platform/Length.cpp (modified) (3 diffs)
-
Source/WebCore/platform/Length.h (modified) (1 diff)
-
Source/WebCore/style/StyleBuilderConverter.h (modified) (1 diff)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/Tests/WebCore/CalculationValue.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r276549 r276550 1 2021-04-24 Tyler Wilcock <twilco.o@protonmail.com> 2 3 Refactor ValueRange from enum to enum class 4 https://bugs.webkit.org/show_bug.cgi?id=224981 5 6 Reviewed by Sam Weinig. 7 8 Refactor ValueRange from: 9 10 enum ValueRange { 11 ValueRangeAll, 12 ValueRangeNonNegative 13 } 14 15 to: 16 17 enum ValueRange : uint8_t { 18 All, 19 NonNegative 20 } 21 22 making it smaller (one byte versus four) and harder to misuse (no 23 auto-coercion to number types). 24 25 * animation/CSSPropertyAnimation.cpp: 26 (WebCore::blendFunc): 27 Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All 28 and ValueRange::NonNegative. 29 30 * css/CSSCalculationValue.cpp: 31 (WebCore::CSSCalcValue::create): 32 Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All 33 and ValueRange::NonNegative. 34 35 * css/CSSCalculationValue.h: 36 (WebCore::CSSCalcValue::createCalculationValue const): 37 (WebCore::CSSCalcValue::setPermittedValueRange): 38 Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All 39 and ValueRange::NonNegative. 40 41 * css/MediaQueryExpression.cpp: 42 (WebCore::consumeFirstValue): 43 Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All 44 and ValueRange::NonNegative. 45 46 * css/parser/CSSPropertyParser.cpp: 47 (WebCore::CSSPropertyParser::consumeTransformOrigin): 48 (WebCore::consumeLetterSpacing): 49 (WebCore::consumeWordSpacing): 50 (WebCore::consumeTabSize): 51 (WebCore::consumeTextSizeAdjust): 52 (WebCore::consumeFontSize): 53 (WebCore::consumeLineHeight): 54 (WebCore::consumeSize): 55 (WebCore::consumeTextIndent): 56 (WebCore::consumeScrollPadding): 57 (WebCore::consumeMaxWidthOrHeight): 58 (WebCore::consumeWidthOrHeight): 59 (WebCore::consumeMarginOrOffset): 60 (WebCore::consumeClipComponent): 61 (WebCore::consumeLineClamp): 62 (WebCore::consumeHyphenateLimit): 63 (WebCore::consumeColumnWidth): 64 (WebCore::consumeGapLength): 65 (WebCore::consumeZoom): 66 (WebCore::consumeAnimationIterationCount): 67 (WebCore::consumeAnimationValue): 68 (WebCore::consumeLineWidth): 69 (WebCore::consumeTranslate3d): 70 (WebCore::consumeNumbers): 71 (WebCore::consumePerspective): 72 (WebCore::consumeTransformValue): 73 (WebCore::consumeTranslate): 74 (WebCore::consumeScale): 75 (WebCore::consumeRotate): 76 (WebCore::consumePositionLonghand): 77 (WebCore::consumeFlexBasis): 78 (WebCore::consumeKerning): 79 (WebCore::consumeStrokeDasharray): 80 (WebCore::consumeBaselineShift): 81 (WebCore::consumeRxOrRy): 82 (WebCore::consumeBorderRadiusCorner): 83 (WebCore::consumeTextUnderlineOffset): 84 (WebCore::consumeTextDecorationThickness): 85 (WebCore::consumeVerticalAlign): 86 (WebCore::consumeShapeRadius): 87 (WebCore::consumeBasicShapePolygon): 88 (WebCore::consumeRadii): 89 (WebCore::consumeBasicShapeInset): 90 (WebCore::consumeBorderImageSlice): 91 (WebCore::consumeBorderImageOutset): 92 (WebCore::consumeBorderImageWidth): 93 (WebCore::consumeReflect): 94 (WebCore::consumeBackgroundSize): 95 (WebCore::consumeFitContent): 96 (WebCore::consumeGridBreadth): 97 (WebCore::consumeInitialLetter): 98 (WebCore::consumeWebkitMarqueeIncrement): 99 (WebCore::consumeWebkitMarqueeRepetition): 100 (WebCore::consumeWebkitMarqueeSpeed): 101 (WebCore::consumeAspectRatio): 102 (WebCore::CSSPropertyParser::parseSingleValue): 103 (WebCore::CSSPropertyParser::consumeBorderSpacing): 104 (WebCore::CSSPropertyParser::consumeFlex): 105 Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All 106 and ValueRange::NonNegative. 107 108 * css/parser/CSSPropertyParserHelpers.cpp: 109 (WebCore::CSSPropertyParserHelpers::consumeNumberOrPercentDividedBy100Raw): 110 (WebCore::CSSPropertyParserHelpers::CalcParser::CalcParser): 111 (WebCore::CSSPropertyParserHelpers::consumeNumberRaw): 112 (WebCore::CSSPropertyParserHelpers::consumeFontWeightNumberRaw): 113 (WebCore::CSSPropertyParserHelpers::consumeLengthRaw): 114 (WebCore::CSSPropertyParserHelpers::consumePercentRaw): 115 (WebCore::CSSPropertyParserHelpers::consumeAngleRaw): 116 (WebCore::CSSPropertyParserHelpers::consumeAngleWorkerSafe): 117 (WebCore::CSSPropertyParserHelpers::consumeTime): 118 (WebCore::CSSPropertyParserHelpers::consumePositionComponent): 119 (WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradientPoint): 120 (WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradient): 121 (WebCore::CSSPropertyParserHelpers::consumeGradientColorStops): 122 (WebCore::CSSPropertyParserHelpers::consumeDeprecatedRadialGradient): 123 (WebCore::CSSPropertyParserHelpers::consumeRadialGradient): 124 (WebCore::CSSPropertyParserHelpers::consumeFilterFunction): 125 (WebCore::CSSPropertyParserHelpers::consumeSingleShadow): 126 (WebCore::CSSPropertyParserHelpers::consumeFontSizeRaw): 127 (WebCore::CSSPropertyParserHelpers::consumeLineHeightRaw): 128 Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All 129 and ValueRange::NonNegative. 130 131 * css/parser/CSSPropertyParserHelpers.h: 132 Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All 133 and ValueRange::NonNegative. 134 135 * css/parser/CSSPropertyParserWorkerSafe.cpp: 136 (WebCore::CSSPropertyParserHelpersWorkerSafe::consumeFontStretch): 137 (WebCore::CSSPropertyParserHelpersWorkerSafe::consumeFontStretchRange): 138 Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All 139 and ValueRange::NonNegative. 140 141 * page/IntersectionObserver.cpp: 142 (WebCore::parseRootMargin): 143 Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All 144 and ValueRange::NonNegative. 145 146 * platform/CalculationValue.h: 147 (WebCore::CalculationValue::CalculationValue): 148 Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All 149 and ValueRange::NonNegative. 150 151 * platform/Length.cpp: 152 (WebCore::convertTo100PercentMinusLength): 153 (WebCore::blendMixedTypes): 154 (WebCore::blend): 155 Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All 156 and ValueRange::NonNegative. 157 158 * platform/Length.h: 159 Refactor enum ValueRange to enum class ValueRange. 160 161 * style/StyleBuilderConverter.h: 162 (WebCore::Style::BuilderConverter::convertTo100PercentMinusLength): 163 Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All 164 and ValueRange::NonNegative. 165 166 1 167 2021-04-24 Zalan Bujtas <zalan@apple.com> 2 168 -
trunk/Source/WebCore/animation/CSSPropertyAnimation.cpp
r276465 r276550 102 102 } 103 103 104 static inline Length blendFunc(const Length& from, const Length& to, const CSSPropertyBlendingContext& context, ValueRange valueRange = ValueRange All)104 static inline Length blendFunc(const Length& from, const Length& to, const CSSPropertyBlendingContext& context, ValueRange valueRange = ValueRange::All) 105 105 { 106 106 return blend(from, to, context, valueRange); … … 111 111 if (from.isNormal() || to.isNormal()) 112 112 return context.progress < 0.5 ? from : to; 113 return blend(from.length(), to.length(), context, ValueRange NonNegative);113 return blend(from.length(), to.length(), context, ValueRange::NonNegative); 114 114 } 115 115 … … 122 122 static inline LengthSize blendFunc(const LengthSize& from, const LengthSize& to, const CSSPropertyBlendingContext& context) 123 123 { 124 return { blendFunc(from.width, to.width, context, ValueRange NonNegative),125 blendFunc(from.height, to.height, context, ValueRangeNonNegative) };124 return { blendFunc(from.width, to.width, context, ValueRange::NonNegative), 125 blendFunc(from.height, to.height, context, ValueRange::NonNegative) }; 126 126 } 127 127 … … 404 404 } 405 405 406 static inline LengthBox blendFunc(const LengthBox& from, const LengthBox& to, const CSSPropertyBlendingContext& context, ValueRange valueRange = ValueRange NonNegative)406 static inline LengthBox blendFunc(const LengthBox& from, const LengthBox& to, const CSSPropertyBlendingContext& context, ValueRange valueRange = ValueRange::NonNegative) 407 407 { 408 408 LengthBox result(blendFunc(from.top(), to.top(), context, valueRange), … … 792 792 void blend(RenderStyle& destination, const RenderStyle& from, const RenderStyle& to, const CSSPropertyBlendingContext& context) const override 793 793 { 794 auto valueRange = m_flags.contains(Flags::NegativeLengthsAreInvalid) ? ValueRange NonNegative : ValueRangeAll;794 auto valueRange = m_flags.contains(Flags::NegativeLengthsAreInvalid) ? ValueRange::NonNegative : ValueRange::All; 795 795 (destination.*m_setter)(blendFunc(value(from), value(to), context, valueRange)); 796 796 } … … 899 899 return; 900 900 } 901 auto valueRange = m_flags.contains(Flags::AllowsNegativeValues) ? ValueRange All : ValueRangeNonNegative;901 auto valueRange = m_flags.contains(Flags::AllowsNegativeValues) ? ValueRange::All : ValueRange::NonNegative; 902 902 (destination.*m_setter)(blendFunc(value(from), value(to), context, valueRange)); 903 903 } -
trunk/Source/WebCore/css/CSSCalculationValue.cpp
r276262 r276550 2147 2147 if (!expression) 2148 2148 return nullptr; 2149 auto result = adoptRef(new CSSCalcValue(expression.releaseNonNull(), range != ValueRange All));2149 auto result = adoptRef(new CSSCalcValue(expression.releaseNonNull(), range != ValueRange::All)); 2150 2150 LOG_WITH_STREAM(Calc, stream << "CSSCalcValue::create " << *result); 2151 2151 return result; -
trunk/Source/WebCore/css/CSSCalculationValue.h
r276262 r276550 123 123 { 124 124 return CalculationValue::create(m_expression->createCalcExpression(conversionData), 125 m_shouldClampToNonNegative ? ValueRange NonNegative : ValueRangeAll);125 m_shouldClampToNonNegative ? ValueRange::NonNegative : ValueRange::All); 126 126 } 127 127 128 128 inline void CSSCalcValue::setPermittedValueRange(ValueRange range) 129 129 { 130 m_shouldClampToNonNegative = range != ValueRange All;130 m_shouldClampToNonNegative = range != ValueRange::All; 131 131 } 132 132 -
trunk/Source/WebCore/css/MediaQueryExpression.cpp
r272121 r276550 187 187 188 188 if (!featureExpectingPositiveInteger(mediaFeature) && !isAspectRatioFeature(mediaFeature)) { 189 if (auto value = CSSPropertyParserHelpers::consumeNumber(range, ValueRange NonNegative))189 if (auto value = CSSPropertyParserHelpers::consumeNumber(range, ValueRange::NonNegative)) 190 190 return value; 191 191 } 192 192 193 if (auto value = CSSPropertyParserHelpers::consumeLength(range, HTMLStandardMode, ValueRange NonNegative))193 if (auto value = CSSPropertyParserHelpers::consumeLength(range, HTMLStandardMode, ValueRange::NonNegative)) 194 194 return value; 195 195 -
trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp
r276488 r276550 357 357 m_range.consumeWhitespace(); 358 358 bool atEnd = m_range.atEnd(); 359 auto resultZ = consumeLength(m_range, m_context.mode, ValueRange All);359 auto resultZ = consumeLength(m_range, m_context.mode, ValueRange::All); 360 360 bool hasZ = resultZ; 361 361 if (!hasZ && !atEnd) … … 977 977 return consumeIdent(range); 978 978 979 return consumeLength(range, cssParserMode, ValueRange All, UnitlessQuirk::Allow);979 return consumeLength(range, cssParserMode, ValueRange::All, UnitlessQuirk::Allow); 980 980 } 981 981 … … 985 985 return consumeIdent(range); 986 986 987 return consumeLengthOrPercent(range, cssParserMode, ValueRange All, UnitlessQuirk::Allow);987 return consumeLengthOrPercent(range, cssParserMode, ValueRange::All, UnitlessQuirk::Allow); 988 988 } 989 989 990 990 static RefPtr<CSSValue> consumeTabSize(CSSParserTokenRange& range, CSSParserMode cssParserMode) 991 991 { 992 auto tabSize = consumeNumber(range, ValueRange NonNegative);992 auto tabSize = consumeNumber(range, ValueRange::NonNegative); 993 993 if (tabSize) 994 994 return tabSize; 995 return consumeLength(range, cssParserMode, ValueRange NonNegative);995 return consumeLength(range, cssParserMode, ValueRange::NonNegative); 996 996 } 997 997 … … 1003 1003 if (range.peek().id() == CSSValueNone) 1004 1004 return consumeIdent(range); 1005 return consumePercent(range, ValueRange NonNegative);1005 return consumePercent(range, ValueRange::NonNegative); 1006 1006 } 1007 1007 #endif … … 1011 1011 if (range.peek().id() >= CSSValueXxSmall && range.peek().id() <= CSSValueLarger) 1012 1012 return consumeIdent(range); 1013 return consumeLengthOrPercent(range, cssParserMode, ValueRange NonNegative, unitless);1013 return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative, unitless); 1014 1014 } 1015 1015 … … 1019 1019 return consumeIdent(range); 1020 1020 1021 RefPtr<CSSPrimitiveValue> lineHeight = consumeNumber(range, ValueRange NonNegative);1021 RefPtr<CSSPrimitiveValue> lineHeight = consumeNumber(range, ValueRange::NonNegative); 1022 1022 if (lineHeight) 1023 1023 return lineHeight; 1024 return consumeLengthOrPercent(range, cssParserMode, ValueRange NonNegative);1024 return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative); 1025 1025 } 1026 1026 … … 1064 1064 } 1065 1065 1066 if (RefPtr<CSSValue> width = consumeLength(range, cssParserMode, ValueRange NonNegative)) {1067 RefPtr<CSSValue> height = consumeLength(range, cssParserMode, ValueRange NonNegative);1066 if (RefPtr<CSSValue> width = consumeLength(range, cssParserMode, ValueRange::NonNegative)) { 1067 RefPtr<CSSValue> height = consumeLength(range, cssParserMode, ValueRange::NonNegative); 1068 1068 result->append(width.releaseNonNull()); 1069 1069 if (height) … … 1095 1095 do { 1096 1096 if (!lengthOrPercentage) { 1097 if (RefPtr<CSSValue> textIndent = consumeLengthOrPercent(range, cssParserMode, ValueRange All, UnitlessQuirk::Allow)) {1097 if (RefPtr<CSSValue> textIndent = consumeLengthOrPercent(range, cssParserMode, ValueRange::All, UnitlessQuirk::Allow)) { 1098 1098 lengthOrPercentage = textIndent; 1099 1099 continue; … … 1132 1132 if (range.peek().id() == CSSValueAuto) 1133 1133 return consumeIdent(range); 1134 return consumeLengthOrPercent(range, cssParserMode, ValueRange NonNegative);1134 return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative); 1135 1135 } 1136 1136 … … 1147 1147 if (range.peek().id() == CSSValueNone || validWidthOrHeightKeyword(range.peek().id(), context)) 1148 1148 return consumeIdent(range); 1149 return consumeLengthOrPercent(range, context.mode, ValueRange NonNegative, unitless);1149 return consumeLengthOrPercent(range, context.mode, ValueRange::NonNegative, unitless); 1150 1150 } 1151 1151 … … 1154 1154 if (range.peek().id() == CSSValueAuto || validWidthOrHeightKeyword(range.peek().id(), context)) 1155 1155 return consumeIdent(range); 1156 return consumeLengthOrPercent(range, context.mode, ValueRange NonNegative, unitless);1156 return consumeLengthOrPercent(range, context.mode, ValueRange::NonNegative, unitless); 1157 1157 } 1158 1158 … … 1161 1161 if (range.peek().id() == CSSValueAuto) 1162 1162 return consumeIdent(range); 1163 return consumeLengthOrPercent(range, cssParserMode, ValueRange All, unitless);1163 return consumeLengthOrPercent(range, cssParserMode, ValueRange::All, unitless); 1164 1164 } 1165 1165 … … 1168 1168 if (range.peek().id() == CSSValueAuto) 1169 1169 return consumeIdent(range); 1170 return consumeLength(range, cssParserMode, ValueRange All, UnitlessQuirk::Allow);1170 return consumeLength(range, cssParserMode, ValueRange::All, UnitlessQuirk::Allow); 1171 1171 } 1172 1172 … … 1226 1226 static RefPtr<CSSPrimitiveValue> consumeLineClamp(CSSParserTokenRange& range) 1227 1227 { 1228 if (auto clampValue = consumePercent(range, ValueRange NonNegative))1228 if (auto clampValue = consumePercent(range, ValueRange::NonNegative)) 1229 1229 return clampValue; 1230 1230 // When specifying number of lines, don't allow 0 as a valid value. … … 1243 1243 if (range.peek().id() == valueID) 1244 1244 return consumeIdent(range); 1245 return consumeNumber(range, ValueRange NonNegative);1245 return consumeNumber(range, ValueRange::NonNegative); 1246 1246 } 1247 1247 … … 1252 1252 // Always parse lengths in strict mode here, since it would be ambiguous otherwise when used in 1253 1253 // the 'columns' shorthand property. 1254 RefPtr<CSSPrimitiveValue> columnWidth = consumeLength(range, HTMLStandardMode, ValueRange NonNegative);1254 RefPtr<CSSPrimitiveValue> columnWidth = consumeLength(range, HTMLStandardMode, ValueRange::NonNegative); 1255 1255 if (!columnWidth || columnWidth->isZero().valueOr(false)) 1256 1256 return nullptr; … … 1270 1270 if (range.peek().id() == CSSValueNormal) 1271 1271 return consumeIdent(range); 1272 return consumeLengthOrPercent(range, cssParserMode, ValueRange NonNegative);1272 return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative); 1273 1273 } 1274 1274 … … 1285 1285 zoom = consumeIdent<CSSValueNormal, CSSValueReset, CSSValueDocument>(range); 1286 1286 else { 1287 zoom = consumePercent(range, ValueRange NonNegative);1287 zoom = consumePercent(range, ValueRange::NonNegative); 1288 1288 if (!zoom) 1289 zoom = consumeNumber(range, ValueRange NonNegative);1289 zoom = consumeNumber(range, ValueRange::NonNegative); 1290 1290 } 1291 1291 return zoom; … … 1296 1296 if (range.peek().id() == CSSValueInfinite) 1297 1297 return consumeIdent(range); 1298 return consumeNumber(range, ValueRange NonNegative);1298 return consumeNumber(range, ValueRange::NonNegative); 1299 1299 } 1300 1300 … … 1502 1502 case CSSPropertyAnimationDelay: 1503 1503 case CSSPropertyTransitionDelay: 1504 return consumeTime(range, context.mode, ValueRange All, UnitlessQuirk::Forbid);1504 return consumeTime(range, context.mode, ValueRange::All, UnitlessQuirk::Forbid); 1505 1505 case CSSPropertyAnimationDirection: 1506 1506 return consumeIdent<CSSValueNormal, CSSValueAlternate, CSSValueReverse, CSSValueAlternateReverse>(range); 1507 1507 case CSSPropertyAnimationDuration: 1508 1508 case CSSPropertyTransitionDuration: 1509 return consumeTime(range, context.mode, ValueRange NonNegative, UnitlessQuirk::Forbid);1509 return consumeTime(range, context.mode, ValueRange::NonNegative, UnitlessQuirk::Forbid); 1510 1510 case CSSPropertyAnimationFillMode: 1511 1511 return consumeIdent<CSSValueNone, CSSValueForwards, CSSValueBackwards, CSSValueBoth>(range); … … 1731 1731 if (id == CSSValueThin || id == CSSValueMedium || id == CSSValueThick) 1732 1732 return consumeIdent(range); 1733 return consumeLength(range, cssParserMode, ValueRange NonNegative, unitless);1733 return consumeLength(range, cssParserMode, ValueRange::NonNegative, unitless); 1734 1734 } 1735 1735 … … 1754 1754 RefPtr<CSSValue> parsedValue; 1755 1755 do { 1756 parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRange All);1756 parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRange::All); 1757 1757 if (!parsedValue) 1758 1758 return false; … … 1761 1761 return false; 1762 1762 } while (--numberOfArguments); 1763 parsedValue = consumeLength(args, cssParserMode, ValueRange All);1763 parsedValue = consumeLength(args, cssParserMode, ValueRange::All); 1764 1764 if (!parsedValue) 1765 1765 return false; … … 1771 1771 { 1772 1772 do { 1773 RefPtr<CSSPrimitiveValue> parsedValue = consumeNumber(args, ValueRange All);1773 RefPtr<CSSPrimitiveValue> parsedValue = consumeNumber(args, ValueRange::All); 1774 1774 if (!parsedValue) 1775 1775 return false; … … 1783 1783 static bool consumePerspective(CSSParserTokenRange& args, CSSParserMode cssParserMode, RefPtr<CSSFunctionValue>& transformValue) 1784 1784 { 1785 if (auto parsedValue = consumeLength(args, cssParserMode, ValueRange NonNegative)) {1785 if (auto parsedValue = consumeLength(args, cssParserMode, ValueRange::NonNegative)) { 1786 1786 transformValue->append(parsedValue.releaseNonNull()); 1787 1787 return true; … … 1828 1828 case CSSValueScaleZ: 1829 1829 case CSSValueScale: 1830 parsedValue = consumeNumber(args, ValueRange All);1830 parsedValue = consumeNumber(args, ValueRange::All); 1831 1831 if (!parsedValue) 1832 1832 return nullptr; 1833 1833 if (functionId == CSSValueScale && consumeCommaIncludingWhitespace(args)) { 1834 1834 transformValue->append(*parsedValue); 1835 parsedValue = consumeNumber(args, ValueRange All);1835 parsedValue = consumeNumber(args, ValueRange::All); 1836 1836 if (!parsedValue) 1837 1837 return nullptr; … … 1845 1845 case CSSValueTranslateY: 1846 1846 case CSSValueTranslate: 1847 parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRange All);1847 parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRange::All); 1848 1848 if (!parsedValue) 1849 1849 return nullptr; 1850 1850 if (functionId == CSSValueTranslate && consumeCommaIncludingWhitespace(args)) { 1851 1851 transformValue->append(*parsedValue); 1852 parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRange All);1852 parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRange::All); 1853 1853 if (!parsedValue) 1854 1854 return nullptr; … … 1856 1856 break; 1857 1857 case CSSValueTranslateZ: 1858 parsedValue = consumeLength(args, cssParserMode, ValueRange All);1858 parsedValue = consumeLength(args, cssParserMode, ValueRange::All); 1859 1859 break; 1860 1860 case CSSValueMatrix: … … 1918 1918 // translate3d() function. 1919 1919 1920 RefPtr<CSSValue> x = consumeLengthOrPercent(range, cssParserMode, ValueRange All);1920 RefPtr<CSSValue> x = consumeLengthOrPercent(range, cssParserMode, ValueRange::All); 1921 1921 if (!x) 1922 1922 return list; … … 1926 1926 1927 1927 range.consumeWhitespace(); 1928 RefPtr<CSSValue> y = consumeLengthOrPercent(range, cssParserMode, ValueRange All);1928 RefPtr<CSSValue> y = consumeLengthOrPercent(range, cssParserMode, ValueRange::All); 1929 1929 if (!y) 1930 1930 return list; … … 1939 1939 1940 1940 range.consumeWhitespace(); 1941 RefPtr<CSSValue> z = consumeLength(range, cssParserMode, ValueRange All);1941 RefPtr<CSSValue> z = consumeLength(range, cssParserMode, ValueRange::All); 1942 1942 1943 1943 if (is<CSSPrimitiveValue>(z)) { … … 1971 1971 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); 1972 1972 1973 RefPtr<CSSValue> x = consumeNumber(range, ValueRange All);1973 RefPtr<CSSValue> x = consumeNumber(range, ValueRange::All); 1974 1974 if (!x) 1975 1975 return list; … … 1977 1977 range.consumeWhitespace(); 1978 1978 1979 RefPtr<CSSValue> y = consumeNumber(range, ValueRange All);1979 RefPtr<CSSValue> y = consumeNumber(range, ValueRange::All); 1980 1980 if (!y) 1981 1981 return list; … … 1986 1986 range.consumeWhitespace(); 1987 1987 1988 RefPtr<CSSValue> z = consumeNumber(range, ValueRange All);1988 RefPtr<CSSValue> z = consumeNumber(range, ValueRange::All); 1989 1989 if (!z) 1990 1990 return list; … … 2024 2024 while (!range.atEnd()) { 2025 2025 // First, attempt to parse a number, which might be in a series of 3 specifying the rotation axis. 2026 RefPtr<CSSValue> parsedValue = consumeNumber(range, ValueRange All);2026 RefPtr<CSSValue> parsedValue = consumeNumber(range, ValueRange::All); 2027 2027 if (parsedValue) { 2028 2028 // If we've encountered an axis identifier, then this valus is invalid. … … 2113 2113 return CSSPrimitiveValue::create(percent, CSSUnitType::CSS_PERCENTAGE); 2114 2114 } 2115 return consumeLengthOrPercent(range, cssParserMode, ValueRange All);2115 return consumeLengthOrPercent(range, cssParserMode, ValueRange::All); 2116 2116 } 2117 2117 … … 2221 2221 if (range.peek().id() == CSSValueAuto) 2222 2222 return consumeIdent(range); 2223 return consumeLengthOrPercent(range, cssParserMode, ValueRange NonNegative);2223 return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative); 2224 2224 } 2225 2225 … … 2229 2229 if (result) 2230 2230 return result; 2231 return consumeLength(range, mode, ValueRange All, UnitlessQuirk::Allow);2231 return consumeLength(range, mode, ValueRange::All, UnitlessQuirk::Allow); 2232 2232 } 2233 2233 … … 2240 2240 RefPtr<CSSValueList> dashes = CSSValueList::createCommaSeparated(); 2241 2241 do { 2242 RefPtr<CSSPrimitiveValue> dash = consumeLengthOrPercent(range, SVGAttributeMode, ValueRange NonNegative);2242 RefPtr<CSSPrimitiveValue> dash = consumeLengthOrPercent(range, SVGAttributeMode, ValueRange::NonNegative); 2243 2243 if (!dash || (consumeCommaIncludingWhitespace(range) && range.atEnd())) 2244 2244 return nullptr; … … 2253 2253 if (id == CSSValueBaseline || id == CSSValueSub || id == CSSValueSuper) 2254 2254 return consumeIdent(range); 2255 return consumeLengthOrPercent(range, SVGAttributeMode, ValueRange All);2255 return consumeLengthOrPercent(range, SVGAttributeMode, ValueRange::All); 2256 2256 } 2257 2257 … … 2260 2260 if (range.peek().id() == CSSValueAuto) 2261 2261 return consumeIdent(range); 2262 return consumeLengthOrPercent(range, cssParserMode, ValueRange NonNegative, UnitlessQuirk::Forbid);2262 return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative, UnitlessQuirk::Forbid); 2263 2263 } 2264 2264 … … 2389 2389 return consumeIdent(range); 2390 2390 2391 if (auto parsedValue = consumeLength(range, cssParserMode, ValueRange All)) {2391 if (auto parsedValue = consumeLength(range, cssParserMode, ValueRange::All)) { 2392 2392 if (!parsedValue->isNegative().valueOr(false)) 2393 2393 return parsedValue; … … 2462 2462 static RefPtr<CSSValue> consumeBorderRadiusCorner(CSSParserTokenRange& range, CSSParserMode cssParserMode) 2463 2463 { 2464 RefPtr<CSSPrimitiveValue> parsedValue1 = consumeLengthOrPercent(range, cssParserMode, ValueRange NonNegative);2464 RefPtr<CSSPrimitiveValue> parsedValue1 = consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative); 2465 2465 if (!parsedValue1) 2466 2466 return nullptr; 2467 RefPtr<CSSPrimitiveValue> parsedValue2 = consumeLengthOrPercent(range, cssParserMode, ValueRange NonNegative);2467 RefPtr<CSSPrimitiveValue> parsedValue2 = consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative); 2468 2468 if (!parsedValue2) 2469 2469 parsedValue2 = parsedValue1; … … 2475 2475 if (auto value = consumeIdent<CSSValueAuto>(range)) 2476 2476 return value; 2477 return consumeLength(range, cssParserMode, ValueRange All);2477 return consumeLength(range, cssParserMode, ValueRange::All); 2478 2478 } 2479 2479 … … 2482 2482 if (auto value = consumeIdent<CSSValueAuto, CSSValueFromFont>(range)) 2483 2483 return value; 2484 return consumeLength(range, cssParserMode, ValueRange All);2484 return consumeLength(range, cssParserMode, ValueRange::All); 2485 2485 } 2486 2486 … … 2489 2489 RefPtr<CSSPrimitiveValue> parsedValue = consumeIdentRange(range, CSSValueBaseline, CSSValueWebkitBaselineMiddle); 2490 2490 if (!parsedValue) 2491 parsedValue = consumeLengthOrPercent(range, cssParserMode, ValueRange All, UnitlessQuirk::Allow);2491 parsedValue = consumeLengthOrPercent(range, cssParserMode, ValueRange::All, UnitlessQuirk::Allow); 2492 2492 return parsedValue; 2493 2493 } … … 2497 2497 if (identMatches<CSSValueClosestSide, CSSValueFarthestSide>(args.peek().id())) 2498 2498 return consumeIdent(args); 2499 return consumeLengthOrPercent(args, cssParserMode, ValueRange NonNegative);2499 return consumeLengthOrPercent(args, cssParserMode, ValueRange::NonNegative); 2500 2500 } 2501 2501 … … 2549 2549 2550 2550 do { 2551 RefPtr<CSSPrimitiveValue> xLength = consumeLengthOrPercent(args, context.mode, ValueRange All);2551 RefPtr<CSSPrimitiveValue> xLength = consumeLengthOrPercent(args, context.mode, ValueRange::All); 2552 2552 if (!xLength) 2553 2553 return nullptr; 2554 RefPtr<CSSPrimitiveValue> yLength = consumeLengthOrPercent(args, context.mode, ValueRange All);2554 RefPtr<CSSPrimitiveValue> yLength = consumeLengthOrPercent(args, context.mode, ValueRange::All); 2555 2555 if (!yLength) 2556 2556 return nullptr; … … 2598 2598 unsigned i = 0; 2599 2599 for (; i < 4 && !range.atEnd() && range.peek().type() != DelimiterToken; ++i) { 2600 horizontalRadii[i] = consumeLengthOrPercent(range, cssParserMode, ValueRange NonNegative);2600 horizontalRadii[i] = consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative); 2601 2601 if (!horizontalRadii[i]) 2602 2602 return false; … … 2619 2619 return false; 2620 2620 for (i = 0; i < 4 && !range.atEnd(); ++i) { 2621 verticalRadii[i] = consumeLengthOrPercent(range, cssParserMode, ValueRange NonNegative);2621 verticalRadii[i] = consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative); 2622 2622 if (!verticalRadii[i]) 2623 2623 return false; … … 2634 2634 { 2635 2635 RefPtr<CSSBasicShapeInset> shape = CSSBasicShapeInset::create(); 2636 RefPtr<CSSPrimitiveValue> top = consumeLengthOrPercent(args, context.mode, ValueRange All);2636 RefPtr<CSSPrimitiveValue> top = consumeLengthOrPercent(args, context.mode, ValueRange::All); 2637 2637 if (!top) 2638 2638 return nullptr; 2639 RefPtr<CSSPrimitiveValue> right = consumeLengthOrPercent(args, context.mode, ValueRange All);2639 RefPtr<CSSPrimitiveValue> right = consumeLengthOrPercent(args, context.mode, ValueRange::All); 2640 2640 RefPtr<CSSPrimitiveValue> bottom; 2641 2641 RefPtr<CSSPrimitiveValue> left; 2642 2642 if (right) { 2643 bottom = consumeLengthOrPercent(args, context.mode, ValueRange All);2643 bottom = consumeLengthOrPercent(args, context.mode, ValueRange::All); 2644 2644 if (bottom) 2645 left = consumeLengthOrPercent(args, context.mode, ValueRange All);2645 left = consumeLengthOrPercent(args, context.mode, ValueRange::All); 2646 2646 } 2647 2647 if (left) … … 2868 2868 2869 2869 for (size_t index = 0; index < 4; ++index) { 2870 RefPtr<CSSPrimitiveValue> value = consumePercent(range, ValueRange NonNegative);2870 RefPtr<CSSPrimitiveValue> value = consumePercent(range, ValueRange::NonNegative); 2871 2871 if (!value) 2872 value = consumeNumber(range, ValueRange NonNegative);2872 value = consumeNumber(range, ValueRange::NonNegative); 2873 2873 if (!value) 2874 2874 break; … … 2906 2906 RefPtr<CSSPrimitiveValue> value; 2907 2907 for (size_t index = 0; index < 4; ++index) { 2908 value = consumeNumber(range, ValueRange NonNegative);2908 value = consumeNumber(range, ValueRange::NonNegative); 2909 2909 if (!value) 2910 value = consumeLength(range, HTMLStandardMode, ValueRange NonNegative);2910 value = consumeLength(range, HTMLStandardMode, ValueRange::NonNegative); 2911 2911 if (!value) 2912 2912 break; … … 2933 2933 RefPtr<CSSPrimitiveValue> value; 2934 2934 for (size_t index = 0; index < 4; ++index) { 2935 value = consumeNumber(range, ValueRange NonNegative);2935 value = consumeNumber(range, ValueRange::NonNegative); 2936 2936 if (!value) 2937 value = consumeLengthOrPercent(range, HTMLStandardMode, ValueRange NonNegative, UnitlessQuirk::Forbid);2937 value = consumeLengthOrPercent(range, HTMLStandardMode, ValueRange::NonNegative, UnitlessQuirk::Forbid); 2938 2938 if (!value) 2939 2939 value = consumeIdent<CSSValueAuto>(range); … … 3019 3019 offset = CSSValuePool::singleton().createValue(0, CSSUnitType::CSS_PX); 3020 3020 else { 3021 offset = consumeLengthOrPercent(range, context.mode, ValueRange All, UnitlessQuirk::Forbid);3021 offset = consumeLengthOrPercent(range, context.mode, ValueRange::All, UnitlessQuirk::Forbid); 3022 3022 if (!offset) 3023 3023 return nullptr; … … 3087 3087 RefPtr<CSSPrimitiveValue> horizontal = consumeIdent<CSSValueAuto>(range); 3088 3088 if (!horizontal) 3089 horizontal = consumeLengthOrPercent(range, cssParserMode, ValueRange NonNegative, UnitlessQuirk::Allow);3089 horizontal = consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative, UnitlessQuirk::Allow); 3090 3090 3091 3091 RefPtr<CSSPrimitiveValue> vertical; … … 3094 3094 range.consumeIncludingWhitespace(); 3095 3095 else 3096 vertical = consumeLengthOrPercent(range, cssParserMode, ValueRange NonNegative, UnitlessQuirk::Allow);3096 vertical = consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative, UnitlessQuirk::Allow); 3097 3097 } else if (!vertical && property == CSSPropertyWebkitBackgroundSize) { 3098 3098 // Legacy syntax: "-webkit-background-size: 10px" is equivalent to "background-size: 10px 10px". … … 3250 3250 CSSParserTokenRange rangeCopy = range; 3251 3251 CSSParserTokenRange args = consumeFunction(rangeCopy); 3252 RefPtr<CSSPrimitiveValue> length = consumeLengthOrPercent(args, cssParserMode, ValueRange NonNegative, UnitlessQuirk::Allow);3252 RefPtr<CSSPrimitiveValue> length = consumeLengthOrPercent(args, cssParserMode, ValueRange::NonNegative, UnitlessQuirk::Allow); 3253 3253 if (!length || !args.atEnd()) 3254 3254 return nullptr; … … 3443 3443 return CSSPrimitiveValue::create(range.consumeIncludingWhitespace().numericValue(), CSSUnitType::CSS_FR); 3444 3444 } 3445 return consumeLengthOrPercent(range, cssParserMode, ValueRange NonNegative, UnitlessQuirk::Allow);3445 return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative, UnitlessQuirk::Allow); 3446 3446 } 3447 3447 … … 3677 3677 return ident; 3678 3678 3679 RefPtr<CSSPrimitiveValue> height = consumeNumber(range, ValueRange NonNegative);3679 RefPtr<CSSPrimitiveValue> height = consumeNumber(range, ValueRange::NonNegative); 3680 3680 if (!height) 3681 3681 return nullptr; … … 3683 3683 RefPtr<CSSPrimitiveValue> position; 3684 3684 if (!range.atEnd()) { 3685 position = consumeNumber(range, ValueRange NonNegative);3685 position = consumeNumber(range, ValueRange::NonNegative); 3686 3686 if (!position || !range.atEnd()) 3687 3687 return nullptr; … … 3783 3783 static RefPtr<CSSValue> consumeWebkitMarqueeIncrement(CSSParserTokenRange& range, CSSParserMode cssParserMode) 3784 3784 { 3785 return consumeLengthOrPercent(range, cssParserMode, ValueRange All, UnitlessQuirk::Allow);3785 return consumeLengthOrPercent(range, cssParserMode, ValueRange::All, UnitlessQuirk::Allow); 3786 3786 } 3787 3787 3788 3788 static RefPtr<CSSValue> consumeWebkitMarqueeRepetition(CSSParserTokenRange& range) 3789 3789 { 3790 return consumeNumber(range, ValueRange NonNegative);3790 return consumeNumber(range, ValueRange::NonNegative); 3791 3791 } 3792 3792 3793 3793 static RefPtr<CSSValue> consumeWebkitMarqueeSpeed(CSSParserTokenRange& range, CSSParserMode cssParserMode) 3794 3794 { 3795 return consumeTime(range, cssParserMode, ValueRange NonNegative, UnitlessQuirk::Allow);3795 return consumeTime(range, cssParserMode, ValueRange::NonNegative, UnitlessQuirk::Allow); 3796 3796 } 3797 3797 … … 3816 3816 return RefPtr<CSSValue>(WTFMove(autoValue)); 3817 3817 3818 auto leftValue = consumeNumber(range, ValueRange NonNegative);3818 auto leftValue = consumeNumber(range, ValueRange::NonNegative); 3819 3819 if (!leftValue) 3820 3820 return nullptr; … … 3822 3822 bool slashSeen = consumeSlashIncludingWhitespace(range); 3823 3823 3824 auto rightValue = consumeNumber(range, ValueRange NonNegative);3824 auto rightValue = consumeNumber(range, ValueRange::NonNegative); 3825 3825 if ((rightValue && !slashSeen) || (!rightValue && slashSeen)) 3826 3826 return nullptr; … … 4038 4038 case CSSPropertyWebkitBorderHorizontalSpacing: 4039 4039 case CSSPropertyWebkitBorderVerticalSpacing: 4040 return consumeLength(m_range, m_context.mode, ValueRange NonNegative);4040 return consumeLength(m_range, m_context.mode, ValueRange::NonNegative); 4041 4041 case CSSPropertyCounterIncrement: 4042 4042 case CSSPropertyCounterReset: … … 4086 4086 case CSSPropertyPaddingBottom: 4087 4087 case CSSPropertyPaddingLeft: 4088 return consumeLengthOrPercent(m_range, m_context.mode, ValueRange NonNegative, UnitlessQuirk::Allow);4088 return consumeLengthOrPercent(m_range, m_context.mode, ValueRange::NonNegative, UnitlessQuirk::Allow); 4089 4089 case CSSPropertyPaddingInlineStart: 4090 4090 case CSSPropertyPaddingInlineEnd: 4091 4091 case CSSPropertyPaddingBlockStart: 4092 4092 case CSSPropertyPaddingBlockEnd: 4093 return consumeLengthOrPercent(m_range, m_context.mode, ValueRange NonNegative, UnitlessQuirk::Forbid);4093 return consumeLengthOrPercent(m_range, m_context.mode, ValueRange::NonNegative, UnitlessQuirk::Forbid); 4094 4094 case CSSPropertyScrollMarginBottom: 4095 4095 case CSSPropertyScrollMarginLeft: … … 4100 4100 case CSSPropertyScrollMarginBlockStart: 4101 4101 case CSSPropertyScrollMarginBlockEnd: 4102 return consumeLength(m_range, m_context.mode, ValueRange All);4102 return consumeLength(m_range, m_context.mode, ValueRange::All); 4103 4103 case CSSPropertyScrollPaddingBottom: 4104 4104 case CSSPropertyScrollPaddingLeft: … … 4136 4136 return consumeLineClamp(m_range); 4137 4137 case CSSPropertyWebkitFontSizeDelta: 4138 return consumeLength(m_range, m_context.mode, ValueRange All, UnitlessQuirk::Allow);4138 return consumeLength(m_range, m_context.mode, ValueRange::All, UnitlessQuirk::Allow); 4139 4139 case CSSPropertyWebkitHyphenateCharacter: 4140 4140 case CSSPropertyWebkitLocale: … … 4171 4171 return consumeAnimationPropertyList(property, m_range, m_context); 4172 4172 case CSSPropertyShapeMargin: 4173 return consumeLengthOrPercent(m_range, m_context.mode, ValueRange NonNegative);4173 return consumeLengthOrPercent(m_range, m_context.mode, ValueRange::NonNegative); 4174 4174 case CSSPropertyShapeImageThreshold: 4175 return consumeNumber(m_range, ValueRange All);4175 return consumeNumber(m_range, ValueRange::All); 4176 4176 case CSSPropertyWebkitBoxOrdinalGroup: 4177 4177 case CSSPropertyOrphans: … … 4251 4251 return consumeOutlineColor(m_range, m_context.mode); 4252 4252 case CSSPropertyOutlineOffset: 4253 return consumeLength(m_range, m_context.mode, ValueRange All);4253 return consumeLength(m_range, m_context.mode, ValueRange::All); 4254 4254 case CSSPropertyOutlineWidth: 4255 4255 return consumeLineWidth(m_range, m_context.mode, UnitlessQuirk::Forbid); … … 4265 4265 return consumePositionY(m_range, m_context.mode); 4266 4266 case CSSPropertyTransformOriginZ: 4267 return consumeLength(m_range, m_context.mode, ValueRange All);4267 return consumeLength(m_range, m_context.mode, ValueRange::All); 4268 4268 case CSSPropertyTranslate: 4269 4269 if (!m_context.individualTransformPropertiesEnabled) … … 4295 4295 case CSSPropertyFlexGrow: 4296 4296 case CSSPropertyFlexShrink: 4297 return consumeNumber(m_range, ValueRange NonNegative);4297 return consumeNumber(m_range, ValueRange::NonNegative); 4298 4298 case CSSPropertyStrokeDasharray: 4299 4299 return consumeStrokeDasharray(m_range); … … 4305 4305 case CSSPropertyFloodOpacity: 4306 4306 case CSSPropertyOpacity: 4307 if (auto parsedValue = consumeNumber(m_range, ValueRange All))4307 if (auto parsedValue = consumeNumber(m_range, ValueRange::All)) 4308 4308 return parsedValue; 4309 return consumePercent(m_range, ValueRange All);4309 return consumePercent(m_range, ValueRange::All); 4310 4310 case CSSPropertyWebkitBoxFlex: 4311 return consumeNumber(m_range, ValueRange All);4311 return consumeNumber(m_range, ValueRange::All); 4312 4312 case CSSPropertyBaselineShift: 4313 4313 return consumeBaselineShift(m_range); … … 4315 4315 return consumeKerning(m_range, m_context.mode); 4316 4316 case CSSPropertyStrokeMiterlimit: 4317 return consumeNumber(m_range, ValueRange NonNegative);4317 return consumeNumber(m_range, ValueRange::NonNegative); 4318 4318 case CSSPropertyStrokeWidth: 4319 4319 case CSSPropertyStrokeDashoffset: … … 4322 4322 case CSSPropertyX: 4323 4323 case CSSPropertyY: 4324 return consumeLengthOrPercent(m_range, SVGAttributeMode, ValueRange All, UnitlessQuirk::Forbid);4324 return consumeLengthOrPercent(m_range, SVGAttributeMode, ValueRange::All, UnitlessQuirk::Forbid); 4325 4325 case CSSPropertyR: 4326 return consumeLengthOrPercent(m_range, m_context.mode, ValueRange NonNegative, UnitlessQuirk::Forbid);4326 return consumeLengthOrPercent(m_range, m_context.mode, ValueRange::NonNegative, UnitlessQuirk::Forbid); 4327 4327 case CSSPropertyRx: 4328 4328 case CSSPropertyRy: … … 5019 5019 bool CSSPropertyParser::consumeBorderSpacing(bool important) 5020 5020 { 5021 RefPtr<CSSValue> horizontalSpacing = consumeLength(m_range, m_context.mode, ValueRange NonNegative, UnitlessQuirk::Allow);5021 RefPtr<CSSValue> horizontalSpacing = consumeLength(m_range, m_context.mode, ValueRange::NonNegative, UnitlessQuirk::Allow); 5022 5022 if (!horizontalSpacing) 5023 5023 return false; 5024 5024 RefPtr<CSSValue> verticalSpacing = horizontalSpacing; 5025 5025 if (!m_range.atEnd()) 5026 verticalSpacing = consumeLength(m_range, m_context.mode, ValueRange NonNegative, UnitlessQuirk::Allow);5026 verticalSpacing = consumeLength(m_range, m_context.mode, ValueRange::NonNegative, UnitlessQuirk::Allow); 5027 5027 if (!verticalSpacing || !m_range.atEnd()) 5028 5028 return false; … … 5134 5134 flexBasis = consumeIdent(m_range); 5135 5135 if (!flexBasis) 5136 flexBasis = consumeLengthOrPercent(m_range, m_context.mode, ValueRange NonNegative);5136 flexBasis = consumeLengthOrPercent(m_range, m_context.mode, ValueRange::NonNegative); 5137 5137 if (index == 2 && !m_range.atEnd()) 5138 5138 return false; -
trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp
r276253 r276550 86 86 } 87 87 88 static Optional<double> consumeNumberOrPercentDividedBy100Raw(CSSParserTokenRange& range, ValueRange valueRange = ValueRange All)88 static Optional<double> consumeNumberOrPercentDividedBy100Raw(CSSParserTokenRange& range, ValueRange valueRange = ValueRange::All) 89 89 { 90 90 if (auto percent = consumePercentRaw(range, valueRange)) … … 98 98 class CalcParser { 99 99 public: 100 explicit CalcParser(CSSParserTokenRange& range, CalculationCategory destinationCategory, ValueRange valueRange = ValueRange All, CSSValuePool& cssValuePool = CSSValuePool::singleton())100 explicit CalcParser(CSSParserTokenRange& range, CalculationCategory destinationCategory, ValueRange valueRange = ValueRange::All, CSSValuePool& cssValuePool = CSSValuePool::singleton()) 101 101 : m_sourceRange(range) 102 102 , m_range(range) … … 254 254 const CSSParserToken& token = range.peek(); 255 255 if (token.type() == NumberToken) { 256 if (valueRange == ValueRange NonNegative && token.numericValue() < 0)256 if (valueRange == ValueRange::NonNegative && token.numericValue() < 0) 257 257 return WTF::nullopt; 258 258 return range.consumeIncludingWhitespace().numericValue(); … … 307 307 308 308 // "[For calc()], the used value resulting from an expression must be clamped to the range allowed in the target context." 309 CalcParser calcParser(range, CalculationCategory::Number, ValueRange All);309 CalcParser calcParser(range, CalculationCategory::Number, ValueRange::All); 310 310 if (auto result = calcParser.consumeNumberRaw(); result 311 311 #if !ENABLE(VARIATION_FONTS) … … 373 373 return WTF::nullopt; 374 374 } 375 if ((valueRange == ValueRange NonNegative && token.numericValue() < 0) || std::isinf(token.numericValue()))375 if ((valueRange == ValueRange::NonNegative && token.numericValue() < 0) || std::isinf(token.numericValue())) 376 376 return WTF::nullopt; 377 377 return { { token.unitType(), range.consumeIncludingWhitespace().numericValue() } }; … … 379 379 if (token.type() == NumberToken) { 380 380 if (!shouldAcceptUnitlessValue(token.numericValue(), cssParserMode, unitless, UnitlessZeroQuirk::Allow) 381 || (valueRange == ValueRange NonNegative && token.numericValue() < 0))381 || (valueRange == ValueRange::NonNegative && token.numericValue() < 0)) 382 382 return WTF::nullopt; 383 383 if (std::isinf(token.numericValue())) … … 412 412 const CSSParserToken& token = range.peek(); 413 413 if (token.type() == PercentageToken) { 414 if (std::isinf(token.numericValue()) || (valueRange == ValueRange NonNegative && token.numericValue() < 0))414 if (std::isinf(token.numericValue()) || (valueRange == ValueRange::NonNegative && token.numericValue() < 0)) 415 415 return WTF::nullopt; 416 416 return range.consumeIncludingWhitespace().numericValue(); … … 530 530 return WTF::nullopt; 531 531 532 CalcParser calcParser(range, CalculationCategory::Angle, ValueRange All);532 CalcParser calcParser(range, CalculationCategory::Angle, ValueRange::All); 533 533 return calcParser.consumeAngleRaw(); 534 534 } … … 543 543 const CSSParserToken& token = range.peek(); 544 544 if (token.type() == FunctionToken) { 545 CalcParser calcParser(range, CalculationCategory::Angle, ValueRange All, cssValuePool);545 CalcParser calcParser(range, CalculationCategory::Angle, ValueRange::All, cssValuePool); 546 546 if (const CSSCalcValue* calculation = calcParser.value()) { 547 547 if (calculation->category() == CalculationCategory::Angle) … … 602 602 unit = CSSUnitType::CSS_MS; 603 603 if (token.type() == DimensionToken || acceptUnitless) { 604 if (valueRange == ValueRange NonNegative && token.numericValue() < 0)604 if (valueRange == ValueRange::NonNegative && token.numericValue() < 0) 605 605 return nullptr; 606 606 if (unit == CSSUnitType::CSS_MS || unit == CSSUnitType::CSS_S) … … 1971 1971 if (range.peek().type() == IdentToken) 1972 1972 return consumeIdent<CSSValueLeft, CSSValueTop, CSSValueBottom, CSSValueRight, CSSValueCenter>(range); 1973 return consumeLengthOrPercent(range, cssParserMode, ValueRange All, unitless);1973 return consumeLengthOrPercent(range, cssParserMode, ValueRange::All, unitless); 1974 1974 } 1975 1975 … … 2183 2183 return nullptr; 2184 2184 } 2185 RefPtr<CSSPrimitiveValue> result = consumePercent(args, ValueRange All);2185 RefPtr<CSSPrimitiveValue> result = consumePercent(args, ValueRange::All); 2186 2186 if (!result) 2187 result = consumeNumber(args, ValueRange All);2187 result = consumeNumber(args, ValueRange::All); 2188 2188 return result; 2189 2189 } … … 2249 2249 // For radial gradients only, we now expect a numeric radius. 2250 2250 if (isDeprecatedRadialGradient) { 2251 auto radius = consumeNumber(args, ValueRange NonNegative);2251 auto radius = consumeNumber(args, ValueRange::NonNegative); 2252 2252 if (!radius || !consumeCommaIncludingWhitespace(args)) 2253 2253 return nullptr; … … 2268 2268 if (!consumeCommaIncludingWhitespace(args)) 2269 2269 return nullptr; 2270 auto radius = consumeNumber(args, ValueRange NonNegative);2270 auto radius = consumeNumber(args, ValueRange::NonNegative); 2271 2271 if (!radius) 2272 2272 return nullptr; … … 2291 2291 auto consumeStopPosition = [&] { 2292 2292 return gradient.gradientType() == CSSConicGradient 2293 ? consumeAngleOrPercent(range, context.mode, ValueRange All, UnitlessQuirk::Forbid, UnitlessZeroQuirk::Allow)2294 : consumeLengthOrPercent(range, context.mode, ValueRange All);2293 ? consumeAngleOrPercent(range, context.mode, ValueRange::All, UnitlessQuirk::Forbid, UnitlessZeroQuirk::Allow) 2294 : consumeLengthOrPercent(range, context.mode, ValueRange::All); 2295 2295 }; 2296 2296 … … 2344 2344 // Or, two lengths or percentages 2345 2345 if (!shape && !sizeKeyword) { 2346 auto horizontalSize = consumeLengthOrPercent(args, context.mode, ValueRange NonNegative);2346 auto horizontalSize = consumeLengthOrPercent(args, context.mode, ValueRange::NonNegative); 2347 2347 RefPtr<CSSPrimitiveValue> verticalSize; 2348 2348 if (horizontalSize) { 2349 verticalSize = consumeLengthOrPercent(args, context.mode, ValueRange NonNegative);2349 verticalSize = consumeLengthOrPercent(args, context.mode, ValueRange::NonNegative); 2350 2350 if (!verticalSize) 2351 2351 return nullptr; … … 2401 2401 } 2402 2402 } else { 2403 auto center = consumeLengthOrPercent(args, context.mode, ValueRange NonNegative);2403 auto center = consumeLengthOrPercent(args, context.mode, ValueRange::NonNegative); 2404 2404 if (!center) 2405 2405 break; … … 2407 2407 return nullptr; 2408 2408 horizontalSize = center; 2409 center = consumeLengthOrPercent(args, context.mode, ValueRange NonNegative);2409 center = consumeLengthOrPercent(args, context.mode, ValueRange::NonNegative); 2410 2410 if (center) { 2411 2411 verticalSize = center; … … 2802 2802 parsedValue = consumeAngle(args, context.mode, UnitlessQuirk::Forbid, UnitlessZeroQuirk::Allow); 2803 2803 else if (filterType == CSSValueBlur) 2804 parsedValue = consumeLength(args, HTMLStandardMode, ValueRange NonNegative);2804 parsedValue = consumeLength(args, HTMLStandardMode, ValueRange::NonNegative); 2805 2805 else { 2806 parsedValue = consumePercent(args, ValueRange NonNegative);2806 parsedValue = consumePercent(args, ValueRange::NonNegative); 2807 2807 if (!parsedValue) 2808 parsedValue = consumeNumber(args, ValueRange NonNegative);2808 parsedValue = consumeNumber(args, ValueRange::NonNegative); 2809 2809 if (parsedValue && !allowsValuesGreaterThanOne(filterType)) { 2810 2810 bool isPercentage = downcast<CSSPrimitiveValue>(*parsedValue).isPercentage(); … … 2880 2880 return nullptr; 2881 2881 } 2882 horizontalOffset = consumeLength(range, context.mode, ValueRange All);2882 horizontalOffset = consumeLength(range, context.mode, ValueRange::All); 2883 2883 if (!horizontalOffset) 2884 2884 return nullptr; 2885 verticalOffset = consumeLength(range, context.mode, ValueRange All);2885 verticalOffset = consumeLength(range, context.mode, ValueRange::All); 2886 2886 if (!verticalOffset) 2887 2887 return nullptr; … … 2890 2890 // The explicit check for calc() is unfortunate. This is ensuring that we only fail parsing if there is a length, but it fails the range check. 2891 2891 if (token.type() == DimensionToken || token.type() == NumberToken || (token.type() == FunctionToken && CSSCalcValue::isCalcFunction(token.functionId()))) { 2892 blurRadius = consumeLength(range, context.mode, ValueRange NonNegative);2892 blurRadius = consumeLength(range, context.mode, ValueRange::NonNegative); 2893 2893 if (!blurRadius) 2894 2894 return nullptr; … … 2896 2896 2897 2897 if (blurRadius && allowSpread) 2898 spreadDistance = consumeLength(range, context.mode, ValueRange All);2898 spreadDistance = consumeLength(range, context.mode, ValueRange::All); 2899 2899 } 2900 2900 … … 3080 3080 } 3081 3081 3082 if (auto result = consumeLengthOrPercentRaw(range, cssParserMode, ValueRange NonNegative, unitless))3082 if (auto result = consumeLengthOrPercentRaw(range, cssParserMode, ValueRange::NonNegative, unitless)) 3083 3083 return { *result }; 3084 3084 … … 3094 3094 } 3095 3095 3096 if (auto number = consumeNumberRaw(range, ValueRange NonNegative))3096 if (auto number = consumeNumberRaw(range, ValueRange::NonNegative)) 3097 3097 return { *number }; 3098 3098 3099 if (auto lengthOrPercent = consumeLengthOrPercentRaw(range, cssParserMode, ValueRange NonNegative))3099 if (auto lengthOrPercent = consumeLengthOrPercentRaw(range, cssParserMode, ValueRange::NonNegative)) 3100 3100 return { *lengthOrPercent }; 3101 3101 -
trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.h
r276152 r276550 79 79 Optional<unsigned> consumePositiveIntegerRaw(CSSParserTokenRange&); 80 80 RefPtr<CSSPrimitiveValue> consumePositiveInteger(CSSParserTokenRange&); 81 Optional<double> consumeNumberRaw(CSSParserTokenRange&, ValueRange = ValueRange All);81 Optional<double> consumeNumberRaw(CSSParserTokenRange&, ValueRange = ValueRange::All); 82 82 RefPtr<CSSPrimitiveValue> consumeNumber(CSSParserTokenRange&, ValueRange); 83 83 Optional<double> consumeFontWeightNumberRaw(CSSParserTokenRange&); … … 86 86 Optional<LengthRaw> consumeLengthRaw(CSSParserTokenRange&, CSSParserMode, ValueRange, UnitlessQuirk = UnitlessQuirk::Forbid); 87 87 RefPtr<CSSPrimitiveValue> consumeLength(CSSParserTokenRange&, CSSParserMode, ValueRange, UnitlessQuirk = UnitlessQuirk::Forbid); 88 Optional<double> consumePercentRaw(CSSParserTokenRange&, ValueRange = ValueRange All);88 Optional<double> consumePercentRaw(CSSParserTokenRange&, ValueRange = ValueRange::All); 89 89 RefPtr<CSSPrimitiveValue> consumePercent(CSSParserTokenRange&, ValueRange); 90 90 RefPtr<CSSPrimitiveValue> consumePercentWorkerSafe(CSSParserTokenRange&, ValueRange, CSSValuePool&); -
trunk/Source/WebCore/css/parser/CSSPropertyParserWorkerSafe.cpp
r276384 r276550 367 367 return result; 368 368 #if ENABLE(VARIATION_FONTS) 369 if (auto percent = CSSPropertyParserHelpers::consumePercentWorkerSafe(range, ValueRange NonNegative, pool))369 if (auto percent = CSSPropertyParserHelpers::consumePercentWorkerSafe(range, ValueRange::NonNegative, pool)) 370 370 return fontStretchIsWithinRange(percent->value<float>()) ? percent : nullptr; 371 371 #endif … … 378 378 if (auto result = consumeFontStretchKeywordValue(range, pool)) 379 379 return result; 380 auto firstPercent = CSSPropertyParserHelpers::consumePercentWorkerSafe(range, ValueRange NonNegative, pool);380 auto firstPercent = CSSPropertyParserHelpers::consumePercentWorkerSafe(range, ValueRange::NonNegative, pool); 381 381 if (!firstPercent || !fontStretchIsWithinRange(firstPercent->value<float>())) 382 382 return nullptr; 383 383 if (range.atEnd()) 384 384 return firstPercent; 385 auto secondPercent = CSSPropertyParserHelpers::consumePercentWorkerSafe(range, ValueRange NonNegative, pool);385 auto secondPercent = CSSPropertyParserHelpers::consumePercentWorkerSafe(range, ValueRange::NonNegative, pool); 386 386 if (!secondPercent || !fontStretchIsWithinRange(secondPercent->value<float>()) || firstPercent->floatValue() > secondPercent->floatValue()) 387 387 return nullptr; -
trunk/Source/WebCore/page/IntersectionObserver.cpp
r272805 r276550 50 50 if (margins.size() == 4) 51 51 return Exception { SyntaxError, "Failed to construct 'IntersectionObserver': Extra text found at the end of rootMargin." }; 52 RefPtr<CSSPrimitiveValue> parsedValue = CSSPropertyParserHelpers::consumeLengthOrPercent(tokenRange, HTMLStandardMode, ValueRange All);52 RefPtr<CSSPrimitiveValue> parsedValue = CSSPropertyParserHelpers::consumeLengthOrPercent(tokenRange, HTMLStandardMode, ValueRange::All); 53 53 if (!parsedValue || parsedValue->isCalculated()) 54 54 return Exception { SyntaxError, "Failed to construct 'IntersectionObserver': rootMargin must be specified in pixels or percent." }; -
trunk/Source/WebCore/platform/CalculationValue.h
r276262 r276550 222 222 inline CalculationValue::CalculationValue(std::unique_ptr<CalcExpressionNode> expression, ValueRange range) 223 223 : m_expression(WTFMove(expression)) 224 , m_shouldClampToNonNegative(range == ValueRange NonNegative)224 , m_shouldClampToNonNegative(range == ValueRange::NonNegative) 225 225 { 226 226 } -
trunk/Source/WebCore/platform/Length.cpp
r276141 r276550 293 293 lengths.uncheckedAppend(makeUnique<CalcExpressionLength>(length)); 294 294 auto op = makeUnique<CalcExpressionOperation>(WTFMove(lengths), CalcOperator::Subtract); 295 return Length(CalculationValue::create(WTFMove(op), ValueRange All));295 return Length(CalculationValue::create(WTFMove(op), ValueRange::All)); 296 296 } 297 297 … … 305 305 306 306 auto blend = makeUnique<CalcExpressionBlendLength>(from, to, context.progress); 307 return Length(CalculationValue::create(WTFMove(blend), ValueRange All));307 return Length(CalculationValue::create(WTFMove(blend), ValueRange::All)); 308 308 } 309 309 … … 340 340 { 341 341 auto blended = blend(from, to, context); 342 if (valueRange == ValueRange NonNegative && blended.isNegative())342 if (valueRange == ValueRange::NonNegative && blended.isNegative()) 343 343 return { 0, from.isZero () ? to.type() : from.type() }; 344 344 return blended; -
trunk/Source/WebCore/platform/Length.h
r276141 r276550 45 45 }; 46 46 47 enum ValueRange{48 ValueRangeAll,49 ValueRangeNonNegative47 enum class ValueRange : uint8_t { 48 All, 49 NonNegative 50 50 }; 51 51 -
trunk/Source/WebCore/style/StyleBuilderConverter.h
r276205 r276550 352 352 lengths.uncheckedAppend(makeUnique<CalcExpressionLength>(length)); 353 353 auto op = makeUnique<CalcExpressionOperation>(WTFMove(lengths), CalcOperator::Subtract); 354 return Length(CalculationValue::create(WTFMove(op), ValueRange All));354 return Length(CalculationValue::create(WTFMove(op), ValueRange::All)); 355 355 } 356 356 -
trunk/Tools/ChangeLog
r276540 r276550 1 2021-04-24 Tyler Wilcock <twilco.o@protonmail.com> 2 3 Refactor ValueRange from enum to enum class 4 https://bugs.webkit.org/show_bug.cgi?id=224981 5 6 Reviewed by Sam Weinig. 7 8 ValueRange has been refactored from enum to enum class : uint8_t to 9 make it smaller and harder to misuse. 10 11 * TestWebKitAPI/Tests/WebCore/CalculationValue.cpp: 12 (TestWebKitAPI::createTestValue): 13 Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All 14 and ValueRange::NonNegative. 15 1 16 2021-04-23 Aakash Jain <aakash_jain@apple.com> 2 17 -
trunk/Tools/TestWebKitAPI/Tests/WebCore/CalculationValue.cpp
r248846 r276550 55 55 { 56 56 auto node = makeUnique<CalculationDeletionTestNode>(); 57 return WebCore::CalculationValue::create(WTFMove(node), WebCore::ValueRange All);57 return WebCore::CalculationValue::create(WTFMove(node), WebCore::ValueRange::All); 58 58 } 59 59
Note:
See TracChangeset
for help on using the changeset viewer.