Changeset 155536 in webkit for trunk/Source/WebCore/css/CSSParser.cpp
- Timestamp:
- Sep 11, 2013, 9:48:20 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/css/CSSParser.cpp
r155496 r155536 358 358 { 359 359 clearProperties(); 360 361 deleteAllValues(m_floatingSelectors);362 deleteAllValues(m_floatingSelectorVectors);363 deleteAllValues(m_floatingValueLists);364 deleteAllValues(m_floatingFunctions);365 360 } 366 361 … … 523 518 #if ENABLE(CSS3_TEXT) 524 519 case CSSPropertyWebkitTextDecorationColor: 525 #endif // CSS3_TEXT520 #endif 526 521 case CSSPropertyWebkitTextEmphasisColor: 527 522 case CSSPropertyWebkitTextFillColor: … … 9238 9233 } 9239 9234 9240 StyleRuleBase*CSSParser::createFilterRule(const CSSParserString& filterName)9235 PassRefPtr<StyleRuleBase> CSSParser::createFilterRule(const CSSParserString& filterName) 9241 9236 { 9242 9237 RefPtr<StyleRuleFilter> rule = StyleRuleFilter::create(filterName, createStylePropertySet()); 9243 9238 clearProperties(); 9244 StyleRuleFilter* result = rule.get();9245 m_parsedRules.append(rule.release());9246 9239 processAndAddNewRuleToSourceTreeIfNeeded(); 9247 return r esult;9240 return rule.release(); 9248 9241 } 9249 9242 … … 11465 11458 } 11466 11459 11467 CSSParserSelector* CSSParser::createFloatingSelectorWithTagName(const QualifiedName& tagQName) 11468 { 11469 CSSParserSelector* selector = new CSSParserSelector(tagQName); 11470 m_floatingSelectors.add(selector); 11471 return selector; 11472 } 11473 11474 CSSParserSelector* CSSParser::createFloatingSelector() 11475 { 11476 CSSParserSelector* selector = new CSSParserSelector; 11477 m_floatingSelectors.add(selector); 11478 return selector; 11479 } 11480 11481 PassOwnPtr<CSSParserSelector> CSSParser::sinkFloatingSelector(CSSParserSelector* selector) 11482 { 11483 if (selector) { 11484 ASSERT(m_floatingSelectors.contains(selector)); 11485 m_floatingSelectors.remove(selector); 11486 } 11487 return adoptPtr(selector); 11488 } 11489 11490 Vector<OwnPtr<CSSParserSelector> >* CSSParser::createFloatingSelectorVector() 11491 { 11492 Vector<OwnPtr<CSSParserSelector> >* selectorVector = new Vector<OwnPtr<CSSParserSelector> >; 11493 m_floatingSelectorVectors.add(selectorVector); 11494 return selectorVector; 11495 } 11496 11497 PassOwnPtr<Vector<OwnPtr<CSSParserSelector> > > CSSParser::sinkFloatingSelectorVector(Vector<OwnPtr<CSSParserSelector> >* selectorVector) 11498 { 11499 if (selectorVector) { 11500 ASSERT(m_floatingSelectorVectors.contains(selectorVector)); 11501 m_floatingSelectorVectors.remove(selectorVector); 11502 } 11503 return adoptPtr(selectorVector); 11504 } 11505 11506 CSSParserValueList* CSSParser::createFloatingValueList() 11507 { 11508 CSSParserValueList* list = new CSSParserValueList; 11509 m_floatingValueLists.add(list); 11510 return list; 11511 } 11512 11513 PassOwnPtr<CSSParserValueList> CSSParser::sinkFloatingValueList(CSSParserValueList* list) 11514 { 11515 if (list) { 11516 ASSERT(m_floatingValueLists.contains(list)); 11517 m_floatingValueLists.remove(list); 11518 } 11519 return adoptPtr(list); 11520 } 11521 11522 CSSParserFunction* CSSParser::createFloatingFunction() 11523 { 11524 CSSParserFunction* function = new CSSParserFunction; 11525 m_floatingFunctions.add(function); 11526 return function; 11527 } 11528 11529 PassOwnPtr<CSSParserFunction> CSSParser::sinkFloatingFunction(CSSParserFunction* function) 11530 { 11531 if (function) { 11532 ASSERT(m_floatingFunctions.contains(function)); 11533 m_floatingFunctions.remove(function); 11534 } 11535 return adoptPtr(function); 11536 } 11537 11538 CSSParserValue& CSSParser::sinkFloatingValue(CSSParserValue& value) 11539 { 11540 if (value.unit == CSSParserValue::Function) { 11541 ASSERT(m_floatingFunctions.contains(value.function)); 11542 m_floatingFunctions.remove(value.function); 11543 } 11544 return value; 11545 } 11546 11547 MediaQueryExp* CSSParser::createFloatingMediaQueryExp(const AtomicString& mediaFeature, CSSParserValueList* values) 11548 { 11549 m_floatingMediaQueryExp = MediaQueryExp::create(mediaFeature, values); 11550 return m_floatingMediaQueryExp.get(); 11551 } 11552 11553 PassOwnPtr<MediaQueryExp> CSSParser::sinkFloatingMediaQueryExp(MediaQueryExp* expression) 11554 { 11555 ASSERT_UNUSED(expression, expression == m_floatingMediaQueryExp); 11556 return m_floatingMediaQueryExp.release(); 11557 } 11558 11559 Vector<OwnPtr<MediaQueryExp> >* CSSParser::createFloatingMediaQueryExpList() 11560 { 11561 m_floatingMediaQueryExpList = adoptPtr(new Vector<OwnPtr<MediaQueryExp> >); 11562 return m_floatingMediaQueryExpList.get(); 11563 } 11564 11565 PassOwnPtr<Vector<OwnPtr<MediaQueryExp> > > CSSParser::sinkFloatingMediaQueryExpList(Vector<OwnPtr<MediaQueryExp> >* list) 11566 { 11567 ASSERT_UNUSED(list, list == m_floatingMediaQueryExpList); 11568 return m_floatingMediaQueryExpList.release(); 11569 } 11570 11571 MediaQuery* CSSParser::createFloatingMediaQuery(MediaQuery::Restrictor restrictor, const String& mediaType, PassOwnPtr<Vector<OwnPtr<MediaQueryExp> > > expressions) 11572 { 11573 m_floatingMediaQuery = adoptPtr(new MediaQuery(restrictor, mediaType, expressions)); 11574 return m_floatingMediaQuery.get(); 11575 } 11576 11577 MediaQuery* CSSParser::createFloatingMediaQuery(PassOwnPtr<Vector<OwnPtr<MediaQueryExp> > > expressions) 11578 { 11579 return createFloatingMediaQuery(MediaQuery::None, "all", expressions); 11580 } 11581 11582 PassOwnPtr<MediaQuery> CSSParser::sinkFloatingMediaQuery(MediaQuery* query) 11583 { 11584 ASSERT_UNUSED(query, query == m_floatingMediaQuery); 11585 return m_floatingMediaQuery.release(); 11586 } 11587 11588 Vector<RefPtr<StyleKeyframe> >* CSSParser::createFloatingKeyframeVector() 11589 { 11590 m_floatingKeyframeVector = adoptPtr(new Vector<RefPtr<StyleKeyframe> >()); 11591 return m_floatingKeyframeVector.get(); 11592 } 11593 11594 PassOwnPtr<Vector<RefPtr<StyleKeyframe> > > CSSParser::sinkFloatingKeyframeVector(Vector<RefPtr<StyleKeyframe> >* keyframeVector) 11595 { 11596 ASSERT_UNUSED(keyframeVector, m_floatingKeyframeVector == keyframeVector); 11597 return m_floatingKeyframeVector.release(); 11598 } 11599 11600 MediaQuerySet* CSSParser::createMediaQuerySet() 11601 { 11602 RefPtr<MediaQuerySet> queries = MediaQuerySet::create(); 11603 MediaQuerySet* result = queries.get(); 11604 m_parsedMediaQuerySets.append(queries.release()); 11605 return result; 11606 } 11607 11608 StyleRuleBase* CSSParser::createImportRule(const CSSParserString& url, MediaQuerySet* media) 11460 PassRefPtr<StyleRuleBase> CSSParser::createImportRule(const CSSParserString& url, PassRefPtr<MediaQuerySet> media) 11609 11461 { 11610 11462 if (!media || !m_allowImportRules) { … … 11613 11465 } 11614 11466 RefPtr<StyleRuleImport> rule = StyleRuleImport::create(url, media); 11615 StyleRuleImport* result = rule.get();11616 m_parsedRules.append(rule.release());11617 11467 processAndAddNewRuleToSourceTreeIfNeeded(); 11618 return r esult;11619 } 11620 11621 StyleRuleBase* CSSParser::createMediaRule(MediaQuerySet*media, RuleList* rules)11468 return rule.release(); 11469 } 11470 11471 PassRefPtr<StyleRuleBase> CSSParser::createMediaRule(PassRefPtr<MediaQuerySet> media, RuleList* rules) 11622 11472 { 11623 11473 m_allowImportRules = m_allowNamespaceDeclarations = false; … … 11630 11480 } else 11631 11481 rule = StyleRuleMedia::create(media, rules ? *rules : emptyRules); 11632 StyleRuleMedia* result = rule.get();11633 m_parsedRules.append(rule.release());11634 11482 processAndAddNewRuleToSourceTreeIfNeeded(); 11635 return r esult;11636 } 11637 11638 StyleRuleBase*CSSParser::createEmptyMediaRule(RuleList* rules)11639 { 11640 return createMediaRule(MediaQuerySet::create() .get(), rules);11483 return rule.release(); 11484 } 11485 11486 PassRefPtr<StyleRuleBase> CSSParser::createEmptyMediaRule(RuleList* rules) 11487 { 11488 return createMediaRule(MediaQuerySet::create(), rules); 11641 11489 } 11642 11490 11643 11491 #if ENABLE(CSS3_CONDITIONAL_RULES) 11644 StyleRuleBase*CSSParser::createSupportsRule(bool conditionIsSupported, RuleList* rules)11492 PassRefPtr<StyleRuleBase> CSSParser::createSupportsRule(bool conditionIsSupported, RuleList* rules) 11645 11493 { 11646 11494 m_allowImportRules = m_allowNamespaceDeclarations = false; … … 11664 11512 } 11665 11513 11666 StyleRuleSupports* result = rule.get();11667 m_parsedRules.append(rule.release());11668 11514 processAndAddNewRuleToSourceTreeIfNeeded(); 11669 11515 11670 return r esult;11516 return rule.release(); 11671 11517 } 11672 11518 … … 11700 11546 11701 11547 #endif 11702 11703 CSSParser::RuleList* CSSParser::createRuleList()11704 {11705 OwnPtr<RuleList> list = adoptPtr(new RuleList);11706 RuleList* listPtr = list.get();11707 11708 m_parsedRuleLists.append(list.release());11709 return listPtr;11710 }11711 11548 11712 11549 void CSSParser::processAndAddNewRuleToSourceTreeIfNeeded() … … 11774 11611 void CSSParser::logError(const String& message, int lineNumber) 11775 11612 { 11776 // FIXME: <http://webkit.org/b/114313> CSS Parser ConsoleMessage errors should include column numbers11613 // FIXME: <http://webkit.org/b/114313> CSS parser console message errors should include column numbers. 11777 11614 PageConsole& console = m_styleSheet->singleOwnerDocument()->page()->console(); 11778 11615 console.addMessage(CSSMessageSource, WarningMessageLevel, message, m_styleSheet->baseURL().string(), lineNumber + 1, 0); 11779 11616 } 11780 11617 11781 StyleRuleKeyframes* CSSParser::createKeyframesRule(const String& name, PassOwnPtr<Vector<RefPtr<StyleKeyframe> >> popKeyframes)11782 { 11783 OwnPtr<Vector<RefPtr<StyleKeyframe> >> keyframes = popKeyframes;11618 PassRefPtr<StyleRuleKeyframes> CSSParser::createKeyframesRule(const String& name, PassOwnPtr<Vector<RefPtr<StyleKeyframe>>> popKeyframes) 11619 { 11620 OwnPtr<Vector<RefPtr<StyleKeyframe>>> keyframes = popKeyframes; 11784 11621 m_allowImportRules = m_allowNamespaceDeclarations = false; 11785 11622 RefPtr<StyleRuleKeyframes> rule = StyleRuleKeyframes::create(); … … 11787 11624 rule->parserAppendKeyframe(keyframes->at(i)); 11788 11625 rule->setName(name); 11789 StyleRuleKeyframes* rulePtr = rule.get();11790 m_parsedRules.append(rule.release());11791 11626 processAndAddNewRuleToSourceTreeIfNeeded(); 11792 return rule Ptr;11793 } 11794 11795 StyleRuleBase* CSSParser::createStyleRule(Vector<OwnPtr<CSSParserSelector>>* selectors)11796 { 11797 StyleRule* result = 0;11627 return rule.release(); 11628 } 11629 11630 PassRefPtr<StyleRuleBase> CSSParser::createStyleRule(Vector<OwnPtr<CSSParserSelector>>* selectors) 11631 { 11632 RefPtr<StyleRule> rule; 11798 11633 if (selectors) { 11799 11634 m_allowImportRules = false; … … 11801 11636 if (m_hasFontFaceOnlyValues) 11802 11637 deleteFontFaceOnlyValues(); 11803 RefPtr<StyleRule>rule = StyleRule::create(m_lastSelectorLineNumber, createStylePropertySet());11638 rule = StyleRule::create(m_lastSelectorLineNumber, createStylePropertySet()); 11804 11639 rule->parserAdoptSelectorVector(*selectors); 11805 result = rule.get();11806 m_parsedRules.append(rule.release());11807 11640 processAndAddNewRuleToSourceTreeIfNeeded(); 11808 11641 } else 11809 11642 popRuleData(); 11810 11643 clearProperties(); 11811 return r esult;11812 } 11813 11814 StyleRuleBase*CSSParser::createFontFaceRule()11644 return rule.release(); 11645 } 11646 11647 PassRefPtr<StyleRuleBase> CSSParser::createFontFaceRule() 11815 11648 { 11816 11649 m_allowImportRules = m_allowNamespaceDeclarations = false; … … 11831 11664 RefPtr<StyleRuleFontFace> rule = StyleRuleFontFace::create(createStylePropertySet()); 11832 11665 clearProperties(); 11833 StyleRuleFontFace* result = rule.get();11834 m_parsedRules.append(rule.release());11835 11666 processAndAddNewRuleToSourceTreeIfNeeded(); 11836 return r esult;11667 return rule.release(); 11837 11668 } 11838 11669 11839 11670 #if ENABLE(SHADOW_DOM) 11840 StyleRuleBase*CSSParser::createHostRule(RuleList* rules)11671 PassRefPtr<StyleRuleBase> CSSParser::createHostRule(RuleList* rules) 11841 11672 { 11842 11673 m_allowImportRules = m_allowNamespaceDeclarations = false; … … 11848 11679 rule = StyleRuleHost::create(emptyRules); 11849 11680 } 11850 StyleRuleHost* result = rule.get();11851 m_parsedRules.append(rule.release());11852 11681 processAndAddNewRuleToSourceTreeIfNeeded(); 11853 return r esult;11682 return rule.release(); 11854 11683 } 11855 11684 #endif … … 11872 11701 } 11873 11702 11874 CSSParserSelector* CSSParser::rewriteSpecifiersWithNamespaceIfNeeded(CSSParserSelector* specifiers) 11875 { 11876 if (m_defaultNamespace != starAtom || specifiers->isCustomPseudoElement()) 11877 return rewriteSpecifiersWithElementName(nullAtom, starAtom, specifiers, /*tagIsForNamespaceRule*/true); 11878 return specifiers; 11879 } 11880 11881 CSSParserSelector* CSSParser::rewriteSpecifiersWithElementName(const AtomicString& namespacePrefix, const AtomicString& elementName, CSSParserSelector* specifiers, bool tagIsForNamespaceRule) 11703 void CSSParser::rewriteSpecifiersWithNamespaceIfNeeded(CSSParserSelector& specifiers) 11704 { 11705 if (m_defaultNamespace != starAtom || specifiers.isCustomPseudoElement()) 11706 rewriteSpecifiersWithElementName(nullAtom, starAtom, specifiers, /*tagIsForNamespaceRule*/true); 11707 } 11708 11709 void CSSParser::rewriteSpecifiersWithElementName(const AtomicString& namespacePrefix, const AtomicString& elementName, CSSParserSelector& specifiers, bool tagIsForNamespaceRule) 11882 11710 { 11883 11711 AtomicString determinedNamespace = namespacePrefix != nullAtom && m_styleSheet ? m_styleSheet->determineNamespace(namespacePrefix) : m_defaultNamespace; 11884 11712 QualifiedName tag(namespacePrefix, elementName, determinedNamespace); 11885 11713 11886 if (!specifiers ->isCustomPseudoElement()) {11714 if (!specifiers.isCustomPseudoElement()) { 11887 11715 if (tag == anyQName()) 11888 return specifiers;11716 return; 11889 11717 #if ENABLE(VIDEO_TRACK) 11890 if ( !(specifiers->pseudoType() == CSSSelector::PseudoCue))11718 if (specifiers.pseudoType() != CSSSelector::PseudoCue) 11891 11719 #endif 11892 specifiers ->prependTagSelector(tag, tagIsForNamespaceRule);11893 return specifiers;11894 } 11895 11896 CSSParserSelector* lastShadowDescendant = specifiers;11897 CSSParserSelector* history = specifiers;11720 specifiers.prependTagSelector(tag, tagIsForNamespaceRule); 11721 return; 11722 } 11723 11724 CSSParserSelector* lastShadowDescendant = &specifiers; 11725 CSSParserSelector* history = &specifiers; 11898 11726 while (history->tagHistory()) { 11899 11727 history = history->tagHistory(); … … 11905 11733 if (tag != anyQName()) 11906 11734 lastShadowDescendant->tagHistory()->prependTagSelector(tag, tagIsForNamespaceRule); 11907 return specifiers;11735 return; 11908 11736 } 11909 11737 11910 11738 // For shadow-ID pseudo-elements to be correctly matched, the ShadowDescendant combinator has to be used. 11911 11739 // We therefore create a new Selector with that combinator here in any case, even if matching any (host) element in any namespace (i.e. '*'). 11912 OwnPtr<CSSParserSelector> elementNameSelector = adoptPtr(new CSSParserSelector(tag)); 11913 lastShadowDescendant->setTagHistory(elementNameSelector.release()); 11740 lastShadowDescendant->setTagHistory(adoptPtr(new CSSParserSelector(tag))); 11914 11741 lastShadowDescendant->setRelation(CSSSelector::ShadowDescendant); 11915 return specifiers; 11916 } 11917 11918 CSSParserSelector* CSSParser::rewriteSpecifiers(CSSParserSelector* specifiers, CSSParserSelector* newSpecifier) 11742 } 11743 11744 OwnPtr<CSSParserSelector> CSSParser::rewriteSpecifiers(OwnPtr<CSSParserSelector> specifiers, OwnPtr<CSSParserSelector> newSpecifier) 11919 11745 { 11920 11746 #if ENABLE(VIDEO_TRACK) … … 11924 11750 #endif 11925 11751 // Unknown pseudo element always goes at the top of selector chain. 11926 newSpecifier->appendTagHistory(CSSSelector::ShadowDescendant, s inkFloatingSelector(specifiers));11752 newSpecifier->appendTagHistory(CSSSelector::ShadowDescendant, specifiers.release()); 11927 11753 return newSpecifier; 11928 11754 } 11929 11755 if (specifiers->isCustomPseudoElement()) { 11930 11756 // Specifiers for unknown pseudo element go right behind it in the chain. 11931 specifiers->insertTagHistory(CSSSelector::SubSelector, sinkFloatingSelector(newSpecifier), CSSSelector::ShadowDescendant);11757 specifiers->insertTagHistory(CSSSelector::SubSelector, newSpecifier.release(), CSSSelector::ShadowDescendant); 11932 11758 return specifiers; 11933 11759 } 11934 specifiers->appendTagHistory(CSSSelector::SubSelector, sinkFloatingSelector(newSpecifier));11760 specifiers->appendTagHistory(CSSSelector::SubSelector, newSpecifier.release()); 11935 11761 return specifiers; 11936 11762 } 11937 11763 11938 StyleRuleBase*CSSParser::createPageRule(PassOwnPtr<CSSParserSelector> pageSelector)11764 PassRefPtr<StyleRuleBase> CSSParser::createPageRule(PassOwnPtr<CSSParserSelector> pageSelector) 11939 11765 { 11940 11766 // FIXME: Margin at-rules are ignored. 11941 11767 m_allowImportRules = m_allowNamespaceDeclarations = false; 11942 StyleRulePage* pageRule = 0;11768 RefPtr<StyleRulePage> rule; 11943 11769 if (pageSelector) { 11944 RefPtr<StyleRulePage>rule = StyleRulePage::create(createStylePropertySet());11945 Vector<OwnPtr<CSSParserSelector> 11770 rule = StyleRulePage::create(createStylePropertySet()); 11771 Vector<OwnPtr<CSSParserSelector>> selectorVector; 11946 11772 selectorVector.append(pageSelector); 11947 11773 rule->parserAdoptSelectorVector(selectorVector); 11948 pageRule = rule.get();11949 m_parsedRules.append(rule.release());11950 11774 processAndAddNewRuleToSourceTreeIfNeeded(); 11951 11775 } else 11952 11776 popRuleData(); 11953 11777 clearProperties(); 11954 return pageRule; 11955 } 11956 11957 void CSSParser::setReusableRegionSelectorVector(Vector<OwnPtr<CSSParserSelector> >* selectors) 11958 { 11959 if (selectors) 11960 m_reusableRegionSelectorVector.swap(*selectors); 11961 } 11962 11963 StyleRuleBase* CSSParser::createRegionRule(Vector<OwnPtr<CSSParserSelector> >* regionSelector, RuleList* rules) 11778 return rule.release(); 11779 } 11780 11781 OwnPtr<Vector<OwnPtr<CSSParserSelector>>> CSSParser::createSelectorVector() 11782 { 11783 if (m_recycledSelectorVector) { 11784 m_recycledSelectorVector->shrink(0); 11785 return std::move(m_recycledSelectorVector); 11786 } 11787 return adoptPtr(new Vector<OwnPtr<CSSParserSelector>>); 11788 } 11789 11790 void CSSParser::recycleSelectorVector(OwnPtr<Vector<OwnPtr<CSSParserSelector>>> vector) 11791 { 11792 if (vector && !m_recycledSelectorVector) 11793 m_recycledSelectorVector = std::move(vector); 11794 } 11795 11796 PassRefPtr<StyleRuleBase> CSSParser::createRegionRule(Vector<OwnPtr<CSSParserSelector>>* regionSelector, RuleList* rules) 11964 11797 { 11965 11798 if (!cssRegionsEnabled() || !regionSelector || !rules) { … … 11972 11805 RefPtr<StyleRuleRegion> regionRule = StyleRuleRegion::create(regionSelector, *rules); 11973 11806 11974 StyleRuleRegion* result = regionRule.get();11975 m_parsedRules.append(regionRule.release());11976 11807 if (isExtractingSourceData()) 11977 11808 addNewRuleToSourceTree(CSSRuleSourceData::createUnknown()); 11978 11809 11979 return re sult;11980 } 11981 11982 StyleRuleBase*CSSParser::createMarginAtRule(CSSSelector::MarginBoxType /* marginBox */)11810 return regionRule.release(); 11811 } 11812 11813 void CSSParser::createMarginAtRule(CSSSelector::MarginBoxType /* marginBox */) 11983 11814 { 11984 11815 // FIXME: Implement margin at-rule here, using: … … 11988 11819 11989 11820 endDeclarationsForMarginBox(); 11990 return 0; // until this method is implemented.11991 11821 } 11992 11822 … … 12015 11845 } 12016 11846 12017 StyleKeyframe* CSSParser::createKeyframe(CSSParserValueList*keys)11847 PassRefPtr<StyleKeyframe> CSSParser::createKeyframe(CSSParserValueList& keys) 12018 11848 { 12019 11849 // Create a key string from the passed keys 12020 11850 StringBuilder keyString; 12021 for (unsigned i = 0; i < keys ->size(); ++i) {11851 for (unsigned i = 0; i < keys.size(); ++i) { 12022 11852 // Just as per the comment below, we ignore keyframes with 12023 11853 // invalid key values (plain numbers or unknown identifiers) 12024 11854 // marked as CSSPrimitiveValue::CSS_UNKNOWN during parsing. 12025 if (keys ->valueAt(i)->unit == CSSPrimitiveValue::CSS_UNKNOWN) {11855 if (keys.valueAt(i)->unit == CSSPrimitiveValue::CSS_UNKNOWN) { 12026 11856 clearProperties(); 12027 11857 return 0; 12028 11858 } 12029 11859 12030 ASSERT(keys ->valueAt(i)->unit == CSSPrimitiveValue::CSS_NUMBER);12031 float key = static_cast<float>(keys ->valueAt(i)->fValue);11860 ASSERT(keys.valueAt(i)->unit == CSSPrimitiveValue::CSS_NUMBER); 11861 float key = static_cast<float>(keys.valueAt(i)->fValue); 12032 11862 if (key < 0 || key > 100) { 12033 11863 // As per http://www.w3.org/TR/css3-animations/#keyframes, … … 12048 11878 clearProperties(); 12049 11879 12050 StyleKeyframe* keyframePtr = keyframe.get(); 12051 m_parsedKeyframes.append(keyframe.release()); 12052 return keyframePtr; 11880 return keyframe.release(); 12053 11881 } 12054 11882 … … 12258 12086 12259 12087 #if ENABLE(CSS_DEVICE_ADAPTATION) 12260 StyleRuleBase*CSSParser::createViewportRule()12088 PassRefPtr<StyleRuleBase> CSSParser::createViewportRule() 12261 12089 { 12262 12090 m_allowImportRules = m_allowNamespaceDeclarations = false; … … 12265 12093 clearProperties(); 12266 12094 12267 StyleRuleViewport* result = rule.get();12268 m_parsedRules.append(rule.release());12269 12095 processAndAddNewRuleToSourceTreeIfNeeded(); 12270 12096 12271 return r esult;12097 return rule.release(); 12272 12098 } 12273 12099
Note:
See TracChangeset
for help on using the changeset viewer.