Changeset 29976 in webkit
- Timestamp:
- Feb 4, 2008 2:12:16 PM (16 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r29975 r29976 1 2008-02-04 David Hyatt <hyatt@apple.com> 2 3 Fix for bug 16751, misparsing of html*.test in CSS. 4 5 Reviewed by darin 6 7 Added fast/css/simple-selector-chain-parsing.html 8 9 * css/CSSGrammar.y: 10 1 11 2008-02-04 Darin Adler <darin@apple.com> 2 12 -
trunk/WebCore/css/CSSGrammar.y
r29933 r29976 263 263 %type <selector> selector 264 264 %type <selector> selector_list 265 %type <selector> selector_with_trailing_whitespace 265 266 %type <selector> class 266 267 %type <selector> attrib … … 576 577 | '~' maybe_space { $$ = CSSSelector::IndirectAdjacent; } 577 578 | '>' maybe_space { $$ = CSSSelector::Child; } 578 | /* empty */ { $$ = CSSSelector::Descendant; }579 579 ; 580 580 … … 607 607 ; 608 608 609 selector_with_trailing_whitespace: 610 selector WHITESPACE { 611 $$ = $1; 612 } 613 ; 614 609 615 selector: 610 616 simple_selector { 611 617 $$ = $1; 618 } 619 | selector_with_trailing_whitespace 620 { 621 $$ = $1; 622 } 623 | selector_with_trailing_whitespace simple_selector 624 { 625 $$ = $2; 626 if (!$1) 627 $$ = 0; 628 else if ($$) { 629 CSSParser* p = static_cast<CSSParser*>(parser); 630 CSSSelector* end = $$; 631 while (end->m_tagHistory) 632 end = end->m_tagHistory; 633 end->m_relation = CSSSelector::Descendant; 634 end->m_tagHistory = p->sinkFloatingSelector($1); 635 if (Document* doc = p->document()) 636 doc->setUsesDescendantRules(true); 637 } 612 638 } 613 639 | selector combinator simple_selector { … … 622 648 end->m_relation = $2; 623 649 end->m_tagHistory = p->sinkFloatingSelector($1); 624 if ($2 == CSSSelector:: Descendant || $2 == CSSSelector::Child) {650 if ($2 == CSSSelector::Child) { 625 651 if (Document* doc = p->document()) 626 652 doc->setUsesDescendantRules(true); … … 641 667 | IDENT '|' { $$ = $1; } 642 668 ; 643 669 644 670 simple_selector: 645 element_name maybe_space{671 element_name { 646 672 CSSParser* p = static_cast<CSSParser*>(parser); 647 673 $$ = p->createFloatingSelector(); 648 674 $$->m_tag = QualifiedName(nullAtom, atomicString($1), p->defaultNamespace); 649 675 } 650 | element_name specifier_list maybe_space{676 | element_name specifier_list { 651 677 $$ = $2; 652 678 if ($$) { … … 655 681 } 656 682 } 657 | specifier_list maybe_space{683 | specifier_list { 658 684 $$ = $1; 659 685 CSSParser* p = static_cast<CSSParser*>(parser); … … 661 687 $$->m_tag = QualifiedName(nullAtom, starAtom, p->defaultNamespace); 662 688 } 663 | namespace_selector element_name maybe_space{689 | namespace_selector element_name { 664 690 AtomicString namespacePrefix = atomicString($1); 665 691 CSSParser* p = static_cast<CSSParser*>(parser); … … 672 698 $$->m_tag = QualifiedName(nullAtom, atomicString($2), p->defaultNamespace); 673 699 } 674 | namespace_selector element_name specifier_list maybe_space{700 | namespace_selector element_name specifier_list { 675 701 $$ = $3; 676 702 if ($$) { … … 685 711 } 686 712 } 687 | namespace_selector specifier_list maybe_space{713 | namespace_selector specifier_list { 688 714 $$ = $2; 689 715 if ($$) { … … 857 883 else if (type == CSSSelector::PseudoEmpty || 858 884 type == CSSSelector::PseudoFirstChild || 859 type == CSSSelector::PseudoFirstOfType || 860 type == CSSSelector::PseudoLastChild || 861 type == CSSSelector::PseudoLastOfType) { 885 type == CSSSelector::PseudoFirstOfType) { 862 886 CSSParser* p = static_cast<CSSParser*>(parser); 863 887 Document* doc = p->document(); … … 895 919 } 896 920 // used by :not 897 | ':' NOTFUNCTION maybe_space simple_selector ')' {921 | ':' NOTFUNCTION maybe_space simple_selector maybe_space ')' { 898 922 if (!$4) 899 923 $$ = 0;
Note: See TracChangeset
for help on using the changeset viewer.