Changeset 135967 in webkit
- Timestamp:
- Nov 27, 2012, 8:37:21 PM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r135965 r135967 1 2012-11-27 Shinya Kawanaka <shinyak@chromium.org> 2 3 [Refactoring] HasSelectorForClassStyleFunctor in Element.cpp seems verbose 4 https://bugs.webkit.org/show_bug.cgi?id=103474 5 6 Reviewed by Hajime Morita. 7 8 The code introduced in r135174 looks verbose. We would like to make it simpler. 9 We have removed several inline functions and unnecessary structs. 10 11 No new tests, simple refactoring. 12 13 * dom/Element.cpp: 14 (WebCore): 15 (WebCore::checkSelectorForClassChange): 16 (WebCore::Element::classAttributeChanged): 17 (WebCore::Element::shouldInvalidateDistributionWhenAttributeChanged): 18 1 19 2012-11-27 Julien Chaffraix <jchaffraix@webkit.org> 2 20 -
trunk/Source/WebCore/dom/Element.cpp
r135914 r135967 826 826 } 827 827 828 struct HasSelectorForClassStyleFunctor { 829 explicit HasSelectorForClassStyleFunctor(StyleResolver* resolver) 830 : styleResolver(resolver) 831 { } 832 833 bool operator()(const AtomicString& className) const 834 { 835 return styleResolver->hasSelectorForClass(className); 836 } 837 838 StyleResolver* styleResolver; 839 }; 840 841 struct HasSelectorForClassDistributionFunctor { 842 explicit HasSelectorForClassDistributionFunctor(ElementShadow* elementShadow) 843 : elementShadow(elementShadow) 844 { } 845 846 bool operator()(const AtomicString& className) const 847 { 848 return elementShadow->selectRuleFeatureSet().hasSelectorForClass(className); 849 } 850 851 ElementShadow* elementShadow; 852 }; 853 854 template<typename Functor> 855 static bool checkFunctorForClassChange(const SpaceSplitString& changedClasses, Functor functor) 828 template<typename Checker> 829 static bool checkSelectorForClassChange(const SpaceSplitString& changedClasses, const Checker& checker) 856 830 { 857 831 unsigned changedSize = changedClasses.size(); 858 832 for (unsigned i = 0; i < changedSize; ++i) { 859 if ( functor(changedClasses[i]))833 if (checker.hasSelectorForClass(changedClasses[i])) 860 834 return true; 861 835 } … … 863 837 } 864 838 865 template<typename Functor>866 static bool check FunctorForClassChange(const SpaceSplitString& oldClasses, const SpaceSplitString& newClasses, Functor functor)839 template<typename Checker> 840 static bool checkSelectorForClassChange(const SpaceSplitString& oldClasses, const SpaceSplitString& newClasses, const Checker& checker) 867 841 { 868 842 unsigned oldSize = oldClasses.size(); 869 843 if (!oldSize) 870 return check FunctorForClassChange(newClasses, functor);844 return checkSelectorForClassChange(newClasses, checker); 871 845 BitVector remainingClassBits; 872 846 remainingClassBits.ensureSize(oldSize); … … 880 854 } 881 855 } 882 if ( functor(newClasses[i]))856 if (checker.hasSelectorForClass(newClasses[i])) 883 857 return true; 884 858 } … … 887 861 if (remainingClassBits.quickGet(i)) 888 862 continue; 889 if ( functor(oldClasses[i]))863 if (checker.hasSelectorForClass(oldClasses[i])) 890 864 return true; 891 865 } 892 866 return false; 893 }894 895 static inline bool checkNeedsStyleInvalidationForClassChange(const SpaceSplitString& changedClasses, StyleResolver* styleResolver)896 {897 return checkFunctorForClassChange(changedClasses, HasSelectorForClassStyleFunctor(styleResolver));898 }899 900 static inline bool checkNeedsStyleInvalidationForClassChange(const SpaceSplitString& oldClasses, const SpaceSplitString& newClasses, StyleResolver* styleResolver)901 {902 return checkFunctorForClassChange(oldClasses, newClasses, HasSelectorForClassStyleFunctor(styleResolver));903 }904 905 static inline bool checkNeedsDistributionInvalidationForClassChange(const SpaceSplitString& changedClasses, ElementShadow* elementShadow)906 {907 return checkFunctorForClassChange(changedClasses, HasSelectorForClassDistributionFunctor(elementShadow));908 }909 910 static inline bool checkNeedsDistributionInvalidationForClassChange(const SpaceSplitString& oldClasses, const SpaceSplitString& newClasses, ElementShadow* elementShadow)911 {912 return checkFunctorForClassChange(oldClasses, newClasses, HasSelectorForClassDistributionFunctor(elementShadow));913 867 } 914 868 … … 927 881 928 882 const SpaceSplitString& newClasses = attributeData->classNames(); 929 shouldInvalidateStyle = testShouldInvalidateStyle && check NeedsStyleInvalidationForClassChange(oldClasses, newClasses,styleResolver);883 shouldInvalidateStyle = testShouldInvalidateStyle && checkSelectorForClassChange(oldClasses, newClasses, *styleResolver); 930 884 } else if (const ElementAttributeData* attributeData = this->attributeData()) { 931 885 const SpaceSplitString& oldClasses = attributeData->classNames(); 932 shouldInvalidateStyle = testShouldInvalidateStyle && check NeedsStyleInvalidationForClassChange(oldClasses,styleResolver);886 shouldInvalidateStyle = testShouldInvalidateStyle && checkSelectorForClassChange(oldClasses, *styleResolver); 933 887 934 888 attributeData->clearClass(); … … 965 919 const SpaceSplitString& oldClasses = attributeData->classNames(); 966 920 const SpaceSplitString newClasses(newClassString, shouldFoldCase); 967 if (check NeedsDistributionInvalidationForClassChange(oldClasses, newClasses, elementShadow))921 if (checkSelectorForClassChange(oldClasses, newClasses, elementShadow->selectRuleFeatureSet())) 968 922 return true; 969 923 } else if (const ElementAttributeData* attributeData = this->attributeData()) { 970 924 const SpaceSplitString& oldClasses = attributeData->classNames(); 971 if (check NeedsDistributionInvalidationForClassChange(oldClasses, elementShadow))925 if (checkSelectorForClassChange(oldClasses, elementShadow->selectRuleFeatureSet())) 972 926 return true; 973 927 }
Note:
See TracChangeset
for help on using the changeset viewer.