OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/css/parser/CSSParserImpl.h" | 5 #include "core/css/parser/CSSParserImpl.h" |
6 | 6 |
7 #include "core/css/CSSCustomIdentValue.h" | 7 #include "core/css/CSSCustomIdentValue.h" |
8 #include "core/css/CSSCustomPropertyDeclaration.h" | 8 #include "core/css/CSSCustomPropertyDeclaration.h" |
9 #include "core/css/CSSKeyframesRule.h" | 9 #include "core/css/CSSKeyframesRule.h" |
10 #include "core/css/CSSStyleSheet.h" | 10 #include "core/css/CSSStyleSheet.h" |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 results.data() + unusedEntries, results.size() - unusedEntries, mode); | 149 results.data() + unusedEntries, results.size() - unusedEntries, mode); |
150 parsedProperties.clear(); | 150 parsedProperties.clear(); |
151 return result; | 151 return result; |
152 } | 152 } |
153 | 153 |
154 ImmutableStylePropertySet* CSSParserImpl::parseInlineStyleDeclaration( | 154 ImmutableStylePropertySet* CSSParserImpl::parseInlineStyleDeclaration( |
155 const String& string, | 155 const String& string, |
156 Element* element) { | 156 Element* element) { |
157 Document& document = element->document(); | 157 Document& document = element->document(); |
158 CSSParserContext* context = CSSParserContext::create( | 158 CSSParserContext* context = CSSParserContext::create( |
159 document.elementSheet().contents()->parserContext(), | 159 document.elementSheet().contents()->parserContext(), &document); |
160 UseCounter::getFrom(&document)); | |
161 CSSParserMode mode = element->isHTMLElement() && !document.inQuirksMode() | 160 CSSParserMode mode = element->isHTMLElement() && !document.inQuirksMode() |
162 ? HTMLStandardMode | 161 ? HTMLStandardMode |
163 : HTMLQuirksMode; | 162 : HTMLQuirksMode; |
164 context->setMode(mode); | 163 context->setMode(mode); |
165 CSSParserImpl parser(context, document.elementSheet().contents()); | 164 CSSParserImpl parser(context, document.elementSheet().contents()); |
166 CSSTokenizer tokenizer(string); | 165 CSSTokenizer tokenizer(string); |
167 parser.consumeDeclarationList(tokenizer.tokenRange(), StyleRule::Style); | 166 parser.consumeDeclarationList(tokenizer.tokenRange(), StyleRule::Style); |
168 return createStylePropertySet(parser.m_parsedProperties, mode); | 167 return createStylePropertySet(parser.m_parsedProperties, mode); |
169 } | 168 } |
170 | 169 |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
446 ASSERT(range.peek().type() == AtKeywordToken); | 445 ASSERT(range.peek().type() == AtKeywordToken); |
447 const StringView name = range.consumeIncludingWhitespace().value(); | 446 const StringView name = range.consumeIncludingWhitespace().value(); |
448 const CSSParserToken* preludeStart = &range.peek(); | 447 const CSSParserToken* preludeStart = &range.peek(); |
449 while (!range.atEnd() && range.peek().type() != LeftBraceToken && | 448 while (!range.atEnd() && range.peek().type() != LeftBraceToken && |
450 range.peek().type() != SemicolonToken) | 449 range.peek().type() != SemicolonToken) |
451 range.consumeComponentValue(); | 450 range.consumeComponentValue(); |
452 | 451 |
453 CSSParserTokenRange prelude = range.makeSubRange(preludeStart, &range.peek()); | 452 CSSParserTokenRange prelude = range.makeSubRange(preludeStart, &range.peek()); |
454 CSSAtRuleID id = cssAtRuleID(name); | 453 CSSAtRuleID id = cssAtRuleID(name); |
455 if (id != CSSAtRuleInvalid && m_context->isUseCounterRecordingEnabled()) | 454 if (id != CSSAtRuleInvalid && m_context->isUseCounterRecordingEnabled()) |
456 countAtRule(m_context->useCounter(), id); | 455 countAtRule(m_context, id); |
457 | 456 |
458 if (range.atEnd() || range.peek().type() == SemicolonToken) { | 457 if (range.atEnd() || range.peek().type() == SemicolonToken) { |
459 range.consume(); | 458 range.consume(); |
460 if (allowedRules == AllowCharsetRules && id == CSSAtRuleCharset) | 459 if (allowedRules == AllowCharsetRules && id == CSSAtRuleCharset) |
461 return consumeCharsetRule(prelude); | 460 return consumeCharsetRule(prelude); |
462 if (allowedRules <= AllowImportRules && id == CSSAtRuleImport) | 461 if (allowedRules <= AllowImportRules && id == CSSAtRuleImport) |
463 return consumeImportRule(prelude); | 462 return consumeImportRule(prelude); |
464 if (allowedRules <= AllowNamespaceRules && id == CSSAtRuleNamespace) | 463 if (allowedRules <= AllowNamespaceRules && id == CSSAtRuleNamespace) |
465 return consumeNamespaceRule(prelude); | 464 return consumeNamespaceRule(prelude); |
466 if (allowedRules == ApplyRules && id == CSSAtRuleApply) { | 465 if (allowedRules == ApplyRules && id == CSSAtRuleApply) { |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 CSSParserTokenRange rangeCopy = prelude; // For inspector callbacks | 693 CSSParserTokenRange rangeCopy = prelude; // For inspector callbacks |
695 const CSSParserToken& nameToken = prelude.consumeIncludingWhitespace(); | 694 const CSSParserToken& nameToken = prelude.consumeIncludingWhitespace(); |
696 if (!prelude.atEnd()) | 695 if (!prelude.atEnd()) |
697 return nullptr; // Parse error; expected single non-whitespace token in | 696 return nullptr; // Parse error; expected single non-whitespace token in |
698 // @keyframes header | 697 // @keyframes header |
699 | 698 |
700 String name; | 699 String name; |
701 if (nameToken.type() == IdentToken) { | 700 if (nameToken.type() == IdentToken) { |
702 name = nameToken.value().toString(); | 701 name = nameToken.value().toString(); |
703 } else if (nameToken.type() == StringToken && webkitPrefixed) { | 702 } else if (nameToken.type() == StringToken && webkitPrefixed) { |
704 if (m_context->isUseCounterRecordingEnabled()) | 703 m_context->count(UseCounter::QuotedKeyframesRule); |
705 m_context->useCounter()->count(UseCounter::QuotedKeyframesRule); | |
706 name = nameToken.value().toString(); | 704 name = nameToken.value().toString(); |
707 } else { | 705 } else { |
708 return nullptr; // Parse error; expected ident token in @keyframes header | 706 return nullptr; // Parse error; expected ident token in @keyframes header |
709 } | 707 } |
710 | 708 |
711 if (m_observerWrapper) { | 709 if (m_observerWrapper) { |
712 m_observerWrapper->observer().startRuleHeader( | 710 m_observerWrapper->observer().startRuleHeader( |
713 StyleRule::Keyframes, m_observerWrapper->startOffset(rangeCopy)); | 711 StyleRule::Keyframes, m_observerWrapper->startOffset(rangeCopy)); |
714 m_observerWrapper->observer().endRuleHeader( | 712 m_observerWrapper->observer().endRuleHeader( |
715 m_observerWrapper->endOffset(prelude)); | 713 m_observerWrapper->endOffset(prelude)); |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
979 else | 977 else |
980 return nullptr; // Parser error, invalid value in keyframe selector | 978 return nullptr; // Parser error, invalid value in keyframe selector |
981 if (range.atEnd()) | 979 if (range.atEnd()) |
982 return result; | 980 return result; |
983 if (range.consume().type() != CommaToken) | 981 if (range.consume().type() != CommaToken) |
984 return nullptr; // Parser error | 982 return nullptr; // Parser error |
985 } | 983 } |
986 } | 984 } |
987 | 985 |
988 } // namespace blink | 986 } // namespace blink |
OLD | NEW |