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

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

Issue 2860283003: Refactored out property specific logic in ConsumeBorderImageSlice. (Closed)
Patch Set: fixed bug - argument order Created 3 years, 7 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
« no previous file with comments | « third_party/WebKit/Source/core/css/parser/CSSPropertyParser.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
diff --git a/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp b/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
index 370f3736702633e23c4f0a9cc9e37108924fc302..c8d15046dc71d9de3b4292d1e79edbbf5dec641b 100644
--- a/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
+++ b/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
@@ -815,8 +815,8 @@ static CSSValue* ConsumeBorderImageRepeat(CSSParserTokenRange& range) {
CSSValuePair::kDropIdenticalValues);
}
-static CSSValue* ConsumeBorderImageSlice(CSSPropertyID property,
- CSSParserTokenRange& range) {
+static CSSValue* ConsumeBorderImageSlice(CSSParserTokenRange& range,
+ bool default_fill) {
bool fill = ConsumeIdent<CSSValueFill>(range);
CSSValue* slices[4] = {0};
@@ -836,14 +836,7 @@ static CSSValue* ConsumeBorderImageSlice(CSSPropertyID property,
fill = true;
}
Complete4Sides(slices);
- // FIXME: For backwards compatibility, -webkit-border-image,
- // -webkit-mask-box-image and -webkit-box-reflect have to do a fill by
- // default.
- // FIXME: What do we do with -webkit-box-reflect and -webkit-mask-box-image?
- // Probably just have to leave them filling...
- if (property == CSSPropertyWebkitBorderImage ||
- property == CSSPropertyWebkitMaskBoxImage ||
- property == CSSPropertyWebkitBoxReflect)
+ if (default_fill)
fill = true;
return CSSBorderImageSliceValue::Create(
CSSQuadValue::Create(slices[0], slices[1], slices[2], slices[3],
@@ -893,14 +886,14 @@ static CSSValue* ConsumeBorderImageWidth(CSSParserTokenRange& range) {
CSSQuadValue::kSerializeAsQuad);
}
-static bool ConsumeBorderImageComponents(CSSPropertyID property,
- CSSParserTokenRange& range,
+static bool ConsumeBorderImageComponents(CSSParserTokenRange& range,
const CSSParserContext* context,
CSSValue*& source,
CSSValue*& slice,
CSSValue*& width,
CSSValue*& outset,
- CSSValue*& repeat) {
+ CSSValue*& repeat,
+ bool default_fill) {
do {
if (!source) {
source = ConsumeImageOrNone(range, context);
@@ -913,7 +906,7 @@ static bool ConsumeBorderImageComponents(CSSPropertyID property,
continue;
}
if (!slice) {
- slice = ConsumeBorderImageSlice(property, range);
+ slice = ConsumeBorderImageSlice(range, default_fill);
if (slice) {
DCHECK(!width);
DCHECK(!outset);
@@ -937,16 +930,15 @@ static bool ConsumeBorderImageComponents(CSSPropertyID property,
return true;
}
-static CSSValue* ConsumeWebkitBorderImage(CSSPropertyID property,
- CSSParserTokenRange& range,
+static CSSValue* ConsumeWebkitBorderImage(CSSParserTokenRange& range,
const CSSParserContext* context) {
CSSValue* source = nullptr;
CSSValue* slice = nullptr;
CSSValue* width = nullptr;
CSSValue* outset = nullptr;
CSSValue* repeat = nullptr;
- if (ConsumeBorderImageComponents(property, range, context, source, slice,
- width, outset, repeat))
+ if (ConsumeBorderImageComponents(range, context, source, slice, width, outset,
+ repeat, true /* default_fill */))
return CreateBorderImageValue(source, slice, width, outset, repeat);
return nullptr;
}
@@ -971,8 +963,7 @@ static CSSValue* ConsumeReflect(CSSParserTokenRange& range,
CSSValue* mask = nullptr;
if (!range.AtEnd()) {
- mask =
- ConsumeWebkitBorderImage(CSSPropertyWebkitBoxReflect, range, context);
+ mask = ConsumeWebkitBorderImage(range, context);
if (!mask)
return nullptr;
}
@@ -1786,7 +1777,7 @@ const CSSValue* CSSPropertyParser::ParseSingleValue(
return ConsumeBorderImageRepeat(range_);
case CSSPropertyBorderImageSlice:
case CSSPropertyWebkitMaskBoxImageSlice:
- return ConsumeBorderImageSlice(property, range_);
+ return ConsumeBorderImageSlice(range_, false /* default_fill */);
case CSSPropertyBorderImageOutset:
case CSSPropertyWebkitMaskBoxImageOutset:
return ConsumeBorderImageOutset(range_);
@@ -1794,7 +1785,7 @@ const CSSValue* CSSPropertyParser::ParseSingleValue(
case CSSPropertyWebkitMaskBoxImageWidth:
return ConsumeBorderImageWidth(range_);
case CSSPropertyWebkitBorderImage:
- return ConsumeWebkitBorderImage(property, range_, context_);
+ return ConsumeWebkitBorderImage(range_, context_);
case CSSPropertyWebkitBoxReflect:
return ConsumeReflect(range_, context_);
case CSSPropertyBackgroundAttachment:
@@ -2491,15 +2482,18 @@ bool CSSPropertyParser::Consume4Values(const StylePropertyShorthand& shorthand,
return range_.AtEnd();
}
+// TODO(crbug.com/668012): refactor out property specific logic from this method
+// and remove CSSPropetyID argument
bool CSSPropertyParser::ConsumeBorderImage(CSSPropertyID property,
+ bool default_fill,
bool important) {
CSSValue* source = nullptr;
CSSValue* slice = nullptr;
CSSValue* width = nullptr;
CSSValue* outset = nullptr;
CSSValue* repeat = nullptr;
- if (ConsumeBorderImageComponents(property, range_, context_, source, slice,
- width, outset, repeat)) {
+ if (ConsumeBorderImageComponents(range_, context_, source, slice, width,
+ outset, repeat, default_fill)) {
switch (property) {
case CSSPropertyWebkitMaskBoxImage:
AddProperty(CSSPropertyWebkitMaskBoxImageSource,
@@ -3338,8 +3332,9 @@ bool CSSPropertyParser::ParseShorthand(CSSPropertyID unresolved_property,
case CSSPropertyBorder:
return ConsumeBorder(important);
case CSSPropertyBorderImage:
+ return ConsumeBorderImage(property, false /* default_fill */, important);
case CSSPropertyWebkitMaskBoxImage:
- return ConsumeBorderImage(property, important);
+ return ConsumeBorderImage(property, true /* default_fill */, important);
case CSSPropertyPageBreakAfter:
case CSSPropertyPageBreakBefore:
case CSSPropertyPageBreakInside:
« no previous file with comments | « third_party/WebKit/Source/core/css/parser/CSSPropertyParser.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698