OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved. |
3 * Copyright (C) 2013 Intel Corporation. All rights reserved. | 3 * Copyright (C) 2013 Intel Corporation. All rights reserved. |
4 * | 4 * |
5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
6 * | 6 * |
7 * Other contributors: | 7 * Other contributors: |
8 * Robert O'Callahan <roc+@cs.cmu.edu> | 8 * Robert O'Callahan <roc+@cs.cmu.edu> |
9 * David Baron <dbaron@fas.harvard.edu> | 9 * David Baron <dbaron@fas.harvard.edu> |
10 * Christian Biesinger <cbiesinger@web.de> | 10 * Christian Biesinger <cbiesinger@web.de> |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 bool hasNegativeZOrderList() const { | 125 bool hasNegativeZOrderList() const { |
126 return negZOrderList() && negZOrderList()->size(); | 126 return negZOrderList() && negZOrderList()->size(); |
127 } | 127 } |
128 | 128 |
129 void styleDidChange(const ComputedStyle* oldStyle); | 129 void styleDidChange(const ComputedStyle* oldStyle); |
130 | 130 |
131 PaintLayerStackingNode* ancestorStackingContextNode() const; | 131 PaintLayerStackingNode* ancestorStackingContextNode() const; |
132 | 132 |
133 PaintLayer* layer() const { return m_layer; } | 133 PaintLayer* layer() const { return m_layer; } |
134 | 134 |
135 #if ENABLE(ASSERT) | 135 #if DCHECK_IS_ON() |
136 bool layerListMutationAllowed() const { return m_layerListMutationAllowed; } | 136 bool layerListMutationAllowed() const { return m_layerListMutationAllowed; } |
137 void setLayerListMutationAllowed(bool flag) { | 137 void setLayerListMutationAllowed(bool flag) { |
138 m_layerListMutationAllowed = flag; | 138 m_layerListMutationAllowed = flag; |
139 } | 139 } |
140 #endif | 140 #endif |
141 | 141 |
142 private: | 142 private: |
143 friend class PaintLayerStackingNodeIterator; | 143 friend class PaintLayerStackingNodeIterator; |
144 friend class PaintLayerStackingNodeReverseIterator; | 144 friend class PaintLayerStackingNodeReverseIterator; |
145 friend class LayoutTreeAsText; | 145 friend class LayoutTreeAsText; |
146 | 146 |
147 Vector<PaintLayerStackingNode*>* posZOrderList() const { | 147 Vector<PaintLayerStackingNode*>* posZOrderList() const { |
148 DCHECK(!m_zOrderListsDirty); | 148 DCHECK(!m_zOrderListsDirty); |
149 DCHECK(isStackingContext() || !m_posZOrderList); | 149 DCHECK(isStackingContext() || !m_posZOrderList); |
150 return m_posZOrderList.get(); | 150 return m_posZOrderList.get(); |
151 } | 151 } |
152 | 152 |
153 Vector<PaintLayerStackingNode*>* negZOrderList() const { | 153 Vector<PaintLayerStackingNode*>* negZOrderList() const { |
154 DCHECK(!m_zOrderListsDirty); | 154 DCHECK(!m_zOrderListsDirty); |
155 DCHECK(isStackingContext() || !m_negZOrderList); | 155 DCHECK(isStackingContext() || !m_negZOrderList); |
156 return m_negZOrderList.get(); | 156 return m_negZOrderList.get(); |
157 } | 157 } |
158 | 158 |
159 void rebuildZOrderLists(); | 159 void rebuildZOrderLists(); |
160 void collectLayers( | 160 void collectLayers( |
161 std::unique_ptr<Vector<PaintLayerStackingNode*>>& posZOrderList, | 161 std::unique_ptr<Vector<PaintLayerStackingNode*>>& posZOrderList, |
162 std::unique_ptr<Vector<PaintLayerStackingNode*>>& negZOrderList); | 162 std::unique_ptr<Vector<PaintLayerStackingNode*>>& negZOrderList); |
163 | 163 |
164 #if ENABLE(ASSERT) | 164 #if DCHECK_IS_ON() |
165 bool isInStackingParentZOrderLists() const; | 165 bool isInStackingParentZOrderLists() const; |
166 void updateStackingParentForZOrderLists( | 166 void updateStackingParentForZOrderLists( |
167 PaintLayerStackingNode* stackingParent); | 167 PaintLayerStackingNode* stackingParent); |
168 void setStackingParent(PaintLayerStackingNode* stackingParent) { | 168 void setStackingParent(PaintLayerStackingNode* stackingParent) { |
169 m_stackingParent = stackingParent; | 169 m_stackingParent = stackingParent; |
170 } | 170 } |
171 #endif | 171 #endif |
172 | 172 |
173 bool isDirtyStackingContext() const { | 173 bool isDirtyStackingContext() const { |
174 return m_zOrderListsDirty && isStackingContext(); | 174 return m_zOrderListsDirty && isStackingContext(); |
(...skipping 17 matching lines...) Expand all Loading... |
192 // It is only ever set for stacking contexts, as no other element can | 192 // It is only ever set for stacking contexts, as no other element can |
193 // have z-order lists. | 193 // have z-order lists. |
194 bool m_zOrderListsDirty : 1; | 194 bool m_zOrderListsDirty : 1; |
195 | 195 |
196 // This attribute caches whether the element was stacked. It's needed to check | 196 // This attribute caches whether the element was stacked. It's needed to check |
197 // the current stacked status (instead of the new stacked status determined by | 197 // the current stacked status (instead of the new stacked status determined by |
198 // the new style which has not been realized yet) when a layer is removed due | 198 // the new style which has not been realized yet) when a layer is removed due |
199 // to style change. | 199 // to style change. |
200 bool m_isStacked : 1; | 200 bool m_isStacked : 1; |
201 | 201 |
202 #if ENABLE(ASSERT) | 202 #if DCHECK_IS_ON() |
203 bool m_layerListMutationAllowed : 1; | 203 bool m_layerListMutationAllowed : 1; |
204 PaintLayerStackingNode* m_stackingParent; | 204 PaintLayerStackingNode* m_stackingParent; |
205 #endif | 205 #endif |
206 }; | 206 }; |
207 | 207 |
208 inline void PaintLayerStackingNode::clearZOrderLists() { | 208 inline void PaintLayerStackingNode::clearZOrderLists() { |
209 DCHECK(!isStackingContext()); | 209 DCHECK(!isStackingContext()); |
210 | 210 |
211 #if ENABLE(ASSERT) | 211 #if DCHECK_IS_ON() |
212 updateStackingParentForZOrderLists(0); | 212 updateStackingParentForZOrderLists(0); |
213 #endif | 213 #endif |
214 | 214 |
215 m_posZOrderList.reset(); | 215 m_posZOrderList.reset(); |
216 m_negZOrderList.reset(); | 216 m_negZOrderList.reset(); |
217 } | 217 } |
218 | 218 |
219 inline void PaintLayerStackingNode::updateZOrderLists() { | 219 inline void PaintLayerStackingNode::updateZOrderLists() { |
220 if (!m_zOrderListsDirty) | 220 if (!m_zOrderListsDirty) |
221 return; | 221 return; |
222 | 222 |
223 if (!isStackingContext()) { | 223 if (!isStackingContext()) { |
224 clearZOrderLists(); | 224 clearZOrderLists(); |
225 m_zOrderListsDirty = false; | 225 m_zOrderListsDirty = false; |
226 return; | 226 return; |
227 } | 227 } |
228 | 228 |
229 rebuildZOrderLists(); | 229 rebuildZOrderLists(); |
230 } | 230 } |
231 | 231 |
232 #if ENABLE(ASSERT) | 232 #if DCHECK_IS_ON() |
233 class LayerListMutationDetector { | 233 class LayerListMutationDetector { |
234 public: | 234 public: |
235 explicit LayerListMutationDetector(PaintLayerStackingNode* stackingNode) | 235 explicit LayerListMutationDetector(PaintLayerStackingNode* stackingNode) |
236 : m_stackingNode(stackingNode), | 236 : m_stackingNode(stackingNode), |
237 m_previousMutationAllowedState( | 237 m_previousMutationAllowedState( |
238 stackingNode->layerListMutationAllowed()) { | 238 stackingNode->layerListMutationAllowed()) { |
239 m_stackingNode->setLayerListMutationAllowed(false); | 239 m_stackingNode->setLayerListMutationAllowed(false); |
240 } | 240 } |
241 | 241 |
242 ~LayerListMutationDetector() { | 242 ~LayerListMutationDetector() { |
243 m_stackingNode->setLayerListMutationAllowed(m_previousMutationAllowedState); | 243 m_stackingNode->setLayerListMutationAllowed(m_previousMutationAllowedState); |
244 } | 244 } |
245 | 245 |
246 private: | 246 private: |
247 PaintLayerStackingNode* m_stackingNode; | 247 PaintLayerStackingNode* m_stackingNode; |
248 bool m_previousMutationAllowedState; | 248 bool m_previousMutationAllowedState; |
249 }; | 249 }; |
250 #endif | 250 #endif |
251 | 251 |
252 } // namespace blink | 252 } // namespace blink |
253 | 253 |
254 #endif // PaintLayerStackingNode_h | 254 #endif // PaintLayerStackingNode_h |
OLD | NEW |