diff options
Diffstat (limited to 'Source/WebCore/dom/ElementRareData.h')
-rw-r--r-- | Source/WebCore/dom/ElementRareData.h | 132 |
1 files changed, 65 insertions, 67 deletions
diff --git a/Source/WebCore/dom/ElementRareData.h b/Source/WebCore/dom/ElementRareData.h index 5a00ea298..4b32068b4 100644 --- a/Source/WebCore/dom/ElementRareData.h +++ b/Source/WebCore/dom/ElementRareData.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008, 2009, 2010 Apple Inc. All rights reserved. + * Copyright (C) 2008, 2009, 2010, 2014, 2016 Apple Inc. All rights reserved. * Copyright (C) 2008 David Smith <catfish.man@gmail.com> * * This library is free software; you can redistribute it and/or @@ -19,147 +19,146 @@ * */ -#ifndef ElementRareData_h -#define ElementRareData_h +#pragma once -#include "ClassList.h" +#include "CustomElementReactionQueue.h" +#include "DOMTokenList.h" #include "DatasetDOMStringMap.h" +#include "JSCustomElementInterface.h" #include "NamedNodeMap.h" #include "NodeRareData.h" #include "PseudoElement.h" #include "RenderElement.h" #include "ShadowRoot.h" #include "StyleInheritedData.h" -#include <wtf/OwnPtr.h> namespace WebCore { class ElementRareData : public NodeRareData { public: - static PassOwnPtr<ElementRareData> create(RenderElement* renderer) { return adoptPtr(new ElementRareData(renderer)); } - + explicit ElementRareData(RenderElement*); ~ElementRareData(); - void setBeforePseudoElement(PassRefPtr<PseudoElement>); - void setAfterPseudoElement(PassRefPtr<PseudoElement>); + void setBeforePseudoElement(RefPtr<PseudoElement>&&); + void setAfterPseudoElement(RefPtr<PseudoElement>&&); PseudoElement* beforePseudoElement() const { return m_beforePseudoElement.get(); } PseudoElement* afterPseudoElement() const { return m_afterPseudoElement.get(); } void resetComputedStyle(); - void resetDynamicRestyleObservations(); + void resetStyleRelations(); - short tabIndex() const { return m_tabIndex; } - void setTabIndexExplicitly(short index) { m_tabIndex = index; m_tabIndexWasSetExplicitly = true; } + int tabIndex() const { return m_tabIndex; } + void setTabIndexExplicitly(int index) { m_tabIndex = index; m_tabIndexWasSetExplicitly = true; } bool tabIndexSetExplicitly() const { return m_tabIndexWasSetExplicitly; } void clearTabIndexExplicitly() { m_tabIndex = 0; m_tabIndexWasSetExplicitly = false; } bool needsFocusAppearanceUpdateSoonAfterAttach() const { return m_needsFocusAppearanceUpdateSoonAfterAttach; } void setNeedsFocusAppearanceUpdateSoonAfterAttach(bool needs) { m_needsFocusAppearanceUpdateSoonAfterAttach = needs; } + bool styleAffectedByActive() const { return m_styleAffectedByActive; } + void setStyleAffectedByActive(bool value) { m_styleAffectedByActive = value; } + bool styleAffectedByEmpty() const { return m_styleAffectedByEmpty; } void setStyleAffectedByEmpty(bool value) { m_styleAffectedByEmpty = value; } - bool isInCanvasSubtree() const { return m_isInCanvasSubtree; } - void setIsInCanvasSubtree(bool value) { m_isInCanvasSubtree = value; } - - bool isInsideRegion() const { return m_isInsideRegion; } - void setIsInsideRegion(bool value) { m_isInsideRegion = value; } + bool styleAffectedByFocusWithin() const { return m_styleAffectedByFocusWithin; } + void setStyleAffectedByFocusWithin(bool value) { m_styleAffectedByFocusWithin = value; } RegionOversetState regionOversetState() const { return m_regionOversetState; } void setRegionOversetState(RegionOversetState state) { m_regionOversetState = state; } + bool isNamedFlowContentElement() const { return m_isNamedFlowContentElement; } + void setIsNamedFlowContentElement(bool value) { m_isNamedFlowContentElement = value; } + #if ENABLE(FULLSCREEN_API) bool containsFullScreenElement() { return m_containsFullScreenElement; } void setContainsFullScreenElement(bool value) { m_containsFullScreenElement = value; } #endif - bool childrenAffectedByActive() const { return m_childrenAffectedByActive; } - void setChildrenAffectedByActive(bool value) { m_childrenAffectedByActive = value; } bool childrenAffectedByDrag() const { return m_childrenAffectedByDrag; } void setChildrenAffectedByDrag(bool value) { m_childrenAffectedByDrag = value; } bool childrenAffectedByLastChildRules() const { return m_childrenAffectedByLastChildRules; } void setChildrenAffectedByLastChildRules(bool value) { m_childrenAffectedByLastChildRules = value; } - bool childrenAffectedByForwardPositionalRules() const { return m_childrenAffectedByForwardPositionalRules; } - void setChildrenAffectedByForwardPositionalRules(bool value) { m_childrenAffectedByForwardPositionalRules = value; } bool childrenAffectedByBackwardPositionalRules() const { return m_childrenAffectedByBackwardPositionalRules; } void setChildrenAffectedByBackwardPositionalRules(bool value) { m_childrenAffectedByBackwardPositionalRules = value; } + bool childrenAffectedByPropertyBasedBackwardPositionalRules() const { return m_childrenAffectedByPropertyBasedBackwardPositionalRules; } + void setChildrenAffectedByPropertyBasedBackwardPositionalRules(bool value) { m_childrenAffectedByPropertyBasedBackwardPositionalRules = value; } + unsigned childIndex() const { return m_childIndex; } void setChildIndex(unsigned index) { m_childIndex = index; } + static ptrdiff_t childIndexMemoryOffset() { return OBJECT_OFFSETOF(ElementRareData, m_childIndex); } void clearShadowRoot() { m_shadowRoot = nullptr; } ShadowRoot* shadowRoot() const { return m_shadowRoot.get(); } - void setShadowRoot(PassRefPtr<ShadowRoot> shadowRoot) { m_shadowRoot = shadowRoot; } + void setShadowRoot(RefPtr<ShadowRoot>&& shadowRoot) { m_shadowRoot = WTFMove(shadowRoot); } + + CustomElementReactionQueue* customElementReactionQueue() { return m_customElementReactionQueue.get(); } + void setCustomElementReactionQueue(std::unique_ptr<CustomElementReactionQueue>&& queue) { m_customElementReactionQueue = WTFMove(queue); } NamedNodeMap* attributeMap() const { return m_attributeMap.get(); } - void setAttributeMap(PassOwnPtr<NamedNodeMap> attributeMap) { m_attributeMap = attributeMap; } + void setAttributeMap(std::unique_ptr<NamedNodeMap> attributeMap) { m_attributeMap = WTFMove(attributeMap); } RenderStyle* computedStyle() const { return m_computedStyle.get(); } - void setComputedStyle(PassRef<RenderStyle> computedStyle) { m_computedStyle = std::move(computedStyle); } + void setComputedStyle(std::unique_ptr<RenderStyle> computedStyle) { m_computedStyle = WTFMove(computedStyle); } - ClassList* classList() const { return m_classList.get(); } - void setClassList(std::unique_ptr<ClassList> classList) { m_classList = std::move(classList); } - void clearClassListValueForQuirksMode() - { - if (!m_classList) - return; - m_classList->clearValueForQuirksMode(); - } + DOMTokenList* classList() const { return m_classList.get(); } + void setClassList(std::unique_ptr<DOMTokenList> classList) { m_classList = WTFMove(classList); } DatasetDOMStringMap* dataset() const { return m_dataset.get(); } - void setDataset(std::unique_ptr<DatasetDOMStringMap> dataset) { m_dataset = std::move(dataset); } + void setDataset(std::unique_ptr<DatasetDOMStringMap> dataset) { m_dataset = WTFMove(dataset); } LayoutSize minimumSizeForResizing() const { return m_minimumSizeForResizing; } void setMinimumSizeForResizing(LayoutSize size) { m_minimumSizeForResizing = size; } - IntSize savedLayerScrollOffset() const { return m_savedLayerScrollOffset; } - void setSavedLayerScrollOffset(IntSize size) { m_savedLayerScrollOffset = size; } + IntPoint savedLayerScrollPosition() const { return m_savedLayerScrollPosition; } + void setSavedLayerScrollPosition(IntPoint position) { m_savedLayerScrollPosition = position; } -#if ENABLE(SVG) bool hasPendingResources() const { return m_hasPendingResources; } void setHasPendingResources(bool has) { m_hasPendingResources = has; } -#endif + + bool hasDisplayContents() const { return m_hasDisplayContents; } + void setHasDisplayContents(bool value) { m_hasDisplayContents = value; } private: - short m_tabIndex; + int m_tabIndex; unsigned short m_childIndex; unsigned m_tabIndexWasSetExplicitly : 1; unsigned m_needsFocusAppearanceUpdateSoonAfterAttach : 1; + unsigned m_styleAffectedByActive : 1; unsigned m_styleAffectedByEmpty : 1; - unsigned m_isInCanvasSubtree : 1; + unsigned m_styleAffectedByFocusWithin : 1; #if ENABLE(FULLSCREEN_API) unsigned m_containsFullScreenElement : 1; #endif -#if ENABLE(SVG) unsigned m_hasPendingResources : 1; -#endif unsigned m_childrenAffectedByHover : 1; - unsigned m_childrenAffectedByActive : 1; unsigned m_childrenAffectedByDrag : 1; // Bits for dynamic child matching. // We optimize for :first-child and :last-child. The other positional child selectors like nth-child or // *-child-of-type, we will just give up and re-evaluate whenever children change at all. unsigned m_childrenAffectedByLastChildRules : 1; - unsigned m_childrenAffectedByForwardPositionalRules : 1; unsigned m_childrenAffectedByBackwardPositionalRules : 1; + unsigned m_childrenAffectedByPropertyBasedBackwardPositionalRules : 1; + unsigned m_hasDisplayContents : 1; + unsigned m_isNamedFlowContentElement : 1; - unsigned m_isInsideRegion : 1; RegionOversetState m_regionOversetState; LayoutSize m_minimumSizeForResizing; - IntSize m_savedLayerScrollOffset; - RefPtr<RenderStyle> m_computedStyle; + IntPoint m_savedLayerScrollPosition; + std::unique_ptr<RenderStyle> m_computedStyle; std::unique_ptr<DatasetDOMStringMap> m_dataset; - std::unique_ptr<ClassList> m_classList; + std::unique_ptr<DOMTokenList> m_classList; RefPtr<ShadowRoot> m_shadowRoot; - OwnPtr<NamedNodeMap> m_attributeMap; + std::unique_ptr<CustomElementReactionQueue> m_customElementReactionQueue; + std::unique_ptr<NamedNodeMap> m_attributeMap; RefPtr<PseudoElement> m_beforePseudoElement; RefPtr<PseudoElement> m_afterPseudoElement; - explicit ElementRareData(RenderElement*); void releasePseudoElement(PseudoElement*); }; @@ -174,21 +173,20 @@ inline ElementRareData::ElementRareData(RenderElement* renderer) , m_childIndex(0) , m_tabIndexWasSetExplicitly(false) , m_needsFocusAppearanceUpdateSoonAfterAttach(false) + , m_styleAffectedByActive(false) , m_styleAffectedByEmpty(false) - , m_isInCanvasSubtree(false) + , m_styleAffectedByFocusWithin(false) #if ENABLE(FULLSCREEN_API) , m_containsFullScreenElement(false) #endif -#if ENABLE(SVG) , m_hasPendingResources(false) -#endif , m_childrenAffectedByHover(false) - , m_childrenAffectedByActive(false) , m_childrenAffectedByDrag(false) , m_childrenAffectedByLastChildRules(false) - , m_childrenAffectedByForwardPositionalRules(false) , m_childrenAffectedByBackwardPositionalRules(false) - , m_isInsideRegion(false) + , m_childrenAffectedByPropertyBasedBackwardPositionalRules(false) + , m_hasDisplayContents(false) + , m_isNamedFlowContentElement(false) , m_regionOversetState(RegionUndefined) , m_minimumSizeForResizing(defaultMinimumSizeForResizing()) { @@ -201,34 +199,34 @@ inline ElementRareData::~ElementRareData() ASSERT(!m_afterPseudoElement); } -inline void ElementRareData::setBeforePseudoElement(PassRefPtr<PseudoElement> pseudoElement) +inline void ElementRareData::setBeforePseudoElement(RefPtr<PseudoElement>&& pseudoElement) { ASSERT(!m_beforePseudoElement || !pseudoElement); - m_beforePseudoElement = pseudoElement; + m_beforePseudoElement = WTFMove(pseudoElement); } -inline void ElementRareData::setAfterPseudoElement(PassRefPtr<PseudoElement> pseudoElement) +inline void ElementRareData::setAfterPseudoElement(RefPtr<PseudoElement>&& pseudoElement) { ASSERT(!m_afterPseudoElement || !pseudoElement); - m_afterPseudoElement = pseudoElement; + m_afterPseudoElement = WTFMove(pseudoElement); } inline void ElementRareData::resetComputedStyle() { m_computedStyle = nullptr; - setStyleAffectedByEmpty(false); - setChildIndex(0); + m_hasDisplayContents = false; } -inline void ElementRareData::resetDynamicRestyleObservations() +inline void ElementRareData::resetStyleRelations() { - setChildrenAffectedByActive(false); + setStyleAffectedByEmpty(false); + setStyleAffectedByFocusWithin(false); + setChildIndex(0); + setStyleAffectedByActive(false); setChildrenAffectedByDrag(false); setChildrenAffectedByLastChildRules(false); - setChildrenAffectedByForwardPositionalRules(false); setChildrenAffectedByBackwardPositionalRules(false); + setChildrenAffectedByPropertyBasedBackwardPositionalRules(false); } -} // namespace - -#endif // ElementRareData_h +} // namespace WebCore |