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

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

Issue 1421963006: Move transform property into CSSPropertyParser (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: V3 Created 5 years, 1 month 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 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/css/parser/CSSPropertyParser.h" 6 #include "core/css/parser/CSSPropertyParser.h"
7 7
8 #include "core/StylePropertyShorthand.h" 8 #include "core/StylePropertyShorthand.h"
9 #include "core/css/CSSCalculationValue.h" 9 #include "core/css/CSSCalculationValue.h"
10 #include "core/css/CSSCustomIdentValue.h" 10 #include "core/css/CSSCustomIdentValue.h"
(...skipping 1588 matching lines...) Expand 10 before | Expand all | Expand 10 after
1599 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeBorderWidth(CSSParserTok enRange& range, CSSParserMode cssParserMode) 1599 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeBorderWidth(CSSParserTok enRange& range, CSSParserMode cssParserMode)
1600 { 1600 {
1601 return consumeLineWidth(range, cssParserMode); 1601 return consumeLineWidth(range, cssParserMode);
1602 } 1602 }
1603 1603
1604 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeTextStrokeWidth(CSSParse rTokenRange& range, CSSParserMode cssParserMode) 1604 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeTextStrokeWidth(CSSParse rTokenRange& range, CSSParserMode cssParserMode)
1605 { 1605 {
1606 return consumeLineWidth(range, cssParserMode); 1606 return consumeLineWidth(range, cssParserMode);
1607 } 1607 }
1608 1608
1609 static bool consumeTranslate3d(CSSParserTokenRange& args, CSSParserMode cssParse rMode, RefPtrWillBeRawPtr<CSSFunctionValue>& transformValue)
1610 {
1611 unsigned numberOfArguments = 2;
1612 RefPtrWillBeRawPtr<CSSValue> parsedValue;
1613 do {
1614 parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRangeAll) ;
1615 if (!parsedValue)
1616 return false;
1617 transformValue->append(parsedValue);
1618 if (!consumeCommaIncludingWhitespace(args))
1619 return false;
1620 } while (--numberOfArguments);
1621 parsedValue = consumeLength(args, cssParserMode, ValueRangeAll);
1622 if (!parsedValue)
1623 return false;
1624 transformValue->append(parsedValue);
1625 return true;
1626 }
1627
1628 static bool consumeNumbers(CSSParserTokenRange& args, RefPtrWillBeRawPtr<CSSFunc tionValue>& transformValue, unsigned numberOfArguments)
1629 {
1630 do {
1631 RefPtrWillBeRawPtr<CSSValue> parsedValue = consumeNumber(args, ValueRang eAll);
1632 if (!parsedValue)
1633 return false;
1634 transformValue->append(parsedValue);
1635 if (--numberOfArguments && !consumeCommaIncludingWhitespace(args))
1636 return false;
1637 } while (numberOfArguments);
1638 return true;
1639 }
1640
1641 static bool consumePerspective(CSSParserTokenRange& args, CSSParserMode cssParse rMode, RefPtrWillBeRawPtr<CSSFunctionValue>& transformValue, bool useLegacyParsi ng)
1642 {
1643 RefPtrWillBeRawPtr<CSSPrimitiveValue> parsedValue = consumeLength(args, cssP arserMode, ValueRangeNonNegative);
Timothy Loh 2015/11/13 18:11:44 I guess this could return a CSSPrimitiveValue inst
1644 if (!parsedValue && useLegacyParsing) {
1645 double perspective;
1646 if (!consumeNumberRaw(args, perspective) || perspective < 0)
1647 return false;
1648 parsedValue = cssValuePool().createValue(perspective, CSSPrimitiveValue: :UnitType::Pixels);
1649 }
1650 if (!parsedValue)
1651 return false;
1652 transformValue->append(parsedValue);
1653 return true;
1654 }
1655
1656 static PassRefPtrWillBeRawPtr<CSSValue> consumeTransformValue(CSSParserTokenRang e& range, CSSParserMode cssParserMode, bool useLegacyParsing)
1657 {
1658 CSSValueID functionId = range.peek().functionId();
1659 if (functionId == CSSValueInvalid)
1660 return nullptr;
1661 CSSParserTokenRange args = consumeFunction(range);
1662 if (args.atEnd())
1663 return nullptr;
1664 RefPtrWillBeRawPtr<CSSFunctionValue> transformValue = CSSFunctionValue::crea te(functionId);
1665 RefPtrWillBeRawPtr<CSSValue> parsedValue = nullptr;
1666 switch (functionId) {
1667 case CSSValueRotate:
1668 case CSSValueRotateX:
1669 case CSSValueRotateY:
1670 case CSSValueRotateZ:
1671 case CSSValueSkewX:
1672 case CSSValueSkewY:
1673 case CSSValueSkew:
1674 parsedValue = consumeAngle(args, cssParserMode);
1675 if (!parsedValue)
1676 return nullptr;
1677 if (functionId == CSSValueSkew && consumeCommaIncludingWhitespace(args)) {
1678 transformValue->append(parsedValue);
1679 parsedValue = consumeAngle(args, cssParserMode);
1680 }
1681 break;
1682 case CSSValueScaleX:
1683 case CSSValueScaleY:
1684 case CSSValueScaleZ:
1685 case CSSValueScale:
1686 parsedValue = consumeNumber(args, ValueRangeAll);
1687 if (!parsedValue)
1688 return nullptr;
1689 if (functionId == CSSValueScale && consumeCommaIncludingWhitespace(args) ) {
1690 transformValue->append(parsedValue);
1691 parsedValue = consumeNumber(args, ValueRangeAll);
1692 }
1693 break;
1694 case CSSValuePerspective:
1695 if (!consumePerspective(args, cssParserMode, transformValue, useLegacyPa rsing))
1696 return nullptr;
1697 break;
1698 case CSSValueTranslateX:
1699 case CSSValueTranslateY:
1700 case CSSValueTranslate:
1701 parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRangeAll) ;
1702 if (!parsedValue)
1703 return nullptr;
1704 if (functionId == CSSValueTranslate && consumeCommaIncludingWhitespace(a rgs)) {
1705 transformValue->append(parsedValue);
1706 parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRange All);
1707 }
1708 break;
1709 case CSSValueTranslateZ:
1710 parsedValue = consumeLength(args, cssParserMode, ValueRangeAll);
1711 break;
1712 case CSSValueMatrix:
1713 case CSSValueMatrix3d:
1714 if (!consumeNumbers(args, transformValue, (functionId == CSSValueMatrix3 d) ? 16 : 6))
1715 return nullptr;
1716 break;
1717 case CSSValueScale3d:
1718 if (!consumeNumbers(args, transformValue, 3))
1719 return nullptr;
1720 break;
1721 case CSSValueRotate3d:
1722 if (!consumeNumbers(args, transformValue, 3) || !consumeCommaIncludingWh itespace(args))
1723 return nullptr;
1724 parsedValue = consumeAngle(args, cssParserMode);
1725 break;
1726 case CSSValueTranslate3d:
1727 if (!consumeTranslate3d(args, cssParserMode, transformValue))
1728 return nullptr;
1729 break;
1730 default:
1731 return nullptr;
1732 }
1733 if (parsedValue)
1734 transformValue->append(parsedValue);
1735 if (!args.atEnd())
1736 return nullptr;
1737 return transformValue.release();
1738 }
1739
1740 static PassRefPtrWillBeRawPtr<CSSValue> consumeTransform(CSSParserTokenRange& ra nge, CSSParserMode cssParserMode, bool useLegacyParsing)
1741 {
1742 if (range.peek().id() == CSSValueNone)
1743 return consumeIdent(range);
1744
1745 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated() ;
1746 do {
1747 RefPtrWillBeRawPtr<CSSValue> parsedTransformValue = consumeTransformValu e(range, cssParserMode, useLegacyParsing);
1748 if (!parsedTransformValue)
1749 return nullptr;
1750 list->append(parsedTransformValue.release());
1751 } while (!range.atEnd());
1752
1753 return list.release();
1754 }
1755
1609 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSProperty ID unresolvedProperty) 1756 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSProperty ID unresolvedProperty)
1610 { 1757 {
1611 CSSPropertyID property = resolveCSSPropertyID(unresolvedProperty); 1758 CSSPropertyID property = resolveCSSPropertyID(unresolvedProperty);
1612 m_range.consumeWhitespace(); 1759 m_range.consumeWhitespace();
1613 switch (property) { 1760 switch (property) {
1614 case CSSPropertyWillChange: 1761 case CSSPropertyWillChange:
1615 return consumeWillChange(m_range); 1762 return consumeWillChange(m_range);
1616 case CSSPropertyPage: 1763 case CSSPropertyPage:
1617 return consumePage(m_range); 1764 return consumePage(m_range);
1618 case CSSPropertyQuotes: 1765 case CSSPropertyQuotes:
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1745 ASSERT(RuntimeEnabledFeatures::cssMotionPathEnabled()); 1892 ASSERT(RuntimeEnabledFeatures::cssMotionPathEnabled());
1746 return consumeMotionRotation(m_range, m_context.mode()); 1893 return consumeMotionRotation(m_range, m_context.mode());
1747 case CSSPropertyWebkitTextEmphasisStyle: 1894 case CSSPropertyWebkitTextEmphasisStyle:
1748 return consumeTextEmphasisStyle(m_range); 1895 return consumeTextEmphasisStyle(m_range);
1749 case CSSPropertyOutlineColor: 1896 case CSSPropertyOutlineColor:
1750 return consumeOutlineColor(m_range, m_context); 1897 return consumeOutlineColor(m_range, m_context);
1751 case CSSPropertyOutlineOffset: 1898 case CSSPropertyOutlineOffset:
1752 return consumeLength(m_range, m_context.mode(), ValueRangeAll); 1899 return consumeLength(m_range, m_context.mode(), ValueRangeAll);
1753 case CSSPropertyOutlineWidth: 1900 case CSSPropertyOutlineWidth:
1754 return consumeLineWidth(m_range, m_context.mode()); 1901 return consumeLineWidth(m_range, m_context.mode());
1902 case CSSPropertyTransform:
1903 return consumeTransform(m_range, m_context.mode(), unresolvedProperty == CSSPropertyAliasWebkitTransform);
1755 default: 1904 default:
1756 return nullptr; 1905 return nullptr;
1757 } 1906 }
1758 } 1907 }
1759 1908
1760 static PassRefPtrWillBeRawPtr<CSSValueList> consumeFontFaceUnicodeRange(CSSParse rTokenRange& range) 1909 static PassRefPtrWillBeRawPtr<CSSValueList> consumeFontFaceUnicodeRange(CSSParse rTokenRange& range)
1761 { 1910 {
1762 RefPtrWillBeRawPtr<CSSValueList> values = CSSValueList::createCommaSeparated (); 1911 RefPtrWillBeRawPtr<CSSValueList> values = CSSValueList::createCommaSeparated ();
1763 1912
1764 do { 1913 do {
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after
2242 return consumeShorthandGreedily(webkitBorderAfterShorthand(), important) ; 2391 return consumeShorthandGreedily(webkitBorderAfterShorthand(), important) ;
2243 case CSSPropertyWebkitTextStroke: 2392 case CSSPropertyWebkitTextStroke:
2244 return consumeShorthandGreedily(webkitTextStrokeShorthand(), important); 2393 return consumeShorthandGreedily(webkitTextStrokeShorthand(), important);
2245 default: 2394 default:
2246 m_currentShorthand = oldShorthand; 2395 m_currentShorthand = oldShorthand;
2247 return false; 2396 return false;
2248 } 2397 }
2249 } 2398 }
2250 2399
2251 } // namespace blink 2400 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698