Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 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) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed. |
| 7 * Copyright (C) 2009 Google Inc. All rights reserved. | 7 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) | 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) |
| 9 * | 9 * |
| 10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
| (...skipping 1466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1477 fullyInvalidatePaint(paintInvalidationContainer, invalidationReason, old Bounds, newBounds); | 1477 fullyInvalidatePaint(paintInvalidationContainer, invalidationReason, old Bounds, newBounds); |
| 1478 | 1478 |
| 1479 invalidateDisplayItemClientsWithPaintInvalidationState(paintInvalidationCont ainer, paintInvalidationState, invalidationReason); | 1479 invalidateDisplayItemClientsWithPaintInvalidationState(paintInvalidationCont ainer, paintInvalidationState, invalidationReason); |
| 1480 return invalidationReason; | 1480 return invalidationReason; |
| 1481 } | 1481 } |
| 1482 | 1482 |
| 1483 PaintInvalidationReason LayoutObject::getPaintInvalidationReason(const LayoutBox ModelObject& paintInvalidationContainer, | 1483 PaintInvalidationReason LayoutObject::getPaintInvalidationReason(const LayoutBox ModelObject& paintInvalidationContainer, |
| 1484 const LayoutRect& oldBounds, const LayoutPoint& oldPositionFromPaintInvalida tionBacking, | 1484 const LayoutRect& oldBounds, const LayoutPoint& oldPositionFromPaintInvalida tionBacking, |
| 1485 const LayoutRect& newBounds, const LayoutPoint& newPositionFromPaintInvalida tionBacking) const | 1485 const LayoutRect& newBounds, const LayoutPoint& newPositionFromPaintInvalida tionBacking) const |
| 1486 { | 1486 { |
| 1487 // First check for InvalidationLocationChange to avoid it from being hidden by other | |
| 1488 // invalidation reasons because we'll need to force check for paint invalida tion for | |
| 1489 // children when location of this object changed. | |
| 1490 if (newPositionFromPaintInvalidationBacking != oldPositionFromPaintInvalidat ionBacking) | |
| 1491 return PaintInvalidationLocationChange; | |
| 1492 | |
| 1493 if (shouldDoFullPaintInvalidation()) | 1487 if (shouldDoFullPaintInvalidation()) |
| 1494 return m_bitfields.fullPaintInvalidationReason(); | 1488 return m_bitfields.fullPaintInvalidationReason(); |
| 1495 | 1489 |
| 1496 // The outline may change shape because of position change of descendants. F or simplicity, | 1490 // The outline may change shape because of position change of descendants. F or simplicity, |
| 1497 // just force full paint invalidation if this object is marked for checking paint invalidation | 1491 // just force full paint invalidation if this object is marked for checking paint invalidation |
| 1498 // for any reason. | 1492 // for any reason. |
| 1499 if (styleRef().hasOutline()) | 1493 if (styleRef().hasOutline()) |
| 1500 return PaintInvalidationOutline; | 1494 return PaintInvalidationOutline; |
| 1501 | 1495 |
| 1496 bool locationChanged = newPositionFromPaintInvalidationBacking != oldPositio nFromPaintInvalidationBacking; | |
| 1497 | |
| 1502 // If the bounds are the same then we know that none of the statements below | 1498 // If the bounds are the same then we know that none of the statements below |
| 1503 // can match, so we can early out since we will not need to do any | 1499 // can match, so we can early out. |
| 1504 // invalidation. | |
| 1505 if (oldBounds == newBounds) | 1500 if (oldBounds == newBounds) |
| 1506 return PaintInvalidationNone; | 1501 return locationChanged && !oldBounds.isEmpty() ? PaintInvalidationLocati onChange : PaintInvalidationNone; |
| 1507 | 1502 |
| 1508 // If we shifted, we don't know the exact reason so we are conservative and trigger a full invalidation. Shifting could | 1503 // If we shifted, we don't know the exact reason so we are conservative and trigger a full invalidation. Shifting could |
| 1509 // be caused by some layout property (left / top) or some in-flow layoutObje ct inserted / removed before us in the tree. | 1504 // be caused by some layout property (left / top) or some in-flow layoutObje ct inserted / removed before us in the tree. |
| 1510 if (newBounds.location() != oldBounds.location()) | 1505 if (newBounds.location() != oldBounds.location()) |
| 1511 return PaintInvalidationBoundsChange; | 1506 return PaintInvalidationBoundsChange; |
| 1512 | 1507 |
| 1513 // This covers the case where we mark containing blocks for layout | 1508 // This covers the case where we mark containing blocks for layout |
| 1514 // and they change size but don't have anything to paint. This is | 1509 // and they change size but don't have anything to paint. This is |
| 1515 // a pretty common case for <body> as we add / remove children | 1510 // a pretty common case for <body> as we add / remove children |
| 1516 // (and the default background is done by FrameView). | 1511 // (and the default background is done by FrameView). |
| 1517 if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled() && skipInvalidationWhe nLaidOutChildren()) | 1512 if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled() && skipInvalidationWhe nLaidOutChildren()) |
| 1518 return PaintInvalidationNone; | 1513 return PaintInvalidationNone; |
| 1519 | 1514 |
| 1520 // If the size is zero on one of our bounds then we know we're going to have | 1515 // If the size is zero on one of our bounds then we know we're going to have |
| 1521 // to do a full invalidation of either old bounds or new bounds. If we fall | 1516 // to do a full invalidation of either old bounds or new bounds. If we fall |
| 1522 // into the incremental invalidation we'll issue two invalidations instead | 1517 // into the incremental invalidation we'll issue two invalidations instead |
| 1523 // of one. | 1518 // of one. |
| 1524 if (oldBounds.isEmpty()) | 1519 if (oldBounds.isEmpty()) |
| 1525 return PaintInvalidationBecameVisible; | 1520 return PaintInvalidationBecameVisible; |
| 1526 if (newBounds.isEmpty()) | 1521 if (newBounds.isEmpty()) |
| 1527 return PaintInvalidationBecameInvisible; | 1522 return PaintInvalidationBecameInvisible; |
| 1528 | 1523 |
| 1524 if (locationChanged) | |
| 1525 return PaintInvalidationLocationChange; | |
|
chrishtr
2016/05/04 23:17:36
It looks like no code actually checks for PaintInv
Xianzhu
2016/05/04 23:25:46
I think like some other enum values, it might be n
| |
| 1526 | |
| 1529 return PaintInvalidationIncremental; | 1527 return PaintInvalidationIncremental; |
| 1530 } | 1528 } |
| 1531 | 1529 |
| 1532 void LayoutObject::adjustInvalidationRectForCompositedScrolling(LayoutRect& rect , const LayoutBoxModelObject& paintInvalidationContainer) const | 1530 void LayoutObject::adjustInvalidationRectForCompositedScrolling(LayoutRect& rect , const LayoutBoxModelObject& paintInvalidationContainer) const |
| 1533 { | 1531 { |
| 1534 if (paintInvalidationContainer.usesCompositedScrolling() && &paintInvalidati onContainer != this) { | 1532 if (paintInvalidationContainer.usesCompositedScrolling() && &paintInvalidati onContainer != this) { |
| 1535 LayoutSize offset(-toLayoutBox(&paintInvalidationContainer)->scrolledCon tentOffset()); | 1533 LayoutSize offset(-toLayoutBox(&paintInvalidationContainer)->scrolledCon tentOffset()); |
| 1536 rect.move(offset); | 1534 rect.move(offset); |
| 1537 } | 1535 } |
| 1538 } | 1536 } |
| (...skipping 2167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3706 const blink::LayoutObject* root = object1; | 3704 const blink::LayoutObject* root = object1; |
| 3707 while (root->parent()) | 3705 while (root->parent()) |
| 3708 root = root->parent(); | 3706 root = root->parent(); |
| 3709 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); | 3707 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); |
| 3710 } else { | 3708 } else { |
| 3711 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n"); | 3709 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n"); |
| 3712 } | 3710 } |
| 3713 } | 3711 } |
| 3714 | 3712 |
| 3715 #endif | 3713 #endif |
| OLD | NEW |