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

Side by Side Diff: third_party/WebKit/Source/core/css/parser/CSSParserImpl.cpp

Issue 2671173002: Change CSSParserContext to have a Document handle (vs UseCounter). (Closed)
Patch Set: fix todo style Created 3 years, 10 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
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698