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

Side by Side Diff: Source/core/css/CSSParser.cpp

Issue 16415007: Cleanup usage of CSSPropertyID and CSSValueID inside Blink. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 6 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/CSSParser.h ('k') | Source/core/css/CSSParserValues.cpp » ('j') | 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 1256 matching lines...) Expand 10 before | Expand all | Expand 10 after
1267 return !m_parsedProperties.isEmpty() && m_parsedProperties.first().id() == C SSPropertyColor; 1267 return !m_parsedProperties.isEmpty() && m_parsedProperties.first().id() == C SSPropertyColor;
1268 } 1268 }
1269 1269
1270 bool CSSParser::parseSystemColor(RGBA32& color, const String& string, Document* document) 1270 bool CSSParser::parseSystemColor(RGBA32& color, const String& string, Document* document)
1271 { 1271 {
1272 if (!document || !document->page()) 1272 if (!document || !document->page())
1273 return false; 1273 return false;
1274 1274
1275 CSSParserString cssColor; 1275 CSSParserString cssColor;
1276 cssColor.init(string); 1276 cssColor.init(string);
1277 int id = cssValueKeywordID(cssColor); 1277 CSSValueID id = cssValueKeywordID(cssColor);
1278 if (id <= 0) 1278 if (id <= 0)
1279 return false; 1279 return false;
1280 1280
1281 color = document->page()->theme()->systemColor(id).rgb(); 1281 color = document->page()->theme()->systemColor(id).rgb();
1282 return true; 1282 return true;
1283 } 1283 }
1284 1284
1285 void CSSParser::parseSelector(const String& string, CSSSelectorList& selectorLis t) 1285 void CSSParser::parseSelector(const String& string, CSSSelectorList& selectorLis t)
1286 { 1286 {
1287 m_selectorListForParseSelector = &selectorList; 1287 m_selectorListForParseSelector = &selectorList;
(...skipping 2366 matching lines...) Expand 10 before | Expand all | Expand 10 after
3654 { 3654 {
3655 if ((value1 == CSSValueLeft || value1 == CSSValueRight) && (value2 == CSSVal ueLeft || value2 == CSSValueRight)) 3655 if ((value1 == CSSValueLeft || value1 == CSSValueRight) && (value2 == CSSVal ueLeft || value2 == CSSValueRight))
3656 return true; 3656 return true;
3657 3657
3658 if ((value1 == CSSValueTop || value1 == CSSValueBottom) && (value2 == CSSVal ueTop || value2 == CSSValueBottom)) 3658 if ((value1 == CSSValueTop || value1 == CSSValueBottom) && (value2 == CSSVal ueTop || value2 == CSSValueBottom))
3659 return true; 3659 return true;
3660 3660
3661 return false; 3661 return false;
3662 } 3662 }
3663 3663
3664 static bool isFillPositionKeyword(int value) 3664 static bool isFillPositionKeyword(CSSValueID value)
3665 { 3665 {
3666 return value == CSSValueLeft || value == CSSValueTop || value == CSSValueBot tom || value == CSSValueRight || value == CSSValueCenter; 3666 return value == CSSValueLeft || value == CSSValueTop || value == CSSValueBot tom || value == CSSValueRight || value == CSSValueCenter;
3667 } 3667 }
3668 3668
3669 void CSSParser::parse4ValuesFillPosition(CSSParserValueList* valueList, RefPtr<C SSValue>& value1, RefPtr<CSSValue>& value2, PassRefPtr<CSSPrimitiveValue> parsed Value1, PassRefPtr<CSSPrimitiveValue> parsedValue2) 3669 void CSSParser::parse4ValuesFillPosition(CSSParserValueList* valueList, RefPtr<C SSValue>& value1, RefPtr<CSSValue>& value2, PassRefPtr<CSSPrimitiveValue> parsed Value1, PassRefPtr<CSSPrimitiveValue> parsedValue2)
3670 { 3670 {
3671 // [ left | right ] [ <percentage] | <length> ] && [ top | bottom ] [ <perce ntage> | <length> ] 3671 // [ left | right ] [ <percentage] | <length> ] && [ top | bottom ] [ <perce ntage> | <length> ]
3672 // In the case of 4 values <position> requires the second value to be a leng th or a percentage. 3672 // In the case of 4 values <position> requires the second value to be a leng th or a percentage.
3673 if (isFillPositionKeyword(parsedValue2->getIdent())) 3673 if (isFillPositionKeyword(parsedValue2->getValueID()))
3674 return; 3674 return;
3675 3675
3676 unsigned cumulativeFlags = 0; 3676 unsigned cumulativeFlags = 0;
3677 FillPositionFlag value3Flag = InvalidFillPosition; 3677 FillPositionFlag value3Flag = InvalidFillPosition;
3678 RefPtr<CSSPrimitiveValue> value3 = parseFillPositionComponent(valueList, cum ulativeFlags, value3Flag, ResolveValuesAsKeyword); 3678 RefPtr<CSSPrimitiveValue> value3 = parseFillPositionComponent(valueList, cum ulativeFlags, value3Flag, ResolveValuesAsKeyword);
3679 if (!value3) 3679 if (!value3)
3680 return; 3680 return;
3681 3681
3682 int ident1 = parsedValue1->getIdent(); 3682 CSSValueID ident1 = parsedValue1->getValueID();
3683 int ident3 = value3->getIdent(); 3683 CSSValueID ident3 = value3->getValueID();
3684 3684
3685 if (ident1 == CSSValueCenter) 3685 if (ident1 == CSSValueCenter)
3686 return; 3686 return;
3687 3687
3688 if (!isFillPositionKeyword(ident3) || ident3 == CSSValueCenter) 3688 if (!isFillPositionKeyword(ident3) || ident3 == CSSValueCenter)
3689 return; 3689 return;
3690 3690
3691 // We need to check if the values are not conflicting, e.g. they are not on the same edge. It is 3691 // We need to check if the values are not conflicting, e.g. they are not on the same edge. It is
3692 // needed as the second call to parseFillPositionComponent was on purpose no t checking it. In the 3692 // needed as the second call to parseFillPositionComponent was on purpose no t checking it. In the
3693 // case of two values top 20px is invalid but in the case of 4 values it bec omes valid. 3693 // case of two values top 20px is invalid but in the case of 4 values it bec omes valid.
3694 if (isValueConflictingWithCurrentEdge(ident1, ident3)) 3694 if (isValueConflictingWithCurrentEdge(ident1, ident3))
3695 return; 3695 return;
3696 3696
3697 valueList->next(); 3697 valueList->next();
3698 3698
3699 cumulativeFlags = 0; 3699 cumulativeFlags = 0;
3700 FillPositionFlag value4Flag = InvalidFillPosition; 3700 FillPositionFlag value4Flag = InvalidFillPosition;
3701 RefPtr<CSSPrimitiveValue> value4 = parseFillPositionComponent(valueList, cum ulativeFlags, value4Flag, ResolveValuesAsKeyword); 3701 RefPtr<CSSPrimitiveValue> value4 = parseFillPositionComponent(valueList, cum ulativeFlags, value4Flag, ResolveValuesAsKeyword);
3702 if (!value4) 3702 if (!value4)
3703 return; 3703 return;
3704 3704
3705 // 4th value must be a length or a percentage. 3705 // 4th value must be a length or a percentage.
3706 if (isFillPositionKeyword(value4->getIdent())) 3706 if (isFillPositionKeyword(value4->getValueID()))
3707 return; 3707 return;
3708 3708
3709 value1 = createPrimitiveValuePair(parsedValue1, parsedValue2); 3709 value1 = createPrimitiveValuePair(parsedValue1, parsedValue2);
3710 value2 = createPrimitiveValuePair(value3, value4); 3710 value2 = createPrimitiveValuePair(value3, value4);
3711 3711
3712 if (ident1 == CSSValueTop || ident1 == CSSValueBottom) 3712 if (ident1 == CSSValueTop || ident1 == CSSValueBottom)
3713 value1.swap(value2); 3713 value1.swap(value2);
3714 3714
3715 valueList->next(); 3715 valueList->next();
3716 } 3716 }
3717 void CSSParser::parse3ValuesFillPosition(CSSParserValueList* valueList, RefPtr<C SSValue>& value1, RefPtr<CSSValue>& value2, PassRefPtr<CSSPrimitiveValue> parsed Value1, PassRefPtr<CSSPrimitiveValue> parsedValue2) 3717 void CSSParser::parse3ValuesFillPosition(CSSParserValueList* valueList, RefPtr<C SSValue>& value1, RefPtr<CSSValue>& value2, PassRefPtr<CSSPrimitiveValue> parsed Value1, PassRefPtr<CSSPrimitiveValue> parsedValue2)
3718 { 3718 {
3719 unsigned cumulativeFlags = 0; 3719 unsigned cumulativeFlags = 0;
3720 FillPositionFlag value3Flag = InvalidFillPosition; 3720 FillPositionFlag value3Flag = InvalidFillPosition;
3721 RefPtr<CSSPrimitiveValue> value3 = parseFillPositionComponent(valueList, cum ulativeFlags, value3Flag, ResolveValuesAsKeyword); 3721 RefPtr<CSSPrimitiveValue> value3 = parseFillPositionComponent(valueList, cum ulativeFlags, value3Flag, ResolveValuesAsKeyword);
3722 3722
3723 // value3 is not an expected value, we return. 3723 // value3 is not an expected value, we return.
3724 if (!value3) 3724 if (!value3)
3725 return; 3725 return;
3726 3726
3727 valueList->next(); 3727 valueList->next();
3728 3728
3729 bool swapNeeded = false; 3729 bool swapNeeded = false;
3730 CSSValueID ident1 = static_cast<CSSValueID>(parsedValue1->getIdent()); 3730 CSSValueID ident1 = parsedValue1->getValueID();
3731 CSSValueID ident2 = static_cast<CSSValueID>(parsedValue2->getIdent()); 3731 CSSValueID ident2 = parsedValue2->getValueID();
3732 CSSValueID ident3 = static_cast<CSSValueID>(value3->getIdent()); 3732 CSSValueID ident3 = value3->getValueID();
3733 3733
3734 CSSValueID firstPositionKeyword; 3734 CSSValueID firstPositionKeyword;
3735 CSSValueID secondPositionKeyword; 3735 CSSValueID secondPositionKeyword;
3736 3736
3737 if (ident1 == CSSValueCenter) { 3737 if (ident1 == CSSValueCenter) {
3738 // <position> requires the first 'center' to be followed by a keyword. 3738 // <position> requires the first 'center' to be followed by a keyword.
3739 if (!isFillPositionKeyword(ident2)) 3739 if (!isFillPositionKeyword(ident2))
3740 return; 3740 return;
3741 3741
3742 // If 'center' is the first keyword then the last one needs to be a leng th. 3742 // If 'center' is the first keyword then the last one needs to be a leng th.
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
3791 value1 = createPrimitiveValuePair(parsedValue1, firstPositionValue); 3791 value1 = createPrimitiveValuePair(parsedValue1, firstPositionValue);
3792 value2 = createPrimitiveValuePair(cssValuePool().createIdentifierValue(s econdPositionKeyword), secondPositionValue); 3792 value2 = createPrimitiveValuePair(cssValuePool().createIdentifierValue(s econdPositionKeyword), secondPositionValue);
3793 } 3793 }
3794 3794
3795 if (ident1 == CSSValueTop || ident1 == CSSValueBottom || swapNeeded) 3795 if (ident1 == CSSValueTop || ident1 == CSSValueBottom || swapNeeded)
3796 value1.swap(value2); 3796 value1.swap(value2);
3797 3797
3798 #ifndef NDEBUG 3798 #ifndef NDEBUG
3799 CSSPrimitiveValue* first = toCSSPrimitiveValue(value1.get()); 3799 CSSPrimitiveValue* first = toCSSPrimitiveValue(value1.get());
3800 CSSPrimitiveValue* second = toCSSPrimitiveValue(value2.get()); 3800 CSSPrimitiveValue* second = toCSSPrimitiveValue(value2.get());
3801 ident1 = static_cast<CSSValueID>(first->getPairValue()->first()->getIdent()) ; 3801 ident1 = first->getPairValue()->first()->getValueID();
3802 ident2 = static_cast<CSSValueID>(second->getPairValue()->first()->getIdent() ); 3802 ident2 = second->getPairValue()->first()->getValueID();
3803 ASSERT(ident1 == CSSValueLeft || ident1 == CSSValueRight); 3803 ASSERT(ident1 == CSSValueLeft || ident1 == CSSValueRight);
3804 ASSERT(ident2 == CSSValueBottom || ident2 == CSSValueTop); 3804 ASSERT(ident2 == CSSValueBottom || ident2 == CSSValueTop);
3805 #endif 3805 #endif
3806 } 3806 }
3807 3807
3808 inline bool CSSParser::isPotentialPositionValue(CSSParserValue* value) 3808 inline bool CSSParser::isPotentialPositionValue(CSSParserValue* value)
3809 { 3809 {
3810 return isFillPositionKeyword(value->id) || validUnit(value, FPercent | FLeng th, ReleaseParsedCalcValue); 3810 return isFillPositionKeyword(value->id) || validUnit(value, FPercent | FLeng th, ReleaseParsedCalcValue);
3811 } 3811 }
3812 3812
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
3857 return; 3857 return;
3858 } 3858 }
3859 3859
3860 RefPtr<CSSPrimitiveValue> parsedValue1 = toCSSPrimitiveValue(value1.get()); 3860 RefPtr<CSSPrimitiveValue> parsedValue1 = toCSSPrimitiveValue(value1.get());
3861 RefPtr<CSSPrimitiveValue> parsedValue2 = toCSSPrimitiveValue(value2.get()); 3861 RefPtr<CSSPrimitiveValue> parsedValue2 = toCSSPrimitiveValue(value2.get());
3862 3862
3863 value1.clear(); 3863 value1.clear();
3864 value2.clear(); 3864 value2.clear();
3865 3865
3866 // Per CSS3 syntax, <position> can't have 'center' as its second keyword as we have more arguments to follow. 3866 // Per CSS3 syntax, <position> can't have 'center' as its second keyword as we have more arguments to follow.
3867 if (parsedValue2->getIdent() == CSSValueCenter) 3867 if (parsedValue2->getValueID() == CSSValueCenter)
3868 return; 3868 return;
3869 3869
3870 if (numberOfValues == 3) 3870 if (numberOfValues == 3)
3871 parse3ValuesFillPosition(valueList, value1, value2, parsedValue1.release (), parsedValue2.release()); 3871 parse3ValuesFillPosition(valueList, value1, value2, parsedValue1.release (), parsedValue2.release());
3872 else 3872 else
3873 parse4ValuesFillPosition(valueList, value1, value2, parsedValue1.release (), parsedValue2.release()); 3873 parse4ValuesFillPosition(valueList, value1, value2, parsedValue1.release (), parsedValue2.release());
3874 } 3874 }
3875 3875
3876 void CSSParser::parse2ValuesFillPosition(CSSParserValueList* valueList, RefPtr<C SSValue>& value1, RefPtr<CSSValue>& value2) 3876 void CSSParser::parse2ValuesFillPosition(CSSParserValueList* valueList, RefPtr<C SSValue>& value1, RefPtr<CSSValue>& value2)
3877 { 3877 {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
3948 id = value->id; 3948 id = value->id;
3949 if (id == CSSValueRepeat || id == CSSValueNoRepeat || id == CSSValueRoun d || id == CSSValueSpace) { 3949 if (id == CSSValueRepeat || id == CSSValueNoRepeat || id == CSSValueRoun d || id == CSSValueSpace) {
3950 value2 = cssValuePool().createIdentifierValue(id); 3950 value2 = cssValuePool().createIdentifierValue(id);
3951 m_valueList->next(); 3951 m_valueList->next();
3952 return; 3952 return;
3953 } 3953 }
3954 } 3954 }
3955 3955
3956 // If only one value was specified, value2 is the same as value1. 3956 // If only one value was specified, value2 is the same as value1.
3957 m_implicitShorthand = true; 3957 m_implicitShorthand = true;
3958 value2 = cssValuePool().createIdentifierValue(static_cast<CSSValueID>(toCSSP rimitiveValue(value1.get())->getIdent())); 3958 value2 = cssValuePool().createIdentifierValue(toCSSPrimitiveValue(value1.get ())->getValueID());
3959 } 3959 }
3960 3960
3961 PassRefPtr<CSSValue> CSSParser::parseFillSize(CSSPropertyID propId, bool& allowC omma) 3961 PassRefPtr<CSSValue> CSSParser::parseFillSize(CSSPropertyID propId, bool& allowC omma)
3962 { 3962 {
3963 allowComma = true; 3963 allowComma = true;
3964 CSSParserValue* value = m_valueList->current(); 3964 CSSParserValue* value = m_valueList->current();
3965 3965
3966 if (value->id == CSSValueContain || value->id == CSSValueCover) 3966 if (value->id == CSSValueContain || value->id == CSSValueCover)
3967 return cssValuePool().createIdentifierValue(value->id); 3967 return cssValuePool().createIdentifierValue(value->id);
3968 3968
(...skipping 3424 matching lines...) Expand 10 before | Expand all | Expand 10 after
7393 return false; 7393 return false;
7394 } 7394 }
7395 } else 7395 } else
7396 break; 7396 break;
7397 } 7397 }
7398 7398
7399 // You can specify size as a keyword or a length/percentage, not both. 7399 // You can specify size as a keyword or a length/percentage, not both.
7400 if (sizeValue && horizontalSize) 7400 if (sizeValue && horizontalSize)
7401 return false; 7401 return false;
7402 // Circles must have 0 or 1 lengths. 7402 // Circles must have 0 or 1 lengths.
7403 if (shapeValue && shapeValue->getIdent() == CSSValueCircle && verticalSize) 7403 if (shapeValue && shapeValue->getValueID() == CSSValueCircle && verticalSize )
7404 return false; 7404 return false;
7405 // Ellipses must have 0 or 2 length/percentages. 7405 // Ellipses must have 0 or 2 length/percentages.
7406 if (shapeValue && shapeValue->getIdent() == CSSValueEllipse && horizontalSiz e && !verticalSize) 7406 if (shapeValue && shapeValue->getValueID() == CSSValueEllipse && horizontalS ize && !verticalSize)
7407 return false; 7407 return false;
7408 // If there's only one size, it must be a length. 7408 // If there's only one size, it must be a length.
7409 if (!verticalSize && horizontalSize && horizontalSize->isPercentage()) 7409 if (!verticalSize && horizontalSize && horizontalSize->isPercentage())
7410 return false; 7410 return false;
7411 7411
7412 result->setShape(shapeValue); 7412 result->setShape(shapeValue);
7413 result->setSizingBehavior(sizeValue); 7413 result->setSizingBehavior(sizeValue);
7414 result->setEndHorizontalSize(horizontalSize); 7414 result->setEndHorizontalSize(horizontalSize);
7415 result->setEndVerticalSize(verticalSize); 7415 result->setEndVerticalSize(verticalSize);
7416 7416
(...skipping 588 matching lines...) Expand 10 before | Expand all | Expand 10 after
8005 if (a->unit != CSSParserValue::Operator || a->iValue != ',') 8005 if (a->unit != CSSParserValue::Operator || a->iValue != ',')
8006 return 0; 8006 return 0;
8007 a = args->next(); 8007 a = args->next();
8008 8008
8009 argNumber++; 8009 argNumber++;
8010 } 8010 }
8011 8011
8012 return transformValue.release(); 8012 return transformValue.release();
8013 } 8013 }
8014 8014
8015 bool CSSParser::isBlendMode(int ident) 8015 bool CSSParser::isBlendMode(CSSValueID valueID)
8016 { 8016 {
8017 return (ident >= CSSValueMultiply && ident <= CSSValueLuminosity) 8017 return (valueID >= CSSValueMultiply && valueID <= CSSValueLuminosity)
8018 || ident == CSSValueNormal 8018 || valueID == CSSValueNormal
8019 || ident == CSSValueOverlay; 8019 || valueID == CSSValueOverlay;
8020 } 8020 }
8021 8021
8022 bool CSSParser::isCompositeOperator(int ident) 8022 bool CSSParser::isCompositeOperator(CSSValueID valueID)
8023 { 8023 {
8024 // FIXME: Add CSSValueDestination and CSSValueLighter when the Compositing s pec updates. 8024 // FIXME: Add CSSValueDestination and CSSValueLighter when the Compositing s pec updates.
8025 return ident >= CSSValueClear && ident <= CSSValueXor; 8025 return valueID >= CSSValueClear && valueID <= CSSValueXor;
8026 } 8026 }
8027 8027
8028 static void filterInfoForName(const CSSParserString& name, CSSFilterValue::Filte rOperationType& filterType, unsigned& maximumArgumentCount) 8028 static void filterInfoForName(const CSSParserString& name, CSSFilterValue::Filte rOperationType& filterType, unsigned& maximumArgumentCount)
8029 { 8029 {
8030 if (equalIgnoringCase(name, "grayscale(")) 8030 if (equalIgnoringCase(name, "grayscale("))
8031 filterType = CSSFilterValue::GrayscaleFilterOperation; 8031 filterType = CSSFilterValue::GrayscaleFilterOperation;
8032 else if (equalIgnoringCase(name, "sepia(")) 8032 else if (equalIgnoringCase(name, "sepia("))
8033 filterType = CSSFilterValue::SepiaFilterOperation; 8033 filterType = CSSFilterValue::SepiaFilterOperation;
8034 else if (equalIgnoringCase(name, "saturate(")) 8034 else if (equalIgnoringCase(name, "saturate("))
8035 filterType = CSSFilterValue::SaturateFilterOperation; 8035 filterType = CSSFilterValue::SaturateFilterOperation;
(...skipping 3712 matching lines...) Expand 10 before | Expand all | Expand 10 after
11748 { 11748 {
11749 // The tokenizer checks for the construct of an+b. 11749 // The tokenizer checks for the construct of an+b.
11750 // However, since the {ident} rule precedes the {nth} rule, some of those 11750 // However, since the {ident} rule precedes the {nth} rule, some of those
11751 // tokens are identified as string literal. Furthermore we need to accept 11751 // tokens are identified as string literal. Furthermore we need to accept
11752 // "odd" and "even" which does not match to an+b. 11752 // "odd" and "even" which does not match to an+b.
11753 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even") 11753 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even")
11754 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n"); 11754 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n");
11755 } 11755 }
11756 11756
11757 } 11757 }
OLDNEW
« no previous file with comments | « Source/core/css/CSSParser.h ('k') | Source/core/css/CSSParserValues.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698