Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2008, 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008, 2009, 2010 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008 David Smith <catfish.man@gmail.com> | 3 * Copyright (C) 2008 David Smith <catfish.man@gmail.com> |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 156 Member<InlineCSSStyleDeclaration> m_cssomWrapper; | 156 Member<InlineCSSStyleDeclaration> m_cssomWrapper; |
| 157 Member<InlineStylePropertyMap> m_cssomMapWrapper; | 157 Member<InlineStylePropertyMap> m_cssomMapWrapper; |
| 158 OwnPtr<CompositorProxiedPropertySet> m_proxiedProperties; | 158 OwnPtr<CompositorProxiedPropertySet> m_proxiedProperties; |
| 159 | 159 |
| 160 Member<ElementAnimations> m_elementAnimations; | 160 Member<ElementAnimations> m_elementAnimations; |
| 161 Member<NodeIntersectionObserverData> m_intersectionObserverData; | 161 Member<NodeIntersectionObserverData> m_intersectionObserverData; |
| 162 | 162 |
| 163 RefPtr<ComputedStyle> m_computedStyle; | 163 RefPtr<ComputedStyle> m_computedStyle; |
| 164 Member<V0CustomElementDefinition> m_customElementDefinition; | 164 Member<V0CustomElementDefinition> m_customElementDefinition; |
| 165 | 165 |
| 166 Member<PseudoElement> m_generatedBefore; | 166 Member<PseudoElementData> m_pseudoElementData; |
| 167 Member<PseudoElement> m_generatedAfter; | |
| 168 Member<PseudoElement> m_generatedFirstLetter; | |
| 169 Member<PseudoElement> m_backdrop; | |
| 170 | 167 |
| 171 explicit ElementRareData(LayoutObject*); | 168 explicit ElementRareData(LayoutObject*); |
| 172 }; | 169 }; |
| 173 | 170 |
| 174 inline LayoutSize defaultMinimumSizeForResizing() | 171 inline LayoutSize defaultMinimumSizeForResizing() |
| 175 { | 172 { |
| 176 return LayoutSize(LayoutUnit::max(), LayoutUnit::max()); | 173 return LayoutSize(LayoutUnit::max(), LayoutUnit::max()); |
| 177 } | 174 } |
| 178 | 175 |
| 179 inline ElementRareData::ElementRareData(LayoutObject* layoutObject) | 176 inline ElementRareData::ElementRareData(LayoutObject* layoutObject) |
| 180 : NodeRareData(layoutObject) | 177 : NodeRareData(layoutObject) |
| 181 , m_tabindex(0) | 178 , m_tabindex(0) |
| 182 , m_minimumSizeForResizing(defaultMinimumSizeForResizing()) | 179 , m_minimumSizeForResizing(defaultMinimumSizeForResizing()) |
| 183 , m_classList(nullptr) | 180 , m_classList(nullptr) |
| 184 { | 181 { |
| 185 m_isElementRareData = true; | 182 m_isElementRareData = true; |
| 186 } | 183 } |
| 187 | 184 |
| 188 inline ElementRareData::~ElementRareData() | 185 inline ElementRareData::~ElementRareData() |
| 189 { | 186 { |
| 190 DCHECK(!m_generatedBefore); | |
| 191 DCHECK(!m_generatedAfter); | |
| 192 DCHECK(!m_generatedFirstLetter); | |
| 193 DCHECK(!m_backdrop); | |
| 194 } | 187 } |
| 195 | 188 |
| 196 inline bool ElementRareData::hasPseudoElements() const | 189 inline bool ElementRareData::hasPseudoElements() const |
| 197 { | 190 { |
| 198 return m_generatedBefore || m_generatedAfter || m_backdrop || m_generatedFir stLetter; | 191 return (m_pseudoElementData && m_pseudoElementData->hasPseudoElements()); |
| 199 } | 192 } |
| 200 | 193 |
| 201 inline void ElementRareData::clearPseudoElements() | 194 inline void ElementRareData::clearPseudoElements() |
| 202 { | 195 { |
| 203 setPseudoElement(PseudoIdBefore, nullptr); | 196 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
| |
| 204 setPseudoElement(PseudoIdAfter, nullptr); | 197 m_pseudoElementData->clearPseudoElements(); |
| 205 setPseudoElement(PseudoIdBackdrop, nullptr); | |
| 206 setPseudoElement(PseudoIdFirstLetter, nullptr); | |
| 207 } | 198 } |
| 208 | 199 |
| 209 inline void ElementRareData::setPseudoElement(PseudoId pseudoId, PseudoElement* element) | 200 inline void ElementRareData::setPseudoElement(PseudoId pseudoId, PseudoElement* element) |
| 210 { | 201 { |
| 211 switch (pseudoId) { | 202 if (!m_pseudoElementData) |
| 212 case PseudoIdBefore: | 203 m_pseudoElementData = PseudoElementData::create(); |
| 213 if (m_generatedBefore) | 204 m_pseudoElementData->setPseudoElement(pseudoId, element); |
| 214 m_generatedBefore->dispose(); | |
| 215 m_generatedBefore = element; | |
| 216 break; | |
| 217 case PseudoIdAfter: | |
| 218 if (m_generatedAfter) | |
| 219 m_generatedAfter->dispose(); | |
| 220 m_generatedAfter = element; | |
| 221 break; | |
| 222 case PseudoIdBackdrop: | |
| 223 if (m_backdrop) | |
| 224 m_backdrop->dispose(); | |
| 225 m_backdrop = element; | |
| 226 break; | |
| 227 case PseudoIdFirstLetter: | |
| 228 if (m_generatedFirstLetter) | |
| 229 m_generatedFirstLetter->dispose(); | |
| 230 m_generatedFirstLetter = element; | |
| 231 break; | |
| 232 default: | |
| 233 ASSERT_NOT_REACHED(); | |
| 234 } | |
| 235 } | 205 } |
| 236 | 206 |
| 237 inline PseudoElement* ElementRareData::pseudoElement(PseudoId pseudoId) const | 207 inline PseudoElement* ElementRareData::pseudoElement(PseudoId pseudoId) const |
| 238 { | 208 { |
| 239 switch (pseudoId) { | 209 if (!m_pseudoElementData) |
| 240 case PseudoIdBefore: | 210 return nullptr; |
| 241 return m_generatedBefore.get(); | 211 return m_pseudoElementData->pseudoElement(pseudoId); |
| 242 case PseudoIdAfter: | |
| 243 return m_generatedAfter.get(); | |
| 244 case PseudoIdBackdrop: | |
| 245 return m_backdrop.get(); | |
| 246 case PseudoIdFirstLetter: | |
| 247 return m_generatedFirstLetter.get(); | |
| 248 default: | |
| 249 return 0; | |
| 250 } | |
| 251 } | 212 } |
| 252 | 213 |
| 253 inline void ElementRareData::incrementCompositorProxiedProperties(uint32_t prope rties) | 214 inline void ElementRareData::incrementCompositorProxiedProperties(uint32_t prope rties) |
| 254 { | 215 { |
| 255 ensureCompositorProxiedPropertySet().increment(properties); | 216 ensureCompositorProxiedPropertySet().increment(properties); |
| 256 } | 217 } |
| 257 | 218 |
| 258 inline void ElementRareData::decrementCompositorProxiedProperties(uint32_t prope rties) | 219 inline void ElementRareData::decrementCompositorProxiedProperties(uint32_t prope rties) |
| 259 { | 220 { |
| 260 m_proxiedProperties->decrement(properties); | 221 m_proxiedProperties->decrement(properties); |
| 261 if (m_proxiedProperties->isEmpty()) | 222 if (m_proxiedProperties->isEmpty()) |
| 262 clearCompositorProxiedPropertySet(); | 223 clearCompositorProxiedPropertySet(); |
| 263 } | 224 } |
| 264 | 225 |
| 265 inline CompositorProxiedPropertySet& ElementRareData::ensureCompositorProxiedPro pertySet() | 226 inline CompositorProxiedPropertySet& ElementRareData::ensureCompositorProxiedPro pertySet() |
| 266 { | 227 { |
| 267 if (!m_proxiedProperties) | 228 if (!m_proxiedProperties) |
| 268 m_proxiedProperties = CompositorProxiedPropertySet::create(); | 229 m_proxiedProperties = CompositorProxiedPropertySet::create(); |
| 269 return *m_proxiedProperties; | 230 return *m_proxiedProperties; |
| 270 } | 231 } |
| 271 | 232 |
| 272 } // namespace blink | 233 } // namespace blink |
| 273 | 234 |
| 274 #endif // ElementRareData_h | 235 #endif // ElementRareData_h |
| OLD | NEW |