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

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

Issue 1811953002: Make parsing of <transform> more strict (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: V2 Created 4 years, 9 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
« no previous file with comments | « third_party/WebKit/LayoutTests/transforms/transform-parsing-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "core/css/parser/CSSPropertyParser.h" 5 #include "core/css/parser/CSSPropertyParser.h"
6 6
7 #include "core/StylePropertyShorthand.h" 7 #include "core/StylePropertyShorthand.h"
8 #include "core/css/CSSBasicShapeValues.h" 8 #include "core/css/CSSBasicShapeValues.h"
9 #include "core/css/CSSBorderImage.h" 9 #include "core/css/CSSBorderImage.h"
10 #include "core/css/CSSContentDistributionValue.h" 10 #include "core/css/CSSContentDistributionValue.h"
(...skipping 1789 matching lines...) Expand 10 before | Expand all | Expand 10 after
1800 case CSSValueRotateZ: 1800 case CSSValueRotateZ:
1801 case CSSValueSkewX: 1801 case CSSValueSkewX:
1802 case CSSValueSkewY: 1802 case CSSValueSkewY:
1803 case CSSValueSkew: 1803 case CSSValueSkew:
1804 parsedValue = consumeAngle(args); 1804 parsedValue = consumeAngle(args);
1805 if (!parsedValue) 1805 if (!parsedValue)
1806 return nullptr; 1806 return nullptr;
1807 if (functionId == CSSValueSkew && consumeCommaIncludingWhitespace(args)) { 1807 if (functionId == CSSValueSkew && consumeCommaIncludingWhitespace(args)) {
1808 transformValue->append(parsedValue); 1808 transformValue->append(parsedValue);
1809 parsedValue = consumeAngle(args); 1809 parsedValue = consumeAngle(args);
1810 if (!parsedValue)
1811 return nullptr;
1810 } 1812 }
1811 break; 1813 break;
1812 case CSSValueScaleX: 1814 case CSSValueScaleX:
1813 case CSSValueScaleY: 1815 case CSSValueScaleY:
1814 case CSSValueScaleZ: 1816 case CSSValueScaleZ:
1815 case CSSValueScale: 1817 case CSSValueScale:
1816 parsedValue = consumeNumber(args, ValueRangeAll); 1818 parsedValue = consumeNumber(args, ValueRangeAll);
1817 if (!parsedValue) 1819 if (!parsedValue)
1818 return nullptr; 1820 return nullptr;
1819 if (functionId == CSSValueScale && consumeCommaIncludingWhitespace(args) ) { 1821 if (functionId == CSSValueScale && consumeCommaIncludingWhitespace(args) ) {
1820 transformValue->append(parsedValue); 1822 transformValue->append(parsedValue);
1821 parsedValue = consumeNumber(args, ValueRangeAll); 1823 parsedValue = consumeNumber(args, ValueRangeAll);
1824 if (!parsedValue)
1825 return nullptr;
1822 } 1826 }
1823 break; 1827 break;
1824 case CSSValuePerspective: 1828 case CSSValuePerspective:
1825 if (!consumePerspective(args, cssParserMode, transformValue, useLegacyPa rsing)) 1829 if (!consumePerspective(args, cssParserMode, transformValue, useLegacyPa rsing))
1826 return nullptr; 1830 return nullptr;
1827 break; 1831 break;
1828 case CSSValueTranslateX: 1832 case CSSValueTranslateX:
1829 case CSSValueTranslateY: 1833 case CSSValueTranslateY:
1830 case CSSValueTranslate: 1834 case CSSValueTranslate:
1831 parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRangeAll) ; 1835 parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRangeAll) ;
1832 if (!parsedValue) 1836 if (!parsedValue)
1833 return nullptr; 1837 return nullptr;
1834 if (functionId == CSSValueTranslate && consumeCommaIncludingWhitespace(a rgs)) { 1838 if (functionId == CSSValueTranslate && consumeCommaIncludingWhitespace(a rgs)) {
1835 transformValue->append(parsedValue); 1839 transformValue->append(parsedValue);
1836 parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRange All); 1840 parsedValue = consumeLengthOrPercent(args, cssParserMode, ValueRange All);
1841 if (!parsedValue)
1842 return nullptr;
1837 } 1843 }
1838 break; 1844 break;
1839 case CSSValueTranslateZ: 1845 case CSSValueTranslateZ:
1840 parsedValue = consumeLength(args, cssParserMode, ValueRangeAll); 1846 parsedValue = consumeLength(args, cssParserMode, ValueRangeAll);
Timothy Loh 2016/03/17 23:23:32 Is this case right? Maybe it'd be better to make t
rwlbuis 2016/03/17 23:29:48 This should be correct, since the no args case is
Timothy Loh 2016/03/17 23:56:45 Ah right. lgtm then, I just realised my suggestion
1841 break; 1847 break;
1842 case CSSValueMatrix: 1848 case CSSValueMatrix:
1843 case CSSValueMatrix3d: 1849 case CSSValueMatrix3d:
1844 if (!consumeNumbers(args, transformValue, (functionId == CSSValueMatrix3 d) ? 16 : 6)) 1850 if (!consumeNumbers(args, transformValue, (functionId == CSSValueMatrix3 d) ? 16 : 6))
1845 return nullptr; 1851 return nullptr;
1846 break; 1852 break;
1847 case CSSValueScale3d: 1853 case CSSValueScale3d:
1848 if (!consumeNumbers(args, transformValue, 3)) 1854 if (!consumeNumbers(args, transformValue, 3))
1849 return nullptr; 1855 return nullptr;
1850 break; 1856 break;
1851 case CSSValueRotate3d: 1857 case CSSValueRotate3d:
1852 if (!consumeNumbers(args, transformValue, 3) || !consumeCommaIncludingWh itespace(args)) 1858 if (!consumeNumbers(args, transformValue, 3) || !consumeCommaIncludingWh itespace(args))
1853 return nullptr; 1859 return nullptr;
1854 parsedValue = consumeAngle(args); 1860 parsedValue = consumeAngle(args);
1861 if (!parsedValue)
1862 return nullptr;
1855 break; 1863 break;
1856 case CSSValueTranslate3d: 1864 case CSSValueTranslate3d:
1857 if (!consumeTranslate3d(args, cssParserMode, transformValue)) 1865 if (!consumeTranslate3d(args, cssParserMode, transformValue))
1858 return nullptr; 1866 return nullptr;
1859 break; 1867 break;
1860 default: 1868 default:
1861 return nullptr; 1869 return nullptr;
1862 } 1870 }
1863 if (parsedValue) 1871 if (parsedValue)
1864 transformValue->append(parsedValue); 1872 transformValue->append(parsedValue);
(...skipping 2765 matching lines...) Expand 10 before | Expand all | Expand 10 after
4630 m_currentShorthand = oldShorthand; 4638 m_currentShorthand = oldShorthand;
4631 CSSParserValueList valueList(m_range); 4639 CSSParserValueList valueList(m_range);
4632 if (!valueList.size()) 4640 if (!valueList.size())
4633 return false; 4641 return false;
4634 m_valueList = &valueList; 4642 m_valueList = &valueList;
4635 return legacyParseShorthand(unresolvedProperty, important); 4643 return legacyParseShorthand(unresolvedProperty, important);
4636 } 4644 }
4637 } 4645 }
4638 4646
4639 } // namespace blink 4647 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/transforms/transform-parsing-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698