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

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: rebase master 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 2656affceef2ca8ae0d1683840c85cc16f5be609..99e62f654850ac2a93a06b01bfef0b8acd150163 100644
--- a/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp
+++ b/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp
@@ -1323,6 +1323,45 @@ static PassRefPtrWillBeRawPtr<CSSValue> valueForScrollSnapCoordinate(const Vecto
return list.release();
}
+static EBreak mapToPageBreakValue(EBreak genericBreakValue)
+{
+ switch (genericBreakValue) {
+ case BreakAvoidColumn:
+ case BreakColumn:
+ case BreakRecto:
+ 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 BreakLeft:
+ case BreakPage:
+ case BreakRecto:
+ 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();
@@ -1537,11 +1576,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);
@@ -1884,17 +1923,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