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

Side by Side 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004 Zack Rusin <zack@kde.org> 2 * Copyright (C) 2004 Zack Rusin <zack@kde.org>
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
6 * Copyright (C) 2011 Sencha, Inc. All rights reserved. 6 * Copyright (C) 2011 Sencha, Inc. All rights reserved.
7 * Copyright (C) 2015 Google Inc. All rights reserved. 7 * Copyright (C) 2015 Google Inc. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public 10 * modify it under the terms of the GNU Lesser General Public
(...skipping 1335 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 for (auto& coordinate : coordinates) { 1346 for (auto& coordinate : coordinates) {
1347 auto pair = CSSValueList::createSpaceSeparated(); 1347 auto pair = CSSValueList::createSpaceSeparated();
1348 pair->append(zoomAdjustedPixelValueForLength(coordinate.x(), style)); 1348 pair->append(zoomAdjustedPixelValueForLength(coordinate.x(), style));
1349 pair->append(zoomAdjustedPixelValueForLength(coordinate.y(), style)); 1349 pair->append(zoomAdjustedPixelValueForLength(coordinate.y(), style));
1350 list->append(pair); 1350 list->append(pair);
1351 } 1351 }
1352 1352
1353 return list.release(); 1353 return list.release();
1354 } 1354 }
1355 1355
1356 static EBreak mapToPageBreakValue(EBreak genericBreakValue)
1357 {
1358 switch (genericBreakValue) {
1359 case BreakAvoidColumn:
1360 case BreakAvoidRegion:
1361 case BreakColumn:
1362 case BreakRecto:
1363 case BreakRegion:
1364 case BreakVerso:
1365 return BreakAuto;
1366 case BreakLeft:
1367 case BreakRight:
1368 // TODO(mstensho): "left" and "right" should simply be mapped to that, n ot "always", according to spec.
1369 case BreakPage:
1370 return BreakAlways;
1371 case BreakAvoidPage:
1372 return BreakAvoid;
1373 default:
1374 return genericBreakValue;
1375 }
1376 }
1377
1378 static EBreak mapToColumnBreakValue(EBreak genericBreakValue)
1379 {
1380 switch (genericBreakValue) {
1381 case BreakAvoidPage:
1382 case BreakAvoidRegion:
1383 case BreakLeft:
1384 case BreakPage:
1385 case BreakRecto:
1386 case BreakRegion:
1387 case BreakRight:
1388 case BreakVerso:
1389 return BreakAuto;
1390 case BreakColumn:
1391 return BreakAlways;
1392 case BreakAvoidColumn:
1393 return BreakAvoid;
1394 default:
1395 return genericBreakValue;
1396 }
1397 }
1398
1356 PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::get(const AtomicS tring customPropertyName, const ComputedStyle& style) 1399 PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::get(const AtomicS tring customPropertyName, const ComputedStyle& style)
1357 { 1400 {
1358 StyleVariableData* variables = style.variables(); 1401 StyleVariableData* variables = style.variables();
1359 if (!variables) 1402 if (!variables)
1360 return nullptr; 1403 return nullptr;
1361 1404
1362 CSSVariableData* data = variables->getVariable(customPropertyName); 1405 CSSVariableData* data = variables->getVariable(customPropertyName);
1363 if (!data) 1406 if (!data)
1364 return nullptr; 1407 return nullptr;
1365 1408
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
1560 return zoomAdjustedPixelValue(style.columnGap(), style); 1603 return zoomAdjustedPixelValue(style.columnGap(), style);
1561 case CSSPropertyWebkitColumnRuleColor: 1604 case CSSPropertyWebkitColumnRuleColor:
1562 return allowVisitedStyle ? cssValuePool().createColorValue(style.visited DependentColor(CSSPropertyOutlineColor).rgb()) : currentColorOrValidColor(style, style.columnRuleColor()); 1605 return allowVisitedStyle ? cssValuePool().createColorValue(style.visited DependentColor(CSSPropertyOutlineColor).rgb()) : currentColorOrValidColor(style, style.columnRuleColor());
1563 case CSSPropertyWebkitColumnRuleStyle: 1606 case CSSPropertyWebkitColumnRuleStyle:
1564 return cssValuePool().createValue(style.columnRuleStyle()); 1607 return cssValuePool().createValue(style.columnRuleStyle());
1565 case CSSPropertyWebkitColumnRuleWidth: 1608 case CSSPropertyWebkitColumnRuleWidth:
1566 return zoomAdjustedPixelValue(style.columnRuleWidth(), style); 1609 return zoomAdjustedPixelValue(style.columnRuleWidth(), style);
1567 case CSSPropertyWebkitColumnSpan: 1610 case CSSPropertyWebkitColumnSpan:
1568 return cssValuePool().createIdentifierValue(style.columnSpan() ? CSSValu eAll : CSSValueNone); 1611 return cssValuePool().createIdentifierValue(style.columnSpan() ? CSSValu eAll : CSSValueNone);
1569 case CSSPropertyWebkitColumnBreakAfter: 1612 case CSSPropertyWebkitColumnBreakAfter:
1570 return cssValuePool().createValue(style.columnBreakAfter()); 1613 return cssValuePool().createValue(mapToColumnBreakValue(style.breakAfter ()));
1571 case CSSPropertyWebkitColumnBreakBefore: 1614 case CSSPropertyWebkitColumnBreakBefore:
1572 return cssValuePool().createValue(style.columnBreakBefore()); 1615 return cssValuePool().createValue(mapToColumnBreakValue(style.breakBefor e()));
1573 case CSSPropertyWebkitColumnBreakInside: 1616 case CSSPropertyWebkitColumnBreakInside:
1574 return cssValuePool().createValue(style.columnBreakInside()); 1617 return cssValuePool().createValue(mapToColumnBreakValue(style.breakInsid e()));
1575 case CSSPropertyWebkitColumnWidth: 1618 case CSSPropertyWebkitColumnWidth:
1576 if (style.hasAutoColumnWidth()) 1619 if (style.hasAutoColumnWidth())
1577 return cssValuePool().createIdentifierValue(CSSValueAuto); 1620 return cssValuePool().createIdentifierValue(CSSValueAuto);
1578 return zoomAdjustedPixelValue(style.columnWidth(), style); 1621 return zoomAdjustedPixelValue(style.columnWidth(), style);
1579 case CSSPropertyTabSize: 1622 case CSSPropertyTabSize:
1580 return cssValuePool().createValue( 1623 return cssValuePool().createValue(
1581 style.tabSize().getPixelSize(1.0), style.tabSize().isSpaces() ? CSSP rimitiveValue::UnitType::Number : CSSPrimitiveValue::UnitType::Pixels); 1624 style.tabSize().getPixelSize(1.0), style.tabSize().isSpaces() ? CSSP rimitiveValue::UnitType::Number : CSSPrimitiveValue::UnitType::Pixels);
1582 case CSSPropertyCursor: { 1625 case CSSPropertyCursor: {
1583 RefPtrWillBeRawPtr<CSSValueList> list = nullptr; 1626 RefPtrWillBeRawPtr<CSSValueList> list = nullptr;
1584 CursorList* cursors = style.cursors(); 1627 CursorList* cursors = style.cursors();
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
1907 if (paddingBottom.isFixed() || !layoutObject || !layoutObject->isBox()) 1950 if (paddingBottom.isFixed() || !layoutObject || !layoutObject->isBox())
1908 return zoomAdjustedPixelValueForLength(paddingBottom, style); 1951 return zoomAdjustedPixelValueForLength(paddingBottom, style);
1909 return zoomAdjustedPixelValue(toLayoutBox(layoutObject)->computedCSSPadd ingBottom(), style); 1952 return zoomAdjustedPixelValue(toLayoutBox(layoutObject)->computedCSSPadd ingBottom(), style);
1910 } 1953 }
1911 case CSSPropertyPaddingLeft: { 1954 case CSSPropertyPaddingLeft: {
1912 Length paddingLeft = style.paddingLeft(); 1955 Length paddingLeft = style.paddingLeft();
1913 if (paddingLeft.isFixed() || !layoutObject || !layoutObject->isBox()) 1956 if (paddingLeft.isFixed() || !layoutObject || !layoutObject->isBox())
1914 return zoomAdjustedPixelValueForLength(paddingLeft, style); 1957 return zoomAdjustedPixelValueForLength(paddingLeft, style);
1915 return zoomAdjustedPixelValue(toLayoutBox(layoutObject)->computedCSSPadd ingLeft(), style); 1958 return zoomAdjustedPixelValue(toLayoutBox(layoutObject)->computedCSSPadd ingLeft(), style);
1916 } 1959 }
1960 case CSSPropertyBreakAfter:
1961 return cssValuePool().createValue(style.breakAfter());
1962 case CSSPropertyBreakBefore:
1963 return cssValuePool().createValue(style.breakBefore());
1964 case CSSPropertyBreakInside:
1965 return cssValuePool().createValue(style.breakInside());
1917 case CSSPropertyPageBreakAfter: 1966 case CSSPropertyPageBreakAfter:
1918 return cssValuePool().createValue(style.pageBreakAfter()); 1967 return cssValuePool().createValue(mapToPageBreakValue(style.breakAfter() ));
1919 case CSSPropertyPageBreakBefore: 1968 case CSSPropertyPageBreakBefore:
1920 return cssValuePool().createValue(style.pageBreakBefore()); 1969 return cssValuePool().createValue(mapToPageBreakValue(style.breakBefore( )));
1921 case CSSPropertyPageBreakInside: { 1970 case CSSPropertyPageBreakInside:
1922 EPageBreak pageBreak = style.pageBreakInside(); 1971 return cssValuePool().createValue(mapToPageBreakValue(style.breakInside( )));
1923 ASSERT(pageBreak != PBALWAYS);
1924 if (pageBreak == PBALWAYS)
1925 return nullptr;
1926 return cssValuePool().createValue(style.pageBreakInside());
1927 }
1928 case CSSPropertyPosition: 1972 case CSSPropertyPosition:
1929 return cssValuePool().createValue(style.position()); 1973 return cssValuePool().createValue(style.position());
1930 case CSSPropertyQuotes: 1974 case CSSPropertyQuotes:
1931 if (!style.quotes()) { 1975 if (!style.quotes()) {
1932 // TODO(ramya.v): We should return the quote values that we're actua lly using. 1976 // TODO(ramya.v): We should return the quote values that we're actua lly using.
1933 return nullptr; 1977 return nullptr;
1934 } 1978 }
1935 if (style.quotes()->size()) { 1979 if (style.quotes()->size()) {
1936 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSep arated(); 1980 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSep arated();
1937 for (int i = 0; i < style.quotes()->size(); i++) { 1981 for (int i = 0; i < style.quotes()->size(); i++) {
(...skipping 796 matching lines...) Expand 10 before | Expand all | Expand 10 after
2734 case CSSPropertyAll: 2778 case CSSPropertyAll:
2735 return nullptr; 2779 return nullptr;
2736 default: 2780 default:
2737 break; 2781 break;
2738 } 2782 }
2739 ASSERT_NOT_REACHED(); 2783 ASSERT_NOT_REACHED();
2740 return nullptr; 2784 return nullptr;
2741 } 2785 }
2742 2786
2743 } // namespace blink 2787 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698