Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(194)

Unified Diff: third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp

Issue 2382653006: Split CSSPrimitiveValue into CSSPrimitiveValue and CSSIdentifierValue (Closed)
Patch Set: Make check-webkit-style happy Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp
diff --git a/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp b/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp
index 9f4834e3ae130c5a05557884cdf714fbdc045e5c..ad4340b49a0225fceed4a4a5025eea6266881983 100644
--- a/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp
+++ b/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp
@@ -310,16 +310,15 @@ CSSPrimitiveValue* consumeTime(CSSParserTokenRange& range,
return nullptr;
}
-CSSPrimitiveValue* consumeIdent(CSSParserTokenRange& range) {
+CSSIdentifierValue* consumeIdent(CSSParserTokenRange& range) {
if (range.peek().type() != IdentToken)
return nullptr;
- return CSSPrimitiveValue::createIdentifier(
- range.consumeIncludingWhitespace().id());
+ return CSSIdentifierValue::create(range.consumeIncludingWhitespace().id());
}
-CSSPrimitiveValue* consumeIdentRange(CSSParserTokenRange& range,
- CSSValueID lower,
- CSSValueID upper) {
+CSSIdentifierValue* consumeIdentRange(CSSParserTokenRange& range,
+ CSSValueID lower,
+ CSSValueID upper) {
if (range.peek().id() < lower || range.peek().id() > upper)
return nullptr;
return consumeIdent(range);
@@ -515,11 +514,11 @@ CSSValue* consumeColor(CSSParserTokenRange& range,
return CSSColorValue::create(color);
}
-static CSSPrimitiveValue* consumePositionComponent(CSSParserTokenRange& range,
- CSSParserMode cssParserMode,
- UnitlessQuirk unitless,
- bool& horizontalEdge,
- bool& verticalEdge) {
+static CSSValue* consumePositionComponent(CSSParserTokenRange& range,
+ CSSParserMode cssParserMode,
+ UnitlessQuirk unitless,
+ bool& horizontalEdge,
+ bool& verticalEdge) {
if (range.peek().type() != IdentToken)
return consumeLengthOrPercent(range, cssParserMode, ValueRangeAll,
unitless);
@@ -539,33 +538,38 @@ static CSSPrimitiveValue* consumePositionComponent(CSSParserTokenRange& range,
return consumeIdent(range);
}
-static bool isHorizontalPositionKeywordOnly(const CSSPrimitiveValue& value) {
- return value.isValueID() && (value.getValueID() == CSSValueLeft ||
- value.getValueID() == CSSValueRight);
+static bool isHorizontalPositionKeywordOnly(const CSSValue& value) {
+ if (!value.isIdentifierValue())
+ return false;
+ CSSValueID valueID = toCSSIdentifierValue(value).getValueID();
+ return valueID == CSSValueLeft || valueID == CSSValueRight;
}
-static bool isVerticalPositionKeywordOnly(const CSSPrimitiveValue& value) {
- return value.isValueID() && (value.getValueID() == CSSValueTop ||
- value.getValueID() == CSSValueBottom);
+static bool isVerticalPositionKeywordOnly(const CSSValue& value) {
+ if (!value.isIdentifierValue())
+ return false;
+ CSSValueID valueID = toCSSIdentifierValue(value).getValueID();
+ return valueID == CSSValueTop || valueID == CSSValueBottom;
}
-static void positionFromOneValue(CSSPrimitiveValue* value,
+static void positionFromOneValue(CSSValue* value,
CSSValue*& resultX,
CSSValue*& resultY) {
bool valueAppliesToYAxisOnly = isVerticalPositionKeywordOnly(*value);
resultX = value;
- resultY = CSSPrimitiveValue::createIdentifier(CSSValueCenter);
+ resultY = CSSIdentifierValue::create(CSSValueCenter);
if (valueAppliesToYAxisOnly)
std::swap(resultX, resultY);
}
-static void positionFromTwoValues(CSSPrimitiveValue* value1,
- CSSPrimitiveValue* value2,
+static void positionFromTwoValues(CSSValue* value1,
+ CSSValue* value2,
CSSValue*& resultX,
CSSValue*& resultY) {
bool mustOrderAsXY = isHorizontalPositionKeywordOnly(*value1) ||
isVerticalPositionKeywordOnly(*value2) ||
- !value1->isValueID() || !value2->isValueID();
+ !value1->isIdentifierValue() ||
+ !value2->isIdentifierValue();
bool mustOrderAsYX = isVerticalPositionKeywordOnly(*value1) ||
isHorizontalPositionKeywordOnly(*value2);
DCHECK(!mustOrderAsXY || !mustOrderAsYX);
@@ -575,13 +579,12 @@ static void positionFromTwoValues(CSSPrimitiveValue* value1,
std::swap(resultX, resultY);
}
-static void positionFromThreeOrFourValues(CSSPrimitiveValue** values,
+static void positionFromThreeOrFourValues(CSSValue** values,
CSSValue*& resultX,
CSSValue*& resultY) {
- CSSPrimitiveValue* center = nullptr;
+ CSSIdentifierValue* center = nullptr;
for (int i = 0; values[i]; i++) {
- CSSPrimitiveValue* currentValue = values[i];
- DCHECK(currentValue->isValueID());
+ CSSIdentifierValue* currentValue = toCSSIdentifierValue(values[i]);
CSSValueID id = currentValue->getValueID();
if (id == CSSValueCenter) {
@@ -591,7 +594,7 @@ static void positionFromThreeOrFourValues(CSSPrimitiveValue** values,
}
CSSValue* result = nullptr;
- if (values[i + 1] && !values[i + 1]->isValueID()) {
+ if (values[i + 1] && !values[i + 1]->isIdentifierValue()) {
result = CSSValuePair::create(currentValue, values[++i],
CSSValuePair::KeepIdenticalValues);
} else {
@@ -626,30 +629,31 @@ bool consumePosition(CSSParserTokenRange& range,
CSSValue*& resultY) {
bool horizontalEdge = false;
bool verticalEdge = false;
- CSSPrimitiveValue* value1 = consumePositionComponent(
- range, cssParserMode, unitless, horizontalEdge, verticalEdge);
+ CSSValue* value1 = consumePositionComponent(range, cssParserMode, unitless,
+ horizontalEdge, verticalEdge);
if (!value1)
return false;
- if (!value1->isValueID())
+ if (!value1->isIdentifierValue())
horizontalEdge = true;
CSSParserTokenRange rangeAfterFirstConsume = range;
- CSSPrimitiveValue* value2 = consumePositionComponent(
- range, cssParserMode, unitless, horizontalEdge, verticalEdge);
+ CSSValue* value2 = consumePositionComponent(range, cssParserMode, unitless,
+ horizontalEdge, verticalEdge);
if (!value2) {
positionFromOneValue(value1, resultX, resultY);
return true;
}
- CSSPrimitiveValue* value3 = nullptr;
- if (value1->isValueID() &&
- value2->isValueID() != (range.peek().type() == IdentToken) &&
- (value2->isValueID() ? value2->getValueID() : value1->getValueID()) !=
- CSSValueCenter)
+ CSSValue* value3 = nullptr;
+ if (value1->isIdentifierValue() &&
+ value2->isIdentifierValue() != (range.peek().type() == IdentToken) &&
+ (value2->isIdentifierValue()
+ ? toCSSIdentifierValue(value2)->getValueID()
+ : toCSSIdentifierValue(value1)->getValueID()) != CSSValueCenter)
value3 = consumePositionComponent(range, cssParserMode, unitless,
horizontalEdge, verticalEdge);
if (!value3) {
- if (verticalEdge && !value2->isValueID()) {
+ if (verticalEdge && !value2->isIdentifierValue()) {
range = rangeAfterFirstConsume;
positionFromOneValue(value1, resultX, resultY);
return true;
@@ -658,12 +662,13 @@ bool consumePosition(CSSParserTokenRange& range,
return true;
}
- CSSPrimitiveValue* value4 = nullptr;
- if (value3->isValueID() && value3->getValueID() != CSSValueCenter &&
+ CSSValue* value4 = nullptr;
+ if (value3->isIdentifierValue() &&
+ toCSSIdentifierValue(value3)->getValueID() != CSSValueCenter &&
range.peek().type() != IdentToken)
value4 = consumePositionComponent(range, cssParserMode, unitless,
horizontalEdge, verticalEdge);
- CSSPrimitiveValue* values[5];
+ CSSValue* values[5];
values[0] = value1;
values[1] = value2;
values[2] = value3;
@@ -691,14 +696,14 @@ bool consumeOneOrTwoValuedPosition(CSSParserTokenRange& range,
CSSValue*& resultY) {
bool horizontalEdge = false;
bool verticalEdge = false;
- CSSPrimitiveValue* value1 = consumePositionComponent(
- range, cssParserMode, unitless, horizontalEdge, verticalEdge);
+ CSSValue* value1 = consumePositionComponent(range, cssParserMode, unitless,
+ horizontalEdge, verticalEdge);
if (!value1)
return false;
- if (!value1->isValueID())
+ if (!value1->isIdentifierValue())
horizontalEdge = true;
- CSSPrimitiveValue* value2 = nullptr;
+ CSSValue* value2 = nullptr;
if (!verticalEdge || range.peek().type() == IdentToken)
value2 = consumePositionComponent(range, cssParserMode, unitless,
horizontalEdge, verticalEdge);
@@ -879,14 +884,14 @@ static CSSValue* consumeDeprecatedRadialGradient(CSSParserTokenRange& args,
if ((centerX || centerY) && !consumeCommaIncludingWhitespace(args))
return nullptr;
- result->setFirstX(toCSSPrimitiveValue(centerX));
- result->setSecondX(toCSSPrimitiveValue(centerX));
- result->setFirstY(toCSSPrimitiveValue(centerY));
- result->setSecondY(toCSSPrimitiveValue(centerY));
+ result->setFirstX(centerX);
+ result->setSecondX(centerX);
+ result->setFirstY(centerY);
+ result->setSecondY(centerY);
- CSSPrimitiveValue* shape =
+ CSSIdentifierValue* shape =
consumeIdent<CSSValueCircle, CSSValueEllipse>(args);
- CSSPrimitiveValue* sizeKeyword =
+ CSSIdentifierValue* sizeKeyword =
consumeIdent<CSSValueClosestSide, CSSValueClosestCorner,
CSSValueFarthestSide, CSSValueFarthestCorner,
CSSValueContain, CSSValueCover>(args);
@@ -923,8 +928,8 @@ static CSSValue* consumeRadialGradient(CSSParserTokenRange& args,
CSSRadialGradientValue* result =
CSSRadialGradientValue::create(repeating, CSSRadialGradient);
- CSSPrimitiveValue* shape = nullptr;
- CSSPrimitiveValue* sizeKeyword = nullptr;
+ CSSIdentifierValue* shape = nullptr;
+ CSSIdentifierValue* sizeKeyword = nullptr;
CSSPrimitiveValue* horizontalSize = nullptr;
CSSPrimitiveValue* verticalSize = nullptr;
@@ -1021,12 +1026,12 @@ static CSSValue* consumeLinearGradient(CSSParserTokenRange& args,
result->setAngle(angle);
} else if (gradientType == CSSPrefixedLinearGradient ||
consumeIdent<CSSValueTo>(args)) {
- CSSPrimitiveValue* endX = consumeIdent<CSSValueLeft, CSSValueRight>(args);
- CSSPrimitiveValue* endY = consumeIdent<CSSValueBottom, CSSValueTop>(args);
+ CSSIdentifierValue* endX = consumeIdent<CSSValueLeft, CSSValueRight>(args);
+ CSSIdentifierValue* endY = consumeIdent<CSSValueBottom, CSSValueTop>(args);
if (!endX && !endY) {
if (gradientType == CSSLinearGradient)
return nullptr;
- endY = CSSPrimitiveValue::createIdentifier(CSSValueTop);
+ endY = CSSIdentifierValue::create(CSSValueTop);
expectComma = false;
} else if (!endX) {
endX = consumeIdent<CSSValueLeft, CSSValueRight>(args);

Powered by Google App Engine
This is Rietveld 408576698