Chromium Code Reviews| Index: Source/core/dom/Node.h |
| diff --git a/Source/core/dom/Node.h b/Source/core/dom/Node.h |
| index cce831a769f2edc00b28ea5f7808fa1f672bb756..b85ca81ae2912c25d0182c7933ec4fcf379ea584 100644 |
| --- a/Source/core/dom/Node.h |
| +++ b/Source/core/dom/Node.h |
| @@ -100,6 +100,21 @@ enum StyleChangeSource { |
| StyleChangeFromRenderer |
| }; |
| +enum DynamicRestyleFlags { |
| + ChildrenAffectedByFocus = 1 << 0, |
| + ChildrenAffectedByHover = 1 << 1, |
| + ChildrenAffectedByActive = 1 << 2, |
| + ChildrenAffectedByDrag = 1 << 3, |
| + ChildrenAffectedByFirstChildRules = 1 << 4, |
| + ChildrenAffectedByLastChildRules = 1 << 5, |
| + ChildrenAffectedByDirectAdjacentRules = 1 << 6, |
| + ChildrenAffectedByIndirectAdjacentRules = 1 << 7, |
| + ChildrenAffectedByForwardPositionalRules = 1 << 8, |
| + ChildrenAffectedByBackwardPositionalRules = 1 << 9, |
| + |
| + NumberOfDynamicRestyleFlags = 10, |
| +}; |
| + |
| class NodeRareDataBase { |
| public: |
| RenderObject* renderer() const { return m_renderer; } |
| @@ -377,6 +392,38 @@ public: |
| bool shouldNotifyRendererWithIdenticalStyles() const { return getFlag(NotifyRendererWithIdenticalStyles); } |
| + bool childrenAffectedByFocus() const { return hasRestyleFlag(ChildrenAffectedByFocus); } |
|
ojan
2014/03/21 22:39:12
What isn't all this stuff on ContainerNode?
|
| + void setChildrenAffectedByFocus() { setRestyleFlag(ChildrenAffectedByFocus); } |
| + |
| + bool childrenAffectedByHover() const { return hasRestyleFlag(ChildrenAffectedByHover); } |
| + void setChildrenAffectedByHover() { setRestyleFlag(ChildrenAffectedByHover); } |
| + |
| + bool childrenAffectedByActive() const { return hasRestyleFlag(ChildrenAffectedByActive); } |
| + void setChildrenAffectedByActive() { setRestyleFlag(ChildrenAffectedByActive); } |
| + |
| + bool childrenAffectedByDrag() const { return hasRestyleFlag(ChildrenAffectedByDrag); } |
| + void setChildrenAffectedByDrag() { setRestyleFlag(ChildrenAffectedByDrag); } |
| + |
| + bool childrenAffectedByPositionalRules() const { return hasRestyleFlag(ChildrenAffectedByForwardPositionalRules) || hasRestyleFlag(ChildrenAffectedByBackwardPositionalRules); } |
| + |
| + bool childrenAffectedByFirstChildRules() const { return hasRestyleFlag(ChildrenAffectedByFirstChildRules); } |
| + void setChildrenAffectedByFirstChildRules() { setRestyleFlag(ChildrenAffectedByFirstChildRules); } |
| + |
| + bool childrenAffectedByLastChildRules() const { return hasRestyleFlag(ChildrenAffectedByLastChildRules); } |
| + void setChildrenAffectedByLastChildRules() { setRestyleFlag(ChildrenAffectedByLastChildRules); } |
| + |
| + bool childrenAffectedByDirectAdjacentRules() const { return hasRestyleFlag(ChildrenAffectedByDirectAdjacentRules); } |
| + void setChildrenAffectedByDirectAdjacentRules() { setRestyleFlag(ChildrenAffectedByDirectAdjacentRules); } |
| + |
| + bool childrenAffectedByIndirectAdjacentRules() const { return hasRestyleFlag(ChildrenAffectedByIndirectAdjacentRules); } |
| + void setChildrenAffectedByIndirectAdjacentRules() { setRestyleFlag(ChildrenAffectedByIndirectAdjacentRules); } |
| + |
| + bool childrenAffectedByForwardPositionalRules() const { return hasRestyleFlag(ChildrenAffectedByForwardPositionalRules); } |
| + void setChildrenAffectedByForwardPositionalRules() { setRestyleFlag(ChildrenAffectedByForwardPositionalRules); } |
| + |
| + bool childrenAffectedByBackwardPositionalRules() const { return hasRestyleFlag(ChildrenAffectedByBackwardPositionalRules); } |
| + void setChildrenAffectedByBackwardPositionalRules() { setRestyleFlag(ChildrenAffectedByBackwardPositionalRules); } |
| + |
| void setIsLink(bool f); |
| bool hasScopedHTMLStyleChild() const { return getFlag(HasScopedHTMLStyleChildFlag); } |
| @@ -672,6 +719,9 @@ public: |
| void setAlreadySpellChecked(bool flag) { setFlag(flag, AlreadySpellCheckedFlag); } |
| bool isAlreadySpellChecked() { return getFlag(AlreadySpellCheckedFlag); } |
| + bool isFinishedParsingChildren() const { return getFlag(IsFinishedParsingChildrenFlag); } |
| + bool childrenSupportStyleSharing() const { return !hasRestyleFlags(); } |
| + |
| private: |
| enum NodeFlags { |
| IsTextFlag = 1, |
| @@ -728,6 +778,12 @@ private: |
| void setFlag(NodeFlags mask) const { m_nodeFlags |= mask; } |
| void clearFlag(NodeFlags mask) const { m_nodeFlags &= ~mask; } |
| + bool hasRestyleFlag(DynamicRestyleFlags mask) const { return hasRareData() && hasRestyleFlagInternal(mask); } |
| + bool hasRestyleFlags() const { return hasRareData() && hasRestyleFlagsInternal(); } |
| + void setRestyleFlag(DynamicRestyleFlags); |
| + bool hasRestyleFlagInternal(DynamicRestyleFlags) const; |
| + bool hasRestyleFlagsInternal() const; |
| + |
| protected: |
| enum ConstructionType { |
| CreateOther = DefaultNodeFlags, |
| @@ -786,7 +842,6 @@ protected: |
| void markAncestorsWithChildNeedsStyleRecalc(); |
| - bool isFinishedParsingChildren() const { return getFlag(IsFinishedParsingChildrenFlag); } |
| void setIsFinishedParsingChildren(bool value) { setFlag(value, IsFinishedParsingChildrenFlag); } |
| private: |