| OLD | NEW |
| 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 9609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9620 else | 9620 else |
| 9621 m_currentRuleDataStack->last()->childRules.append(rule); | 9621 m_currentRuleDataStack->last()->childRules.append(rule); |
| 9622 } | 9622 } |
| 9623 | 9623 |
| 9624 PassRefPtr<CSSRuleSourceData> CSSParser::popRuleData() | 9624 PassRefPtr<CSSRuleSourceData> CSSParser::popRuleData() |
| 9625 { | 9625 { |
| 9626 if (!m_ruleSourceDataResult) | 9626 if (!m_ruleSourceDataResult) |
| 9627 return 0; | 9627 return 0; |
| 9628 | 9628 |
| 9629 ASSERT(!m_currentRuleDataStack->isEmpty()); | 9629 ASSERT(!m_currentRuleDataStack->isEmpty()); |
| 9630 m_currentRuleData.clear(); |
| 9630 RefPtr<CSSRuleSourceData> data = m_currentRuleDataStack->last(); | 9631 RefPtr<CSSRuleSourceData> data = m_currentRuleDataStack->last(); |
| 9631 m_currentRuleDataStack->removeLast(); | 9632 m_currentRuleDataStack->removeLast(); |
| 9632 return data.release(); | 9633 return data.release(); |
| 9633 } | 9634 } |
| 9634 | 9635 |
| 9635 StyleRuleKeyframes* CSSParser::createKeyframesRule(const String& name, PassOwnPt
r<Vector<RefPtr<StyleKeyframe> > > popKeyframes) | 9636 StyleRuleKeyframes* CSSParser::createKeyframesRule(const String& name, PassOwnPt
r<Vector<RefPtr<StyleKeyframe> > > popKeyframes) |
| 9636 { | 9637 { |
| 9637 OwnPtr<Vector<RefPtr<StyleKeyframe> > > keyframes = popKeyframes; | 9638 OwnPtr<Vector<RefPtr<StyleKeyframe> > > keyframes = popKeyframes; |
| 9638 m_allowImportRules = m_allowNamespaceDeclarations = false; | 9639 m_allowImportRules = m_allowNamespaceDeclarations = false; |
| 9639 RefPtr<StyleRuleKeyframes> rule = StyleRuleKeyframes::create(); | 9640 RefPtr<StyleRuleKeyframes> rule = StyleRuleKeyframes::create(); |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9913 // Need to exclude the trailing ';' from the property value. | 9914 // Need to exclude the trailing ';' from the property value. |
| 9914 currentData->value = String(characters + valueStartInStyleSheet, pro
pertyEndInStyleSheet - valueStartInStyleSheet + (characters[propertyEndInStyleSh
eet] == ';' ? 0 : 1)); | 9915 currentData->value = String(characters + valueStartInStyleSheet, pro
pertyEndInStyleSheet - valueStartInStyleSheet + (characters[propertyEndInStyleSh
eet] == ';' ? 0 : 1)); |
| 9915 } | 9916 } |
| 9916 } | 9917 } |
| 9917 } | 9918 } |
| 9918 | 9919 |
| 9919 void CSSParser::markRuleHeaderStart(CSSRuleSourceData::Type ruleType) | 9920 void CSSParser::markRuleHeaderStart(CSSRuleSourceData::Type ruleType) |
| 9920 { | 9921 { |
| 9921 if (!isExtractingSourceData()) | 9922 if (!isExtractingSourceData()) |
| 9922 return; | 9923 return; |
| 9924 |
| 9925 // Pop off data for a previous invalid rule. |
| 9926 if (m_currentRuleData) |
| 9927 m_currentRuleDataStack->removeLast(); |
| 9928 |
| 9923 RefPtr<CSSRuleSourceData> data = CSSRuleSourceData::create(ruleType); | 9929 RefPtr<CSSRuleSourceData> data = CSSRuleSourceData::create(ruleType); |
| 9924 data->ruleHeaderRange.start = m_tokenStart - m_dataStart.get(); | 9930 data->ruleHeaderRange.start = m_tokenStart - m_dataStart.get(); |
| 9931 m_currentRuleData = data; |
| 9925 m_currentRuleDataStack->append(data.release()); | 9932 m_currentRuleDataStack->append(data.release()); |
| 9926 } | 9933 } |
| 9927 | 9934 |
| 9928 void CSSParser::markRuleHeaderEnd() | 9935 void CSSParser::markRuleHeaderEnd() |
| 9929 { | 9936 { |
| 9930 if (!isExtractingSourceData()) | 9937 if (!isExtractingSourceData()) |
| 9931 return; | 9938 return; |
| 9932 ASSERT(!m_currentRuleDataStack->isEmpty()); | 9939 ASSERT(!m_currentRuleDataStack->isEmpty()); |
| 9933 UChar* listEnd = m_tokenStart; | 9940 UChar* listEnd = m_tokenStart; |
| 9934 while (listEnd > m_dataStart.get() + 1) { | 9941 while (listEnd > m_dataStart.get() + 1) { |
| 9935 if (isHTMLSpace(*(listEnd - 1))) | 9942 if (isHTMLSpace(*(listEnd - 1))) |
| 9936 --listEnd; | 9943 --listEnd; |
| 9937 else | 9944 else |
| 9938 break; | 9945 break; |
| 9939 } | 9946 } |
| 9940 m_currentRuleDataStack->last()->ruleHeaderRange.end = listEnd - m_dataStart.
get(); | 9947 m_currentRuleDataStack->last()->ruleHeaderRange.end = listEnd - m_dataStart.
get(); |
| 9941 } | 9948 } |
| 9942 | 9949 |
| 9943 void CSSParser::markRuleBodyStart() | 9950 void CSSParser::markRuleBodyStart() |
| 9944 { | 9951 { |
| 9945 if (!isExtractingSourceData()) | 9952 if (!isExtractingSourceData()) |
| 9946 return; | 9953 return; |
| 9954 m_currentRuleData.clear(); |
| 9947 unsigned offset = m_tokenStart - m_dataStart.get(); | 9955 unsigned offset = m_tokenStart - m_dataStart.get(); |
| 9948 if (*m_tokenStart == '{') | 9956 if (*m_tokenStart == '{') |
| 9949 ++offset; // Skip the rule body opening brace. | 9957 ++offset; // Skip the rule body opening brace. |
| 9950 ASSERT(!m_currentRuleDataStack->isEmpty()); | 9958 ASSERT(!m_currentRuleDataStack->isEmpty()); |
| 9951 m_currentRuleDataStack->last()->ruleBodyRange.start = offset; | 9959 m_currentRuleDataStack->last()->ruleBodyRange.start = offset; |
| 9952 } | 9960 } |
| 9953 | 9961 |
| 9954 void CSSParser::markRuleBodyEnd() | 9962 void CSSParser::markRuleBodyEnd() |
| 9955 { | 9963 { |
| 9956 // Precondition: (!isExtractingSourceData()) | 9964 // Precondition: (!isExtractingSourceData()) |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10212 { | 10220 { |
| 10213 // The tokenizer checks for the construct of an+b. | 10221 // The tokenizer checks for the construct of an+b. |
| 10214 // However, since the {ident} rule precedes the {nth} rule, some of those | 10222 // However, since the {ident} rule precedes the {nth} rule, some of those |
| 10215 // tokens are identified as string literal. Furthermore we need to accept | 10223 // tokens are identified as string literal. Furthermore we need to accept |
| 10216 // "odd" and "even" which does not match to an+b. | 10224 // "odd" and "even" which does not match to an+b. |
| 10217 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even") | 10225 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even") |
| 10218 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n"); | 10226 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n"); |
| 10219 } | 10227 } |
| 10220 | 10228 |
| 10221 } | 10229 } |
| OLD | NEW |