 Chromium Code Reviews
 Chromium Code Reviews Issue 129633003:
  Add a first pass of a class descendant invalidator, and a containing RuleSetAnalyzer  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk
    
  
    Issue 129633003:
  Add a first pass of a class descendant invalidator, and a containing RuleSetAnalyzer  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk| Index: Source/core/css/analyzer/RuleSetAnalyzer.h | 
| diff --git a/Source/core/svg/SVGLengthListTearOff.h b/Source/core/css/analyzer/RuleSetAnalyzer.h | 
| similarity index 60% | 
| copy from Source/core/svg/SVGLengthListTearOff.h | 
| copy to Source/core/css/analyzer/RuleSetAnalyzer.h | 
| index b28dc8c94e6171147890fb606b6d1c0e53bed86f..76997849e0d457c15ec853e41227d19d7fa2d3ea 100644 | 
| --- a/Source/core/svg/SVGLengthListTearOff.h | 
| +++ b/Source/core/css/analyzer/RuleSetAnalyzer.h | 
| @@ -28,31 +28,39 @@ | 
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
| */ | 
| -#ifndef SVGLengthListTearOff_h | 
| -#define SVGLengthListTearOff_h | 
| +#ifndef RuleSetAnalyzer_h | 
| +#define RuleSetAnalyzer_h | 
| -#include "core/svg/SVGLengthList.h" | 
| -#include "core/svg/properties/NewSVGListPropertyTearOffHelper.h" | 
| +#include "core/css/analyzer/DescendantInvalidationSet.h" | 
| +#include "wtf/RefCounted.h" | 
| namespace WebCore { | 
| -class SVGLengthListTearOff FINAL : | 
| - public NewSVGListPropertyTearOffHelper<SVGLengthListTearOff, SVGLengthList>, | 
| - public ScriptWrappable { | 
| +class CSSSelector; | 
| +class RuleFeatureSet; | 
| +class RuleData; | 
| + | 
| +// Keeps track of information about a set of CSS rules in order to answer style questions about them. | 
| +class RuleSetAnalyzer : public RefCounted<RuleSetAnalyzer> { | 
| public: | 
| - static PassRefPtr<SVGLengthListTearOff> create(PassRefPtr<SVGLengthList> target, SVGElement* contextElement, PropertyIsAnimValType propertyIsAnimVal, const QualifiedName& attributeName = nullQName()) | 
| - { | 
| - return adoptRef(new SVGLengthListTearOff(target, contextElement, propertyIsAnimVal, attributeName)); | 
| - } | 
| + static PassRefPtr<RuleSetAnalyzer> create(); | 
| + | 
| + void collectFeaturesFromRuleData(RuleFeatureSet& features, const RuleData&); | 
| + void combine(const RuleSetAnalyzer& other); | 
| + bool invalidateElementSubtreeForClassChange(const AtomicString& changedClass, Element* elementChanged) const; | 
| private: | 
| - SVGLengthListTearOff(PassRefPtr<SVGLengthList> target, SVGElement* contextElement, PropertyIsAnimValType propertyIsAnimVal, const QualifiedName& attributeName = nullQName()) | 
| - : NewSVGListPropertyTearOffHelper<SVGLengthListTearOff, SVGLengthList>(target, contextElement, propertyIsAnimVal, attributeName) | 
| - { | 
| - ScriptWrappable::init(this); | 
| - } | 
| + RuleSetAnalyzer() { } | 
| 
esprehn
2014/01/14 21:32:56
Put this in the cpp file, doesn't need to be inlin
 
chrishtr
2014/01/14 23:33:00
Done.
 | 
| + typedef HashMap<AtomicString, RefPtr<DescendantInvalidationSet> > InvalidationSetMap; | 
| + | 
| + DescendantInvalidationSet* ensureClassInvalidationSet(const AtomicString& className); | 
| + DescendantInvalidationSet* getClassInvalidationSet(const AtomicString& className) const; | 
| + | 
| + bool updateClassInvalidationSets(const CSSSelector*); | 
| + | 
| + InvalidationSetMap classInvalidationSets; | 
| }; | 
| } // namespace WebCore | 
| -#endif // SVGLengthListTearOff_h_ | 
| +#endif // RuleSetAnalyzer_h |