| Index: Source/core/dom/ContainerNode.h
|
| diff --git a/Source/core/dom/ContainerNode.h b/Source/core/dom/ContainerNode.h
|
| index 9f22455fb6293c486c1b297c6cad5844423ccf22..97423d97af0c052335e6de2d1852ac5eb0f51e49 100644
|
| --- a/Source/core/dom/ContainerNode.h
|
| +++ b/Source/core/dom/ContainerNode.h
|
| @@ -76,6 +76,21 @@ private:
|
| #endif
|
| };
|
|
|
| +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 ContainerNode : public Node {
|
| public:
|
| virtual ~ContainerNode();
|
| @@ -127,6 +142,42 @@ public:
|
| virtual void setActive(bool = true) OVERRIDE;
|
| virtual void setHovered(bool = true) OVERRIDE;
|
|
|
| + bool childrenAffectedByFocus() const { return hasRestyleFlag(ChildrenAffectedByFocus); }
|
| + 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 checkForChildrenAdjacentRuleChanges();
|
| +
|
| + bool childrenSupportStyleSharing() const { return !hasRestyleFlags(); }
|
| +
|
| // -----------------------------------------------------------------------------
|
| // Notification of document structure changes (see core/dom/Node.h for more notification methods)
|
|
|
| @@ -156,6 +207,12 @@ private:
|
| void willRemoveChildren();
|
| void willRemoveChild(Node& child);
|
|
|
| + 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;
|
| +
|
| inline bool checkAcceptChildGuaranteedNodeTypes(const Node& newChild, ExceptionState&) const;
|
| inline bool checkAcceptChild(const Node* newChild, const Node* oldChild, ExceptionState&) const;
|
| inline bool containsConsideringHostElements(const Node&) const;
|
| @@ -252,7 +309,7 @@ inline Node& Node::highestAncestor() const
|
| return *highest;
|
| }
|
|
|
| -inline Node* Node::parentElementOrShadowRoot() const
|
| +inline ContainerNode* Node::parentElementOrShadowRoot() const
|
| {
|
| ContainerNode* parent = parentNode();
|
| return parent && (parent->isElementNode() || parent->isShadowRoot()) ? parent : 0;
|
|
|