Title: [276550] trunk
Revision
276550
Author
[email protected]
Date
2021-04-24 09:02:06 -0700 (Sat, 24 Apr 2021)

Log Message

Refactor ValueRange from enum to enum class
https://bugs.webkit.org/show_bug.cgi?id=224981

Patch by Tyler Wilcock <[email protected]> on 2021-04-24
Reviewed by Sam Weinig.

Source/WebCore:

Refactor ValueRange from:

enum ValueRange {
    ValueRangeAll,
    ValueRangeNonNegative
}

to:

enum ValueRange : uint8_t {
    All,
    NonNegative
}

making it smaller (one byte versus four) and harder to misuse (no
auto-coercion to number types).

* animation/CSSPropertyAnimation.cpp:
(WebCore::blendFunc):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.

* css/CSSCalculationValue.cpp:
(WebCore::CSSCalcValue::create):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.

* css/CSSCalculationValue.h:
(WebCore::CSSCalcValue::createCalculationValue const):
(WebCore::CSSCalcValue::setPermittedValueRange):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.

* css/MediaQueryExpression.cpp:
(WebCore::consumeFirstValue):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.

* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::consumeTransformOrigin):
(WebCore::consumeLetterSpacing):
(WebCore::consumeWordSpacing):
(WebCore::consumeTabSize):
(WebCore::consumeTextSizeAdjust):
(WebCore::consumeFontSize):
(WebCore::consumeLineHeight):
(WebCore::consumeSize):
(WebCore::consumeTextIndent):
(WebCore::consumeScrollPadding):
(WebCore::consumeMaxWidthOrHeight):
(WebCore::consumeWidthOrHeight):
(WebCore::consumeMarginOrOffset):
(WebCore::consumeClipComponent):
(WebCore::consumeLineClamp):
(WebCore::consumeHyphenateLimit):
(WebCore::consumeColumnWidth):
(WebCore::consumeGapLength):
(WebCore::consumeZoom):
(WebCore::consumeAnimationIterationCount):
(WebCore::consumeAnimationValue):
(WebCore::consumeLineWidth):
(WebCore::consumeTranslate3d):
(WebCore::consumeNumbers):
(WebCore::consumePerspective):
(WebCore::consumeTransformValue):
(WebCore::consumeTranslate):
(WebCore::consumeScale):
(WebCore::consumeRotate):
(WebCore::consumePositionLonghand):
(WebCore::consumeFlexBasis):
(WebCore::consumeKerning):
(WebCore::consumeStrokeDasharray):
(WebCore::consumeBaselineShift):
(WebCore::consumeRxOrRy):
(WebCore::consumeBorderRadiusCorner):
(WebCore::consumeTextUnderlineOffset):
(WebCore::consumeTextDecorationThickness):
(WebCore::consumeVerticalAlign):
(WebCore::consumeShapeRadius):
(WebCore::consumeBasicShapePolygon):
(WebCore::consumeRadii):
(WebCore::consumeBasicShapeInset):
(WebCore::consumeBorderImageSlice):
(WebCore::consumeBorderImageOutset):
(WebCore::consumeBorderImageWidth):
(WebCore::consumeReflect):
(WebCore::consumeBackgroundSize):
(WebCore::consumeFitContent):
(WebCore::consumeGridBreadth):
(WebCore::consumeInitialLetter):
(WebCore::consumeWebkitMarqueeIncrement):
(WebCore::consumeWebkitMarqueeRepetition):
(WebCore::consumeWebkitMarqueeSpeed):
(WebCore::consumeAspectRatio):
(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::CSSPropertyParser::consumeBorderSpacing):
(WebCore::CSSPropertyParser::consumeFlex):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.

* css/parser/CSSPropertyParserHelpers.cpp:
(WebCore::CSSPropertyParserHelpers::consumeNumberOrPercentDividedBy100Raw):
(WebCore::CSSPropertyParserHelpers::CalcParser::CalcParser):
(WebCore::CSSPropertyParserHelpers::consumeNumberRaw):
(WebCore::CSSPropertyParserHelpers::consumeFontWeightNumberRaw):
(WebCore::CSSPropertyParserHelpers::consumeLengthRaw):
(WebCore::CSSPropertyParserHelpers::consumePercentRaw):
(WebCore::CSSPropertyParserHelpers::consumeAngleRaw):
(WebCore::CSSPropertyParserHelpers::consumeAngleWorkerSafe):
(WebCore::CSSPropertyParserHelpers::consumeTime):
(WebCore::CSSPropertyParserHelpers::consumePositionComponent):
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradientPoint):
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradient):
(WebCore::CSSPropertyParserHelpers::consumeGradientColorStops):
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedRadialGradient):
(WebCore::CSSPropertyParserHelpers::consumeRadialGradient):
(WebCore::CSSPropertyParserHelpers::consumeFilterFunction):
(WebCore::CSSPropertyParserHelpers::consumeSingleShadow):
(WebCore::CSSPropertyParserHelpers::consumeFontSizeRaw):
(WebCore::CSSPropertyParserHelpers::consumeLineHeightRaw):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.

* css/parser/CSSPropertyParserHelpers.h:
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.

* css/parser/CSSPropertyParserWorkerSafe.cpp:
(WebCore::CSSPropertyParserHelpersWorkerSafe::consumeFontStretch):
(WebCore::CSSPropertyParserHelpersWorkerSafe::consumeFontStretchRange):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.

* page/IntersectionObserver.cpp:
(WebCore::parseRootMargin):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.

* platform/CalculationValue.h:
(WebCore::CalculationValue::CalculationValue):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.

* platform/Length.cpp:
(WebCore::convertTo100PercentMinusLength):
(WebCore::blendMixedTypes):
(WebCore::blend):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.

* platform/Length.h:
Refactor enum ValueRange to enum class ValueRange.

* style/StyleBuilderConverter.h:
(WebCore::Style::BuilderConverter::convertTo100PercentMinusLength):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.

Tools:

ValueRange has been refactored from enum to enum class : uint8_t to
make it smaller and harder to misuse.

* TestWebKitAPI/Tests/WebCore/CalculationValue.cpp:
(TestWebKitAPI::createTestValue):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (276549 => 276550)


--- trunk/Source/WebCore/ChangeLog	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/ChangeLog	2021-04-24 16:02:06 UTC (rev 276550)
@@ -1,3 +1,169 @@
+2021-04-24  Tyler Wilcock  <[email protected]>
+
+        Refactor ValueRange from enum to enum class
+        https://bugs.webkit.org/show_bug.cgi?id=224981
+
+        Reviewed by Sam Weinig.
+
+        Refactor ValueRange from:
+
+        enum ValueRange {
+            ValueRangeAll,
+            ValueRangeNonNegative
+        }
+
+        to:
+
+        enum ValueRange : uint8_t {
+            All,
+            NonNegative
+        }
+
+        making it smaller (one byte versus four) and harder to misuse (no
+        auto-coercion to number types).
+
+        * animation/CSSPropertyAnimation.cpp:
+        (WebCore::blendFunc):
+        Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
+        and ValueRange::NonNegative.
+
+        * css/CSSCalculationValue.cpp:
+        (WebCore::CSSCalcValue::create):
+        Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
+        and ValueRange::NonNegative.
+
+        * css/CSSCalculationValue.h:
+        (WebCore::CSSCalcValue::createCalculationValue const):
+        (WebCore::CSSCalcValue::setPermittedValueRange):
+        Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
+        and ValueRange::NonNegative.
+
+        * css/MediaQueryExpression.cpp:
+        (WebCore::consumeFirstValue):
+        Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
+        and ValueRange::NonNegative.
+
+        * css/parser/CSSPropertyParser.cpp:
+        (WebCore::CSSPropertyParser::consumeTransformOrigin):
+        (WebCore::consumeLetterSpacing):
+        (WebCore::consumeWordSpacing):
+        (WebCore::consumeTabSize):
+        (WebCore::consumeTextSizeAdjust):
+        (WebCore::consumeFontSize):
+        (WebCore::consumeLineHeight):
+        (WebCore::consumeSize):
+        (WebCore::consumeTextIndent):
+        (WebCore::consumeScrollPadding):
+        (WebCore::consumeMaxWidthOrHeight):
+        (WebCore::consumeWidthOrHeight):
+        (WebCore::consumeMarginOrOffset):
+        (WebCore::consumeClipComponent):
+        (WebCore::consumeLineClamp):
+        (WebCore::consumeHyphenateLimit):
+        (WebCore::consumeColumnWidth):
+        (WebCore::consumeGapLength):
+        (WebCore::consumeZoom):
+        (WebCore::consumeAnimationIterationCount):
+        (WebCore::consumeAnimationValue):
+        (WebCore::consumeLineWidth):
+        (WebCore::consumeTranslate3d):
+        (WebCore::consumeNumbers):
+        (WebCore::consumePerspective):
+        (WebCore::consumeTransformValue):
+        (WebCore::consumeTranslate):
+        (WebCore::consumeScale):
+        (WebCore::consumeRotate):
+        (WebCore::consumePositionLonghand):
+        (WebCore::consumeFlexBasis):
+        (WebCore::consumeKerning):
+        (WebCore::consumeStrokeDasharray):
+        (WebCore::consumeBaselineShift):
+        (WebCore::consumeRxOrRy):
+        (WebCore::consumeBorderRadiusCorner):
+        (WebCore::consumeTextUnderlineOffset):
+        (WebCore::consumeTextDecorationThickness):
+        (WebCore::consumeVerticalAlign):
+        (WebCore::consumeShapeRadius):
+        (WebCore::consumeBasicShapePolygon):
+        (WebCore::consumeRadii):
+        (WebCore::consumeBasicShapeInset):
+        (WebCore::consumeBorderImageSlice):
+        (WebCore::consumeBorderImageOutset):
+        (WebCore::consumeBorderImageWidth):
+        (WebCore::consumeReflect):
+        (WebCore::consumeBackgroundSize):
+        (WebCore::consumeFitContent):
+        (WebCore::consumeGridBreadth):
+        (WebCore::consumeInitialLetter):
+        (WebCore::consumeWebkitMarqueeIncrement):
+        (WebCore::consumeWebkitMarqueeRepetition):
+        (WebCore::consumeWebkitMarqueeSpeed):
+        (WebCore::consumeAspectRatio):
+        (WebCore::CSSPropertyParser::parseSingleValue):
+        (WebCore::CSSPropertyParser::consumeBorderSpacing):
+        (WebCore::CSSPropertyParser::consumeFlex):
+        Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
+        and ValueRange::NonNegative.
+
+        * css/parser/CSSPropertyParserHelpers.cpp:
+        (WebCore::CSSPropertyParserHelpers::consumeNumberOrPercentDividedBy100Raw):
+        (WebCore::CSSPropertyParserHelpers::CalcParser::CalcParser):
+        (WebCore::CSSPropertyParserHelpers::consumeNumberRaw):
+        (WebCore::CSSPropertyParserHelpers::consumeFontWeightNumberRaw):
+        (WebCore::CSSPropertyParserHelpers::consumeLengthRaw):
+        (WebCore::CSSPropertyParserHelpers::consumePercentRaw):
+        (WebCore::CSSPropertyParserHelpers::consumeAngleRaw):
+        (WebCore::CSSPropertyParserHelpers::consumeAngleWorkerSafe):
+        (WebCore::CSSPropertyParserHelpers::consumeTime):
+        (WebCore::CSSPropertyParserHelpers::consumePositionComponent):
+        (WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradientPoint):
+        (WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradient):
+        (WebCore::CSSPropertyParserHelpers::consumeGradientColorStops):
+        (WebCore::CSSPropertyParserHelpers::consumeDeprecatedRadialGradient):
+        (WebCore::CSSPropertyParserHelpers::consumeRadialGradient):
+        (WebCore::CSSPropertyParserHelpers::consumeFilterFunction):
+        (WebCore::CSSPropertyParserHelpers::consumeSingleShadow):
+        (WebCore::CSSPropertyParserHelpers::consumeFontSizeRaw):
+        (WebCore::CSSPropertyParserHelpers::consumeLineHeightRaw):
+        Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
+        and ValueRange::NonNegative.
+
+        * css/parser/CSSPropertyParserHelpers.h:
+        Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
+        and ValueRange::NonNegative.
+
+        * css/parser/CSSPropertyParserWorkerSafe.cpp:
+        (WebCore::CSSPropertyParserHelpersWorkerSafe::consumeFontStretch):
+        (WebCore::CSSPropertyParserHelpersWorkerSafe::consumeFontStretchRange):
+        Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
+        and ValueRange::NonNegative.
+
+        * page/IntersectionObserver.cpp:
+        (WebCore::parseRootMargin):
+        Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
+        and ValueRange::NonNegative.
+
+        * platform/CalculationValue.h:
+        (WebCore::CalculationValue::CalculationValue):
+        Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
+        and ValueRange::NonNegative.
+
+        * platform/Length.cpp:
+        (WebCore::convertTo100PercentMinusLength):
+        (WebCore::blendMixedTypes):
+        (WebCore::blend):
+        Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
+        and ValueRange::NonNegative.
+
+        * platform/Length.h:
+        Refactor enum ValueRange to enum class ValueRange.
+
+        * style/StyleBuilderConverter.h:
+        (WebCore::Style::BuilderConverter::convertTo100PercentMinusLength):
+        Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
+        and ValueRange::NonNegative.
+
+
 2021-04-24  Zalan Bujtas  <[email protected]>
 
         [RenderTreeBuilder] Subtree moving should clear the floats on all the descendants

Modified: trunk/Source/WebCore/animation/CSSPropertyAnimation.cpp (276549 => 276550)


--- trunk/Source/WebCore/animation/CSSPropertyAnimation.cpp	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/animation/CSSPropertyAnimation.cpp	2021-04-24 16:02:06 UTC (rev 276550)
@@ -101,7 +101,7 @@
     return blend(from, to, context);
 }
 
-static inline Length blendFunc(const Length& from, const Length& to, const CSSPropertyBlendingContext& context, ValueRange valueRange = ValueRangeAll)
+static inline Length blendFunc(const Length& from, const Length& to, const CSSPropertyBlendingContext& context, ValueRange valueRange = ValueRange::All)
 {
     return blend(from, to, context, valueRange);
 }
@@ -110,7 +110,7 @@
 {
     if (from.isNormal() || to.isNormal())
         return context.progress < 0.5 ? from : to;
-    return blend(from.length(), to.length(), context, ValueRangeNonNegative);
+    return blend(from.length(), to.length(), context, ValueRange::NonNegative);
 }
 
 static inline TabSize blendFunc(const TabSize& from, const TabSize& to, const CSSPropertyBlendingContext& context)
@@ -121,8 +121,8 @@
 
 static inline LengthSize blendFunc(const LengthSize& from, const LengthSize& to, const CSSPropertyBlendingContext& context)
 {
-    return { blendFunc(from.width, to.width, context, ValueRangeNonNegative),
-             blendFunc(from.height, to.height, context, ValueRangeNonNegative) };
+    return { blendFunc(from.width, to.width, context, ValueRange::NonNegative),
+        blendFunc(from.height, to.height, context, ValueRange::NonNegative) };
 }
 
 static inline LengthPoint blendFunc(const LengthPoint& from, const LengthPoint& to, const CSSPropertyBlendingContext& context)
@@ -403,7 +403,7 @@
     return TextDecorationThickness::createWithAuto();
 }
 
-static inline LengthBox blendFunc(const LengthBox& from, const LengthBox& to, const CSSPropertyBlendingContext& context, ValueRange valueRange = ValueRangeNonNegative)
+static inline LengthBox blendFunc(const LengthBox& from, const LengthBox& to, const CSSPropertyBlendingContext& context, ValueRange valueRange = ValueRange::NonNegative)
 {
     LengthBox result(blendFunc(from.top(), to.top(), context, valueRange),
                      blendFunc(from.right(), to.right(), context, valueRange),
@@ -791,7 +791,7 @@
 
     void blend(RenderStyle& destination, const RenderStyle& from, const RenderStyle& to, const CSSPropertyBlendingContext& context) const override
     {
-        auto valueRange = m_flags.contains(Flags::NegativeLengthsAreInvalid) ? ValueRangeNonNegative : ValueRangeAll;
+        auto valueRange = m_flags.contains(Flags::NegativeLengthsAreInvalid) ? ValueRange::NonNegative : ValueRange::All;
         (destination.*m_setter)(blendFunc(value(from), value(to), context, valueRange));
     }
 
@@ -898,7 +898,7 @@
             (destination.*m_setter)(context.progress ? LengthBox(value(to)) : LengthBox(value(from)));
             return;
         }
-        auto valueRange = m_flags.contains(Flags::AllowsNegativeValues) ? ValueRangeAll : ValueRangeNonNegative;
+        auto valueRange = m_flags.contains(Flags::AllowsNegativeValues) ? ValueRange::All : ValueRange::NonNegative;
         (destination.*m_setter)(blendFunc(value(from), value(to), context, valueRange));
     }
 

Modified: trunk/Source/WebCore/css/CSSCalculationValue.cpp (276549 => 276550)


--- trunk/Source/WebCore/css/CSSCalculationValue.cpp	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/css/CSSCalculationValue.cpp	2021-04-24 16:02:06 UTC (rev 276550)
@@ -2146,7 +2146,7 @@
     auto _expression_ = parser.parseCalc(tokens, function);
     if (!_expression_)
         return nullptr;
-    auto result = adoptRef(new CSSCalcValue(_expression_.releaseNonNull(), range != ValueRangeAll));
+    auto result = adoptRef(new CSSCalcValue(_expression_.releaseNonNull(), range != ValueRange::All));
     LOG_WITH_STREAM(Calc, stream << "CSSCalcValue::create " << *result);
     return result;
 }

Modified: trunk/Source/WebCore/css/CSSCalculationValue.h (276549 => 276550)


--- trunk/Source/WebCore/css/CSSCalculationValue.h	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/css/CSSCalculationValue.h	2021-04-24 16:02:06 UTC (rev 276550)
@@ -122,12 +122,12 @@
 inline Ref<CalculationValue> CSSCalcValue::createCalculationValue(const CSSToLengthConversionData& conversionData) const
 {
     return CalculationValue::create(m_expression->createCalcExpression(conversionData),
-        m_shouldClampToNonNegative ? ValueRangeNonNegative : ValueRangeAll);
+        m_shouldClampToNonNegative ? ValueRange::NonNegative : ValueRange::All);
 }
 
 inline void CSSCalcValue::setPermittedValueRange(ValueRange range)
 {
-    m_shouldClampToNonNegative = range != ValueRangeAll;
+    m_shouldClampToNonNegative = range != ValueRange::All;
 }
 
 inline void CSSCalcValue::collectDirectComputationalDependencies(HashSet<CSSPropertyID>& values) const

Modified: trunk/Source/WebCore/css/MediaQueryExpression.cpp (276549 => 276550)


--- trunk/Source/WebCore/css/MediaQueryExpression.cpp	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/css/MediaQueryExpression.cpp	2021-04-24 16:02:06 UTC (rev 276550)
@@ -186,11 +186,11 @@
         return value;
 
     if (!featureExpectingPositiveInteger(mediaFeature) && !isAspectRatioFeature(mediaFeature)) {
-        if (auto value = CSSPropertyParserHelpers::consumeNumber(range, ValueRangeNonNegative))
+        if (auto value = CSSPropertyParserHelpers::consumeNumber(range, ValueRange::NonNegative))
             return value;
     }
 
-    if (auto value = CSSPropertyParserHelpers::consumeLength(range, HTMLStandardMode, ValueRangeNonNegative))
+    if (auto value = CSSPropertyParserHelpers::consumeLength(range, HTMLStandardMode, ValueRange::NonNegative))
         return value;
 
     if (auto value = CSSPropertyParserHelpers::consumeResolution(range))

Modified: trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp (276549 => 276550)


--- trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp	2021-04-24 16:02:06 UTC (rev 276550)
@@ -356,7 +356,7 @@
     if (auto resultXY = consumeOneOrTwoValuedPositionCoordinates(m_range, m_context.mode, UnitlessQuirk::Forbid)) {
         m_range.consumeWhitespace();
         bool atEnd = m_range.atEnd();
-        auto resultZ = consumeLength(m_range, m_context.mode, ValueRangeAll);
+        auto resultZ = consumeLength(m_range, m_context.mode, ValueRange::All);
         bool hasZ = resultZ;
         if (!hasZ && !atEnd)
             return false;
@@ -976,7 +976,7 @@
     if (range.peek().id() == CSSValueNormal)
         return consumeIdent(range);
     
-    return consumeLength(range, cssParserMode, ValueRangeAll, UnitlessQuirk::Allow);
+    return consumeLength(range, cssParserMode, ValueRange::All, UnitlessQuirk::Allow);
 }
 
 static RefPtr<CSSValue> consumeWordSpacing(CSSParserTokenRange& range, CSSParserMode cssParserMode)
@@ -984,15 +984,15 @@
     if (range.peek().id() == CSSValueNormal)
         return consumeIdent(range);
     
-    return consumeLengthOrPercent(range, cssParserMode, ValueRangeAll, UnitlessQuirk::Allow);
+    return consumeLengthOrPercent(range, cssParserMode, ValueRange::All, UnitlessQuirk::Allow);
 }
     
 static RefPtr<CSSValue> consumeTabSize(CSSParserTokenRange& range, CSSParserMode cssParserMode)
 {
-    auto tabSize = consumeNumber(range, ValueRangeNonNegative);
+    auto tabSize = consumeNumber(range, ValueRange::NonNegative);
     if (tabSize)
         return tabSize;
-    return consumeLength(range, cssParserMode, ValueRangeNonNegative);
+    return consumeLength(range, cssParserMode, ValueRange::NonNegative);
 }
 
 #if ENABLE(TEXT_AUTOSIZING)
@@ -1002,7 +1002,7 @@
         return consumeIdent(range);
     if (range.peek().id() == CSSValueNone)
         return consumeIdent(range);
-    return consumePercent(range, ValueRangeNonNegative);
+    return consumePercent(range, ValueRange::NonNegative);
 }
 #endif
 
@@ -1010,7 +1010,7 @@
 {
     if (range.peek().id() >= CSSValueXxSmall && range.peek().id() <= CSSValueLarger)
         return consumeIdent(range);
-    return consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative, unitless);
+    return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative, unitless);
 }
 
 static RefPtr<CSSPrimitiveValue> consumeLineHeight(CSSParserTokenRange& range, CSSParserMode cssParserMode)
@@ -1018,10 +1018,10 @@
     if (range.peek().id() == CSSValueNormal)
         return consumeIdent(range);
 
-    RefPtr<CSSPrimitiveValue> lineHeight = consumeNumber(range, ValueRangeNonNegative);
+    RefPtr<CSSPrimitiveValue> lineHeight = consumeNumber(range, ValueRange::NonNegative);
     if (lineHeight)
         return lineHeight;
-    return consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative);
+    return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative);
 }
 
 template<typename... Args>
@@ -1063,8 +1063,8 @@
         return result;
     }
 
-    if (RefPtr<CSSValue> width = consumeLength(range, cssParserMode, ValueRangeNonNegative)) {
-        RefPtr<CSSValue> height = consumeLength(range, cssParserMode, ValueRangeNonNegative);
+    if (RefPtr<CSSValue> width = consumeLength(range, cssParserMode, ValueRange::NonNegative)) {
+        RefPtr<CSSValue> height = consumeLength(range, cssParserMode, ValueRange::NonNegative);
         result->append(width.releaseNonNull());
         if (height)
             result->append(height.releaseNonNull());
@@ -1094,7 +1094,7 @@
 
     do {
         if (!lengthOrPercentage) {
-            if (RefPtr<CSSValue> textIndent = consumeLengthOrPercent(range, cssParserMode, ValueRangeAll, UnitlessQuirk::Allow)) {
+            if (RefPtr<CSSValue> textIndent = consumeLengthOrPercent(range, cssParserMode, ValueRange::All, UnitlessQuirk::Allow)) {
                 lengthOrPercentage = textIndent;
                 continue;
             }
@@ -1131,7 +1131,7 @@
 {
     if (range.peek().id() == CSSValueAuto)
         return consumeIdent(range);
-    return consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative);
+    return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative);
 }
 
 static bool validWidthOrHeightKeyword(CSSValueID id, const CSSParserContext& /*context*/)
@@ -1146,7 +1146,7 @@
 {
     if (range.peek().id() == CSSValueNone || validWidthOrHeightKeyword(range.peek().id(), context))
         return consumeIdent(range);
-    return consumeLengthOrPercent(range, context.mode, ValueRangeNonNegative, unitless);
+    return consumeLengthOrPercent(range, context.mode, ValueRange::NonNegative, unitless);
 }
 
 static RefPtr<CSSValue> consumeWidthOrHeight(CSSParserTokenRange& range, const CSSParserContext& context, UnitlessQuirk unitless = UnitlessQuirk::Forbid)
@@ -1153,7 +1153,7 @@
 {
     if (range.peek().id() == CSSValueAuto || validWidthOrHeightKeyword(range.peek().id(), context))
         return consumeIdent(range);
-    return consumeLengthOrPercent(range, context.mode, ValueRangeNonNegative, unitless);
+    return consumeLengthOrPercent(range, context.mode, ValueRange::NonNegative, unitless);
 }
 
 static RefPtr<CSSValue> consumeMarginOrOffset(CSSParserTokenRange& range, CSSParserMode cssParserMode, UnitlessQuirk unitless)
@@ -1160,7 +1160,7 @@
 {
     if (range.peek().id() == CSSValueAuto)
         return consumeIdent(range);
-    return consumeLengthOrPercent(range, cssParserMode, ValueRangeAll, unitless);
+    return consumeLengthOrPercent(range, cssParserMode, ValueRange::All, unitless);
 }
 
 static RefPtr<CSSPrimitiveValue> consumeClipComponent(CSSParserTokenRange& range, CSSParserMode cssParserMode)
@@ -1167,7 +1167,7 @@
 {
     if (range.peek().id() == CSSValueAuto)
         return consumeIdent(range);
-    return consumeLength(range, cssParserMode, ValueRangeAll, UnitlessQuirk::Allow);
+    return consumeLength(range, cssParserMode, ValueRange::All, UnitlessQuirk::Allow);
 }
 
 static RefPtr<CSSValue> consumeClip(CSSParserTokenRange& range, CSSParserMode cssParserMode)
@@ -1225,7 +1225,7 @@
 
 static RefPtr<CSSPrimitiveValue> consumeLineClamp(CSSParserTokenRange& range)
 {
-    if (auto clampValue = consumePercent(range, ValueRangeNonNegative))
+    if (auto clampValue = consumePercent(range, ValueRange::NonNegative))
         return clampValue;
     // When specifying number of lines, don't allow 0 as a valid value.
     return consumePositiveInteger(range);
@@ -1242,7 +1242,7 @@
 {
     if (range.peek().id() == valueID)
         return consumeIdent(range);
-    return consumeNumber(range, ValueRangeNonNegative);
+    return consumeNumber(range, ValueRange::NonNegative);
 }
 
 static RefPtr<CSSValue> consumeColumnWidth(CSSParserTokenRange& range)
@@ -1251,7 +1251,7 @@
         return consumeIdent(range);
     // Always parse lengths in strict mode here, since it would be ambiguous otherwise when used in
     // the 'columns' shorthand property.
-    RefPtr<CSSPrimitiveValue> columnWidth = consumeLength(range, HTMLStandardMode, ValueRangeNonNegative);
+    RefPtr<CSSPrimitiveValue> columnWidth = consumeLength(range, HTMLStandardMode, ValueRange::NonNegative);
     if (!columnWidth || columnWidth->isZero().valueOr(false))
         return nullptr;
 
@@ -1269,7 +1269,7 @@
 {
     if (range.peek().id() == CSSValueNormal)
         return consumeIdent(range);
-    return consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative);
+    return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative);
 }
 
 static RefPtr<CSSValue> consumeColumnSpan(CSSParserTokenRange& range)
@@ -1284,9 +1284,9 @@
     if (token.type() == IdentToken)
         zoom = consumeIdent<CSSValueNormal, CSSValueReset, CSSValueDocument>(range);
     else {
-        zoom = consumePercent(range, ValueRangeNonNegative);
+        zoom = consumePercent(range, ValueRange::NonNegative);
         if (!zoom)
-            zoom = consumeNumber(range, ValueRangeNonNegative);
+            zoom = consumeNumber(range, ValueRange::NonNegative);
     }
     return zoom;
 }
@@ -1295,7 +1295,7 @@
 {
     if (range.peek().id() == CSSValueInfinite)
         return consumeIdent(range);
-    return consumeNumber(range, ValueRangeNonNegative);
+    return consumeNumber(range, ValueRange::NonNegative);
 }
 
 static RefPtr<CSSValue> consumeAnimationName(CSSParserTokenRange& range)
@@ -1501,12 +1501,12 @@
     switch (property) {
     case CSSPropertyAnimationDelay:
     case CSSPropertyTransitionDelay:
-        return consumeTime(range, context.mode, ValueRangeAll, UnitlessQuirk::Forbid);
+        return consumeTime(range, context.mode, ValueRange::All, UnitlessQuirk::Forbid);
     case CSSPropertyAnimationDirection:
         return consumeIdent<CSSValueNormal, CSSValueAlternate, CSSValueReverse, CSSValueAlternateReverse>(range);
     case CSSPropertyAnimationDuration:
     case CSSPropertyTransitionDuration:
-        return consumeTime(range, context.mode, ValueRangeNonNegative, UnitlessQuirk::Forbid);
+        return consumeTime(range, context.mode, ValueRange::NonNegative, UnitlessQuirk::Forbid);
     case CSSPropertyAnimationFillMode:
         return consumeIdent<CSSValueNone, CSSValueForwards, CSSValueBackwards, CSSValueBoth>(range);
     case CSSPropertyAnimationIterationCount:
@@ -1730,7 +1730,7 @@
     CSSValueID id = range.peek().id();
     if (id == CSSValueThin || id == CSSValueMedium || id == CSSValueThick)
         return consumeIdent(range);
-    return consumeLength(range, cssParserMode, ValueRangeNonNegative, unitless);
+    return consumeLength(range, cssParserMode, ValueRange::NonNegative, unitless);
 }
 
 static RefPtr<CSSPrimitiveValue> consumeBorderWidth(CSSParserTokenRange& range, CSSParserMode cssParserMode, UnitlessQuirk unitless)
@@ -1753,7 +1753,7 @@
     unsigned numberOfArguments = 2;
     RefPtr<CSSValue> parsedValue;
     do {
-        parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRangeAll);
+        parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRange::All);
         if (!parsedValue)
             return false;
         transformValue->append(*parsedValue);
@@ -1760,7 +1760,7 @@
         if (!consumeCommaIncludingWhitespace(args))
             return false;
     } while (--numberOfArguments);
-    parsedValue = consumeLength(args, cssParserMode, ValueRangeAll);
+    parsedValue = consumeLength(args, cssParserMode, ValueRange::All);
     if (!parsedValue)
         return false;
     transformValue->append(*parsedValue);
@@ -1770,7 +1770,7 @@
 static bool consumeNumbers(CSSParserTokenRange& args, RefPtr<CSSFunctionValue>& transformValue, unsigned numberOfArguments)
 {
     do {
-        RefPtr<CSSPrimitiveValue> parsedValue = consumeNumber(args, ValueRangeAll);
+        RefPtr<CSSPrimitiveValue> parsedValue = consumeNumber(args, ValueRange::All);
         if (!parsedValue)
             return false;
         transformValue->append(parsedValue.releaseNonNull());
@@ -1782,7 +1782,7 @@
 
 static bool consumePerspective(CSSParserTokenRange& args, CSSParserMode cssParserMode, RefPtr<CSSFunctionValue>& transformValue)
 {
-    if (auto parsedValue = consumeLength(args, cssParserMode, ValueRangeNonNegative)) {
+    if (auto parsedValue = consumeLength(args, cssParserMode, ValueRange::NonNegative)) {
         transformValue->append(parsedValue.releaseNonNull());
         return true;
     }
@@ -1827,12 +1827,12 @@
     case CSSValueScaleY:
     case CSSValueScaleZ:
     case CSSValueScale:
-        parsedValue = consumeNumber(args, ValueRangeAll);
+        parsedValue = consumeNumber(args, ValueRange::All);
         if (!parsedValue)
             return nullptr;
         if (functionId == CSSValueScale && consumeCommaIncludingWhitespace(args)) {
             transformValue->append(*parsedValue);
-            parsedValue = consumeNumber(args, ValueRangeAll);
+            parsedValue = consumeNumber(args, ValueRange::All);
             if (!parsedValue)
                 return nullptr;
         }
@@ -1844,18 +1844,18 @@
     case CSSValueTranslateX:
     case CSSValueTranslateY:
     case CSSValueTranslate:
-        parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRangeAll);
+        parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRange::All);
         if (!parsedValue)
             return nullptr;
         if (functionId == CSSValueTranslate && consumeCommaIncludingWhitespace(args)) {
             transformValue->append(*parsedValue);
-            parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRangeAll);
+            parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRange::All);
             if (!parsedValue)
                 return nullptr;
         }
         break;
     case CSSValueTranslateZ:
-        parsedValue = consumeLength(args, cssParserMode, ValueRangeAll);
+        parsedValue = consumeLength(args, cssParserMode, ValueRange::All);
         break;
     case CSSValueMatrix:
     case CSSValueMatrix3d:
@@ -1917,7 +1917,7 @@
     // value is missing, it defaults to 0px. If three values are given, this specifies a 3d translation, equivalent to the
     // translate3d() function.
 
-    RefPtr<CSSValue> x = consumeLengthOrPercent(range, cssParserMode, ValueRangeAll);
+    RefPtr<CSSValue> x = consumeLengthOrPercent(range, cssParserMode, ValueRange::All);
     if (!x)
         return list;
 
@@ -1925,7 +1925,7 @@
     list->append(*x);
 
     range.consumeWhitespace();
-    RefPtr<CSSValue> y = consumeLengthOrPercent(range, cssParserMode, ValueRangeAll);
+    RefPtr<CSSValue> y = consumeLengthOrPercent(range, cssParserMode, ValueRange::All);
     if (!y)
         return list;
 
@@ -1938,7 +1938,7 @@
     }
 
     range.consumeWhitespace();
-    RefPtr<CSSValue> z = consumeLength(range, cssParserMode, ValueRangeAll);
+    RefPtr<CSSValue> z = consumeLength(range, cssParserMode, ValueRange::All);
 
     if (is<CSSPrimitiveValue>(z)) {
         auto& zPrimitiveValue = downcast<CSSPrimitiveValue>(*z);
@@ -1970,13 +1970,13 @@
 
     RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
 
-    RefPtr<CSSValue> x = consumeNumber(range, ValueRangeAll);
+    RefPtr<CSSValue> x = consumeNumber(range, ValueRange::All);
     if (!x)
         return list;
     list->append(*x);
     range.consumeWhitespace();
 
-    RefPtr<CSSValue> y = consumeNumber(range, ValueRangeAll);
+    RefPtr<CSSValue> y = consumeNumber(range, ValueRange::All);
     if (!y)
         return list;
 
@@ -1985,7 +1985,7 @@
         list->append(*y);
     range.consumeWhitespace();
 
-    RefPtr<CSSValue> z = consumeNumber(range, ValueRangeAll);
+    RefPtr<CSSValue> z = consumeNumber(range, ValueRange::All);
     if (!z)
         return list;
     if (downcast<CSSPrimitiveValue>(*z).floatValue() != 1.0) {
@@ -2023,7 +2023,7 @@
 
     while (!range.atEnd()) {
         // First, attempt to parse a number, which might be in a series of 3 specifying the rotation axis.
-        RefPtr<CSSValue> parsedValue = consumeNumber(range, ValueRangeAll);
+        RefPtr<CSSValue> parsedValue = consumeNumber(range, ValueRange::All);
         if (parsedValue) {
             // If we've encountered an axis identifier, then this valus is invalid.
             if (axisIdentifier)
@@ -2112,7 +2112,7 @@
         range.consumeIncludingWhitespace();
         return CSSPrimitiveValue::create(percent, CSSUnitType::CSS_PERCENTAGE);
     }
-    return consumeLengthOrPercent(range, cssParserMode, ValueRangeAll);
+    return consumeLengthOrPercent(range, cssParserMode, ValueRange::All);
 }
 
 static RefPtr<CSSPrimitiveValue> consumePositionX(CSSParserTokenRange& range, CSSParserMode cssParserMode)
@@ -2220,7 +2220,7 @@
     // FIXME: Support intrinsic dimensions too.
     if (range.peek().id() == CSSValueAuto)
         return consumeIdent(range);
-    return consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative);
+    return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative);
 }
 
 static RefPtr<CSSValue> consumeKerning(CSSParserTokenRange& range, CSSParserMode mode)
@@ -2228,7 +2228,7 @@
     RefPtr<CSSValue> result = consumeIdent<CSSValueAuto, CSSValueNormal>(range);
     if (result)
         return result;
-    return consumeLength(range, mode, ValueRangeAll, UnitlessQuirk::Allow);
+    return consumeLength(range, mode, ValueRange::All, UnitlessQuirk::Allow);
 }
 
 static RefPtr<CSSValue> consumeStrokeDasharray(CSSParserTokenRange& range)
@@ -2239,7 +2239,7 @@
 
     RefPtr<CSSValueList> dashes = CSSValueList::createCommaSeparated();
     do {
-        RefPtr<CSSPrimitiveValue> dash = consumeLengthOrPercent(range, SVGAttributeMode, ValueRangeNonNegative);
+        RefPtr<CSSPrimitiveValue> dash = consumeLengthOrPercent(range, SVGAttributeMode, ValueRange::NonNegative);
         if (!dash || (consumeCommaIncludingWhitespace(range) && range.atEnd()))
             return nullptr;
         dashes->append(dash.releaseNonNull());
@@ -2252,7 +2252,7 @@
     CSSValueID id = range.peek().id();
     if (id == CSSValueBaseline || id == CSSValueSub || id == CSSValueSuper)
         return consumeIdent(range);
-    return consumeLengthOrPercent(range, SVGAttributeMode, ValueRangeAll);
+    return consumeLengthOrPercent(range, SVGAttributeMode, ValueRange::All);
 }
 
 static RefPtr<CSSPrimitiveValue> consumeRxOrRy(CSSParserTokenRange& range, CSSParserMode cssParserMode)
@@ -2259,7 +2259,7 @@
 {
     if (range.peek().id() == CSSValueAuto)
         return consumeIdent(range);
-    return consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative, UnitlessQuirk::Forbid);
+    return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative, UnitlessQuirk::Forbid);
 }
 
 static RefPtr<CSSValue> consumeCursor(CSSParserTokenRange& range, const CSSParserContext& context, bool inQuirksMode)
@@ -2388,7 +2388,7 @@
     if (range.peek().id() == CSSValueNone)
         return consumeIdent(range);
 
-    if (auto parsedValue = consumeLength(range, cssParserMode, ValueRangeAll)) {
+    if (auto parsedValue = consumeLength(range, cssParserMode, ValueRange::All)) {
         if (!parsedValue->isNegative().valueOr(false))
             return parsedValue;
         return nullptr;
@@ -2461,10 +2461,10 @@
 
 static RefPtr<CSSValue> consumeBorderRadiusCorner(CSSParserTokenRange& range, CSSParserMode cssParserMode)
 {
-    RefPtr<CSSPrimitiveValue> parsedValue1 = consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative);
+    RefPtr<CSSPrimitiveValue> parsedValue1 = consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative);
     if (!parsedValue1)
         return nullptr;
-    RefPtr<CSSPrimitiveValue> parsedValue2 = consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative);
+    RefPtr<CSSPrimitiveValue> parsedValue2 = consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative);
     if (!parsedValue2)
         parsedValue2 = parsedValue1;
     return createPrimitiveValuePair(parsedValue1.releaseNonNull(), parsedValue2.releaseNonNull(), Pair::IdenticalValueEncoding::Coalesce);
@@ -2474,7 +2474,7 @@
 {
     if (auto value = consumeIdent<CSSValueAuto>(range))
         return value;
-    return consumeLength(range, cssParserMode, ValueRangeAll);
+    return consumeLength(range, cssParserMode, ValueRange::All);
 }
 
 static RefPtr<CSSValue> consumeTextDecorationThickness(CSSParserTokenRange& range, CSSParserMode cssParserMode)
@@ -2481,7 +2481,7 @@
 {
     if (auto value = consumeIdent<CSSValueAuto, CSSValueFromFont>(range))
         return value;
-    return consumeLength(range, cssParserMode, ValueRangeAll);
+    return consumeLength(range, cssParserMode, ValueRange::All);
 }
 
 static RefPtr<CSSPrimitiveValue> consumeVerticalAlign(CSSParserTokenRange& range, CSSParserMode cssParserMode)
@@ -2488,7 +2488,7 @@
 {
     RefPtr<CSSPrimitiveValue> parsedValue = consumeIdentRange(range, CSSValueBaseline, CSSValueWebkitBaselineMiddle);
     if (!parsedValue)
-        parsedValue = consumeLengthOrPercent(range, cssParserMode, ValueRangeAll, UnitlessQuirk::Allow);
+        parsedValue = consumeLengthOrPercent(range, cssParserMode, ValueRange::All, UnitlessQuirk::Allow);
     return parsedValue;
 }
 
@@ -2496,7 +2496,7 @@
 {
     if (identMatches<CSSValueClosestSide, CSSValueFarthestSide>(args.peek().id()))
         return consumeIdent(args);
-    return consumeLengthOrPercent(args, cssParserMode, ValueRangeNonNegative);
+    return consumeLengthOrPercent(args, cssParserMode, ValueRange::NonNegative);
 }
 
 static RefPtr<CSSBasicShapeCircle> consumeBasicShapeCircle(CSSParserTokenRange& args, const CSSParserContext& context)
@@ -2548,10 +2548,10 @@
     }
 
     do {
-        RefPtr<CSSPrimitiveValue> xLength = consumeLengthOrPercent(args, context.mode, ValueRangeAll);
+        RefPtr<CSSPrimitiveValue> xLength = consumeLengthOrPercent(args, context.mode, ValueRange::All);
         if (!xLength)
             return nullptr;
-        RefPtr<CSSPrimitiveValue> yLength = consumeLengthOrPercent(args, context.mode, ValueRangeAll);
+        RefPtr<CSSPrimitiveValue> yLength = consumeLengthOrPercent(args, context.mode, ValueRange::All);
         if (!yLength)
             return nullptr;
         shape->appendPoint(xLength.releaseNonNull(), yLength.releaseNonNull());
@@ -2597,7 +2597,7 @@
 {
     unsigned i = 0;
     for (; i < 4 && !range.atEnd() && range.peek().type() != DelimiterToken; ++i) {
-        horizontalRadii[i] = consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative);
+        horizontalRadii[i] = consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative);
         if (!horizontalRadii[i])
             return false;
     }
@@ -2618,7 +2618,7 @@
         if (!consumeSlashIncludingWhitespace(range))
             return false;
         for (i = 0; i < 4 && !range.atEnd(); ++i) {
-            verticalRadii[i] = consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative);
+            verticalRadii[i] = consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative);
             if (!verticalRadii[i])
                 return false;
         }
@@ -2633,16 +2633,16 @@
 static RefPtr<CSSBasicShapeInset> consumeBasicShapeInset(CSSParserTokenRange& args, const CSSParserContext& context)
 {
     RefPtr<CSSBasicShapeInset> shape = CSSBasicShapeInset::create();
-    RefPtr<CSSPrimitiveValue> top = consumeLengthOrPercent(args, context.mode, ValueRangeAll);
+    RefPtr<CSSPrimitiveValue> top = consumeLengthOrPercent(args, context.mode, ValueRange::All);
     if (!top)
         return nullptr;
-    RefPtr<CSSPrimitiveValue> right = consumeLengthOrPercent(args, context.mode, ValueRangeAll);
+    RefPtr<CSSPrimitiveValue> right = consumeLengthOrPercent(args, context.mode, ValueRange::All);
     RefPtr<CSSPrimitiveValue> bottom;
     RefPtr<CSSPrimitiveValue> left;
     if (right) {
-        bottom = consumeLengthOrPercent(args, context.mode, ValueRangeAll);
+        bottom = consumeLengthOrPercent(args, context.mode, ValueRange::All);
         if (bottom)
-            left = consumeLengthOrPercent(args, context.mode, ValueRangeAll);
+            left = consumeLengthOrPercent(args, context.mode, ValueRange::All);
     }
     if (left)
         shape->updateShapeSize4Values(top.releaseNonNull(), right.releaseNonNull(), bottom.releaseNonNull(), left.releaseNonNull());
@@ -2867,9 +2867,9 @@
     RefPtr<CSSPrimitiveValue> slices[4] = { 0 };
 
     for (size_t index = 0; index < 4; ++index) {
-        RefPtr<CSSPrimitiveValue> value = consumePercent(range, ValueRangeNonNegative);
+        RefPtr<CSSPrimitiveValue> value = consumePercent(range, ValueRange::NonNegative);
         if (!value)
-            value = consumeNumber(range, ValueRangeNonNegative);
+            value = consumeNumber(range, ValueRange::NonNegative);
         if (!value)
             break;
         slices[index] = value;
@@ -2905,9 +2905,9 @@
 
     RefPtr<CSSPrimitiveValue> value;
     for (size_t index = 0; index < 4; ++index) {
-        value = consumeNumber(range, ValueRangeNonNegative);
+        value = consumeNumber(range, ValueRange::NonNegative);
         if (!value)
-            value = consumeLength(range, HTMLStandardMode, ValueRangeNonNegative);
+            value = consumeLength(range, HTMLStandardMode, ValueRange::NonNegative);
         if (!value)
             break;
         outsets[index] = value;
@@ -2932,9 +2932,9 @@
 
     RefPtr<CSSPrimitiveValue> value;
     for (size_t index = 0; index < 4; ++index) {
-        value = consumeNumber(range, ValueRangeNonNegative);
+        value = consumeNumber(range, ValueRange::NonNegative);
         if (!value)
-            value = consumeLengthOrPercent(range, HTMLStandardMode, ValueRangeNonNegative, UnitlessQuirk::Forbid);
+            value = consumeLengthOrPercent(range, HTMLStandardMode, ValueRange::NonNegative, UnitlessQuirk::Forbid);
         if (!value)
             value = consumeIdent<CSSValueAuto>(range);
         if (!value)
@@ -3018,7 +3018,7 @@
     if (range.atEnd())
         offset = CSSValuePool::singleton().createValue(0, CSSUnitType::CSS_PX);
     else {
-        offset = consumeLengthOrPercent(range, context.mode, ValueRangeAll, UnitlessQuirk::Forbid);
+        offset = consumeLengthOrPercent(range, context.mode, ValueRange::All, UnitlessQuirk::Forbid);
         if (!offset)
             return nullptr;
     }
@@ -3086,7 +3086,7 @@
     // tests assume that. Other browser engines don't allow it though.
     RefPtr<CSSPrimitiveValue> horizontal = consumeIdent<CSSValueAuto>(range);
     if (!horizontal)
-        horizontal = consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative, UnitlessQuirk::Allow);
+        horizontal = consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative, UnitlessQuirk::Allow);
 
     RefPtr<CSSPrimitiveValue> vertical;
     if (!range.atEnd()) {
@@ -3093,7 +3093,7 @@
         if (range.peek().id() == CSSValueAuto) // `auto' is the default
             range.consumeIncludingWhitespace();
         else
-            vertical = consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative, UnitlessQuirk::Allow);
+            vertical = consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative, UnitlessQuirk::Allow);
     } else if (!vertical && property == CSSPropertyWebkitBackgroundSize) {
         // Legacy syntax: "-webkit-background-size: 10px" is equivalent to "background-size: 10px 10px".
         vertical = horizontal;
@@ -3249,7 +3249,7 @@
 {
     CSSParserTokenRange rangeCopy = range;
     CSSParserTokenRange args = consumeFunction(rangeCopy);
-    RefPtr<CSSPrimitiveValue> length = consumeLengthOrPercent(args, cssParserMode, ValueRangeNonNegative, UnitlessQuirk::Allow);
+    RefPtr<CSSPrimitiveValue> length = consumeLengthOrPercent(args, cssParserMode, ValueRange::NonNegative, UnitlessQuirk::Allow);
     if (!length || !args.atEnd())
         return nullptr;
     range = rangeCopy;
@@ -3442,7 +3442,7 @@
             return nullptr;
         return CSSPrimitiveValue::create(range.consumeIncludingWhitespace().numericValue(), CSSUnitType::CSS_FR);
     }
-    return consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative, UnitlessQuirk::Allow);
+    return consumeLengthOrPercent(range, cssParserMode, ValueRange::NonNegative, UnitlessQuirk::Allow);
 }
 
 static RefPtr<CSSValue> consumeGridTrackSize(CSSParserTokenRange& range, CSSParserMode cssParserMode)
@@ -3676,13 +3676,13 @@
     if (ident)
         return ident;
     
-    RefPtr<CSSPrimitiveValue> height = consumeNumber(range, ValueRangeNonNegative);
+    RefPtr<CSSPrimitiveValue> height = consumeNumber(range, ValueRange::NonNegative);
     if (!height)
         return nullptr;
     
     RefPtr<CSSPrimitiveValue> position;
     if (!range.atEnd()) {
-        position = consumeNumber(range, ValueRangeNonNegative);
+        position = consumeNumber(range, ValueRange::NonNegative);
         if (!position || !range.atEnd())
             return nullptr;
     } else
@@ -3782,17 +3782,17 @@
 
 static RefPtr<CSSValue> consumeWebkitMarqueeIncrement(CSSParserTokenRange& range, CSSParserMode cssParserMode)
 {
-    return consumeLengthOrPercent(range, cssParserMode, ValueRangeAll, UnitlessQuirk::Allow);
+    return consumeLengthOrPercent(range, cssParserMode, ValueRange::All, UnitlessQuirk::Allow);
 }
 
 static RefPtr<CSSValue> consumeWebkitMarqueeRepetition(CSSParserTokenRange& range)
 {
-    return consumeNumber(range, ValueRangeNonNegative);
+    return consumeNumber(range, ValueRange::NonNegative);
 }
 
 static RefPtr<CSSValue> consumeWebkitMarqueeSpeed(CSSParserTokenRange& range, CSSParserMode cssParserMode)
 {
-    return consumeTime(range, cssParserMode, ValueRangeNonNegative, UnitlessQuirk::Allow);
+    return consumeTime(range, cssParserMode, ValueRange::NonNegative, UnitlessQuirk::Allow);
 }
 
 static RefPtr<CSSValue> consumeAlt(CSSParserTokenRange& range, const CSSParserContext& context)
@@ -3815,13 +3815,13 @@
     if (range.atEnd())
         return RefPtr<CSSValue>(WTFMove(autoValue));
 
-    auto leftValue = consumeNumber(range, ValueRangeNonNegative);
+    auto leftValue = consumeNumber(range, ValueRange::NonNegative);
     if (!leftValue)
         return nullptr;
 
     bool slashSeen = consumeSlashIncludingWhitespace(range);
 
-    auto rightValue = consumeNumber(range, ValueRangeNonNegative);
+    auto rightValue = consumeNumber(range, ValueRange::NonNegative);
     if ((rightValue && !slashSeen) || (!rightValue && slashSeen))
         return nullptr;
     if (!slashSeen && !rightValue) // A missing right-hand is treated as 1.
@@ -4037,7 +4037,7 @@
         return consumeLineHeight(m_range, m_context.mode);
     case CSSPropertyWebkitBorderHorizontalSpacing:
     case CSSPropertyWebkitBorderVerticalSpacing:
-        return consumeLength(m_range, m_context.mode, ValueRangeNonNegative);
+        return consumeLength(m_range, m_context.mode, ValueRange::NonNegative);
     case CSSPropertyCounterIncrement:
     case CSSPropertyCounterReset:
         return consumeCounter(m_range, property == CSSPropertyCounterIncrement ? 1 : 0);
@@ -4085,12 +4085,12 @@
     case CSSPropertyPaddingRight:
     case CSSPropertyPaddingBottom:
     case CSSPropertyPaddingLeft:
-        return consumeLengthOrPercent(m_range, m_context.mode, ValueRangeNonNegative, UnitlessQuirk::Allow);
+        return consumeLengthOrPercent(m_range, m_context.mode, ValueRange::NonNegative, UnitlessQuirk::Allow);
     case CSSPropertyPaddingInlineStart:
     case CSSPropertyPaddingInlineEnd:
     case CSSPropertyPaddingBlockStart:
     case CSSPropertyPaddingBlockEnd:
-        return consumeLengthOrPercent(m_range, m_context.mode, ValueRangeNonNegative, UnitlessQuirk::Forbid);
+        return consumeLengthOrPercent(m_range, m_context.mode, ValueRange::NonNegative, UnitlessQuirk::Forbid);
     case CSSPropertyScrollMarginBottom:
     case CSSPropertyScrollMarginLeft:
     case CSSPropertyScrollMarginRight:
@@ -4099,7 +4099,7 @@
     case CSSPropertyScrollMarginInlineEnd:
     case CSSPropertyScrollMarginBlockStart:
     case CSSPropertyScrollMarginBlockEnd:
-        return consumeLength(m_range, m_context.mode, ValueRangeAll);
+        return consumeLength(m_range, m_context.mode, ValueRange::All);
     case CSSPropertyScrollPaddingBottom:
     case CSSPropertyScrollPaddingLeft:
     case CSSPropertyScrollPaddingRight:
@@ -4135,7 +4135,7 @@
     case CSSPropertyWebkitLineClamp:
         return consumeLineClamp(m_range);
     case CSSPropertyWebkitFontSizeDelta:
-        return consumeLength(m_range, m_context.mode, ValueRangeAll, UnitlessQuirk::Allow);
+        return consumeLength(m_range, m_context.mode, ValueRange::All, UnitlessQuirk::Allow);
     case CSSPropertyWebkitHyphenateCharacter:
     case CSSPropertyWebkitLocale:
         return consumeAutoOrString(m_range);
@@ -4170,9 +4170,9 @@
     case CSSPropertyTransitionTimingFunction:
         return consumeAnimationPropertyList(property, m_range, m_context);
     case CSSPropertyShapeMargin:
-        return consumeLengthOrPercent(m_range, m_context.mode, ValueRangeNonNegative);
+        return consumeLengthOrPercent(m_range, m_context.mode, ValueRange::NonNegative);
     case CSSPropertyShapeImageThreshold:
-        return consumeNumber(m_range, ValueRangeAll);
+        return consumeNumber(m_range, ValueRange::All);
     case CSSPropertyWebkitBoxOrdinalGroup:
     case CSSPropertyOrphans:
     case CSSPropertyWidows:
@@ -4250,7 +4250,7 @@
     case CSSPropertyOutlineColor:
         return consumeOutlineColor(m_range, m_context.mode);
     case CSSPropertyOutlineOffset:
-        return consumeLength(m_range, m_context.mode, ValueRangeAll);
+        return consumeLength(m_range, m_context.mode, ValueRange::All);
     case CSSPropertyOutlineWidth:
         return consumeLineWidth(m_range, m_context.mode, UnitlessQuirk::Forbid);
     case CSSPropertyTransform:
@@ -4264,7 +4264,7 @@
     case CSSPropertyPerspectiveOriginY:
         return consumePositionY(m_range, m_context.mode);
     case CSSPropertyTransformOriginZ:
-        return consumeLength(m_range, m_context.mode, ValueRangeAll);
+        return consumeLength(m_range, m_context.mode, ValueRange::All);
     case CSSPropertyTranslate:
         if (!m_context.individualTransformPropertiesEnabled)
             return nullptr;
@@ -4294,7 +4294,7 @@
         return consumeFlexBasis(m_range, m_context.mode);
     case CSSPropertyFlexGrow:
     case CSSPropertyFlexShrink:
-        return consumeNumber(m_range, ValueRangeNonNegative);
+        return consumeNumber(m_range, ValueRange::NonNegative);
     case CSSPropertyStrokeDasharray:
         return consumeStrokeDasharray(m_range);
     case CSSPropertyColumnRuleWidth:
@@ -4304,17 +4304,17 @@
     case CSSPropertyStopOpacity:
     case CSSPropertyFloodOpacity:
     case CSSPropertyOpacity:
-        if (auto parsedValue = consumeNumber(m_range, ValueRangeAll))
+        if (auto parsedValue = consumeNumber(m_range, ValueRange::All))
             return parsedValue;
-        return consumePercent(m_range, ValueRangeAll);
+        return consumePercent(m_range, ValueRange::All);
     case CSSPropertyWebkitBoxFlex:
-        return consumeNumber(m_range, ValueRangeAll);
+        return consumeNumber(m_range, ValueRange::All);
     case CSSPropertyBaselineShift:
         return consumeBaselineShift(m_range);
     case CSSPropertyKerning:
         return consumeKerning(m_range, m_context.mode);
     case CSSPropertyStrokeMiterlimit:
-        return consumeNumber(m_range, ValueRangeNonNegative);
+        return consumeNumber(m_range, ValueRange::NonNegative);
     case CSSPropertyStrokeWidth:
     case CSSPropertyStrokeDashoffset:
     case CSSPropertyCx:
@@ -4321,9 +4321,9 @@
     case CSSPropertyCy:
     case CSSPropertyX:
     case CSSPropertyY:
-        return consumeLengthOrPercent(m_range, SVGAttributeMode, ValueRangeAll, UnitlessQuirk::Forbid);
+        return consumeLengthOrPercent(m_range, SVGAttributeMode, ValueRange::All, UnitlessQuirk::Forbid);
     case CSSPropertyR:
-        return consumeLengthOrPercent(m_range, m_context.mode, ValueRangeNonNegative, UnitlessQuirk::Forbid);
+        return consumeLengthOrPercent(m_range, m_context.mode, ValueRange::NonNegative, UnitlessQuirk::Forbid);
     case CSSPropertyRx:
     case CSSPropertyRy:
         return consumeRxOrRy(m_range, m_context.mode);
@@ -5018,12 +5018,12 @@
 
 bool CSSPropertyParser::consumeBorderSpacing(bool important)
 {
-    RefPtr<CSSValue> horizontalSpacing = consumeLength(m_range, m_context.mode, ValueRangeNonNegative, UnitlessQuirk::Allow);
+    RefPtr<CSSValue> horizontalSpacing = consumeLength(m_range, m_context.mode, ValueRange::NonNegative, UnitlessQuirk::Allow);
     if (!horizontalSpacing)
         return false;
     RefPtr<CSSValue> verticalSpacing = horizontalSpacing;
     if (!m_range.atEnd())
-        verticalSpacing = consumeLength(m_range, m_context.mode, ValueRangeNonNegative, UnitlessQuirk::Allow);
+        verticalSpacing = consumeLength(m_range, m_context.mode, ValueRange::NonNegative, UnitlessQuirk::Allow);
     if (!verticalSpacing || !m_range.atEnd())
         return false;
     addProperty(CSSPropertyWebkitBorderHorizontalSpacing, CSSPropertyBorderSpacing, horizontalSpacing.releaseNonNull(), important);
@@ -5133,7 +5133,7 @@
                 if (m_range.peek().id() == CSSValueAuto)
                     flexBasis = consumeIdent(m_range);
                 if (!flexBasis)
-                    flexBasis = consumeLengthOrPercent(m_range, m_context.mode, ValueRangeNonNegative);
+                    flexBasis = consumeLengthOrPercent(m_range, m_context.mode, ValueRange::NonNegative);
                 if (index == 2 && !m_range.atEnd())
                     return false;
             }

Modified: trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp (276549 => 276550)


--- trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp	2021-04-24 16:02:06 UTC (rev 276550)
@@ -85,7 +85,7 @@
     return contents;
 }
 
-static Optional<double> consumeNumberOrPercentDividedBy100Raw(CSSParserTokenRange& range, ValueRange valueRange = ValueRangeAll)
+static Optional<double> consumeNumberOrPercentDividedBy100Raw(CSSParserTokenRange& range, ValueRange valueRange = ValueRange::All)
 {
     if (auto percent = consumePercentRaw(range, valueRange))
         return *percent / 100.0;
@@ -97,7 +97,7 @@
 // FIXME: consider pulling in the parsing logic from CSSCalculationValue.cpp.
 class CalcParser {
 public:
-    explicit CalcParser(CSSParserTokenRange& range, CalculationCategory destinationCategory, ValueRange valueRange = ValueRangeAll, CSSValuePool& cssValuePool = CSSValuePool::singleton())
+    explicit CalcParser(CSSParserTokenRange& range, CalculationCategory destinationCategory, ValueRange valueRange = ValueRange::All, CSSValuePool& cssValuePool = CSSValuePool::singleton())
         : m_sourceRange(range)
         , m_range(range)
         , m_valuePool(cssValuePool)
@@ -253,7 +253,7 @@
 {
     const CSSParserToken& token = range.peek();
     if (token.type() == NumberToken) {
-        if (valueRange == ValueRangeNonNegative && token.numericValue() < 0)
+        if (valueRange == ValueRange::NonNegative && token.numericValue() < 0)
             return WTF::nullopt;
         return range.consumeIncludingWhitespace().numericValue();
     }
@@ -306,7 +306,7 @@
         return WTF::nullopt;
 
     // "[For calc()], the used value resulting from an _expression_ must be clamped to the range allowed in the target context."
-    CalcParser calcParser(range, CalculationCategory::Number, ValueRangeAll);
+    CalcParser calcParser(range, CalculationCategory::Number, ValueRange::All);
     if (auto result = calcParser.consumeNumberRaw(); result
 #if !ENABLE(VARIATION_FONTS)
         && *result > 0 && *result < 1000 && divisibleBy100(*result)
@@ -372,13 +372,13 @@
         default:
             return WTF::nullopt;
         }
-        if ((valueRange == ValueRangeNonNegative && token.numericValue() < 0) || std::isinf(token.numericValue()))
+        if ((valueRange == ValueRange::NonNegative && token.numericValue() < 0) || std::isinf(token.numericValue()))
             return WTF::nullopt;
         return { { token.unitType(), range.consumeIncludingWhitespace().numericValue() } };
     }
     if (token.type() == NumberToken) {
         if (!shouldAcceptUnitlessValue(token.numericValue(), cssParserMode, unitless, UnitlessZeroQuirk::Allow)
-            || (valueRange == ValueRangeNonNegative && token.numericValue() < 0))
+            || (valueRange == ValueRange::NonNegative && token.numericValue() < 0))
             return WTF::nullopt;
         if (std::isinf(token.numericValue()))
             return WTF::nullopt;
@@ -411,7 +411,7 @@
 {
     const CSSParserToken& token = range.peek();
     if (token.type() == PercentageToken) {
-        if (std::isinf(token.numericValue()) || (valueRange == ValueRangeNonNegative && token.numericValue() < 0))
+        if (std::isinf(token.numericValue()) || (valueRange == ValueRange::NonNegative && token.numericValue() < 0))
             return WTF::nullopt;
         return range.consumeIncludingWhitespace().numericValue();
     }
@@ -529,7 +529,7 @@
     if (token.type() != FunctionToken)
         return WTF::nullopt;
 
-    CalcParser calcParser(range, CalculationCategory::Angle, ValueRangeAll);
+    CalcParser calcParser(range, CalculationCategory::Angle, ValueRange::All);
     return calcParser.consumeAngleRaw();
 }
 
@@ -542,7 +542,7 @@
 {
     const CSSParserToken& token = range.peek();
     if (token.type() == FunctionToken) {
-        CalcParser calcParser(range, CalculationCategory::Angle, ValueRangeAll, cssValuePool);
+        CalcParser calcParser(range, CalculationCategory::Angle, ValueRange::All, cssValuePool);
         if (const CSSCalcValue* calculation = calcParser.value()) {
             if (calculation->category() == CalculationCategory::Angle)
                 return calcParser.consumeValue();
@@ -601,7 +601,7 @@
     if (acceptUnitless)
         unit = CSSUnitType::CSS_MS;
     if (token.type() == DimensionToken || acceptUnitless) {
-        if (valueRange == ValueRangeNonNegative && token.numericValue() < 0)
+        if (valueRange == ValueRange::NonNegative && token.numericValue() < 0)
             return nullptr;
         if (unit == CSSUnitType::CSS_MS || unit == CSSUnitType::CSS_S)
             return CSSValuePool::singleton().createValue(range.consumeIncludingWhitespace().numericValue(), unit);
@@ -1970,7 +1970,7 @@
 {
     if (range.peek().type() == IdentToken)
         return consumeIdent<CSSValueLeft, CSSValueTop, CSSValueBottom, CSSValueRight, CSSValueCenter>(range);
-    return consumeLengthOrPercent(range, cssParserMode, ValueRangeAll, unitless);
+    return consumeLengthOrPercent(range, cssParserMode, ValueRange::All, unitless);
 }
 
 static bool isHorizontalPositionKeywordOnly(const CSSPrimitiveValue& value)
@@ -2182,9 +2182,9 @@
             return CSSValuePool::singleton().createValue(50., CSSUnitType::CSS_PERCENTAGE);
         return nullptr;
     }
-    RefPtr<CSSPrimitiveValue> result = consumePercent(args, ValueRangeAll);
+    RefPtr<CSSPrimitiveValue> result = consumePercent(args, ValueRange::All);
     if (!result)
-        result = consumeNumber(args, ValueRangeAll);
+        result = consumeNumber(args, ValueRange::All);
     return result;
 }
 
@@ -2248,7 +2248,7 @@
 
     // For radial gradients only, we now expect a numeric radius.
     if (isDeprecatedRadialGradient) {
-        auto radius = consumeNumber(args, ValueRangeNonNegative);
+        auto radius = consumeNumber(args, ValueRange::NonNegative);
         if (!radius || !consumeCommaIncludingWhitespace(args))
             return nullptr;
         downcast<CSSRadialGradientValue>(result.get())->setFirstRadius(WTFMove(radius));
@@ -2267,7 +2267,7 @@
     if (isDeprecatedRadialGradient) {
         if (!consumeCommaIncludingWhitespace(args))
             return nullptr;
-        auto radius = consumeNumber(args, ValueRangeNonNegative);
+        auto radius = consumeNumber(args, ValueRange::NonNegative);
         if (!radius)
             return nullptr;
         downcast<CSSRadialGradientValue>(result.get())->setSecondRadius(WTFMove(radius));
@@ -2290,8 +2290,8 @@
     
     auto consumeStopPosition = [&] {
         return gradient.gradientType() == CSSConicGradient
-            ? consumeAngleOrPercent(range, context.mode, ValueRangeAll, UnitlessQuirk::Forbid, UnitlessZeroQuirk::Allow)
-            : consumeLengthOrPercent(range, context.mode, ValueRangeAll);
+            ? consumeAngleOrPercent(range, context.mode, ValueRange::All, UnitlessQuirk::Forbid, UnitlessZeroQuirk::Allow)
+            : consumeLengthOrPercent(range, context.mode, ValueRange::All);
     };
 
     // The first color stop cannot be a color hint.
@@ -2343,10 +2343,10 @@
 
     // Or, two lengths or percentages
     if (!shape && !sizeKeyword) {
-        auto horizontalSize = consumeLengthOrPercent(args, context.mode, ValueRangeNonNegative);
+        auto horizontalSize = consumeLengthOrPercent(args, context.mode, ValueRange::NonNegative);
         RefPtr<CSSPrimitiveValue> verticalSize;
         if (horizontalSize) {
-            verticalSize = consumeLengthOrPercent(args, context.mode, ValueRangeNonNegative);
+            verticalSize = consumeLengthOrPercent(args, context.mode, ValueRange::NonNegative);
             if (!verticalSize)
                 return nullptr;
             consumeCommaIncludingWhitespace(args);
@@ -2400,13 +2400,13 @@
                 break;
             }
         } else {
-            auto center = consumeLengthOrPercent(args, context.mode, ValueRangeNonNegative);
+            auto center = consumeLengthOrPercent(args, context.mode, ValueRange::NonNegative);
             if (!center)
                 break;
             if (horizontalSize)
                 return nullptr;
             horizontalSize = center;
-            center = consumeLengthOrPercent(args, context.mode, ValueRangeNonNegative);
+            center = consumeLengthOrPercent(args, context.mode, ValueRange::NonNegative);
             if (center) {
                 verticalSize = center;
                 ++i;
@@ -2801,11 +2801,11 @@
         if (filterType == CSSValueHueRotate)
             parsedValue = consumeAngle(args, context.mode, UnitlessQuirk::Forbid, UnitlessZeroQuirk::Allow);
         else if (filterType == CSSValueBlur)
-            parsedValue = consumeLength(args, HTMLStandardMode, ValueRangeNonNegative);
+            parsedValue = consumeLength(args, HTMLStandardMode, ValueRange::NonNegative);
         else {
-            parsedValue = consumePercent(args, ValueRangeNonNegative);
+            parsedValue = consumePercent(args, ValueRange::NonNegative);
             if (!parsedValue)
-                parsedValue = consumeNumber(args, ValueRangeNonNegative);
+                parsedValue = consumeNumber(args, ValueRange::NonNegative);
             if (parsedValue && !allowsValuesGreaterThanOne(filterType)) {
                 bool isPercentage = downcast<CSSPrimitiveValue>(*parsedValue).isPercentage();
                 double maxAllowed = isPercentage ? 100.0 : 1.0;
@@ -2879,10 +2879,10 @@
             // If we've already parsed these lengths, the given value is invalid as there cannot be two lengths components in a single <shadow> value.
             return nullptr;
         }
-        horizontalOffset = consumeLength(range, context.mode, ValueRangeAll);
+        horizontalOffset = consumeLength(range, context.mode, ValueRange::All);
         if (!horizontalOffset)
             return nullptr;
-        verticalOffset = consumeLength(range, context.mode, ValueRangeAll);
+        verticalOffset = consumeLength(range, context.mode, ValueRange::All);
         if (!verticalOffset)
             return nullptr;
 
@@ -2889,13 +2889,13 @@
         const CSSParserToken& token = range.peek();
         // 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.
         if (token.type() == DimensionToken || token.type() == NumberToken || (token.type() == FunctionToken && CSSCalcValue::isCalcFunction(token.functionId()))) {
-            blurRadius = consumeLength(range, context.mode, ValueRangeNonNegative);
+            blurRadius = consumeLength(range, context.mode, ValueRange::NonNegative);
             if (!blurRadius)
                 return nullptr;
         }
 
         if (blurRadius && allowSpread)
-            spreadDistance = consumeLength(range, context.mode, ValueRangeAll);
+            spreadDistance = consumeLength(range, context.mode, ValueRange::All);
     }
     
     // In order for this to be a valid <shadow>, at least these lengths must be present.
@@ -3079,7 +3079,7 @@
         return WTF::nullopt;
     }
 
-    if (auto result = consumeLengthOrPercentRaw(range, cssParserMode, ValueRangeNonNegative, unitless))
+    if (auto result = consumeLengthOrPercentRaw(range, cssParserMode, ValueRange::NonNegative, unitless))
         return { *result };
 
     return WTF::nullopt;
@@ -3093,10 +3093,10 @@
         return WTF::nullopt;
     }
 
-    if (auto number = consumeNumberRaw(range, ValueRangeNonNegative))
+    if (auto number = consumeNumberRaw(range, ValueRange::NonNegative))
         return { *number };
 
-    if (auto lengthOrPercent = consumeLengthOrPercentRaw(range, cssParserMode, ValueRangeNonNegative))
+    if (auto lengthOrPercent = consumeLengthOrPercentRaw(range, cssParserMode, ValueRange::NonNegative))
         return { *lengthOrPercent };
 
     return WTF::nullopt;

Modified: trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.h (276549 => 276550)


--- trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.h	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.h	2021-04-24 16:02:06 UTC (rev 276550)
@@ -78,7 +78,7 @@
 RefPtr<CSSPrimitiveValue> consumeInteger(CSSParserTokenRange&, double minimumValue = -std::numeric_limits<double>::max());
 Optional<unsigned> consumePositiveIntegerRaw(CSSParserTokenRange&);
 RefPtr<CSSPrimitiveValue> consumePositiveInteger(CSSParserTokenRange&);
-Optional<double> consumeNumberRaw(CSSParserTokenRange&, ValueRange = ValueRangeAll);
+Optional<double> consumeNumberRaw(CSSParserTokenRange&, ValueRange = ValueRange::All);
 RefPtr<CSSPrimitiveValue> consumeNumber(CSSParserTokenRange&, ValueRange);
 Optional<double> consumeFontWeightNumberRaw(CSSParserTokenRange&);
 RefPtr<CSSPrimitiveValue> consumeFontWeightNumber(CSSParserTokenRange&);
@@ -85,7 +85,7 @@
 RefPtr<CSSPrimitiveValue> consumeFontWeightNumberWorkerSafe(CSSParserTokenRange&, CSSValuePool&);
 Optional<LengthRaw> consumeLengthRaw(CSSParserTokenRange&, CSSParserMode, ValueRange, UnitlessQuirk = UnitlessQuirk::Forbid);
 RefPtr<CSSPrimitiveValue> consumeLength(CSSParserTokenRange&, CSSParserMode, ValueRange, UnitlessQuirk = UnitlessQuirk::Forbid);
-Optional<double> consumePercentRaw(CSSParserTokenRange&, ValueRange = ValueRangeAll);
+Optional<double> consumePercentRaw(CSSParserTokenRange&, ValueRange = ValueRange::All);
 RefPtr<CSSPrimitiveValue> consumePercent(CSSParserTokenRange&, ValueRange);
 RefPtr<CSSPrimitiveValue> consumePercentWorkerSafe(CSSParserTokenRange&, ValueRange, CSSValuePool&);
 Optional<LengthOrPercentRaw> consumeLengthOrPercentRaw(CSSParserTokenRange&, CSSParserMode, ValueRange, UnitlessQuirk = UnitlessQuirk::Forbid);

Modified: trunk/Source/WebCore/css/parser/CSSPropertyParserWorkerSafe.cpp (276549 => 276550)


--- trunk/Source/WebCore/css/parser/CSSPropertyParserWorkerSafe.cpp	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/css/parser/CSSPropertyParserWorkerSafe.cpp	2021-04-24 16:02:06 UTC (rev 276550)
@@ -366,7 +366,7 @@
     if (auto result = consumeFontStretchKeywordValue(range, pool))
         return result;
 #if ENABLE(VARIATION_FONTS)
-    if (auto percent = CSSPropertyParserHelpers::consumePercentWorkerSafe(range, ValueRangeNonNegative, pool))
+    if (auto percent = CSSPropertyParserHelpers::consumePercentWorkerSafe(range, ValueRange::NonNegative, pool))
         return fontStretchIsWithinRange(percent->value<float>()) ? percent : nullptr;
 #endif
     return nullptr;
@@ -377,12 +377,12 @@
 {
     if (auto result = consumeFontStretchKeywordValue(range, pool))
         return result;
-    auto firstPercent = CSSPropertyParserHelpers::consumePercentWorkerSafe(range, ValueRangeNonNegative, pool);
+    auto firstPercent = CSSPropertyParserHelpers::consumePercentWorkerSafe(range, ValueRange::NonNegative, pool);
     if (!firstPercent || !fontStretchIsWithinRange(firstPercent->value<float>()))
         return nullptr;
     if (range.atEnd())
         return firstPercent;
-    auto secondPercent = CSSPropertyParserHelpers::consumePercentWorkerSafe(range, ValueRangeNonNegative, pool);
+    auto secondPercent = CSSPropertyParserHelpers::consumePercentWorkerSafe(range, ValueRange::NonNegative, pool);
     if (!secondPercent || !fontStretchIsWithinRange(secondPercent->value<float>()) || firstPercent->floatValue() > secondPercent->floatValue())
         return nullptr;
     auto result = CSSValueList::createSpaceSeparated();

Modified: trunk/Source/WebCore/page/IntersectionObserver.cpp (276549 => 276550)


--- trunk/Source/WebCore/page/IntersectionObserver.cpp	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/page/IntersectionObserver.cpp	2021-04-24 16:02:06 UTC (rev 276550)
@@ -49,7 +49,7 @@
     while (!tokenRange.atEnd()) {
         if (margins.size() == 4)
             return Exception { SyntaxError, "Failed to construct 'IntersectionObserver': Extra text found at the end of rootMargin." };
-        RefPtr<CSSPrimitiveValue> parsedValue = CSSPropertyParserHelpers::consumeLengthOrPercent(tokenRange, HTMLStandardMode, ValueRangeAll);
+        RefPtr<CSSPrimitiveValue> parsedValue = CSSPropertyParserHelpers::consumeLengthOrPercent(tokenRange, HTMLStandardMode, ValueRange::All);
         if (!parsedValue || parsedValue->isCalculated())
             return Exception { SyntaxError, "Failed to construct 'IntersectionObserver': rootMargin must be specified in pixels or percent." };
         if (parsedValue->isPercentage())

Modified: trunk/Source/WebCore/platform/CalculationValue.h (276549 => 276550)


--- trunk/Source/WebCore/platform/CalculationValue.h	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/platform/CalculationValue.h	2021-04-24 16:02:06 UTC (rev 276550)
@@ -221,7 +221,7 @@
 
 inline CalculationValue::CalculationValue(std::unique_ptr<CalcExpressionNode> _expression_, ValueRange range)
     : m_expression(WTFMove(_expression_))
-    , m_shouldClampToNonNegative(range == ValueRangeNonNegative)
+    , m_shouldClampToNonNegative(range == ValueRange::NonNegative)
 {
 }
 

Modified: trunk/Source/WebCore/platform/Length.cpp (276549 => 276550)


--- trunk/Source/WebCore/platform/Length.cpp	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/platform/Length.cpp	2021-04-24 16:02:06 UTC (rev 276550)
@@ -292,7 +292,7 @@
     lengths.uncheckedAppend(makeUnique<CalcExpressionLength>(Length(100, LengthType::Percent)));
     lengths.uncheckedAppend(makeUnique<CalcExpressionLength>(length));
     auto op = makeUnique<CalcExpressionOperation>(WTFMove(lengths), CalcOperator::Subtract);
-    return Length(CalculationValue::create(WTFMove(op), ValueRangeAll));
+    return Length(CalculationValue::create(WTFMove(op), ValueRange::All));
 }
 
 static Length blendMixedTypes(const Length& from, const Length& to, const BlendingContext& context)
@@ -304,7 +304,7 @@
         return blend(from, Length(0, from.type()), context);
 
     auto blend = makeUnique<CalcExpressionBlendLength>(from, to, context.progress);
-    return Length(CalculationValue::create(WTFMove(blend), ValueRangeAll));
+    return Length(CalculationValue::create(WTFMove(blend), ValueRange::All));
 }
 
 Length blend(const Length& from, const Length& to, const BlendingContext& context)
@@ -339,7 +339,7 @@
 Length blend(const Length& from, const Length& to, const BlendingContext& context, ValueRange valueRange)
 {
     auto blended = blend(from, to, context);
-    if (valueRange == ValueRangeNonNegative && blended.isNegative())
+    if (valueRange == ValueRange::NonNegative && blended.isNegative())
         return { 0, from.isZero () ? to.type() : from.type() };
     return blended;
 }

Modified: trunk/Source/WebCore/platform/Length.h (276549 => 276550)


--- trunk/Source/WebCore/platform/Length.h	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/platform/Length.h	2021-04-24 16:02:06 UTC (rev 276550)
@@ -44,9 +44,9 @@
     Undefined
 };
 
-enum ValueRange {
-    ValueRangeAll,
-    ValueRangeNonNegative
+enum class ValueRange : uint8_t {
+    All,
+    NonNegative
 };
 
 struct BlendingContext;

Modified: trunk/Source/WebCore/style/StyleBuilderConverter.h (276549 => 276550)


--- trunk/Source/WebCore/style/StyleBuilderConverter.h	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Source/WebCore/style/StyleBuilderConverter.h	2021-04-24 16:02:06 UTC (rev 276550)
@@ -351,7 +351,7 @@
     lengths.uncheckedAppend(makeUnique<CalcExpressionLength>(Length(100, LengthType::Percent)));
     lengths.uncheckedAppend(makeUnique<CalcExpressionLength>(length));
     auto op = makeUnique<CalcExpressionOperation>(WTFMove(lengths), CalcOperator::Subtract);
-    return Length(CalculationValue::create(WTFMove(op), ValueRangeAll));
+    return Length(CalculationValue::create(WTFMove(op), ValueRange::All));
 }
 
 inline Length BuilderConverter::convertPositionComponentX(BuilderState& builderState, const CSSValue& value)

Modified: trunk/Tools/ChangeLog (276549 => 276550)


--- trunk/Tools/ChangeLog	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Tools/ChangeLog	2021-04-24 16:02:06 UTC (rev 276550)
@@ -1,3 +1,18 @@
+2021-04-24  Tyler Wilcock  <[email protected]>
+
+        Refactor ValueRange from enum to enum class
+        https://bugs.webkit.org/show_bug.cgi?id=224981
+
+        Reviewed by Sam Weinig.
+
+        ValueRange has been refactored from enum to enum class : uint8_t to
+        make it smaller and harder to misuse.
+
+        * TestWebKitAPI/Tests/WebCore/CalculationValue.cpp:
+        (TestWebKitAPI::createTestValue):
+        Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
+        and ValueRange::NonNegative.
+
 2021-04-23  Aakash Jain  <[email protected]>
 
         Delete unused buildbot.css and default.css

Modified: trunk/Tools/TestWebKitAPI/Tests/WebCore/CalculationValue.cpp (276549 => 276550)


--- trunk/Tools/TestWebKitAPI/Tests/WebCore/CalculationValue.cpp	2021-04-24 13:42:04 UTC (rev 276549)
+++ trunk/Tools/TestWebKitAPI/Tests/WebCore/CalculationValue.cpp	2021-04-24 16:02:06 UTC (rev 276550)
@@ -54,7 +54,7 @@
 static Ref<WebCore::CalculationValue> createTestValue()
 {
     auto node = makeUnique<CalculationDeletionTestNode>();
-    return WebCore::CalculationValue::create(WTFMove(node), WebCore::ValueRangeAll);
+    return WebCore::CalculationValue::create(WTFMove(node), WebCore::ValueRange::All);
 }
 
 TEST(CalculationValue, LengthConstruction)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to