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

Side by Side Diff: Source/core/css/parser/BisonCSSParser-in.cpp

Issue 153233002: *** DO NOT LAND *** Remove regions support, keeping a bare minimum to support "region-based"... (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 10 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 | « Source/core/css/parser/BisonCSSParser.h ('k') | Source/core/css/resolver/ScopedStyleResolver.h » ('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 737 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 return true; 748 return true;
749 break; 749 break;
750 case CSSPropertyInternalMarqueeStyle: 750 case CSSPropertyInternalMarqueeStyle:
751 if (valueID == CSSValueNone || valueID == CSSValueSlide || valueID == CS SValueScroll || valueID == CSSValueAlternate) 751 if (valueID == CSSValueNone || valueID == CSSValueSlide || valueID == CS SValueScroll || valueID == CSSValueAlternate)
752 return true; 752 return true;
753 break; 753 break;
754 case CSSPropertyWebkitPrintColorAdjust: 754 case CSSPropertyWebkitPrintColorAdjust:
755 if (valueID == CSSValueExact || valueID == CSSValueEconomy) 755 if (valueID == CSSValueExact || valueID == CSSValueEconomy)
756 return true; 756 return true;
757 break; 757 break;
758 case CSSPropertyWebkitRegionBreakAfter:
759 case CSSPropertyWebkitRegionBreakBefore:
760 if (RuntimeEnabledFeatures::cssRegionsEnabled() && (valueID == CSSValueA uto || valueID == CSSValueAlways || valueID == CSSValueAvoid || valueID == CSSVa lueLeft || valueID == CSSValueRight))
761 return true;
762 break;
763 case CSSPropertyWebkitRegionBreakInside:
764 if (RuntimeEnabledFeatures::cssRegionsEnabled() && (valueID == CSSValueA uto || valueID == CSSValueAvoid))
765 return true;
766 break;
767 case CSSPropertyWebkitRegionFragment:
768 if (RuntimeEnabledFeatures::cssRegionsEnabled() && (valueID == CSSValueA uto || valueID == CSSValueBreak))
769 return true;
770 break;
771 case CSSPropertyWebkitRtlOrdering: 758 case CSSPropertyWebkitRtlOrdering:
772 if (valueID == CSSValueLogical || valueID == CSSValueVisual) 759 if (valueID == CSSValueLogical || valueID == CSSValueVisual)
773 return true; 760 return true;
774 break; 761 break;
775 762
776 case CSSPropertyWebkitRubyPosition: 763 case CSSPropertyWebkitRubyPosition:
777 if (valueID == CSSValueBefore || valueID == CSSValueAfter) 764 if (valueID == CSSValueBefore || valueID == CSSValueAfter)
778 return true; 765 return true;
779 break; 766 break;
780 767
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 case CSSPropertyWebkitLineAlign: 902 case CSSPropertyWebkitLineAlign:
916 case CSSPropertyWebkitLineBreak: 903 case CSSPropertyWebkitLineBreak:
917 case CSSPropertyWebkitLineSnap: 904 case CSSPropertyWebkitLineSnap:
918 case CSSPropertyWebkitMarginAfterCollapse: 905 case CSSPropertyWebkitMarginAfterCollapse:
919 case CSSPropertyWebkitMarginBeforeCollapse: 906 case CSSPropertyWebkitMarginBeforeCollapse:
920 case CSSPropertyWebkitMarginBottomCollapse: 907 case CSSPropertyWebkitMarginBottomCollapse:
921 case CSSPropertyWebkitMarginTopCollapse: 908 case CSSPropertyWebkitMarginTopCollapse:
922 case CSSPropertyInternalMarqueeDirection: 909 case CSSPropertyInternalMarqueeDirection:
923 case CSSPropertyInternalMarqueeStyle: 910 case CSSPropertyInternalMarqueeStyle:
924 case CSSPropertyWebkitPrintColorAdjust: 911 case CSSPropertyWebkitPrintColorAdjust:
925 case CSSPropertyWebkitRegionBreakAfter:
926 case CSSPropertyWebkitRegionBreakBefore:
927 case CSSPropertyWebkitRegionBreakInside:
928 case CSSPropertyWebkitRegionFragment:
929 case CSSPropertyWebkitRtlOrdering: 912 case CSSPropertyWebkitRtlOrdering:
930 case CSSPropertyWebkitRubyPosition: 913 case CSSPropertyWebkitRubyPosition:
931 case CSSPropertyWebkitTextCombine: 914 case CSSPropertyWebkitTextCombine:
932 case CSSPropertyWebkitTextEmphasisPosition: 915 case CSSPropertyWebkitTextEmphasisPosition:
933 case CSSPropertyWebkitTextSecurity: 916 case CSSPropertyWebkitTextSecurity:
934 case CSSPropertyWebkitTransformStyle: 917 case CSSPropertyWebkitTransformStyle:
935 case CSSPropertyWebkitUserDrag: 918 case CSSPropertyWebkitUserDrag:
936 case CSSPropertyWebkitUserModify: 919 case CSSPropertyWebkitUserModify:
937 case CSSPropertyWebkitUserSelect: 920 case CSSPropertyWebkitUserSelect:
938 case CSSPropertyWebkitWrapFlow: 921 case CSSPropertyWebkitWrapFlow:
(...skipping 1396 matching lines...) Expand 10 before | Expand all | Expand 10 after
2335 validPrimitive = true; 2318 validPrimitive = true;
2336 else 2319 else
2337 validPrimitive = validUnit(value, FInteger | FNonNeg); 2320 validPrimitive = validUnit(value, FInteger | FNonNeg);
2338 break; 2321 break;
2339 case CSSPropertyInternalMarqueeSpeed: 2322 case CSSPropertyInternalMarqueeSpeed:
2340 if (id == CSSValueNormal || id == CSSValueSlow || id == CSSValueFast) 2323 if (id == CSSValueNormal || id == CSSValueSlow || id == CSSValueFast)
2341 validPrimitive = true; 2324 validPrimitive = true;
2342 else 2325 else
2343 validPrimitive = validUnit(value, FTime | FInteger | FNonNeg); 2326 validPrimitive = validUnit(value, FTime | FInteger | FNonNeg);
2344 break; 2327 break;
2345 case CSSPropertyWebkitFlowInto:
2346 if (!RuntimeEnabledFeatures::cssRegionsEnabled())
2347 return false;
2348 return parseFlowThread(propId, important);
2349 case CSSPropertyWebkitFlowFrom:
2350 if (!RuntimeEnabledFeatures::cssRegionsEnabled())
2351 return false;
2352 return parseRegionThread(propId, important);
2353 case CSSPropertyWebkitTransform: 2328 case CSSPropertyWebkitTransform:
2354 if (id == CSSValueNone) 2329 if (id == CSSValueNone)
2355 validPrimitive = true; 2330 validPrimitive = true;
2356 else { 2331 else {
2357 RefPtr<CSSValue> transformValue = parseTransform(); 2332 RefPtr<CSSValue> transformValue = parseTransform();
2358 if (transformValue) { 2333 if (transformValue) {
2359 addProperty(propId, transformValue.release(), important); 2334 addProperty(propId, transformValue.release(), important);
2360 return true; 2335 return true;
2361 } 2336 }
2362 return false; 2337 return false;
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
2832 case CSSPropertyWebkitLineAlign: 2807 case CSSPropertyWebkitLineAlign:
2833 case CSSPropertyWebkitLineBreak: 2808 case CSSPropertyWebkitLineBreak:
2834 case CSSPropertyWebkitLineSnap: 2809 case CSSPropertyWebkitLineSnap:
2835 case CSSPropertyWebkitMarginAfterCollapse: 2810 case CSSPropertyWebkitMarginAfterCollapse:
2836 case CSSPropertyWebkitMarginBeforeCollapse: 2811 case CSSPropertyWebkitMarginBeforeCollapse:
2837 case CSSPropertyWebkitMarginBottomCollapse: 2812 case CSSPropertyWebkitMarginBottomCollapse:
2838 case CSSPropertyWebkitMarginTopCollapse: 2813 case CSSPropertyWebkitMarginTopCollapse:
2839 case CSSPropertyInternalMarqueeDirection: 2814 case CSSPropertyInternalMarqueeDirection:
2840 case CSSPropertyInternalMarqueeStyle: 2815 case CSSPropertyInternalMarqueeStyle:
2841 case CSSPropertyWebkitPrintColorAdjust: 2816 case CSSPropertyWebkitPrintColorAdjust:
2842 case CSSPropertyWebkitRegionBreakAfter:
2843 case CSSPropertyWebkitRegionBreakBefore:
2844 case CSSPropertyWebkitRegionBreakInside:
2845 case CSSPropertyWebkitRegionFragment:
2846 case CSSPropertyWebkitRtlOrdering: 2817 case CSSPropertyWebkitRtlOrdering:
2847 case CSSPropertyWebkitRubyPosition: 2818 case CSSPropertyWebkitRubyPosition:
2848 case CSSPropertyWebkitTextCombine: 2819 case CSSPropertyWebkitTextCombine:
2849 case CSSPropertyWebkitTextEmphasisPosition: 2820 case CSSPropertyWebkitTextEmphasisPosition:
2850 case CSSPropertyWebkitTextSecurity: 2821 case CSSPropertyWebkitTextSecurity:
2851 case CSSPropertyWebkitTransformStyle: 2822 case CSSPropertyWebkitTransformStyle:
2852 case CSSPropertyWebkitUserDrag: 2823 case CSSPropertyWebkitUserDrag:
2853 case CSSPropertyWebkitUserModify: 2824 case CSSPropertyWebkitUserModify:
2854 case CSSPropertyWebkitUserSelect: 2825 case CSSPropertyWebkitUserSelect:
2855 case CSSPropertyWebkitWrapFlow: 2826 case CSSPropertyWebkitWrapFlow:
(...skipping 5983 matching lines...) Expand 10 before | Expand all | Expand 10 after
8839 if (!filterValue) 8810 if (!filterValue)
8840 return 0; 8811 return 0;
8841 8812
8842 list->append(filterValue); 8813 list->append(filterValue);
8843 } 8814 }
8844 } 8815 }
8845 8816
8846 return list.release(); 8817 return list.release();
8847 } 8818 }
8848 8819
8849 static bool validFlowName(const String& flowName)
8850 {
8851 return !(equalIgnoringCase(flowName, "auto")
8852 || equalIgnoringCase(flowName, "default")
8853 || equalIgnoringCase(flowName, "inherit")
8854 || equalIgnoringCase(flowName, "initial")
8855 || equalIgnoringCase(flowName, "none"));
8856 }
8857
8858 // none | <ident>
8859 bool BisonCSSParser::parseFlowThread(CSSPropertyID propId, bool important)
8860 {
8861 ASSERT(propId == CSSPropertyWebkitFlowInto);
8862 ASSERT(RuntimeEnabledFeatures::cssRegionsEnabled());
8863
8864 if (m_valueList->size() != 1)
8865 return false;
8866
8867 CSSParserValue* value = m_valueList->current();
8868 if (!value)
8869 return false;
8870
8871 if (value->unit != CSSPrimitiveValue::CSS_IDENT)
8872 return false;
8873
8874 if (value->id == CSSValueNone) {
8875 addProperty(propId, cssValuePool().createIdentifierValue(value->id), imp ortant);
8876 return true;
8877 }
8878
8879 String inputProperty = String(value->string);
8880 if (!inputProperty.isEmpty()) {
8881 if (!validFlowName(inputProperty))
8882 return false;
8883 addProperty(propId, cssValuePool().createValue(inputProperty, CSSPrimiti veValue::CSS_STRING), important);
8884 } else
8885 addProperty(propId, cssValuePool().createIdentifierValue(CSSValueNone), important);
8886
8887 return true;
8888 }
8889
8890 // -webkit-flow-from: none | <ident>
8891 bool BisonCSSParser::parseRegionThread(CSSPropertyID propId, bool important)
8892 {
8893 ASSERT(propId == CSSPropertyWebkitFlowFrom);
8894 ASSERT(RuntimeEnabledFeatures::cssRegionsEnabled());
8895
8896 if (m_valueList->size() != 1)
8897 return false;
8898
8899 CSSParserValue* value = m_valueList->current();
8900 if (!value)
8901 return false;
8902
8903 if (value->unit != CSSPrimitiveValue::CSS_IDENT)
8904 return false;
8905
8906 if (value->id == CSSValueNone)
8907 addProperty(propId, cssValuePool().createIdentifierValue(value->id), imp ortant);
8908 else {
8909 String inputProperty = String(value->string);
8910 if (!inputProperty.isEmpty()) {
8911 if (!validFlowName(inputProperty))
8912 return false;
8913 addProperty(propId, cssValuePool().createValue(inputProperty, CSSPri mitiveValue::CSS_STRING), important);
8914 } else
8915 addProperty(propId, cssValuePool().createIdentifierValue(CSSValueNon e), important);
8916 }
8917
8918 return true;
8919 }
8920
8921 bool BisonCSSParser::parseTransformOrigin(CSSPropertyID propId, CSSPropertyID& p ropId1, CSSPropertyID& propId2, CSSPropertyID& propId3, RefPtr<CSSValue>& value, RefPtr<CSSValue>& value2, RefPtr<CSSValue>& value3) 8820 bool BisonCSSParser::parseTransformOrigin(CSSPropertyID propId, CSSPropertyID& p ropId1, CSSPropertyID& propId2, CSSPropertyID& propId3, RefPtr<CSSValue>& value, RefPtr<CSSValue>& value2, RefPtr<CSSValue>& value3)
8922 { 8821 {
8923 propId1 = propId; 8822 propId1 = propId;
8924 propId2 = propId; 8823 propId2 = propId;
8925 propId3 = propId; 8824 propId3 = propId;
8926 if (propId == CSSPropertyWebkitTransformOrigin) { 8825 if (propId == CSSPropertyWebkitTransformOrigin) {
8927 propId1 = CSSPropertyWebkitTransformOriginX; 8826 propId1 = CSSPropertyWebkitTransformOriginX;
8928 propId2 = CSSPropertyWebkitTransformOriginY; 8827 propId2 = CSSPropertyWebkitTransformOriginY;
8929 propId3 = CSSPropertyWebkitTransformOriginZ; 8828 propId3 = CSSPropertyWebkitTransformOriginZ;
8930 } 8829 }
(...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after
9940 selectorVector.append(pageSelector); 9839 selectorVector.append(pageSelector);
9941 rule->parserAdoptSelectorVector(selectorVector); 9840 rule->parserAdoptSelectorVector(selectorVector);
9942 rule->setProperties(createStylePropertySet()); 9841 rule->setProperties(createStylePropertySet());
9943 pageRule = rule.get(); 9842 pageRule = rule.get();
9944 m_parsedRules.append(rule.release()); 9843 m_parsedRules.append(rule.release());
9945 } 9844 }
9946 clearProperties(); 9845 clearProperties();
9947 return pageRule; 9846 return pageRule;
9948 } 9847 }
9949 9848
9950 void BisonCSSParser::setReusableRegionSelectorVector(Vector<OwnPtr<CSSParserSele ctor> >* selectors)
9951 {
9952 if (selectors)
9953 m_reusableRegionSelectorVector.swap(*selectors);
9954 }
9955
9956 StyleRuleBase* BisonCSSParser::createRegionRule(Vector<OwnPtr<CSSParserSelector> >* regionSelector, RuleList* rules)
9957 {
9958 if (m_useCounter)
9959 m_useCounter->count(UseCounter::CSSWebkitRegionAtRule);
9960
9961 if (!RuntimeEnabledFeatures::cssRegionsEnabled() || !regionSelector || !rule s)
9962 return 0;
9963
9964 m_allowImportRules = m_allowNamespaceDeclarations = false;
9965
9966 RefPtr<StyleRuleRegion> regionRule = StyleRuleRegion::create(regionSelector, *rules);
9967
9968 StyleRuleRegion* result = regionRule.get();
9969 m_parsedRules.append(regionRule.release());
9970 if (m_observer)
9971 m_observer->startEndUnknownRule();
9972
9973 return result;
9974 }
9975
9976 StyleRuleBase* BisonCSSParser::createMarginAtRule(CSSSelector::MarginBoxType /* marginBox */) 9849 StyleRuleBase* BisonCSSParser::createMarginAtRule(CSSSelector::MarginBoxType /* marginBox */)
9977 { 9850 {
9978 // FIXME: Implement margin at-rule here, using: 9851 // FIXME: Implement margin at-rule here, using:
9979 // - marginBox: margin box 9852 // - marginBox: margin box
9980 // - m_parsedProperties: properties at [m_numParsedPropertiesBeforeMa rginBox, m_parsedProperties.size()] are for this at-rule. 9853 // - m_parsedProperties: properties at [m_numParsedPropertiesBeforeMa rginBox, m_parsedProperties.size()] are for this at-rule.
9981 // Don't forget to also update the action for page symbol in CSSGrammar.y su ch that margin at-rule data is cleared if page_selector is invalid. 9854 // Don't forget to also update the action for page symbol in CSSGrammar.y su ch that margin at-rule data is cleared if page_selector is invalid.
9982 9855
9983 endDeclarationsForMarginBox(); 9856 endDeclarationsForMarginBox();
9984 return 0; // until this method is implemented. 9857 return 0; // until this method is implemented.
9985 } 9858 }
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
10285 { 10158 {
10286 // The tokenizer checks for the construct of an+b. 10159 // The tokenizer checks for the construct of an+b.
10287 // However, since the {ident} rule precedes the {nth} rule, some of those 10160 // However, since the {ident} rule precedes the {nth} rule, some of those
10288 // tokens are identified as string literal. Furthermore we need to accept 10161 // tokens are identified as string literal. Furthermore we need to accept
10289 // "odd" and "even" which does not match to an+b. 10162 // "odd" and "even" which does not match to an+b.
10290 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even") 10163 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even")
10291 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n"); 10164 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n");
10292 } 10165 }
10293 10166
10294 } 10167 }
OLDNEW
« no previous file with comments | « Source/core/css/parser/BisonCSSParser.h ('k') | Source/core/css/resolver/ScopedStyleResolver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698