| Index: Source/core/css/invalidation/StyleInvalidator.h
|
| diff --git a/Source/core/css/invalidation/StyleInvalidator.h b/Source/core/css/invalidation/StyleInvalidator.h
|
| index 23ba0143a3091bd5b494d28a90f44534a4ebcc84..3efb6f4ccc6d43506b865cfbaa98ed7039f98413 100644
|
| --- a/Source/core/css/invalidation/StyleInvalidator.h
|
| +++ b/Source/core/css/invalidation/StyleInvalidator.h
|
| @@ -5,6 +5,7 @@
|
| #ifndef StyleInvalidator_h
|
| #define StyleInvalidator_h
|
|
|
| +#include "core/css/invalidation/InvalidationData.h"
|
| #include "platform/heap/Handle.h"
|
| #include "wtf/Noncopyable.h"
|
|
|
| @@ -21,7 +22,7 @@ public:
|
| StyleInvalidator();
|
| ~StyleInvalidator();
|
| void invalidate(Document&);
|
| - void scheduleInvalidation(PassRefPtrWillBeRawPtr<DescendantInvalidationSet>, Element&);
|
| + void scheduleInvalidation(PassRefPtrWillBeRawPtr<DescendantInvalidationSet>, Element&, InvalidateType);
|
| void clearInvalidation(Element&);
|
|
|
| void clearPendingInvalidations();
|
| @@ -40,7 +41,7 @@ private:
|
| { }
|
|
|
| void pushInvalidationSet(const DescendantInvalidationSet&);
|
| - bool matchesCurrentInvalidationSets(Element&);
|
| + bool matchesCurrentInvalidationSets(Element&) const;
|
| bool hasInvalidationSets() const { return !wholeSubtreeInvalid() && m_invalidationSets.size(); }
|
|
|
| bool wholeSubtreeInvalid() const { return m_wholeSubtreeInvalid; }
|
| @@ -57,7 +58,23 @@ private:
|
| bool m_insertionPointCrossing;
|
| };
|
|
|
| - bool invalidate(Element&, RecursionData&);
|
| + class SiblingData {
|
| + STACK_ALLOCATED();
|
| + public:
|
| + SiblingData()
|
| + : m_elementIndex(0)
|
| + { }
|
| +
|
| + void pushInvalidationSet(const DescendantInvalidationSet&);
|
| + bool matchesCurrentInvalidationSets(Element&);
|
| +
|
| + using InvalidationSets = WillBeHeapVector<RawPtrWillBeMember<const DescendantInvalidationSet>, 16>;
|
| + InvalidationSets m_invalidationSets;
|
| + Vector<unsigned> m_invalidationLimits;
|
| + unsigned m_elementIndex;
|
| + };
|
| +
|
| + bool invalidate(Element&, RecursionData&, SiblingData&);
|
| bool invalidateChildren(Element&, RecursionData&);
|
| bool checkInvalidationSetsAgainstElement(Element&, RecursionData&);
|
|
|
| @@ -94,9 +111,9 @@ private:
|
| using InvalidationList = WillBeHeapVector<RefPtrWillBeMember<DescendantInvalidationSet>>;
|
| using PendingInvalidationMap = WillBeHeapHashMap<RawPtrWillBeMember<Element>, OwnPtrWillBeMember<InvalidationList>>;
|
|
|
| - InvalidationList& ensurePendingInvalidationList(Element&);
|
| + InvalidationList& ensurePendingInvalidationList(Element&, InvalidateType);
|
|
|
| - PendingInvalidationMap m_pendingInvalidationMap;
|
| + PendingInvalidationMap m_pendingInvalidationMap[InvalidateTypeCount];
|
| };
|
|
|
| } // namespace blink
|
|
|