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

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

Issue 2089063005: Schedule sibling invalidation sets for sibling insert/remove. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed minDirectAdjacent optimization. Created 4 years, 5 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/RuleFeature.h" 5 #include "core/css/RuleFeature.h"
6 6
7 #include "core/css/CSSSelectorList.h" 7 #include "core/css/CSSSelectorList.h"
8 #include "core/css/RuleSet.h" 8 #include "core/css/RuleSet.h"
9 #include "core/css/StylePropertySet.h" 9 #include "core/css/StylePropertySet.h"
10 #include "core/css/StyleRule.h" 10 #include "core/css/StyleRule.h"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 Element* element = Traversal<HTMLElement>::firstChild(*Traversal<HTMLEle ment>::firstChild(*m_document->body())); 102 Element* element = Traversal<HTMLElement>::firstChild(*Traversal<HTMLEle ment>::firstChild(*m_document->body()));
103 m_ruleFeatureSet->collectInvalidationSetsForAttribute(invalidationLists, *element, attributeName); 103 m_ruleFeatureSet->collectInvalidationSetsForAttribute(invalidationLists, *element, attributeName);
104 } 104 }
105 105
106 void collectInvalidationSetsForPseudoClass(InvalidationLists& invalidationLi sts, CSSSelector::PseudoType pseudo) const 106 void collectInvalidationSetsForPseudoClass(InvalidationLists& invalidationLi sts, CSSSelector::PseudoType pseudo) const
107 { 107 {
108 Element* element = Traversal<HTMLElement>::firstChild(*Traversal<HTMLEle ment>::firstChild(*m_document->body())); 108 Element* element = Traversal<HTMLElement>::firstChild(*Traversal<HTMLEle ment>::firstChild(*m_document->body()));
109 m_ruleFeatureSet->collectInvalidationSetsForPseudoClass(invalidationList s, *element, pseudo); 109 m_ruleFeatureSet->collectInvalidationSetsForPseudoClass(invalidationList s, *element, pseudo);
110 } 110 }
111 111
112 void collectUniversalSiblingInvalidationSet(InvalidationLists& invalidationL ists)
113 {
114 m_ruleFeatureSet->collectUniversalSiblingInvalidationSet(invalidationLis ts);
115 }
116
112 const HashSet<AtomicString>& classSet(const InvalidationSet& invalidationSet ) 117 const HashSet<AtomicString>& classSet(const InvalidationSet& invalidationSet )
113 { 118 {
114 return invalidationSet.classSetForTesting(); 119 return invalidationSet.classSetForTesting();
115 } 120 }
116 121
117 const HashSet<AtomicString>& idSet(const InvalidationSet& invalidationSet) 122 const HashSet<AtomicString>& idSet(const InvalidationSet& invalidationSet)
118 { 123 {
119 return invalidationSet.idSetForTesting(); 124 return invalidationSet.idSetForTesting();
120 } 125 }
121 126
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures(":host-context(* ) [attr]")); 566 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures(":host-context(* ) [attr]"));
562 expectUncommonAttributeRuleCount(1); 567 expectUncommonAttributeRuleCount(1);
563 } 568 }
564 569
565 TEST_F(RuleFeatureSetTest, uncommonAttributeRulesAfterHostContextBeforePseudo) 570 TEST_F(RuleFeatureSetTest, uncommonAttributeRulesAfterHostContextBeforePseudo)
566 { 571 {
567 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures(":host-context([ attr])::before")); 572 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures(":host-context([ attr])::before"));
568 expectUncommonAttributeRuleCount(1); 573 expectUncommonAttributeRuleCount(1);
569 } 574 }
570 575
576 TEST_F(RuleFeatureSetTest, universalSiblingInvalidationDirectAdjacent)
577 {
578 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures("* + .a"));
579
580 InvalidationLists invalidationLists;
581 collectUniversalSiblingInvalidationSet(invalidationLists);
582
583 expectSiblingInvalidation(1, "a", invalidationLists.siblings);
584 expectSelfInvalidation(invalidationLists.siblings);
585 }
586
587 TEST_F(RuleFeatureSetTest, universalSiblingInvalidationMultipleDirectAdjacent)
588 {
589 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures("* + .a + .b"));
590
591 InvalidationLists invalidationLists;
592 collectUniversalSiblingInvalidationSet(invalidationLists);
593
594 expectSiblingInvalidation(2, "b", invalidationLists.siblings);
595 expectSelfInvalidation(invalidationLists.siblings);
596 }
597
598 TEST_F(RuleFeatureSetTest, universalSiblingInvalidationDirectAdjacentDescendant)
599 {
600 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures("* + .a .b"));
601
602 InvalidationLists invalidationLists;
603 collectUniversalSiblingInvalidationSet(invalidationLists);
604
605 expectSiblingDescendantInvalidation(1, "a", "b", invalidationLists.siblings) ;
606 expectNoSelfInvalidation(invalidationLists.siblings);
607 }
608
609 TEST_F(RuleFeatureSetTest, universalSiblingInvalidationIndirectAdjacent)
610 {
611 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures("* ~ .a"));
612
613 InvalidationLists invalidationLists;
614 collectUniversalSiblingInvalidationSet(invalidationLists);
615
616 expectSiblingInvalidation(UINT_MAX, "a", invalidationLists.siblings);
617 expectSelfInvalidation(invalidationLists.siblings);
618 }
619
620 TEST_F(RuleFeatureSetTest, universalSiblingInvalidationMultipleIndirectAdjacent)
621 {
622 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures("* ~ .a ~ .b"));
623
624 InvalidationLists invalidationLists;
625 collectUniversalSiblingInvalidationSet(invalidationLists);
626
627 expectSiblingInvalidation(UINT_MAX, "b", invalidationLists.siblings);
628 expectSelfInvalidation(invalidationLists.siblings);
629 }
630
631 TEST_F(RuleFeatureSetTest, universalSiblingInvalidationIndirectAdjacentDescendan t)
632 {
633 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures("* ~ .a .b"));
634
635 InvalidationLists invalidationLists;
636 collectUniversalSiblingInvalidationSet(invalidationLists);
637
638 expectSiblingDescendantInvalidation(UINT_MAX, "a", "b", invalidationLists.si blings);
639 expectNoSelfInvalidation(invalidationLists.siblings);
640 }
641
642 TEST_F(RuleFeatureSetTest, universalSiblingInvalidationNot)
643 {
644 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures(":not(.a) + .b") );
645
646 InvalidationLists invalidationLists;
647 collectUniversalSiblingInvalidationSet(invalidationLists);
648
649 expectSiblingInvalidation(1, "b", invalidationLists.siblings);
650 expectSelfInvalidation(invalidationLists.siblings);
651 }
652
653 TEST_F(RuleFeatureSetTest, nonUniversalSiblingInvalidationNot)
654 {
655 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures("#x:not(.a) + .b "));
656
657 InvalidationLists invalidationLists;
658 collectUniversalSiblingInvalidationSet(invalidationLists);
659
660 expectNoInvalidation(invalidationLists.siblings);
661 }
662
663 TEST_F(RuleFeatureSetTest, universalSiblingInvalidationAny)
664 {
665 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures(":-webkit-any(.a ) + .b"));
666
667 InvalidationLists invalidationLists;
668 collectUniversalSiblingInvalidationSet(invalidationLists);
669
670 expectSiblingInvalidation(1, "b", invalidationLists.siblings);
671 expectSelfInvalidation(invalidationLists.siblings);
672 }
673
674 TEST_F(RuleFeatureSetTest, nonUniversalSiblingInvalidationAny)
675 {
676 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures("#x:-webkit-any( .a) + .b"));
677
678 InvalidationLists invalidationLists;
679 collectUniversalSiblingInvalidationSet(invalidationLists);
680
681 expectNoInvalidation(invalidationLists.siblings);
682 }
683
684 TEST_F(RuleFeatureSetTest, universalSiblingInvalidationType)
685 {
686 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures("div + .a"));
687
688 InvalidationLists invalidationLists;
689 collectUniversalSiblingInvalidationSet(invalidationLists);
690
691 expectSiblingInvalidation(1, "a", invalidationLists.siblings);
692 expectSelfInvalidation(invalidationLists.siblings);
693 }
694
695 TEST_F(RuleFeatureSetTest, nonUniversalSiblingInvalidationType)
696 {
697 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures("div#x + .a"));
698
699 InvalidationLists invalidationLists;
700 collectUniversalSiblingInvalidationSet(invalidationLists);
701
702 expectNoInvalidation(invalidationLists.siblings);
703 }
704
705 TEST_F(RuleFeatureSetTest, universalSiblingInvalidationLink)
706 {
707 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures(":link + .a"));
708
709 InvalidationLists invalidationLists;
710 collectUniversalSiblingInvalidationSet(invalidationLists);
711
712 expectSiblingInvalidation(1, "a", invalidationLists.siblings);
713 expectSelfInvalidation(invalidationLists.siblings);
714 }
715
716 TEST_F(RuleFeatureSetTest, nonUniversalSiblingInvalidationLink)
717 {
718 EXPECT_EQ(RuleFeatureSet::SelectorMayMatch, collectFeatures("#x:link + .a")) ;
719
720 InvalidationLists invalidationLists;
721 collectUniversalSiblingInvalidationSet(invalidationLists);
722
723 expectNoInvalidation(invalidationLists.siblings);
724 }
725
571 } // namespace blink 726 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/RuleFeature.cpp ('k') | third_party/WebKit/Source/core/css/invalidation/InvalidationSet.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698