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

Unified Diff: third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp

Issue 1681273003: Add CSS parser support for break-after, break-before and break-inside. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update some text expectations, and move the new properties into ComputedStyle, since they aren't ra… Created 4 years, 10 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/ComputedStyleCSSValueMapping.cpp
diff --git a/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp b/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp
index adb536880c173e1ecc7cc8846ccb87e3b44f27f3..8c086bf0e792a78e5b93c9696169ddd7e407b698 100644
--- a/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp
+++ b/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp
@@ -1353,6 +1353,49 @@ static PassRefPtrWillBeRawPtr<CSSValue> valueForScrollSnapCoordinate(const Vecto
return list.release();
}
+static EBreak mapToPageBreakValue(EBreak genericBreakValue)
+{
+ switch (genericBreakValue) {
+ case BreakAvoidColumn:
+ case BreakAvoidRegion:
+ case BreakColumn:
+ case BreakRecto:
+ case BreakRegion:
+ case BreakVerso:
+ return BreakAuto;
+ case BreakLeft:
+ case BreakRight:
+ // TODO(mstensho): "left" and "right" should simply be mapped to that, not "always", according to spec.
+ case BreakPage:
+ return BreakAlways;
+ case BreakAvoidPage:
+ return BreakAvoid;
+ default:
+ return genericBreakValue;
+ }
+}
+
+static EBreak mapToColumnBreakValue(EBreak genericBreakValue)
+{
+ switch (genericBreakValue) {
+ case BreakAvoidPage:
+ case BreakAvoidRegion:
+ case BreakLeft:
+ case BreakPage:
+ case BreakRecto:
+ case BreakRegion:
+ case BreakRight:
+ case BreakVerso:
+ return BreakAuto;
+ case BreakColumn:
+ return BreakAlways;
+ case BreakAvoidColumn:
+ return BreakAvoid;
+ default:
+ return genericBreakValue;
+ }
+}
+
PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::get(const AtomicString customPropertyName, const ComputedStyle& style)
{
StyleVariableData* variables = style.variables();
@@ -1567,11 +1610,11 @@ PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::get(CSSPropertyID
case CSSPropertyWebkitColumnSpan:
return cssValuePool().createIdentifierValue(style.columnSpan() ? CSSValueAll : CSSValueNone);
case CSSPropertyWebkitColumnBreakAfter:
- return cssValuePool().createValue(style.columnBreakAfter());
+ return cssValuePool().createValue(mapToColumnBreakValue(style.breakAfter()));
case CSSPropertyWebkitColumnBreakBefore:
- return cssValuePool().createValue(style.columnBreakBefore());
+ return cssValuePool().createValue(mapToColumnBreakValue(style.breakBefore()));
case CSSPropertyWebkitColumnBreakInside:
- return cssValuePool().createValue(style.columnBreakInside());
+ return cssValuePool().createValue(mapToColumnBreakValue(style.breakInside()));
case CSSPropertyWebkitColumnWidth:
if (style.hasAutoColumnWidth())
return cssValuePool().createIdentifierValue(CSSValueAuto);
@@ -1914,17 +1957,18 @@ PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::get(CSSPropertyID
return zoomAdjustedPixelValueForLength(paddingLeft, style);
return zoomAdjustedPixelValue(toLayoutBox(layoutObject)->computedCSSPaddingLeft(), style);
}
+ case CSSPropertyBreakAfter:
+ return cssValuePool().createValue(style.breakAfter());
+ case CSSPropertyBreakBefore:
+ return cssValuePool().createValue(style.breakBefore());
+ case CSSPropertyBreakInside:
+ return cssValuePool().createValue(style.breakInside());
case CSSPropertyPageBreakAfter:
- return cssValuePool().createValue(style.pageBreakAfter());
+ return cssValuePool().createValue(mapToPageBreakValue(style.breakAfter()));
case CSSPropertyPageBreakBefore:
- return cssValuePool().createValue(style.pageBreakBefore());
- case CSSPropertyPageBreakInside: {
- EPageBreak pageBreak = style.pageBreakInside();
- ASSERT(pageBreak != PBALWAYS);
- if (pageBreak == PBALWAYS)
- return nullptr;
- return cssValuePool().createValue(style.pageBreakInside());
- }
+ return cssValuePool().createValue(mapToPageBreakValue(style.breakBefore()));
+ case CSSPropertyPageBreakInside:
+ return cssValuePool().createValue(mapToPageBreakValue(style.breakInside()));
case CSSPropertyPosition:
return cssValuePool().createValue(style.position());
case CSSPropertyQuotes:

Powered by Google App Engine
This is Rietveld 408576698