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

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

Issue 1397553003: Move size property into CSSPropertyParser (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Patch for review Created 5 years, 2 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) 2003 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2003 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * Copyright (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
6 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> 6 * Copyright (C) 2008 Eric Seidel <eric@webkit.org>
7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
8 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. 8 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved.
9 * Copyright (C) 2012 Intel Corporation. All rights reserved. 9 * Copyright (C) 2012 Intel Corporation. All rights reserved.
10 * 10 *
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 addProperty(propId, parsedValue.release(), important); 424 addProperty(propId, parsedValue.release(), important);
425 return true; 425 return true;
426 } 426 }
427 if (parseShorthand(propId, important)) 427 if (parseShorthand(propId, important))
428 return true; 428 return true;
429 429
430 bool validPrimitive = false; 430 bool validPrimitive = false;
431 Units unitless = FUnknown; 431 Units unitless = FUnknown;
432 432
433 switch (propId) { 433 switch (propId) {
434 case CSSPropertySize: // <length>{1,2} | auto | [ <page-size> || [ portrait | landscape] ]
435 parsedValue = parseSize();
436 break;
437
438 case CSSPropertyContent: // [ <string> | <uri> | <counter> | at tr(X) | open-quote | 434 case CSSPropertyContent: // [ <string> | <uri> | <counter> | at tr(X) | open-quote |
439 // close-quote | no-open-quote | no-close-quote ]+ | inherit 435 // close-quote | no-open-quote | no-close-quote ]+ | inherit
440 parsedValue = parseContent(); 436 parsedValue = parseContent();
441 break; 437 break;
442 case CSSPropertyClip: // <shape> | auto | inherit 438 case CSSPropertyClip: // <shape> | auto | inherit
443 if (id == CSSValueAuto) 439 if (id == CSSValueAuto)
444 validPrimitive = true; 440 validPrimitive = true;
445 else if (value->m_unit == CSSParserValue::Function) 441 else if (value->m_unit == CSSParserValue::Function)
446 parsedValue = parseClipShape(); 442 parsedValue = parseClipShape();
447 break; 443 break;
(...skipping 913 matching lines...) Expand 10 before | Expand all | Expand 10 after
1361 case CSSPropertyLetterSpacing: 1357 case CSSPropertyLetterSpacing:
1362 case CSSPropertyWordSpacing: 1358 case CSSPropertyWordSpacing:
1363 case CSSPropertyTabSize: 1359 case CSSPropertyTabSize:
1364 case CSSPropertyFontSize: 1360 case CSSPropertyFontSize:
1365 case CSSPropertyLineHeight: 1361 case CSSPropertyLineHeight:
1366 case CSSPropertyRotate: 1362 case CSSPropertyRotate:
1367 case CSSPropertyFont: 1363 case CSSPropertyFont:
1368 case CSSPropertyWebkitBorderHorizontalSpacing: 1364 case CSSPropertyWebkitBorderHorizontalSpacing:
1369 case CSSPropertyWebkitBorderVerticalSpacing: 1365 case CSSPropertyWebkitBorderVerticalSpacing:
1370 case CSSPropertyBorderSpacing: 1366 case CSSPropertyBorderSpacing:
1367 case CSSPropertySize:
1371 validPrimitive = false; 1368 validPrimitive = false;
1372 break; 1369 break;
1373 1370
1374 case CSSPropertyScrollSnapPointsX: 1371 case CSSPropertyScrollSnapPointsX:
1375 case CSSPropertyScrollSnapPointsY: 1372 case CSSPropertyScrollSnapPointsY:
1376 parsedValue = parseScrollSnapPoints(); 1373 parsedValue = parseScrollSnapPoints();
1377 break; 1374 break;
1378 case CSSPropertyScrollSnapCoordinate: 1375 case CSSPropertyScrollSnapCoordinate:
1379 parsedValue = parseScrollSnapCoordinate(); 1376 parsedValue = parseScrollSnapCoordinate();
1380 break; 1377 break;
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after
1904 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseScrollSnapCoordinate() 1901 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseScrollSnapCoordinate()
1905 { 1902 {
1906 if (m_valueList->current()->id == CSSValueNone) { 1903 if (m_valueList->current()->id == CSSValueNone) {
1907 m_valueList->next(); 1904 m_valueList->next();
1908 return cssValuePool().createIdentifierValue(CSSValueNone); 1905 return cssValuePool().createIdentifierValue(CSSValueNone);
1909 } 1906 }
1910 1907
1911 return parsePositionList(m_valueList); 1908 return parsePositionList(m_valueList);
1912 } 1909 }
1913 1910
1914 // <length>{1,2} | auto | [ <page-size> || [ portrait | landscape] ]
1915 PassRefPtrWillBeRawPtr<CSSValueList> CSSPropertyParser::parseSize()
1916 {
1917 CSSParserValue* value = m_valueList->current();
1918 ASSERT(value);
1919
1920 RefPtrWillBeRawPtr<CSSValueList> parsedValues = CSSValueList::createSpaceSep arated();
1921
1922 // First parameter.
1923 SizeParameterType paramType = parseSizeParameter(parsedValues.get(), value, None);
1924 if (paramType == None)
1925 return nullptr;
1926 value = m_valueList->next();
1927
1928 // Second parameter, if any.
1929 if (value) {
1930 paramType = parseSizeParameter(parsedValues.get(), value, paramType);
1931 if (paramType == None)
1932 return nullptr;
1933 m_valueList->next();
1934 }
1935
1936 return parsedValues.release();
1937 }
1938
1939 CSSPropertyParser::SizeParameterType CSSPropertyParser::parseSizeParameter(CSSVa lueList* parsedValues, CSSParserValue* value, SizeParameterType prevParamType)
1940 {
1941 switch (value->id) {
1942 case CSSValueAuto:
1943 if (prevParamType == None) {
1944 parsedValues->append(cssValuePool().createIdentifierValue(value->id) );
1945 return Auto;
1946 }
1947 return None;
1948 case CSSValueLandscape:
1949 case CSSValuePortrait:
1950 if (prevParamType == None || prevParamType == PageSize) {
1951 parsedValues->append(cssValuePool().createIdentifierValue(value->id) );
1952 return Orientation;
1953 }
1954 return None;
1955 case CSSValueA3:
1956 case CSSValueA4:
1957 case CSSValueA5:
1958 case CSSValueB4:
1959 case CSSValueB5:
1960 case CSSValueLedger:
1961 case CSSValueLegal:
1962 case CSSValueLetter:
1963 if (prevParamType == None || prevParamType == Orientation) {
1964 // Normalize to Page Size then Orientation order by prepending for s impler StyleBuilder handling
1965 parsedValues->prepend(cssValuePool().createIdentifierValue(value->id ));
1966 return PageSize;
1967 }
1968 return None;
1969 case 0:
1970 if (validUnit(value, FLength | FNonNeg) && (prevParamType == None || pre vParamType == Length)) {
1971 parsedValues->append(createPrimitiveNumericValue(value));
1972 return Length;
1973 }
1974 return None;
1975 default:
1976 return None;
1977 }
1978 }
1979
1980 // [ <string> | <uri> | <counter> | attr(X) | open-quote | close-quote | no-open -quote | no-close-quote ]+ | inherit 1911 // [ <string> | <uri> | <counter> | attr(X) | open-quote | close-quote | no-open -quote | no-close-quote ]+ | inherit
1981 // in CSS 2.1 this got somewhat reduced: 1912 // in CSS 2.1 this got somewhat reduced:
1982 // [ <string> | attr(X) | open-quote | close-quote | no-open-quote | no-close-qu ote ]+ | inherit 1913 // [ <string> | attr(X) | open-quote | close-quote | no-open-quote | no-close-qu ote ]+ | inherit
1983 PassRefPtrWillBeRawPtr<CSSValueList> CSSPropertyParser::parseContent() 1914 PassRefPtrWillBeRawPtr<CSSValueList> CSSPropertyParser::parseContent()
1984 { 1915 {
1985 RefPtrWillBeRawPtr<CSSValueList> values = CSSValueList::createSpaceSeparated (); 1916 RefPtrWillBeRawPtr<CSSValueList> values = CSSValueList::createSpaceSeparated ();
1986 1917
1987 while (CSSParserValue* val = m_valueList->current()) { 1918 while (CSSParserValue* val = m_valueList->current()) {
1988 RefPtrWillBeRawPtr<CSSValue> parsedValue = nullptr; 1919 RefPtrWillBeRawPtr<CSSValue> parsedValue = nullptr;
1989 if (val->m_unit == CSSParserValue::URI) { 1920 if (val->m_unit == CSSParserValue::URI) {
(...skipping 5109 matching lines...) Expand 10 before | Expand all | Expand 10 after
7099 } 7030 }
7100 } 7031 }
7101 7032
7102 if (!list->length()) 7033 if (!list->length())
7103 return nullptr; 7034 return nullptr;
7104 7035
7105 return list.release(); 7036 return list.release();
7106 } 7037 }
7107 7038
7108 } // namespace blink 7039 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698