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

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

Issue 11048052: Merge 130511 - Web Inspector: [Styles] Unable to edit properties in broken stylesheets (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 | « Source/WebCore/css/CSSParser.h ('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 * 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 9968 matching lines...) Expand 10 before | Expand all | Expand 10 after
9979 else 9979 else
9980 m_currentRuleDataStack->last()->childRules.append(rule); 9980 m_currentRuleDataStack->last()->childRules.append(rule);
9981 } 9981 }
9982 9982
9983 PassRefPtr<CSSRuleSourceData> CSSParser::popRuleData() 9983 PassRefPtr<CSSRuleSourceData> CSSParser::popRuleData()
9984 { 9984 {
9985 if (!m_ruleSourceDataResult) 9985 if (!m_ruleSourceDataResult)
9986 return 0; 9986 return 0;
9987 9987
9988 ASSERT(!m_currentRuleDataStack->isEmpty()); 9988 ASSERT(!m_currentRuleDataStack->isEmpty());
9989 m_currentRuleData.clear();
9989 RefPtr<CSSRuleSourceData> data = m_currentRuleDataStack->last(); 9990 RefPtr<CSSRuleSourceData> data = m_currentRuleDataStack->last();
9990 m_currentRuleDataStack->removeLast(); 9991 m_currentRuleDataStack->removeLast();
9991 return data.release(); 9992 return data.release();
9992 } 9993 }
9993 9994
9994 StyleRuleKeyframes* CSSParser::createKeyframesRule(const String& name, PassOwnPt r<Vector<RefPtr<StyleKeyframe> > > popKeyframes) 9995 StyleRuleKeyframes* CSSParser::createKeyframesRule(const String& name, PassOwnPt r<Vector<RefPtr<StyleKeyframe> > > popKeyframes)
9995 { 9996 {
9996 OwnPtr<Vector<RefPtr<StyleKeyframe> > > keyframes = popKeyframes; 9997 OwnPtr<Vector<RefPtr<StyleKeyframe> > > keyframes = popKeyframes;
9997 m_allowImportRules = m_allowNamespaceDeclarations = false; 9998 m_allowImportRules = m_allowNamespaceDeclarations = false;
9998 RefPtr<StyleRuleKeyframes> rule = StyleRuleKeyframes::create(); 9999 RefPtr<StyleRuleKeyframes> rule = StyleRuleKeyframes::create();
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
10283 return; 10284 return;
10284 } 10285 }
10285 10286
10286 fixUnparsedProperties<UChar>(m_dataStart16.get() + m_parsedTextPrefixLength, ruleData); 10287 fixUnparsedProperties<UChar>(m_dataStart16.get() + m_parsedTextPrefixLength, ruleData);
10287 } 10288 }
10288 10289
10289 void CSSParser::markRuleHeaderStart(CSSRuleSourceData::Type ruleType) 10290 void CSSParser::markRuleHeaderStart(CSSRuleSourceData::Type ruleType)
10290 { 10291 {
10291 if (!isExtractingSourceData()) 10292 if (!isExtractingSourceData())
10292 return; 10293 return;
10294
10295 // Pop off data for a previous invalid rule.
10296 if (m_currentRuleData)
10297 m_currentRuleDataStack->removeLast();
10298
10293 RefPtr<CSSRuleSourceData> data = CSSRuleSourceData::create(ruleType); 10299 RefPtr<CSSRuleSourceData> data = CSSRuleSourceData::create(ruleType);
10294 data->ruleHeaderRange.start = tokenStartOffset(); 10300 data->ruleHeaderRange.start = tokenStartOffset();
10301 m_currentRuleData = data;
10295 m_currentRuleDataStack->append(data.release()); 10302 m_currentRuleDataStack->append(data.release());
10296 } 10303 }
10297 10304
10298 template <typename CharacterType> 10305 template <typename CharacterType>
10299 inline void CSSParser::setRuleHeaderEnd(const CharacterType* dataStart) 10306 inline void CSSParser::setRuleHeaderEnd(const CharacterType* dataStart)
10300 { 10307 {
10301 CharacterType* listEnd = tokenStart<CharacterType>(); 10308 CharacterType* listEnd = tokenStart<CharacterType>();
10302 while (listEnd > dataStart + 1) { 10309 while (listEnd > dataStart + 1) {
10303 if (isHTMLSpace(*(listEnd - 1))) 10310 if (isHTMLSpace(*(listEnd - 1)))
10304 --listEnd; 10311 --listEnd;
(...skipping 13 matching lines...) Expand all
10318 if (is8BitSource()) 10325 if (is8BitSource())
10319 setRuleHeaderEnd<LChar>(m_dataStart8.get()); 10326 setRuleHeaderEnd<LChar>(m_dataStart8.get());
10320 else 10327 else
10321 setRuleHeaderEnd<UChar>(m_dataStart16.get()); 10328 setRuleHeaderEnd<UChar>(m_dataStart16.get());
10322 } 10329 }
10323 10330
10324 void CSSParser::markRuleBodyStart() 10331 void CSSParser::markRuleBodyStart()
10325 { 10332 {
10326 if (!isExtractingSourceData()) 10333 if (!isExtractingSourceData())
10327 return; 10334 return;
10335 m_currentRuleData.clear();
10328 unsigned offset = tokenStartOffset(); 10336 unsigned offset = tokenStartOffset();
10329 if (tokenStartChar() == '{') 10337 if (tokenStartChar() == '{')
10330 ++offset; // Skip the rule body opening brace. 10338 ++offset; // Skip the rule body opening brace.
10331 ASSERT(!m_currentRuleDataStack->isEmpty()); 10339 ASSERT(!m_currentRuleDataStack->isEmpty());
10332 m_currentRuleDataStack->last()->ruleBodyRange.start = offset; 10340 m_currentRuleDataStack->last()->ruleBodyRange.start = offset;
10333 } 10341 }
10334 10342
10335 void CSSParser::markRuleBodyEnd() 10343 void CSSParser::markRuleBodyEnd()
10336 { 10344 {
10337 // Precondition: (!isExtractingSourceData()) 10345 // Precondition: (!isExtractingSourceData())
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
10646 { 10654 {
10647 // The tokenizer checks for the construct of an+b. 10655 // The tokenizer checks for the construct of an+b.
10648 // However, since the {ident} rule precedes the {nth} rule, some of those 10656 // However, since the {ident} rule precedes the {nth} rule, some of those
10649 // tokens are identified as string literal. Furthermore we need to accept 10657 // tokens are identified as string literal. Furthermore we need to accept
10650 // "odd" and "even" which does not match to an+b. 10658 // "odd" and "even" which does not match to an+b.
10651 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even") 10659 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even")
10652 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n"); 10660 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n");
10653 } 10661 }
10654 10662
10655 } 10663 }
OLDNEW
« no previous file with comments | « Source/WebCore/css/CSSParser.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698