Title: [201529] trunk
- Revision
- 201529
- Author
- hy...@apple.com
- Date
- 2016-05-31 14:57:39 -0700 (Tue, 31 May 2016)
Log Message
REGRESSION(r201040): Repainting of moving overflow:hidden objects is broken.
https://bugs.webkit.org/show_bug.cgi?id=158079
Reviewed by Zalan Bujtas.
Source/WebCore:
Added new test fast/repaint/overflow-hidden-movement.html
Change checkForRepaintDuringLayout() to only be true for self-painting layers
and not for all layers.
* rendering/RenderObject.cpp:
(WebCore::RenderObject::hasSelfPaintingLayer):
(WebCore::RenderObject::checkForRepaintDuringLayout):
* rendering/RenderObject.h:
(WebCore::RenderObject::hasSelfPaintingLayer):
LayoutTests:
* fast/repaint/overflow-hidden-movement-expected.txt: Added.
* fast/repaint/overflow-hidden-movement.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (201528 => 201529)
--- trunk/LayoutTests/ChangeLog 2016-05-31 21:56:50 UTC (rev 201528)
+++ trunk/LayoutTests/ChangeLog 2016-05-31 21:57:39 UTC (rev 201529)
@@ -1,3 +1,13 @@
+2016-05-31 Dave Hyatt <hy...@apple.com>
+
+ REGRESSION(r201040): Repainting of moving overflow:hidden objects is broken.
+ https://bugs.webkit.org/show_bug.cgi?id=158079
+
+ Reviewed by Zalan Bujtas.
+
+ * fast/repaint/overflow-hidden-movement-expected.txt: Added.
+ * fast/repaint/overflow-hidden-movement.html: Added.
+
2016-05-31 Eric Carlson <eric.carl...@apple.com>
[Mac] AirPlay route is sometimes reset when changing video.src
Added: trunk/LayoutTests/fast/repaint/overflow-hidden-movement-expected.txt (0 => 201529)
--- trunk/LayoutTests/fast/repaint/overflow-hidden-movement-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/repaint/overflow-hidden-movement-expected.txt 2016-05-31 21:57:39 UTC (rev 201529)
@@ -0,0 +1,7 @@
+(repaint rects
+ (rect 8 8 300 100)
+ (rect 8 108 300 200)
+ (rect 8 108 300 200)
+ (rect 8 8 300 300)
+)
+
Added: trunk/LayoutTests/fast/repaint/overflow-hidden-movement.html (0 => 201529)
--- trunk/LayoutTests/fast/repaint/overflow-hidden-movement.html (rev 0)
+++ trunk/LayoutTests/fast/repaint/overflow-hidden-movement.html 2016-05-31 21:57:39 UTC (rev 201529)
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head></head>
+<body>
+<div style="height: 300px; overflow-y: hidden;" id="outerDiv">
+ <div style="height: 100px; width:300px; background: red; overflow:hidden" id="upperDiv"></div>
+ <div style="height: 200px; width:300px; background: green; overflow:hidden" id="lowerDiv"></div>
+</div>
+<script src="" type="text/_javascript_"></script>
+<script>
+ repaintTest = function() {
+ document.getElementById('upperDiv').style.height = '0';
+ document.getElementById('lowerDiv').style.height = '300px';
+ };
+ runRepaintTest();
+</script>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (201528 => 201529)
--- trunk/Source/WebCore/ChangeLog 2016-05-31 21:56:50 UTC (rev 201528)
+++ trunk/Source/WebCore/ChangeLog 2016-05-31 21:57:39 UTC (rev 201529)
@@ -1,3 +1,21 @@
+2016-05-31 Dave Hyatt <hy...@apple.com>
+
+ REGRESSION(r201040): Repainting of moving overflow:hidden objects is broken.
+ https://bugs.webkit.org/show_bug.cgi?id=158079
+
+ Reviewed by Zalan Bujtas.
+
+ Added new test fast/repaint/overflow-hidden-movement.html
+
+ Change checkForRepaintDuringLayout() to only be true for self-painting layers
+ and not for all layers.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::hasSelfPaintingLayer):
+ (WebCore::RenderObject::checkForRepaintDuringLayout):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::hasSelfPaintingLayer):
+
2016-05-31 Zalan Bujtas <za...@apple.com>
ShowRenderTree: Print location information for relative/sticky inlines.
Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (201528 => 201529)
--- trunk/Source/WebCore/rendering/RenderObject.cpp 2016-05-31 21:56:50 UTC (rev 201528)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp 2016-05-31 21:57:39 UTC (rev 201529)
@@ -936,9 +936,19 @@
return snappedIntRect(absoluteClippedOverflowRect());
}
+bool RenderObject::hasSelfPaintingLayer() const
+{
+ if (!hasLayer())
+ return false;
+ auto* layer = downcast<RenderLayerModelObject>(*this).layer();
+ if (!layer)
+ return false;
+ return layer->isSelfPaintingLayer();
+}
+
bool RenderObject::checkForRepaintDuringLayout() const
{
- return !document().view()->needsFullRepaint() && !hasLayer() && everHadLayout();
+ return !document().view()->needsFullRepaint() && everHadLayout() && !hasSelfPaintingLayer();
}
LayoutRect RenderObject::rectWithOutlineForRepaint(const RenderLayerModelObject* repaintContainer, LayoutUnit outlineWidth) const
Modified: trunk/Source/WebCore/rendering/RenderObject.h (201528 => 201529)
--- trunk/Source/WebCore/rendering/RenderObject.h 2016-05-31 21:56:50 UTC (rev 201528)
+++ trunk/Source/WebCore/rendering/RenderObject.h 2016-05-31 21:57:39 UTC (rev 201529)
@@ -507,6 +507,7 @@
VisibleInViewportState visibleInViewportState() { return m_bitfields.hasRareData() ? rareData().visibleInViewportState() : VisibilityUnknown; }
bool hasLayer() const { return m_bitfields.hasLayer(); }
+ bool hasSelfPaintingLayer() const;
enum BoxDecorationState {
NoBoxDecorations,
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes