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

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

Issue 1213613013: Move parsing of "keyword only" SVG properties to CSSParserFastPaths (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Drop redundant comments. Created 5 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/css/parser/CSSParserFastPaths.cpp ('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 /* 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 7648 matching lines...) Expand 10 before | Expand all | Expand 10 after
7659 ASSERT(value); 7659 ASSERT(value);
7660 7660
7661 CSSValueID id = value->id; 7661 CSSValueID id = value->id;
7662 7662
7663 bool validPrimitive = false; 7663 bool validPrimitive = false;
7664 RefPtrWillBeRawPtr<CSSValue> parsedValue = nullptr; 7664 RefPtrWillBeRawPtr<CSSValue> parsedValue = nullptr;
7665 7665
7666 switch (propId) { 7666 switch (propId) {
7667 /* The comment to the right defines all valid value of these 7667 /* The comment to the right defines all valid value of these
7668 * properties as defined in SVG 1.1, Appendix N. Property index */ 7668 * properties as defined in SVG 1.1, Appendix N. Property index */
7669 case CSSPropertyAlignmentBaseline:
7670 // auto | baseline | before-edge | text-before-edge | middle |
7671 // central | after-edge | text-after-edge | ideographic | alphabetic |
7672 // hanging | mathematical | inherit
7673 if (id == CSSValueAuto || id == CSSValueBaseline || id == CSSValueMiddle
7674 || (id >= CSSValueBeforeEdge && id <= CSSValueMathematical))
7675 validPrimitive = true;
7676 break;
7677
7678 case CSSPropertyBaselineShift: 7669 case CSSPropertyBaselineShift:
7679 // baseline | super | sub | <percentage> | <length> | inherit 7670 // baseline | super | sub | <percentage> | <length> | inherit
7680 if (id == CSSValueBaseline || id == CSSValueSub || id == CSSValueSuper) 7671 if (id == CSSValueBaseline || id == CSSValueSub || id == CSSValueSuper)
7681 validPrimitive = true; 7672 validPrimitive = true;
7682 else 7673 else
7683 validPrimitive = validUnit(value, FLength | FPercent, SVGAttributeMo de); 7674 validPrimitive = validUnit(value, FLength | FPercent, SVGAttributeMo de);
7684 break; 7675 break;
7685 7676
7686 case CSSPropertyDominantBaseline:
7687 // auto | use-script | no-change | reset-size | ideographic |
7688 // alphabetic | hanging | mathematical | central | middle |
7689 // text-after-edge | text-before-edge | inherit
7690 if (id == CSSValueAuto || id == CSSValueMiddle
7691 || (id >= CSSValueUseScript && id <= CSSValueResetSize)
7692 || (id >= CSSValueCentral && id <= CSSValueMathematical))
7693 validPrimitive = true;
7694 break;
7695
7696 case CSSPropertyEnableBackground: 7677 case CSSPropertyEnableBackground:
7697 // accumulate | new [x] [y] [width] [height] | inherit 7678 // accumulate | new [x] [y] [width] [height] | inherit
7698 if (id == CSSValueAccumulate) // TODO : new 7679 if (id == CSSValueAccumulate) // TODO : new
7699 validPrimitive = true; 7680 validPrimitive = true;
7700 break; 7681 break;
7701 7682
7702 case CSSPropertyClipPath: 7683 case CSSPropertyClipPath:
7703 case CSSPropertyFilter: 7684 case CSSPropertyFilter:
7704 case CSSPropertyMarkerStart: 7685 case CSSPropertyMarkerStart:
7705 case CSSPropertyMarkerMid: 7686 case CSSPropertyMarkerMid:
7706 case CSSPropertyMarkerEnd: 7687 case CSSPropertyMarkerEnd:
7707 case CSSPropertyMask: 7688 case CSSPropertyMask:
7708 if (id == CSSValueNone) { 7689 if (id == CSSValueNone) {
7709 validPrimitive = true; 7690 validPrimitive = true;
7710 } else if (value->unit == CSSPrimitiveValue::CSS_URI) { 7691 } else if (value->unit == CSSPrimitiveValue::CSS_URI) {
7711 parsedValue = CSSPrimitiveValue::create(value->string, CSSPrimitiveV alue::CSS_URI); 7692 parsedValue = CSSPrimitiveValue::create(value->string, CSSPrimitiveV alue::CSS_URI);
7712 if (parsedValue) 7693 if (parsedValue)
7713 m_valueList->next(); 7694 m_valueList->next();
7714 } 7695 }
7715 break; 7696 break;
7716 7697
7717 case CSSPropertyClipRule: // nonzero | evenodd | inherit
7718 case CSSPropertyFillRule:
7719 if (id == CSSValueNonzero || id == CSSValueEvenodd)
7720 validPrimitive = true;
7721 break;
7722
7723 case CSSPropertyStrokeMiterlimit: // <miterlimit> | inherit 7698 case CSSPropertyStrokeMiterlimit: // <miterlimit> | inherit
7724 validPrimitive = validUnit(value, FNumber | FNonNeg, SVGAttributeMode); 7699 validPrimitive = validUnit(value, FNumber | FNonNeg, SVGAttributeMode);
7725 break; 7700 break;
7726 7701
7727 case CSSPropertyStrokeLinejoin: // miter | round | bevel | inherit
7728 if (id == CSSValueMiter || id == CSSValueRound || id == CSSValueBevel)
7729 validPrimitive = true;
7730 break;
7731
7732 case CSSPropertyStrokeLinecap: // butt | round | square | inherit
7733 if (id == CSSValueButt || id == CSSValueRound || id == CSSValueSquare)
7734 validPrimitive = true;
7735 break;
7736
7737 case CSSPropertyStrokeOpacity: // <opacity-value> | inherit 7702 case CSSPropertyStrokeOpacity: // <opacity-value> | inherit
7738 case CSSPropertyFillOpacity: 7703 case CSSPropertyFillOpacity:
7739 case CSSPropertyStopOpacity: 7704 case CSSPropertyStopOpacity:
7740 case CSSPropertyFloodOpacity: 7705 case CSSPropertyFloodOpacity:
7741 validPrimitive = validUnit(value, FNumber | FPercent, SVGAttributeMode); 7706 validPrimitive = validUnit(value, FNumber | FPercent, SVGAttributeMode);
7742 break; 7707 break;
7743 7708
7744 case CSSPropertyShapeRendering:
7745 // auto | optimizeSpeed | crispEdges | geometricPrecision | inherit
7746 if (id == CSSValueAuto || id == CSSValueOptimizeSpeed
7747 || id == CSSValueCrispEdges || id == CSSValueGeometricPrecision)
7748 validPrimitive = true;
7749 break;
7750
7751 case CSSPropertyColorRendering: // optimizeQuality | inherit
7752 if (id == CSSValueAuto || id == CSSValueOptimizeSpeed
7753 || id == CSSValueOptimizeQuality)
7754 validPrimitive = true;
7755 break;
7756
7757 case CSSPropertyBufferedRendering: // auto | dynamic | static
7758 if (id == CSSValueAuto || id == CSSValueDynamic || id == CSSValueStatic)
7759 validPrimitive = true;
7760 break;
7761
7762 case CSSPropertyColorInterpolation: // auto | sRGB | linearRGB | inherit
7763 case CSSPropertyColorInterpolationFilters:
7764 if (id == CSSValueAuto || id == CSSValueSRGB || id == CSSValueLinearRGB)
7765 validPrimitive = true;
7766 break;
7767
7768 /* Start of supported CSS properties with validation. This is needed for par seShortHand to work 7709 /* Start of supported CSS properties with validation. This is needed for par seShortHand to work
7769 * correctly and allows optimization in applyRule(..) 7710 * correctly and allows optimization in applyRule(..)
7770 */ 7711 */
7771 7712
7772 case CSSPropertyTextAnchor: // start | middle | end | inherit
7773 if (id == CSSValueStart || id == CSSValueMiddle || id == CSSValueEnd)
7774 validPrimitive = true;
7775 break;
7776
7777 case CSSPropertyGlyphOrientationVertical: // auto | <angle> | inherit 7713 case CSSPropertyGlyphOrientationVertical: // auto | <angle> | inherit
7778 if (id == CSSValueAuto) { 7714 if (id == CSSValueAuto) {
7779 validPrimitive = true; 7715 validPrimitive = true;
7780 break; 7716 break;
7781 } 7717 }
7782 /* fallthrough intentional */ 7718 /* fallthrough intentional */
7783 case CSSPropertyGlyphOrientationHorizontal: // <angle> (restricted to _deg_ per SVG 1.1 spec) | inherit 7719 case CSSPropertyGlyphOrientationHorizontal: // <angle> (restricted to _deg_ per SVG 1.1 spec) | inherit
7784 if (value->unit == CSSPrimitiveValue::CSS_DEG || value->unit == CSSPrimi tiveValue::CSS_NUMBER) { 7720 if (value->unit == CSSPrimitiveValue::CSS_DEG || value->unit == CSSPrimi tiveValue::CSS_NUMBER) {
7785 parsedValue = CSSPrimitiveValue::create(value->fValue, CSSPrimitiveV alue::CSS_DEG); 7721 parsedValue = CSSPrimitiveValue::create(value->fValue, CSSPrimitiveV alue::CSS_DEG);
7786 7722
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
7827 7763
7828 break; 7764 break;
7829 7765
7830 case CSSPropertyPaintOrder: 7766 case CSSPropertyPaintOrder:
7831 if (m_valueList->size() == 1 && id == CSSValueNormal) 7767 if (m_valueList->size() == 1 && id == CSSValueNormal)
7832 validPrimitive = true; 7768 validPrimitive = true;
7833 else if ((parsedValue = parsePaintOrder())) 7769 else if ((parsedValue = parsePaintOrder()))
7834 m_valueList->next(); 7770 m_valueList->next();
7835 break; 7771 break;
7836 7772
7837 case CSSPropertyVectorEffect: // none | non-scaling-stroke | inherit
7838 if (id == CSSValueNone || id == CSSValueNonScalingStroke)
7839 validPrimitive = true;
7840 break;
7841
7842 case CSSPropertyWritingMode:
7843 // lr-tb | rl_tb | tb-rl | lr | rl | tb | inherit
7844 if (id == CSSValueLrTb || id == CSSValueRlTb || id == CSSValueTbRl || id == CSSValueLr || id == CSSValueRl || id == CSSValueTb)
7845 validPrimitive = true;
7846 break;
7847
7848 case CSSPropertyStrokeWidth: // <length> | inherit 7773 case CSSPropertyStrokeWidth: // <length> | inherit
7849 case CSSPropertyStrokeDashoffset: 7774 case CSSPropertyStrokeDashoffset:
7850 case CSSPropertyCx: 7775 case CSSPropertyCx:
7851 case CSSPropertyCy: 7776 case CSSPropertyCy:
7852 case CSSPropertyX: 7777 case CSSPropertyX:
7853 case CSSPropertyY: 7778 case CSSPropertyY:
7854 case CSSPropertyR: 7779 case CSSPropertyR:
7855 case CSSPropertyRx: 7780 case CSSPropertyRx:
7856 case CSSPropertyRy: 7781 case CSSPropertyRy:
7857 validPrimitive = validUnit(value, FLength | FPercent, SVGAttributeMode); 7782 validPrimitive = validUnit(value, FLength | FPercent, SVGAttributeMode);
7858 break; 7783 break;
7859 case CSSPropertyStrokeDasharray: // none | <dasharray> | inherit 7784 case CSSPropertyStrokeDasharray: // none | <dasharray> | inherit
7860 if (id == CSSValueNone) 7785 if (id == CSSValueNone)
7861 validPrimitive = true; 7786 validPrimitive = true;
7862 else 7787 else
7863 parsedValue = parseSVGStrokeDasharray(); 7788 parsedValue = parseSVGStrokeDasharray();
7864 break; 7789 break;
7865 7790
7866 case CSSPropertyMaskType: // luminance | alpha | inherit
7867 if (id == CSSValueLuminance || id == CSSValueAlpha)
7868 validPrimitive = true;
7869 break;
7870
7871 /* shorthand properties */ 7791 /* shorthand properties */
7872 case CSSPropertyMarker: { 7792 case CSSPropertyMarker: {
7873 ShorthandScope scope(this, propId); 7793 ShorthandScope scope(this, propId);
7874 CSSPropertyParser::ImplicitScope implicitScope(this); 7794 CSSPropertyParser::ImplicitScope implicitScope(this);
7875 if (!parseValue(CSSPropertyMarkerStart, important)) 7795 if (!parseValue(CSSPropertyMarkerStart, important))
7876 return false; 7796 return false;
7877 if (m_valueList->current()) { 7797 if (m_valueList->current()) {
7878 rollbackLastProperties(1); 7798 rollbackLastProperties(1);
7879 return false; 7799 return false;
7880 } 7800 }
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
8232 } 8152 }
8233 } 8153 }
8234 8154
8235 if (!list->length()) 8155 if (!list->length())
8236 return nullptr; 8156 return nullptr;
8237 8157
8238 return list.release(); 8158 return list.release();
8239 } 8159 }
8240 8160
8241 } // namespace blink 8161 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/css/parser/CSSParserFastPaths.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698