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

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

Issue 2755493004: Replace ASSERT, ASSERT_NOT_REACHED, and RELEASE_ASSERT in core/css/ (Closed)
Patch Set: All windows error are Resolved now. Created 3 years, 8 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 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 321
322 return createStylePropertySet(parser.m_parsedProperties, HTMLStandardMode); 322 return createStylePropertySet(parser.m_parsedProperties, HTMLStandardMode);
323 } 323 }
324 324
325 std::unique_ptr<Vector<double>> CSSParserImpl::parseKeyframeKeyList( 325 std::unique_ptr<Vector<double>> CSSParserImpl::parseKeyframeKeyList(
326 const String& keyList) { 326 const String& keyList) {
327 return consumeKeyframeKeyList(CSSTokenizer(keyList).tokenRange()); 327 return consumeKeyframeKeyList(CSSTokenizer(keyList).tokenRange());
328 } 328 }
329 329
330 bool CSSParserImpl::supportsDeclaration(CSSParserTokenRange& range) { 330 bool CSSParserImpl::supportsDeclaration(CSSParserTokenRange& range) {
331 ASSERT(m_parsedProperties.isEmpty()); 331 DCHECK(m_parsedProperties.isEmpty());
332 consumeDeclaration(range, StyleRule::Style); 332 consumeDeclaration(range, StyleRule::Style);
333 bool result = !m_parsedProperties.isEmpty(); 333 bool result = !m_parsedProperties.isEmpty();
334 m_parsedProperties.clear(); 334 m_parsedProperties.clear();
335 return result; 335 return result;
336 } 336 }
337 337
338 void CSSParserImpl::parseDeclarationListForInspector( 338 void CSSParserImpl::parseDeclarationListForInspector(
339 const String& declaration, 339 const String& declaration,
340 const CSSParserContext* context, 340 const CSSParserContext* context,
341 CSSParserObserver& observer) { 341 CSSParserObserver& observer) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 parser.consumeDeclarationList(std::move(block), StyleRule::Style); 373 parser.consumeDeclarationList(std::move(block), StyleRule::Style);
374 return createStylePropertySet(parser.m_parsedProperties, context->mode()); 374 return createStylePropertySet(parser.m_parsedProperties, context->mode());
375 } 375 }
376 376
377 static CSSParserImpl::AllowedRulesType computeNewAllowedRules( 377 static CSSParserImpl::AllowedRulesType computeNewAllowedRules(
378 CSSParserImpl::AllowedRulesType allowedRules, 378 CSSParserImpl::AllowedRulesType allowedRules,
379 StyleRuleBase* rule) { 379 StyleRuleBase* rule) {
380 if (!rule || allowedRules == CSSParserImpl::KeyframeRules || 380 if (!rule || allowedRules == CSSParserImpl::KeyframeRules ||
381 allowedRules == CSSParserImpl::NoRules) 381 allowedRules == CSSParserImpl::NoRules)
382 return allowedRules; 382 return allowedRules;
383 ASSERT(allowedRules <= CSSParserImpl::RegularRules); 383 DCHECK_LE(allowedRules, CSSParserImpl::RegularRules);
384 if (rule->isCharsetRule() || rule->isImportRule()) 384 if (rule->isCharsetRule() || rule->isImportRule())
385 return CSSParserImpl::AllowImportRules; 385 return CSSParserImpl::AllowImportRules;
386 if (rule->isNamespaceRule()) 386 if (rule->isNamespaceRule())
387 return CSSParserImpl::AllowNamespaceRules; 387 return CSSParserImpl::AllowNamespaceRules;
388 return CSSParserImpl::RegularRules; 388 return CSSParserImpl::RegularRules;
389 } 389 }
390 390
391 template <typename T> 391 template <typename T>
392 bool CSSParserImpl::consumeRuleList(CSSParserTokenRange range, 392 bool CSSParserImpl::consumeRuleList(CSSParserTokenRange range,
393 RuleListType ruleListType, 393 RuleListType ruleListType,
394 const T callback) { 394 const T callback) {
395 AllowedRulesType allowedRules = RegularRules; 395 AllowedRulesType allowedRules = RegularRules;
396 switch (ruleListType) { 396 switch (ruleListType) {
397 case TopLevelRuleList: 397 case TopLevelRuleList:
398 allowedRules = AllowCharsetRules; 398 allowedRules = AllowCharsetRules;
399 break; 399 break;
400 case RegularRuleList: 400 case RegularRuleList:
401 allowedRules = RegularRules; 401 allowedRules = RegularRules;
402 break; 402 break;
403 case KeyframesRuleList: 403 case KeyframesRuleList:
404 allowedRules = KeyframeRules; 404 allowedRules = KeyframeRules;
405 break; 405 break;
406 default: 406 default:
407 ASSERT_NOT_REACHED(); 407 NOTREACHED();
408 } 408 }
409 409
410 bool seenRule = false; 410 bool seenRule = false;
411 bool firstRuleValid = false; 411 bool firstRuleValid = false;
412 while (!range.atEnd()) { 412 while (!range.atEnd()) {
413 StyleRuleBase* rule; 413 StyleRuleBase* rule;
414 switch (range.peek().type()) { 414 switch (range.peek().type()) {
415 case WhitespaceToken: 415 case WhitespaceToken:
416 range.consumeWhitespace(); 416 range.consumeWhitespace();
417 continue; 417 continue;
(...skipping 19 matching lines...) Expand all
437 allowedRules = computeNewAllowedRules(allowedRules, rule); 437 allowedRules = computeNewAllowedRules(allowedRules, rule);
438 callback(rule); 438 callback(rule);
439 } 439 }
440 } 440 }
441 441
442 return firstRuleValid; 442 return firstRuleValid;
443 } 443 }
444 444
445 StyleRuleBase* CSSParserImpl::consumeAtRule(CSSParserTokenRange& range, 445 StyleRuleBase* CSSParserImpl::consumeAtRule(CSSParserTokenRange& range,
446 AllowedRulesType allowedRules) { 446 AllowedRulesType allowedRules) {
447 ASSERT(range.peek().type() == AtKeywordToken); 447 DCHECK_EQ(range.peek().type(), AtKeywordToken);
448 const StringView name = range.consumeIncludingWhitespace().value(); 448 const StringView name = range.consumeIncludingWhitespace().value();
449 const CSSParserToken* preludeStart = &range.peek(); 449 const CSSParserToken* preludeStart = &range.peek();
450 while (!range.atEnd() && range.peek().type() != LeftBraceToken && 450 while (!range.atEnd() && range.peek().type() != LeftBraceToken &&
451 range.peek().type() != SemicolonToken) 451 range.peek().type() != SemicolonToken)
452 range.consumeComponentValue(); 452 range.consumeComponentValue();
453 453
454 CSSParserTokenRange prelude = range.makeSubRange(preludeStart, &range.peek()); 454 CSSParserTokenRange prelude = range.makeSubRange(preludeStart, &range.peek());
455 CSSAtRuleID id = cssAtRuleID(name); 455 CSSAtRuleID id = cssAtRuleID(name);
456 if (id != CSSAtRuleInvalid && m_context->isUseCounterRecordingEnabled()) 456 if (id != CSSAtRuleInvalid && m_context->isUseCounterRecordingEnabled())
457 countAtRule(m_context, id); 457 countAtRule(m_context, id);
(...skipping 13 matching lines...) Expand all
471 return nullptr; // Parse error, unrecognised at-rule without block 471 return nullptr; // Parse error, unrecognised at-rule without block
472 } 472 }
473 473
474 CSSParserTokenRange block = range.consumeBlock(); 474 CSSParserTokenRange block = range.consumeBlock();
475 if (allowedRules == KeyframeRules) 475 if (allowedRules == KeyframeRules)
476 return nullptr; // Parse error, no at-rules supported inside @keyframes 476 return nullptr; // Parse error, no at-rules supported inside @keyframes
477 if (allowedRules == NoRules || allowedRules == ApplyRules) 477 if (allowedRules == NoRules || allowedRules == ApplyRules)
478 return nullptr; // Parse error, no at-rules with blocks supported inside 478 return nullptr; // Parse error, no at-rules with blocks supported inside
479 // declaration lists 479 // declaration lists
480 480
481 ASSERT(allowedRules <= RegularRules); 481 DCHECK_LE(allowedRules, RegularRules);
482 482
483 switch (id) { 483 switch (id) {
484 case CSSAtRuleMedia: 484 case CSSAtRuleMedia:
485 return consumeMediaRule(prelude, block); 485 return consumeMediaRule(prelude, block);
486 case CSSAtRuleSupports: 486 case CSSAtRuleSupports:
487 return consumeSupportsRule(prelude, block); 487 return consumeSupportsRule(prelude, block);
488 case CSSAtRuleViewport: 488 case CSSAtRuleViewport:
489 return consumeViewportRule(prelude, block); 489 return consumeViewportRule(prelude, block);
490 case CSSAtRuleFontFace: 490 case CSSAtRuleFontFace:
491 return consumeFontFaceRule(prelude, block); 491 return consumeFontFaceRule(prelude, block);
(...skipping 19 matching lines...) Expand all
511 return nullptr; // Parse error, EOF instead of qualified rule block 511 return nullptr; // Parse error, EOF instead of qualified rule block
512 512
513 CSSParserTokenRange prelude = range.makeSubRange(preludeStart, &range.peek()); 513 CSSParserTokenRange prelude = range.makeSubRange(preludeStart, &range.peek());
514 CSSParserTokenRange block = range.consumeBlock(); 514 CSSParserTokenRange block = range.consumeBlock();
515 515
516 if (allowedRules <= RegularRules) 516 if (allowedRules <= RegularRules)
517 return consumeStyleRule(prelude, block); 517 return consumeStyleRule(prelude, block);
518 if (allowedRules == KeyframeRules) 518 if (allowedRules == KeyframeRules)
519 return consumeKeyframeStyleRule(prelude, block); 519 return consumeKeyframeStyleRule(prelude, block);
520 520
521 ASSERT_NOT_REACHED(); 521 NOTREACHED();
522 return nullptr; 522 return nullptr;
523 } 523 }
524 524
525 // This may still consume tokens if it fails 525 // This may still consume tokens if it fails
526 static AtomicString consumeStringOrURI(CSSParserTokenRange& range) { 526 static AtomicString consumeStringOrURI(CSSParserTokenRange& range) {
527 const CSSParserToken& token = range.peek(); 527 const CSSParserToken& token = range.peek();
528 528
529 if (token.type() == StringToken || token.type() == UrlToken) 529 if (token.type() == StringToken || token.type() == UrlToken)
530 return range.consumeIncludingWhitespace().value().toAtomicString(); 530 return range.consumeIncludingWhitespace().value().toAtomicString();
531 531
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 } 743 }
744 744
745 consumeDeclarationList(block, StyleRule::Style); 745 consumeDeclarationList(block, StyleRule::Style);
746 746
747 return StyleRulePage::create( 747 return StyleRulePage::create(
748 std::move(selectorList), 748 std::move(selectorList),
749 createStylePropertySet(m_parsedProperties, m_context->mode())); 749 createStylePropertySet(m_parsedProperties, m_context->mode()));
750 } 750 }
751 751
752 void CSSParserImpl::consumeApplyRule(CSSParserTokenRange prelude) { 752 void CSSParserImpl::consumeApplyRule(CSSParserTokenRange prelude) {
753 ASSERT(RuntimeEnabledFeatures::cssApplyAtRulesEnabled()); 753 DCHECK(RuntimeEnabledFeatures::cssApplyAtRulesEnabled());
754 754
755 const CSSParserToken& ident = prelude.consumeIncludingWhitespace(); 755 const CSSParserToken& ident = prelude.consumeIncludingWhitespace();
756 if (!prelude.atEnd() || !CSSVariableParser::isValidVariableName(ident)) 756 if (!prelude.atEnd() || !CSSVariableParser::isValidVariableName(ident))
757 return; // Parse error, expected a single custom property name 757 return; // Parse error, expected a single custom property name
758 m_parsedProperties.push_back(CSSProperty( 758 m_parsedProperties.push_back(CSSProperty(
759 CSSPropertyApplyAtRule, 759 CSSPropertyApplyAtRule,
760 *CSSCustomIdentValue::create(ident.value().toAtomicString()))); 760 *CSSCustomIdentValue::create(ident.value().toAtomicString())));
761 } 761 }
762 762
763 StyleRuleKeyframe* CSSParserImpl::consumeKeyframeStyleRule( 763 StyleRuleKeyframe* CSSParserImpl::consumeKeyframeStyleRule(
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 } 821 }
822 consumeDeclarationList(block, StyleRule::Style); 822 consumeDeclarationList(block, StyleRule::Style);
823 823
824 return StyleRule::create( 824 return StyleRule::create(
825 std::move(selectorList), 825 std::move(selectorList),
826 createStylePropertySet(m_parsedProperties, m_context->mode())); 826 createStylePropertySet(m_parsedProperties, m_context->mode()));
827 } 827 }
828 828
829 void CSSParserImpl::consumeDeclarationList(CSSParserTokenRange range, 829 void CSSParserImpl::consumeDeclarationList(CSSParserTokenRange range,
830 StyleRule::RuleType ruleType) { 830 StyleRule::RuleType ruleType) {
831 ASSERT(m_parsedProperties.isEmpty()); 831 DCHECK(m_parsedProperties.isEmpty());
832 832
833 bool useObserver = m_observerWrapper && (ruleType == StyleRule::Style || 833 bool useObserver = m_observerWrapper && (ruleType == StyleRule::Style ||
834 ruleType == StyleRule::Keyframe); 834 ruleType == StyleRule::Keyframe);
835 if (useObserver) { 835 if (useObserver) {
836 m_observerWrapper->observer().startRuleBody( 836 m_observerWrapper->observer().startRuleBody(
837 m_observerWrapper->previousTokenStartOffset(range)); 837 m_observerWrapper->previousTokenStartOffset(range));
838 m_observerWrapper->skipCommentsBefore(range, true); 838 m_observerWrapper->skipCommentsBefore(range, true);
839 } 839 }
840 840
841 while (!range.atEnd()) { 841 while (!range.atEnd()) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
882 m_observerWrapper->yieldCommentsBefore(range); 882 m_observerWrapper->yieldCommentsBefore(range);
883 m_observerWrapper->observer().endRuleBody( 883 m_observerWrapper->observer().endRuleBody(
884 m_observerWrapper->endOffset(range)); 884 m_observerWrapper->endOffset(range));
885 } 885 }
886 } 886 }
887 887
888 void CSSParserImpl::consumeDeclaration(CSSParserTokenRange range, 888 void CSSParserImpl::consumeDeclaration(CSSParserTokenRange range,
889 StyleRule::RuleType ruleType) { 889 StyleRule::RuleType ruleType) {
890 CSSParserTokenRange rangeCopy = range; // For inspector callbacks 890 CSSParserTokenRange rangeCopy = range; // For inspector callbacks
891 891
892 ASSERT(range.peek().type() == IdentToken); 892 DCHECK_EQ(range.peek().type(), IdentToken);
893 const CSSParserToken& token = range.consumeIncludingWhitespace(); 893 const CSSParserToken& token = range.consumeIncludingWhitespace();
894 CSSPropertyID unresolvedProperty = token.parseAsUnresolvedCSSPropertyID(); 894 CSSPropertyID unresolvedProperty = token.parseAsUnresolvedCSSPropertyID();
895 if (range.consume().type() != ColonToken) 895 if (range.consume().type() != ColonToken)
896 return; // Parse error 896 return; // Parse error
897 897
898 bool important = false; 898 bool important = false;
899 const CSSParserToken* declarationValueEnd = range.end(); 899 const CSSParserToken* declarationValueEnd = range.end();
900 const CSSParserToken* last = range.end() - 1; 900 const CSSParserToken* last = range.end() - 1;
901 while (last->type() == WhitespaceToken) 901 while (last->type() == WhitespaceToken)
902 --last; 902 --last;
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 else 981 else
982 return nullptr; // Parser error, invalid value in keyframe selector 982 return nullptr; // Parser error, invalid value in keyframe selector
983 if (range.atEnd()) 983 if (range.atEnd())
984 return result; 984 return result;
985 if (range.consume().type() != CommaToken) 985 if (range.consume().type() != CommaToken)
986 return nullptr; // Parser error 986 return nullptr; // Parser error
987 } 987 }
988 } 988 }
989 989
990 } // namespace blink 990 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698