| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) |
| 3 * (C) 2000 Antti Koivisto (koivisto@kde.org) | 3 * (C) 2000 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
| 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) | 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) |
| 6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r
ights reserved. | 6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r
ights reserved. |
| 7 * Copyright (C) 2009 Google Inc. All rights reserved. | 7 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 | 213 |
| 214 // Function to return our enclosing flow thread if we are contained inside o
ne. This | 214 // Function to return our enclosing flow thread if we are contained inside o
ne. This |
| 215 // function follows the containing block chain. | 215 // function follows the containing block chain. |
| 216 RenderFlowThread* flowThreadContainingBlock() const | 216 RenderFlowThread* flowThreadContainingBlock() const |
| 217 { | 217 { |
| 218 if (flowThreadState() == NotInsideFlowThread) | 218 if (flowThreadState() == NotInsideFlowThread) |
| 219 return 0; | 219 return 0; |
| 220 return locateFlowThreadContainingBlock(); | 220 return locateFlowThreadContainingBlock(); |
| 221 } | 221 } |
| 222 | 222 |
| 223 #ifndef NDEBUG | 223 #if ENABLE(ASSERT) |
| 224 void setHasAXObject(bool flag) { m_hasAXObject = flag; } | 224 void setHasAXObject(bool flag) { m_hasAXObject = flag; } |
| 225 bool hasAXObject() const { return m_hasAXObject; } | 225 bool hasAXObject() const { return m_hasAXObject; } |
| 226 | 226 |
| 227 // Helper class forbidding calls to setNeedsLayout() during its lifetime. | 227 // Helper class forbidding calls to setNeedsLayout() during its lifetime. |
| 228 class SetLayoutNeededForbiddenScope { | 228 class SetLayoutNeededForbiddenScope { |
| 229 public: | 229 public: |
| 230 explicit SetLayoutNeededForbiddenScope(RenderObject&); | 230 explicit SetLayoutNeededForbiddenScope(RenderObject&); |
| 231 ~SetLayoutNeededForbiddenScope(); | 231 ~SetLayoutNeededForbiddenScope(); |
| 232 private: | 232 private: |
| 233 RenderObject& m_renderObject; | 233 RenderObject& m_renderObject; |
| 234 bool m_preexistingForbidden; | 234 bool m_preexistingForbidden; |
| 235 }; | 235 }; |
| 236 | 236 |
| 237 void assertRendererLaidOut() const | 237 void assertRendererLaidOut() const |
| 238 { | 238 { |
| 239 #ifndef NDEBUG |
| 239 if (needsLayout()) | 240 if (needsLayout()) |
| 240 showRenderTreeForThis(); | 241 showRenderTreeForThis(); |
| 242 #endif |
| 241 ASSERT_WITH_SECURITY_IMPLICATION(!needsLayout()); | 243 ASSERT_WITH_SECURITY_IMPLICATION(!needsLayout()); |
| 242 } | 244 } |
| 243 | 245 |
| 244 void assertSubtreeIsLaidOut() const | 246 void assertSubtreeIsLaidOut() const |
| 245 { | 247 { |
| 246 for (const RenderObject* renderer = this; renderer; renderer = renderer-
>nextInPreOrder()) | 248 for (const RenderObject* renderer = this; renderer; renderer = renderer-
>nextInPreOrder()) |
| 247 renderer->assertRendererLaidOut(); | 249 renderer->assertRendererLaidOut(); |
| 248 } | 250 } |
| 249 | 251 |
| 250 #endif | 252 #endif |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 // Only update if our flow thread state is different from our new parent
and if we're not a RenderFlowThread. | 291 // Only update if our flow thread state is different from our new parent
and if we're not a RenderFlowThread. |
| 290 // A RenderFlowThread is always considered to be inside itself, so it ne
ver has to change its state | 292 // A RenderFlowThread is always considered to be inside itself, so it ne
ver has to change its state |
| 291 // in response to parent changes. | 293 // in response to parent changes. |
| 292 FlowThreadState newState = parent ? parent->flowThreadState() : NotInsid
eFlowThread; | 294 FlowThreadState newState = parent ? parent->flowThreadState() : NotInsid
eFlowThread; |
| 293 if (newState != flowThreadState() && !isRenderFlowThread()) | 295 if (newState != flowThreadState() && !isRenderFlowThread()) |
| 294 setFlowThreadStateIncludingDescendants(newState); | 296 setFlowThreadStateIncludingDescendants(newState); |
| 295 } | 297 } |
| 296 | 298 |
| 297 ////////////////////////////////////////// | 299 ////////////////////////////////////////// |
| 298 private: | 300 private: |
| 299 #ifndef NDEBUG | 301 #if ENABLE(ASSERT) |
| 300 bool isSetNeedsLayoutForbidden() const { return m_setNeedsLayoutForbidden; } | 302 bool isSetNeedsLayoutForbidden() const { return m_setNeedsLayoutForbidden; } |
| 301 void setNeedsLayoutIsForbidden(bool flag) { m_setNeedsLayoutForbidden = flag
; } | 303 void setNeedsLayoutIsForbidden(bool flag) { m_setNeedsLayoutForbidden = flag
; } |
| 302 #endif | 304 #endif |
| 303 | 305 |
| 304 void addAbsoluteRectForLayer(LayoutRect& result); | 306 void addAbsoluteRectForLayer(LayoutRect& result); |
| 305 bool requiresAnonymousTableWrappers(const RenderObject*) const; | 307 bool requiresAnonymousTableWrappers(const RenderObject*) const; |
| 306 | 308 |
| 307 // Gets pseudoStyle from Shadow host(in case of input elements) | 309 // Gets pseudoStyle from Shadow host(in case of input elements) |
| 308 // or from Parent element. | 310 // or from Parent element. |
| 309 PassRefPtr<RenderStyle> getUncachedPseudoStyleFromParentOrShadowHost() const
; | 311 PassRefPtr<RenderStyle> getUncachedPseudoStyleFromParentOrShadowHost() const
; |
| (...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1104 | 1106 |
| 1105 bool hasImmediateNonWhitespaceTextChildOrPropertiesDependentOnColor() const; | 1107 bool hasImmediateNonWhitespaceTextChildOrPropertiesDependentOnColor() const; |
| 1106 | 1108 |
| 1107 RenderStyle* cachedFirstLineStyle() const; | 1109 RenderStyle* cachedFirstLineStyle() const; |
| 1108 StyleDifference adjustStyleDifference(StyleDifference) const; | 1110 StyleDifference adjustStyleDifference(StyleDifference) const; |
| 1109 | 1111 |
| 1110 Color selectionColor(int colorProperty) const; | 1112 Color selectionColor(int colorProperty) const; |
| 1111 | 1113 |
| 1112 void removeShapeImageClient(ShapeValue*); | 1114 void removeShapeImageClient(ShapeValue*); |
| 1113 | 1115 |
| 1114 #ifndef NDEBUG | 1116 #if ENABLE(ASSERT) |
| 1115 void checkBlockPositionedObjectsNeedLayout(); | 1117 void checkBlockPositionedObjectsNeedLayout(); |
| 1116 #endif | 1118 #endif |
| 1117 const char* invalidationReasonToString(InvalidationReason) const; | 1119 const char* invalidationReasonToString(InvalidationReason) const; |
| 1118 | 1120 |
| 1119 static bool isAllowedToModifyRenderTreeStructure(Document&); | 1121 static bool isAllowedToModifyRenderTreeStructure(Document&); |
| 1120 | 1122 |
| 1121 RefPtr<RenderStyle> m_style; | 1123 RefPtr<RenderStyle> m_style; |
| 1122 | 1124 |
| 1123 Node* m_node; | 1125 Node* m_node; |
| 1124 | 1126 |
| 1125 RenderObject* m_parent; | 1127 RenderObject* m_parent; |
| 1126 RenderObject* m_previous; | 1128 RenderObject* m_previous; |
| 1127 RenderObject* m_next; | 1129 RenderObject* m_next; |
| 1128 | 1130 |
| 1129 #ifndef NDEBUG | 1131 #if ENABLE(ASSERT) |
| 1130 unsigned m_hasAXObject : 1; | 1132 unsigned m_hasAXObject : 1; |
| 1131 unsigned m_setNeedsLayoutForbidden : 1; | 1133 unsigned m_setNeedsLayoutForbidden : 1; |
| 1132 #endif | 1134 #endif |
| 1133 | 1135 |
| 1134 #define ADD_BOOLEAN_BITFIELD(name, Name) \ | 1136 #define ADD_BOOLEAN_BITFIELD(name, Name) \ |
| 1135 private:\ | 1137 private:\ |
| 1136 unsigned m_##name : 1;\ | 1138 unsigned m_##name : 1;\ |
| 1137 public:\ | 1139 public:\ |
| 1138 bool name() const { return m_##name; }\ | 1140 bool name() const { return m_##name; }\ |
| 1139 void set##Name(bool name) { m_##name = name; }\ | 1141 void set##Name(bool name) { m_##name = name; }\ |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1356 setOnlyNeededPositionedMovementLayout(needsPositionedMovementLayoutOnly()); | 1358 setOnlyNeededPositionedMovementLayout(needsPositionedMovementLayoutOnly()); |
| 1357 setNeededLayoutBecauseOfChildren(needsLayoutBecauseOfChildren()); | 1359 setNeededLayoutBecauseOfChildren(needsLayoutBecauseOfChildren()); |
| 1358 setLayoutDidGetCalled(true); | 1360 setLayoutDidGetCalled(true); |
| 1359 setSelfNeedsLayout(false); | 1361 setSelfNeedsLayout(false); |
| 1360 setEverHadLayout(true); | 1362 setEverHadLayout(true); |
| 1361 setPosChildNeedsLayout(false); | 1363 setPosChildNeedsLayout(false); |
| 1362 setNeedsSimplifiedNormalFlowLayout(false); | 1364 setNeedsSimplifiedNormalFlowLayout(false); |
| 1363 setNormalChildNeedsLayout(false); | 1365 setNormalChildNeedsLayout(false); |
| 1364 setNeedsPositionedMovementLayout(false); | 1366 setNeedsPositionedMovementLayout(false); |
| 1365 setAncestorLineBoxDirty(false); | 1367 setAncestorLineBoxDirty(false); |
| 1366 #ifndef NDEBUG | 1368 #if ENABLE(ASSERT) |
| 1367 checkBlockPositionedObjectsNeedLayout(); | 1369 checkBlockPositionedObjectsNeedLayout(); |
| 1368 #endif | 1370 #endif |
| 1369 } | 1371 } |
| 1370 | 1372 |
| 1371 inline void RenderObject::setChildNeedsLayout(MarkingBehavior markParents, Subtr
eeLayoutScope* layouter) | 1373 inline void RenderObject::setChildNeedsLayout(MarkingBehavior markParents, Subtr
eeLayoutScope* layouter) |
| 1372 { | 1374 { |
| 1373 ASSERT(!isSetNeedsLayoutForbidden()); | 1375 ASSERT(!isSetNeedsLayoutForbidden()); |
| 1374 bool alreadyNeededLayout = normalChildNeedsLayout(); | 1376 bool alreadyNeededLayout = normalChildNeedsLayout(); |
| 1375 setNormalChildNeedsLayout(true); | 1377 setNormalChildNeedsLayout(true); |
| 1376 // FIXME: Replace MarkOnlyThis with the SubtreeLayoutScope code path and rem
ove the MarkingBehavior argument entirely. | 1378 // FIXME: Replace MarkOnlyThis with the SubtreeLayoutScope code path and rem
ove the MarkingBehavior argument entirely. |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1489 void showTree(const WebCore::RenderObject*); | 1491 void showTree(const WebCore::RenderObject*); |
| 1490 void showLineTree(const WebCore::RenderObject*); | 1492 void showLineTree(const WebCore::RenderObject*); |
| 1491 void showRenderTree(const WebCore::RenderObject* object1); | 1493 void showRenderTree(const WebCore::RenderObject* object1); |
| 1492 // We don't make object2 an optional parameter so that showRenderTree | 1494 // We don't make object2 an optional parameter so that showRenderTree |
| 1493 // can be called from gdb easily. | 1495 // can be called from gdb easily. |
| 1494 void showRenderTree(const WebCore::RenderObject* object1, const WebCore::RenderO
bject* object2); | 1496 void showRenderTree(const WebCore::RenderObject* object1, const WebCore::RenderO
bject* object2); |
| 1495 | 1497 |
| 1496 #endif | 1498 #endif |
| 1497 | 1499 |
| 1498 #endif // RenderObject_h | 1500 #endif // RenderObject_h |
| OLD | NEW |