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

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

Issue 11171004: Merge 130883 - Web Inspector: Semantically incorrect CSS rules result in broken source code data (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1271/
Patch Set: Created 8 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
« no previous file with comments | « no previous file | 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 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 9907 matching lines...) Expand 10 before | Expand all | Expand 10 after
9918 MediaQuerySet* CSSParser::createMediaQuerySet() 9918 MediaQuerySet* CSSParser::createMediaQuerySet()
9919 { 9919 {
9920 RefPtr<MediaQuerySet> queries = MediaQuerySet::create(); 9920 RefPtr<MediaQuerySet> queries = MediaQuerySet::create();
9921 MediaQuerySet* result = queries.get(); 9921 MediaQuerySet* result = queries.get();
9922 m_parsedMediaQuerySets.append(queries.release()); 9922 m_parsedMediaQuerySets.append(queries.release());
9923 return result; 9923 return result;
9924 } 9924 }
9925 9925
9926 StyleRuleBase* CSSParser::createImportRule(const CSSParserString& url, MediaQuer ySet* media) 9926 StyleRuleBase* CSSParser::createImportRule(const CSSParserString& url, MediaQuer ySet* media)
9927 { 9927 {
9928 if (!media || !m_allowImportRules) 9928 if (!media || !m_allowImportRules) {
9929 popRuleData();
9929 return 0; 9930 return 0;
9931 }
9930 RefPtr<StyleRuleImport> rule = StyleRuleImport::create(url, media); 9932 RefPtr<StyleRuleImport> rule = StyleRuleImport::create(url, media);
9931 StyleRuleImport* result = rule.get(); 9933 StyleRuleImport* result = rule.get();
9932 m_parsedRules.append(rule.release()); 9934 m_parsedRules.append(rule.release());
9933 processAndAddNewRuleToSourceTreeIfNeeded(); 9935 processAndAddNewRuleToSourceTreeIfNeeded();
9934 return result; 9936 return result;
9935 } 9937 }
9936 9938
9937 StyleRuleBase* CSSParser::createMediaRule(MediaQuerySet* media, RuleList* rules) 9939 StyleRuleBase* CSSParser::createMediaRule(MediaQuerySet* media, RuleList* rules)
9938 { 9940 {
9939 m_allowImportRules = m_allowNamespaceDeclarations = false; 9941 m_allowImportRules = m_allowNamespaceDeclarations = false;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
10031 for (unsigned i = 0; i < m_parsedProperties->size(); ++i) { 10033 for (unsigned i = 0; i < m_parsedProperties->size(); ++i) {
10032 CSSProperty& property = m_parsedProperties->at(i); 10034 CSSProperty& property = m_parsedProperties->at(i);
10033 if (property.id() == CSSPropertyFontVariant && property.value()->isPrimi tiveValue()) 10035 if (property.id() == CSSPropertyFontVariant && property.value()->isPrimi tiveValue())
10034 property.wrapValueInCommaSeparatedList(); 10036 property.wrapValueInCommaSeparatedList();
10035 else if (property.id() == CSSPropertyFontFamily && (!property.value()->i sValueList() || static_cast<CSSValueList*>(property.value())->length() != 1)) { 10037 else if (property.id() == CSSPropertyFontFamily && (!property.value()->i sValueList() || static_cast<CSSValueList*>(property.value())->length() != 1)) {
10036 // Unlike font-family property, font-family descriptor in @font-face rule 10038 // Unlike font-family property, font-family descriptor in @font-face rule
10037 // has to be a value list with exactly one family name. It cannot ha ve a 10039 // has to be a value list with exactly one family name. It cannot ha ve a
10038 // have 'initial' value and cannot 'inherit' from parent. 10040 // have 'initial' value and cannot 'inherit' from parent.
10039 // See http://dev.w3.org/csswg/css3-fonts/#font-family-desc 10041 // See http://dev.w3.org/csswg/css3-fonts/#font-family-desc
10040 clearProperties(); 10042 clearProperties();
10043 popRuleData();
10041 return 0; 10044 return 0;
10042 } 10045 }
10043 } 10046 }
10044 RefPtr<StyleRuleFontFace> rule = StyleRuleFontFace::create(); 10047 RefPtr<StyleRuleFontFace> rule = StyleRuleFontFace::create();
10045 rule->setProperties(createStylePropertySet()); 10048 rule->setProperties(createStylePropertySet());
10046 clearProperties(); 10049 clearProperties();
10047 StyleRuleFontFace* result = rule.get(); 10050 StyleRuleFontFace* result = rule.get();
10048 m_parsedRules.append(rule.release()); 10051 m_parsedRules.append(rule.release());
10049 processAndAddNewRuleToSourceTreeIfNeeded(); 10052 processAndAddNewRuleToSourceTreeIfNeeded();
10050 return result; 10053 return result;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
10120 StyleRulePage* pageRule = 0; 10123 StyleRulePage* pageRule = 0;
10121 if (pageSelector) { 10124 if (pageSelector) {
10122 RefPtr<StyleRulePage> rule = StyleRulePage::create(); 10125 RefPtr<StyleRulePage> rule = StyleRulePage::create();
10123 CSSSelectorVector selectorVector; 10126 CSSSelectorVector selectorVector;
10124 selectorVector.append(pageSelector); 10127 selectorVector.append(pageSelector);
10125 rule->parserAdoptSelectorVector(selectorVector); 10128 rule->parserAdoptSelectorVector(selectorVector);
10126 rule->setProperties(createStylePropertySet()); 10129 rule->setProperties(createStylePropertySet());
10127 pageRule = rule.get(); 10130 pageRule = rule.get();
10128 m_parsedRules.append(rule.release()); 10131 m_parsedRules.append(rule.release());
10129 processAndAddNewRuleToSourceTreeIfNeeded(); 10132 processAndAddNewRuleToSourceTreeIfNeeded();
10130 } 10133 } else
10134 popRuleData();
10131 clearProperties(); 10135 clearProperties();
10132 return pageRule; 10136 return pageRule;
10133 } 10137 }
10134 10138
10135 void CSSParser::setReusableRegionSelectorVector(CSSSelectorVector* selectors) 10139 void CSSParser::setReusableRegionSelectorVector(CSSSelectorVector* selectors)
10136 { 10140 {
10137 if (selectors) 10141 if (selectors)
10138 m_reusableRegionSelectorVector.swap(*selectors); 10142 m_reusableRegionSelectorVector.swap(*selectors);
10139 } 10143 }
10140 10144
10141 StyleRuleBase* CSSParser::createRegionRule(Vector<OwnPtr<CSSParserSelector> >* r egionSelector, RuleList* rules) 10145 StyleRuleBase* CSSParser::createRegionRule(Vector<OwnPtr<CSSParserSelector> >* r egionSelector, RuleList* rules)
10142 { 10146 {
10143 if (!cssRegionsEnabled() || !regionSelector || !rules) 10147 if (!cssRegionsEnabled() || !regionSelector || !rules) {
10148 popRuleData();
10144 return 0; 10149 return 0;
10150 }
10145 10151
10146 m_allowImportRules = m_allowNamespaceDeclarations = false; 10152 m_allowImportRules = m_allowNamespaceDeclarations = false;
10147 10153
10148 RefPtr<StyleRuleRegion> regionRule = StyleRuleRegion::create(regionSelector, *rules); 10154 RefPtr<StyleRuleRegion> regionRule = StyleRuleRegion::create(regionSelector, *rules);
10149 10155
10150 StyleRuleRegion* result = regionRule.get(); 10156 StyleRuleRegion* result = regionRule.get();
10151 m_parsedRules.append(regionRule.release()); 10157 m_parsedRules.append(regionRule.release());
10152 if (isExtractingSourceData()) 10158 if (isExtractingSourceData())
10153 addNewRuleToSourceTree(CSSRuleSourceData::createUnknown()); 10159 addNewRuleToSourceTree(CSSRuleSourceData::createUnknown());
10154 10160
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after
10654 { 10660 {
10655 // The tokenizer checks for the construct of an+b. 10661 // The tokenizer checks for the construct of an+b.
10656 // However, since the {ident} rule precedes the {nth} rule, some of those 10662 // However, since the {ident} rule precedes the {nth} rule, some of those
10657 // tokens are identified as string literal. Furthermore we need to accept 10663 // tokens are identified as string literal. Furthermore we need to accept
10658 // "odd" and "even" which does not match to an+b. 10664 // "odd" and "even" which does not match to an+b.
10659 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even") 10665 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even")
10660 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n"); 10666 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n");
10661 } 10667 }
10662 10668
10663 } 10669 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698