| Index: Source/core/dom/Node.h
|
| diff --git a/Source/core/dom/Node.h b/Source/core/dom/Node.h
|
| index 055813dac062d97c465672647904a6be5a8bd768..427c7eaa2bb7c08bbfe696bebba7965304d146f1 100644
|
| --- a/Source/core/dom/Node.h
|
| +++ b/Source/core/dom/Node.h
|
| @@ -85,7 +85,7 @@ class TouchEvent;
|
|
|
| typedef int ExceptionCode;
|
|
|
| -const int nodeStyleChangeShift = 15;
|
| +const int nodeStyleChangeShift = 14;
|
|
|
| enum StyleChangeType {
|
| NoStyleChange = 0,
|
| @@ -258,12 +258,21 @@ public:
|
| virtual bool isMediaControlElement() const { return false; }
|
| virtual bool isMediaControls() const { return false; }
|
| virtual bool isWebVTTElement() const { return false; }
|
| - bool isStyledElement() const { return getFlag(IsStyledElementFlag); }
|
| virtual bool isAttributeNode() const { return false; }
|
| virtual bool isCharacterDataNode() const { return false; }
|
| virtual bool isFrameOwnerElement() const { return false; }
|
| virtual bool isPluginElement() const { return false; }
|
|
|
| + // StyledElements allow inline style (style="border: 1px"), presentational attributes (ex. color),
|
| + // class names (ex. class="foo bar") and other non-basic styling features. They and also control
|
| + // if this element can participate in style sharing.
|
| + //
|
| + // FIXME: The only things that ever go through StyleResolver that aren't StyledElements are
|
| + // PseudoElements and WebVTTElements. It's possible we can just eliminate all the checks
|
| + // since those elements will never have class names, inline style, or other things that
|
| + // this apparently guards against.
|
| + bool isStyledElement() const { return isHTMLElement() || isSVGElement(); }
|
| +
|
| bool isDocumentNode() const;
|
| bool isTreeScope() const { return treeScope()->rootNode() == this; }
|
| bool isDocumentFragment() const { return getFlag(IsDocumentFragmentFlag); }
|
| @@ -716,46 +725,45 @@ private:
|
| IsTextFlag = 1,
|
| IsContainerFlag = 1 << 1,
|
| IsElementFlag = 1 << 2,
|
| - IsStyledElementFlag = 1 << 3,
|
| - IsHTMLFlag = 1 << 4,
|
| - IsSVGFlag = 1 << 5,
|
| - IsAttachedFlag = 1 << 6,
|
| - ChildNeedsStyleRecalcFlag = 1 << 7,
|
| - InDocumentFlag = 1 << 8,
|
| - IsLinkFlag = 1 << 9,
|
| - IsUserActionElement = 1 << 10,
|
| - HasRareDataFlag = 1 << 11,
|
| - IsDocumentFragmentFlag = 1 << 12,
|
| + IsHTMLFlag = 1 << 3,
|
| + IsSVGFlag = 1 << 4,
|
| + IsAttachedFlag = 1 << 5,
|
| + ChildNeedsStyleRecalcFlag = 1 << 6,
|
| + InDocumentFlag = 1 << 7,
|
| + IsLinkFlag = 1 << 8,
|
| + IsUserActionElement = 1 << 9,
|
| + HasRareDataFlag = 1 << 10,
|
| + IsDocumentFragmentFlag = 1 << 11,
|
|
|
| // These bits are used by derived classes, pulled up here so they can
|
| // be stored in the same memory word as the Node bits above.
|
| - IsParsingChildrenFinishedFlag = 1 << 13, // Element
|
| - HasSVGRareDataFlag = 1 << 14, // SVGElement
|
| + IsParsingChildrenFinishedFlag = 1 << 12, // Element
|
| + HasSVGRareDataFlag = 1 << 13, // SVGElement
|
|
|
| StyleChangeMask = 1 << nodeStyleChangeShift | 1 << (nodeStyleChangeShift + 1),
|
|
|
| - SelfOrAncestorHasDirAutoFlag = 1 << 17,
|
| + SelfOrAncestorHasDirAutoFlag = 1 << 16,
|
|
|
| - HasNameOrIsEditingTextFlag = 1 << 18,
|
| + HasNameOrIsEditingTextFlag = 1 << 17,
|
|
|
| - InNamedFlowFlag = 1 << 19,
|
| - HasSyntheticAttrChildNodesFlag = 1 << 20,
|
| - HasCustomStyleCallbacksFlag = 1 << 21,
|
| - HasScopedHTMLStyleChildFlag = 1 << 22,
|
| - HasEventTargetDataFlag = 1 << 23,
|
| - V8CollectableDuringMinorGCFlag = 1 << 24,
|
| - IsInsertionPointFlag = 1 << 25,
|
| - IsInShadowTreeFlag = 1 << 26,
|
| - IsCustomElement = 1 << 27,
|
| + InNamedFlowFlag = 1 << 18,
|
| + HasSyntheticAttrChildNodesFlag = 1 << 19,
|
| + HasCustomStyleCallbacksFlag = 1 << 20,
|
| + HasScopedHTMLStyleChildFlag = 1 << 21,
|
| + HasEventTargetDataFlag = 1 << 22,
|
| + V8CollectableDuringMinorGCFlag = 1 << 23,
|
| + IsInsertionPointFlag = 1 << 24,
|
| + IsInShadowTreeFlag = 1 << 25,
|
| + IsCustomElement = 1 << 26,
|
|
|
| - NotifyRendererWithIdenticalStyles = 1 << 28,
|
| + NotifyRendererWithIdenticalStyles = 1 << 27,
|
|
|
| - IsUpgradedCustomElement = 1 << 29,
|
| + IsUpgradedCustomElement = 1 << 28,
|
|
|
| DefaultNodeFlags = IsParsingChildrenFinishedFlag
|
| };
|
|
|
| - // 2 bits remaining
|
| + // 3 bits remaining
|
|
|
| bool getFlag(NodeFlags mask) const { return m_nodeFlags & mask; }
|
| void setFlag(bool f, NodeFlags mask) const { m_nodeFlags = (m_nodeFlags & ~mask) | (-(int32_t)f & mask); }
|
| @@ -771,9 +779,8 @@ protected:
|
| CreatePseudoElement = CreateElement | InDocumentFlag,
|
| CreateShadowRoot = CreateContainer | IsDocumentFragmentFlag | IsInShadowTreeFlag,
|
| CreateDocumentFragment = CreateContainer | IsDocumentFragmentFlag,
|
| - CreateStyledElement = CreateElement | IsStyledElementFlag,
|
| - CreateHTMLElement = CreateStyledElement | IsHTMLFlag,
|
| - CreateSVGElement = CreateStyledElement | IsSVGFlag,
|
| + CreateHTMLElement = CreateElement | IsHTMLFlag,
|
| + CreateSVGElement = CreateElement | IsSVGFlag,
|
| CreateDocument = CreateContainer | InDocumentFlag,
|
| CreateInsertionPoint = CreateHTMLElement | IsInsertionPointFlag,
|
| CreateEditingText = CreateText | HasNameOrIsEditingTextFlag,
|
|
|