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

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

Issue 2033503002: Add StringView::toAtomicString(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add tests. Created 4 years, 6 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 | third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 "tokenCount", scope.tokenCount(), 183 "tokenCount", scope.tokenCount(),
184 "length", string.length()); 184 "length", string.length());
185 } 185 }
186 186
187 CSSSelectorList CSSParserImpl::parsePageSelector(CSSParserTokenRange range, Styl eSheetContents* styleSheet) 187 CSSSelectorList CSSParserImpl::parsePageSelector(CSSParserTokenRange range, Styl eSheetContents* styleSheet)
188 { 188 {
189 // We only support a small subset of the css-page spec. 189 // We only support a small subset of the css-page spec.
190 range.consumeWhitespace(); 190 range.consumeWhitespace();
191 AtomicString typeSelector; 191 AtomicString typeSelector;
192 if (range.peek().type() == IdentToken) 192 if (range.peek().type() == IdentToken)
193 typeSelector = AtomicString(range.consume().value().toString()); 193 typeSelector = range.consume().value().toAtomicString();
194 194
195 AtomicString pseudo; 195 AtomicString pseudo;
196 if (range.peek().type() == ColonToken) { 196 if (range.peek().type() == ColonToken) {
197 range.consume(); 197 range.consume();
198 if (range.peek().type() != IdentToken) 198 if (range.peek().type() != IdentToken)
199 return CSSSelectorList(); 199 return CSSSelectorList();
200 pseudo = AtomicString(range.consume().value().toString()); 200 pseudo = range.consume().value().toAtomicString();
201 } 201 }
202 202
203 range.consumeWhitespace(); 203 range.consumeWhitespace();
204 if (!range.atEnd()) 204 if (!range.atEnd())
205 return CSSSelectorList(); // Parse error; extra tokens in @page selector 205 return CSSSelectorList(); // Parse error; extra tokens in @page selector
206 206
207 OwnPtr<CSSParserSelector> selector; 207 OwnPtr<CSSParserSelector> selector;
208 if (!typeSelector.isNull() && pseudo.isNull()) { 208 if (!typeSelector.isNull() && pseudo.isNull()) {
209 selector = CSSParserSelector::create(QualifiedName(nullAtom, typeSelecto r, styleSheet->defaultNamespace())); 209 selector = CSSParserSelector::create(QualifiedName(nullAtom, typeSelecto r, styleSheet->defaultNamespace()));
210 } else { 210 } else {
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 ASSERT_NOT_REACHED(); 429 ASSERT_NOT_REACHED();
430 return nullptr; 430 return nullptr;
431 } 431 }
432 432
433 // This may still consume tokens if it fails 433 // This may still consume tokens if it fails
434 static AtomicString consumeStringOrURI(CSSParserTokenRange& range) 434 static AtomicString consumeStringOrURI(CSSParserTokenRange& range)
435 { 435 {
436 const CSSParserToken& token = range.peek(); 436 const CSSParserToken& token = range.peek();
437 437
438 if (token.type() == StringToken || token.type() == UrlToken) 438 if (token.type() == StringToken || token.type() == UrlToken)
439 return AtomicString(range.consumeIncludingWhitespace().value().toString( )); 439 return range.consumeIncludingWhitespace().value().toAtomicString();
440 440
441 if (token.type() != FunctionToken || !token.valueEqualsIgnoringASCIICase("ur l")) 441 if (token.type() != FunctionToken || !token.valueEqualsIgnoringASCIICase("ur l"))
442 return AtomicString(); 442 return AtomicString();
443 443
444 CSSParserTokenRange contents = range.consumeBlock(); 444 CSSParserTokenRange contents = range.consumeBlock();
445 const CSSParserToken& uri = contents.consumeIncludingWhitespace(); 445 const CSSParserToken& uri = contents.consumeIncludingWhitespace();
446 ASSERT(uri.type() == StringToken); 446 ASSERT(uri.type() == StringToken);
447 if (!contents.atEnd()) 447 if (!contents.atEnd())
448 return AtomicString(); 448 return AtomicString();
449 return AtomicString(uri.value().toString()); 449 return uri.value().toAtomicString();
450 } 450 }
451 451
452 StyleRuleCharset* CSSParserImpl::consumeCharsetRule(CSSParserTokenRange prelude) 452 StyleRuleCharset* CSSParserImpl::consumeCharsetRule(CSSParserTokenRange prelude)
453 { 453 {
454 prelude.consumeWhitespace(); 454 prelude.consumeWhitespace();
455 const CSSParserToken& string = prelude.consumeIncludingWhitespace(); 455 const CSSParserToken& string = prelude.consumeIncludingWhitespace();
456 if (string.type() != StringToken || !prelude.atEnd()) 456 if (string.type() != StringToken || !prelude.atEnd())
457 return nullptr; // Parse error, expected a single string 457 return nullptr; // Parse error, expected a single string
458 return StyleRuleCharset::create(); 458 return StyleRuleCharset::create();
459 } 459 }
(...skipping 14 matching lines...) Expand all
474 } 474 }
475 475
476 return StyleRuleImport::create(uri, MediaQueryParser::parseMediaQuerySet(pre lude)); 476 return StyleRuleImport::create(uri, MediaQueryParser::parseMediaQuerySet(pre lude));
477 } 477 }
478 478
479 StyleRuleNamespace* CSSParserImpl::consumeNamespaceRule(CSSParserTokenRange prel ude) 479 StyleRuleNamespace* CSSParserImpl::consumeNamespaceRule(CSSParserTokenRange prel ude)
480 { 480 {
481 prelude.consumeWhitespace(); 481 prelude.consumeWhitespace();
482 AtomicString namespacePrefix; 482 AtomicString namespacePrefix;
483 if (prelude.peek().type() == IdentToken) 483 if (prelude.peek().type() == IdentToken)
484 namespacePrefix = AtomicString(prelude.consumeIncludingWhitespace().valu e().toString()); 484 namespacePrefix = prelude.consumeIncludingWhitespace().value().toAtomicS tring();
485 485
486 AtomicString uri(consumeStringOrURI(prelude)); 486 AtomicString uri(consumeStringOrURI(prelude));
487 prelude.consumeWhitespace(); 487 prelude.consumeWhitespace();
488 if (uri.isNull() || !prelude.atEnd()) 488 if (uri.isNull() || !prelude.atEnd())
489 return nullptr; // Parse error, expected string or URI 489 return nullptr; // Parse error, expected string or URI
490 490
491 return StyleRuleNamespace::create(namespacePrefix, uri); 491 return StyleRuleNamespace::create(namespacePrefix, uri);
492 } 492 }
493 493
494 StyleRuleMedia* CSSParserImpl::consumeMediaRule(CSSParserTokenRange prelude, CSS ParserTokenRange block) 494 StyleRuleMedia* CSSParserImpl::consumeMediaRule(CSSParserTokenRange prelude, CSS ParserTokenRange block)
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 while (last->type() == WhitespaceToken) 765 while (last->type() == WhitespaceToken)
766 --last; 766 --last;
767 if (last->type() == DelimiterToken && last->delimiter() == '!') { 767 if (last->type() == DelimiterToken && last->delimiter() == '!') {
768 important = true; 768 important = true;
769 declarationValueEnd = last; 769 declarationValueEnd = last;
770 } 770 }
771 } 771 }
772 772
773 size_t propertiesCount = m_parsedProperties.size(); 773 size_t propertiesCount = m_parsedProperties.size();
774 if (RuntimeEnabledFeatures::cssVariablesEnabled() && unresolvedProperty == C SSPropertyInvalid && CSSVariableParser::isValidVariableName(token)) { 774 if (RuntimeEnabledFeatures::cssVariablesEnabled() && unresolvedProperty == C SSPropertyInvalid && CSSVariableParser::isValidVariableName(token)) {
775 AtomicString variableName = AtomicString(token.value().toString()); 775 AtomicString variableName = token.value().toAtomicString();
776 consumeVariableValue(range.makeSubRange(&range.peek(), declarationValueE nd), variableName, important); 776 consumeVariableValue(range.makeSubRange(&range.peek(), declarationValueE nd), variableName, important);
777 } 777 }
778 778
779 if (important && (ruleType == StyleRule::FontFace || ruleType == StyleRule:: Keyframe)) 779 if (important && (ruleType == StyleRule::FontFace || ruleType == StyleRule:: Keyframe))
780 return; 780 return;
781 781
782 if (unresolvedProperty != CSSPropertyInvalid) { 782 if (unresolvedProperty != CSSPropertyInvalid) {
783 if (m_styleSheet && m_styleSheet->singleOwnerDocument()) 783 if (m_styleSheet && m_styleSheet->singleOwnerDocument())
784 Deprecation::warnOnDeprecatedProperties(m_styleSheet->singleOwnerDoc ument()->frame(), unresolvedProperty); 784 Deprecation::warnOnDeprecatedProperties(m_styleSheet->singleOwnerDoc ument()->frame(), unresolvedProperty);
785 consumeDeclarationValue(range.makeSubRange(&range.peek(), declarationVal ueEnd), unresolvedProperty, important, ruleType); 785 consumeDeclarationValue(range.makeSubRange(&range.peek(), declarationVal ueEnd), unresolvedProperty, important, ruleType);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 else 818 else
819 return nullptr; // Parser error, invalid value in keyframe selector 819 return nullptr; // Parser error, invalid value in keyframe selector
820 if (range.atEnd()) 820 if (range.atEnd())
821 return result; 821 return result;
822 if (range.consume().type() != CommaToken) 822 if (range.consume().type() != CommaToken)
823 return nullptr; // Parser error 823 return nullptr; // Parser error
824 } 824 }
825 } 825 }
826 826
827 } // namespace blink 827 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698