Chromium Code Reviews| Index: third_party/WebKit/Source/core/dom/ElementRareData.h |
| diff --git a/third_party/WebKit/Source/core/dom/ElementRareData.h b/third_party/WebKit/Source/core/dom/ElementRareData.h |
| index f5570bb1d8ff1455c4704b53a5d1adf632199c24..a9b6fd0283ee759d31cb51292e1d4b16d2e7a977 100644 |
| --- a/third_party/WebKit/Source/core/dom/ElementRareData.h |
| +++ b/third_party/WebKit/Source/core/dom/ElementRareData.h |
| @@ -163,10 +163,7 @@ private: |
| RefPtr<ComputedStyle> m_computedStyle; |
| Member<V0CustomElementDefinition> m_customElementDefinition; |
| - Member<PseudoElement> m_generatedBefore; |
| - Member<PseudoElement> m_generatedAfter; |
| - Member<PseudoElement> m_generatedFirstLetter; |
| - Member<PseudoElement> m_backdrop; |
| + Member<PseudoElementData> m_pseudoElementData; |
| explicit ElementRareData(LayoutObject*); |
| }; |
| @@ -187,67 +184,31 @@ inline ElementRareData::ElementRareData(LayoutObject* layoutObject) |
| inline ElementRareData::~ElementRareData() |
| { |
| - DCHECK(!m_generatedBefore); |
| - DCHECK(!m_generatedAfter); |
| - DCHECK(!m_generatedFirstLetter); |
| - DCHECK(!m_backdrop); |
| } |
| inline bool ElementRareData::hasPseudoElements() const |
| { |
| - return m_generatedBefore || m_generatedAfter || m_backdrop || m_generatedFirstLetter; |
| + return (m_pseudoElementData && m_pseudoElementData->hasPseudoElements()); |
| } |
| inline void ElementRareData::clearPseudoElements() |
| { |
| - setPseudoElement(PseudoIdBefore, nullptr); |
| - setPseudoElement(PseudoIdAfter, nullptr); |
| - setPseudoElement(PseudoIdBackdrop, nullptr); |
| - setPseudoElement(PseudoIdFirstLetter, nullptr); |
| + if (m_pseudoElementData) |
|
sof
2016/05/05 06:54:41
How about (unconditionally) doing m_pseudoElementD
ramya.v
2016/05/05 08:57:09
If we do unconditionally, if clearPseudoElements i
sof
2016/05/05 13:21:25
m_pseudoElementClearData.clear() would work just f
ramya.v
2016/05/06 04:07:13
Hi added suggested changes. Few tests are failing
|
| + m_pseudoElementData->clearPseudoElements(); |
| } |
| inline void ElementRareData::setPseudoElement(PseudoId pseudoId, PseudoElement* element) |
| { |
| - switch (pseudoId) { |
| - case PseudoIdBefore: |
| - if (m_generatedBefore) |
| - m_generatedBefore->dispose(); |
| - m_generatedBefore = element; |
| - break; |
| - case PseudoIdAfter: |
| - if (m_generatedAfter) |
| - m_generatedAfter->dispose(); |
| - m_generatedAfter = element; |
| - break; |
| - case PseudoIdBackdrop: |
| - if (m_backdrop) |
| - m_backdrop->dispose(); |
| - m_backdrop = element; |
| - break; |
| - case PseudoIdFirstLetter: |
| - if (m_generatedFirstLetter) |
| - m_generatedFirstLetter->dispose(); |
| - m_generatedFirstLetter = element; |
| - break; |
| - default: |
| - ASSERT_NOT_REACHED(); |
| - } |
| + if (!m_pseudoElementData) |
| + m_pseudoElementData = PseudoElementData::create(); |
| + m_pseudoElementData->setPseudoElement(pseudoId, element); |
| } |
| inline PseudoElement* ElementRareData::pseudoElement(PseudoId pseudoId) const |
| { |
| - switch (pseudoId) { |
| - case PseudoIdBefore: |
| - return m_generatedBefore.get(); |
| - case PseudoIdAfter: |
| - return m_generatedAfter.get(); |
| - case PseudoIdBackdrop: |
| - return m_backdrop.get(); |
| - case PseudoIdFirstLetter: |
| - return m_generatedFirstLetter.get(); |
| - default: |
| - return 0; |
| - } |
| + if (!m_pseudoElementData) |
| + return nullptr; |
| + return m_pseudoElementData->pseudoElement(pseudoId); |
| } |
| inline void ElementRareData::incrementCompositorProxiedProperties(uint32_t properties) |