Chromium Code Reviews| 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 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 239 showRenderTreeForThis(); | 239 showRenderTreeForThis(); |
| 240 ASSERT_WITH_SECURITY_IMPLICATION(!needsLayout()); | 240 ASSERT_WITH_SECURITY_IMPLICATION(!needsLayout()); |
| 241 } | 241 } |
| 242 | 242 |
| 243 void assertSubtreeIsLaidOut() const | 243 void assertSubtreeIsLaidOut() const |
| 244 { | 244 { |
| 245 for (const RenderObject* renderer = this; renderer; renderer = renderer- >nextInPreOrder()) | 245 for (const RenderObject* renderer = this; renderer; renderer = renderer- >nextInPreOrder()) |
| 246 renderer->assertRendererLaidOut(); | 246 renderer->assertRendererLaidOut(); |
| 247 } | 247 } |
| 248 | 248 |
| 249 void assertRendererClearedPaintInvalidationState() const | |
| 250 { | |
| 251 if (paintInvalidationStateIsDirty()) { | |
|
dsinclair
2014/07/11 20:48:55
if (!paintInvalidationStateIsDirt())
return;
Julien - ping for review
2014/07/11 20:52:46
A'right.
| |
| 252 showRenderTreeForThis(); | |
|
dsinclair
2014/07/11 20:48:55
Is this included on purpose?
Julien - ping for review
2014/07/11 20:52:46
It is, see assertRendererLaidOut() above. The reas
| |
| 253 ASSERT_NOT_REACHED(); | |
| 254 } | |
| 255 } | |
| 256 | |
| 257 void assertSubtreeClearedPaintInvalidationState() const | |
| 258 { | |
| 259 for (const RenderObject* renderer = this; renderer; renderer = renderer- >nextInPreOrder()) { | |
| 260 renderer->assertRendererClearedPaintInvalidationState(); | |
| 261 | |
| 262 // Currently we skip some SVG containers for performance (see Render SVGModelObject::invalidateTreeAfterLayout) | |
| 263 // so we just skip the underlying subtree. This is not strictly the condition in the previous function but | |
| 264 // it makes little sense to cover SVG subtrees if we know they are s kipped anyway. | |
| 265 if (renderer->isSVGContainer()) | |
| 266 return; | |
| 267 } | |
| 268 } | |
| 269 | |
| 249 #endif | 270 #endif |
| 250 | 271 |
| 251 bool skipInvalidationWhenLaidOutChildren() const; | 272 bool skipInvalidationWhenLaidOutChildren() const; |
| 252 | 273 |
| 253 // FIXME: This could be used when changing the size of a renderer without ch ildren to skip some invalidations. | 274 // FIXME: This could be used when changing the size of a renderer without ch ildren to skip some invalidations. |
| 254 bool rendererHasNoBoxEffect() const | 275 bool rendererHasNoBoxEffect() const |
| 255 { | 276 { |
| 256 return !style()->hasVisualOverflowingEffect() && !style()->hasBorder() & & !style()->hasBackground(); | 277 return !style()->hasVisualOverflowingEffect() && !style()->hasBorder() & & !style()->hasBackground(); |
| 257 } | 278 } |
| 258 | 279 |
| (...skipping 742 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1001 bool shouldDoFullPaintInvalidationIfSelfPaintingLayer() const { return m_bit fields.shouldDoFullPaintInvalidationIfSelfPaintingLayer(); } | 1022 bool shouldDoFullPaintInvalidationIfSelfPaintingLayer() const { return m_bit fields.shouldDoFullPaintInvalidationIfSelfPaintingLayer(); } |
| 1002 void setShouldDoFullPaintInvalidationIfSelfPaintingLayer(bool b) { m_bitfiel ds.setShouldDoFullPaintInvalidationIfSelfPaintingLayer(b); } | 1023 void setShouldDoFullPaintInvalidationIfSelfPaintingLayer(bool b) { m_bitfiel ds.setShouldDoFullPaintInvalidationIfSelfPaintingLayer(b); } |
| 1003 | 1024 |
| 1004 bool onlyNeededPositionedMovementLayout() const { return m_bitfields.onlyNee dedPositionedMovementLayout(); } | 1025 bool onlyNeededPositionedMovementLayout() const { return m_bitfields.onlyNee dedPositionedMovementLayout(); } |
| 1005 void setOnlyNeededPositionedMovementLayout(bool b) { m_bitfields.setOnlyNeed edPositionedMovementLayout(b); } | 1026 void setOnlyNeededPositionedMovementLayout(bool b) { m_bitfields.setOnlyNeed edPositionedMovementLayout(b); } |
| 1006 | 1027 |
| 1007 void clearPaintInvalidationState(); | 1028 void clearPaintInvalidationState(); |
| 1008 | 1029 |
| 1009 // layoutDidGetCalled indicates whether this render object was re-laid-out | 1030 // layoutDidGetCalled indicates whether this render object was re-laid-out |
| 1010 // since the last call to setLayoutDidGetCalled(false) on this object. | 1031 // since the last call to setLayoutDidGetCalled(false) on this object. |
| 1011 bool layoutDidGetCalled() { return m_bitfields.layoutDidGetCalled(); } | 1032 bool layoutDidGetCalled() const { return m_bitfields.layoutDidGetCalled(); } |
| 1012 void setLayoutDidGetCalled(bool b) { m_bitfields.setLayoutDidGetCalled(b); } | 1033 void setLayoutDidGetCalled(bool b) { m_bitfields.setLayoutDidGetCalled(b); } |
| 1013 | 1034 |
| 1014 bool mayNeedPaintInvalidation() { return m_bitfields.mayNeedPaintInvalidatio n(); } | 1035 bool mayNeedPaintInvalidation() const { return m_bitfields.mayNeedPaintInval idation(); } |
| 1015 void setMayNeedPaintInvalidation(bool b) | 1036 void setMayNeedPaintInvalidation(bool b) |
| 1016 { | 1037 { |
| 1017 m_bitfields.setMayNeedPaintInvalidation(b); | 1038 m_bitfields.setMayNeedPaintInvalidation(b); |
| 1018 | 1039 |
| 1019 // Make sure our parent is marked as needing invalidation. | 1040 // Make sure our parent is marked as needing invalidation. |
| 1020 if (b && parent() && !parent()->mayNeedPaintInvalidation()) | 1041 if (b && parent() && !parent()->mayNeedPaintInvalidation()) |
| 1021 parent()->setMayNeedPaintInvalidation(b); | 1042 parent()->setMayNeedPaintInvalidation(b); |
| 1022 } | 1043 } |
| 1023 | 1044 |
| 1024 bool neededLayoutBecauseOfChildren() const { return m_bitfields.neededLayout BecauseOfChildren(); } | 1045 bool neededLayoutBecauseOfChildren() const { return m_bitfields.neededLayout BecauseOfChildren(); } |
| 1025 void setNeededLayoutBecauseOfChildren(bool b) { m_bitfields.setNeededLayoutB ecauseOfChildren(b); } | 1046 void setNeededLayoutBecauseOfChildren(bool b) { m_bitfields.setNeededLayoutB ecauseOfChildren(b); } |
| 1026 | 1047 |
| 1027 bool shouldCheckForPaintInvalidationAfterLayout() | 1048 bool shouldCheckForPaintInvalidationAfterLayout() |
| 1028 { | 1049 { |
| 1029 return layoutDidGetCalled() || mayNeedPaintInvalidation(); | 1050 return layoutDidGetCalled() || mayNeedPaintInvalidation() || shouldDoFul lPaintInvalidationAfterLayout(); |
| 1030 } | 1051 } |
| 1031 | 1052 |
| 1032 bool supportsLayoutStateCachedOffsets() const { return !hasColumns() && !has Transform() && !hasReflection() && !style()->isFlippedBlocksWritingMode(); } | 1053 bool supportsLayoutStateCachedOffsets() const { return !hasColumns() && !has Transform() && !hasReflection() && !style()->isFlippedBlocksWritingMode(); } |
| 1033 | 1054 |
| 1034 void setNeedsOverflowRecalcAfterStyleChange(); | 1055 void setNeedsOverflowRecalcAfterStyleChange(); |
| 1035 void markContainingBlocksForOverflowRecalc(); | 1056 void markContainingBlocksForOverflowRecalc(); |
| 1036 | 1057 |
| 1037 protected: | 1058 protected: |
| 1038 inline bool layerCreationAllowedForSubtree() const; | 1059 inline bool layerCreationAllowedForSubtree() const; |
| 1039 | 1060 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1105 | 1126 |
| 1106 RenderStyle* cachedFirstLineStyle() const; | 1127 RenderStyle* cachedFirstLineStyle() const; |
| 1107 StyleDifference adjustStyleDifference(StyleDifference) const; | 1128 StyleDifference adjustStyleDifference(StyleDifference) const; |
| 1108 | 1129 |
| 1109 Color selectionColor(int colorProperty) const; | 1130 Color selectionColor(int colorProperty) const; |
| 1110 | 1131 |
| 1111 void removeShapeImageClient(ShapeValue*); | 1132 void removeShapeImageClient(ShapeValue*); |
| 1112 | 1133 |
| 1113 #ifndef NDEBUG | 1134 #ifndef NDEBUG |
| 1114 void checkBlockPositionedObjectsNeedLayout(); | 1135 void checkBlockPositionedObjectsNeedLayout(); |
| 1136 | |
| 1137 bool paintInvalidationStateIsDirty() const | |
| 1138 { | |
| 1139 return layoutDidGetCalled() || shouldDoFullPaintInvalidationAfterLayout( ) || shouldDoFullPaintInvalidationIfSelfPaintingLayer() | |
| 1140 || onlyNeededPositionedMovementLayout() || neededLayoutBecauseOfChil dren() || mayNeedPaintInvalidation(); | |
| 1141 } | |
| 1115 #endif | 1142 #endif |
| 1116 const char* invalidationReasonToString(InvalidationReason) const; | 1143 const char* invalidationReasonToString(InvalidationReason) const; |
| 1117 | 1144 |
| 1118 static bool isAllowedToModifyRenderTreeStructure(Document&); | 1145 static bool isAllowedToModifyRenderTreeStructure(Document&); |
| 1119 | 1146 |
| 1120 RefPtr<RenderStyle> m_style; | 1147 RefPtr<RenderStyle> m_style; |
| 1121 | 1148 |
| 1122 Node* m_node; | 1149 Node* m_node; |
| 1123 | 1150 |
| 1124 RenderObject* m_parent; | 1151 RenderObject* m_parent; |
| (...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1492 void showTree(const WebCore::RenderObject*); | 1519 void showTree(const WebCore::RenderObject*); |
| 1493 void showLineTree(const WebCore::RenderObject*); | 1520 void showLineTree(const WebCore::RenderObject*); |
| 1494 void showRenderTree(const WebCore::RenderObject* object1); | 1521 void showRenderTree(const WebCore::RenderObject* object1); |
| 1495 // We don't make object2 an optional parameter so that showRenderTree | 1522 // We don't make object2 an optional parameter so that showRenderTree |
| 1496 // can be called from gdb easily. | 1523 // can be called from gdb easily. |
| 1497 void showRenderTree(const WebCore::RenderObject* object1, const WebCore::RenderO bject* object2); | 1524 void showRenderTree(const WebCore::RenderObject* object1, const WebCore::RenderO bject* object2); |
| 1498 | 1525 |
| 1499 #endif | 1526 #endif |
| 1500 | 1527 |
| 1501 #endif // RenderObject_h | 1528 #endif // RenderObject_h |
| OLD | NEW |