[WK1] ASSERTION FAILED: renderer().repaintLayoutRects().m_repaintRect == renderer...
authorzalan@apple.com <zalan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Jul 2018 22:11:32 +0000 (22:11 +0000)
committerzalan@apple.com <zalan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Jul 2018 22:11:32 +0000 (22:11 +0000)
https://bugs.webkit.org/show_bug.cgi?id=188122
<rdar://problem/42584790>

Reviewed by Simon Fraser.

Source/WebCore:

When ScrollView's m_paintsEntireContents flag flips due to layer backing changes, the repaint area transitions from
visual to layout overflow. When this happens the cached repaint rects become invalid and they need to be recomputed.
Currently there's no mechanism to trigger repaint cache invalidation from ScrollView.
Skip assertion for now on WK1 (see webkit.org/b/188121)

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateLayerPositionsAfterScroll):

LayoutTests:

* platform/mac-wk1/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234329 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/platform/mac-wk1/TestExpectations
Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderLayer.cpp

index 7bb34e3..e4b6861 100644 (file)
@@ -1,3 +1,13 @@
+2018-07-27  Zalan Bujtas  <zalan@apple.com>
+
+        [WK1] ASSERTION FAILED: renderer().repaintLayoutRects().m_repaintRect == renderer().clippedOverflowRectForRepaint(renderer().containerForRepaint()) in WebCore::RenderLayer::updateLayerPositionsAfterScroll
+        https://bugs.webkit.org/show_bug.cgi?id=188122
+        <rdar://problem/42584790>
+
+        Reviewed by Simon Fraser.
+
+        * platform/mac-wk1/TestExpectations:
+
 2018-07-27  Michael Catanzaro  <mcatanzaro@igalia.com>
 
         Unreviewed GTK test gardening
index 584b2d5..84bb4cf 100644 (file)
@@ -586,43 +586,6 @@ webkit.org/b/187557 [ Debug ] media/media-fragments/TC0091.html [ Pass Failure ]
 
 webkit.org/b/187711 [ Debug ] svg/custom/linking-uri-01-b.svg [ Pass Failure ]
 
-# <rdar://problem/42584790>
-[ Mojave+ Debug ] fast/css/sticky/inflow-sticky.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/inline-sticky-abspos-child.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/inline-sticky.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/replaced-sticky.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-as-positioning-container.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-both-sides.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-left-percentage.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-left.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-margins.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-overflowing.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-side-margins.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-table-row-top.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-table-thead-top.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-top-margins.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-top.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-writing-mode-horizontal-bt.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-writing-mode-vertical-lr.html [ Skip ]
-[ Mojave+ Debug ] fast/css/sticky/sticky-writing-mode-vertical-rl.html [ Skip ]
-[ Mojave+ Debug ] fast/events/document-elementFromPoint.html [ Skip ]
-[ Mojave+ Debug ] fast/events/offsetX-offsetY.html [ Skip ]
-[ Mojave+ Debug ] fast/hidpi/hidpi-long-page-with-inset-element.html [ Skip ]
-[ Mojave+ Debug ] fast/repaint/absolute-position-changed.html [ Skip ]
-[ Mojave+ Debug ] fast/repaint/fixed-scale.html [ Skip ]
-[ Mojave+ Debug ] fast/repaint/fixed-table-cell.html [ Skip ]
-[ Mojave+ Debug ] fast/repaint/fixed-table-overflow-zindex.html [ Skip ]
-[ Mojave+ Debug ] fast/repaint/fixed-table-overflow.html [ Skip ]
-[ Mojave+ Debug ] fast/repaint/fixed.html [ Skip ]
-[ Mojave+ Debug ] fast/repaint/scroll-fixed-layer-with-reflection.html [ Skip ]
-[ Mojave+ Debug ] fast/scrolling/rtl-scrollbars-sticky-document-2.html [ Skip ]
-[ Mojave+ Debug ] fast/visual-viewport/client-coordinates-relative-to-layout-viewport.html [ Skip ]
-[ Mojave+ Debug ] fast/visual-viewport/zoomed-fixed-scroll-down-then-up.html [ Skip ]
-[ Mojave+ Debug ] fast/visual-viewport/zoomed-scroll-to-anchor-in-position-fixed.html [ Skip ]
-[ Mojave+ Debug ] fast/zooming/client-rect-in-fixed-zoomed.html [ Skip ]
-[ Mojave+ Debug ] transforms/2d/perspective-not-fixed-container.html [ Skip ]
-[ Mojave+ Debug ] transforms/2d/preserve3d-not-fixed-container.html [ Skip ]
-
 # <rdar://problem/42625657>
 [ Mojave+ ] fast/images/animated-gif-paint-after-animation.html [ Skip ]
 [ Mojave+ ] fast/images/async-image-background-image-repeated.html [ Skip ]
index 81736d8..67d3e20 100644 (file)
@@ -1,3 +1,19 @@
+2018-07-27  Zalan Bujtas  <zalan@apple.com>
+
+        [WK1] ASSERTION FAILED: renderer().repaintLayoutRects().m_repaintRect == renderer().clippedOverflowRectForRepaint(renderer().containerForRepaint()) in WebCore::RenderLayer::updateLayerPositionsAfterScroll
+        https://bugs.webkit.org/show_bug.cgi?id=188122
+        <rdar://problem/42584790>
+
+        Reviewed by Simon Fraser.
+
+        When ScrollView's m_paintsEntireContents flag flips due to layer backing changes, the repaint area transitions from
+        visual to layout overflow. When this happens the cached repaint rects become invalid and they need to be recomputed.
+        Currently there's no mechanism to trigger repaint cache invalidation from ScrollView.
+        Skip assertion for now on WK1 (see webkit.org/b/188121)
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::updateLayerPositionsAfterScroll):
+
 2018-07-27  Myles C. Maxfield  <mmaxfield@apple.com>
 
         [WIN] Crash when trying to access store pages
index 6cf1f9c..d6cfd6a 100644 (file)
@@ -881,7 +881,9 @@ void RenderLayer::updateLayerPositionsAfterScroll(RenderGeometryMap* geometryMap
             clearRepaintRects();
         else // FIXME: We could track the repaint container as we walk down the tree.
             computeRepaintRects(renderer().containerForRepaint(), geometryMap);
-    } else {
+    } else if (!renderer().view().frameView().platformWidget()) {
+        // When ScrollView's m_paintsEntireContents flag flips due to layer backing changes, the repaint area transitions from
+        // visual to layout overflow. When this happens the cached repaint rects become invalid and they need to be recomputed (see webkit.org/b/188121).
         // Check that our cached rects are correct.
         ASSERT(!renderer().hasRepaintLayoutRects() || renderer().repaintLayoutRects().m_repaintRect == renderer().clippedOverflowRectForRepaint(renderer().containerForRepaint()));
         ASSERT(!renderer().hasRepaintLayoutRects() || renderer().repaintLayoutRects().m_outlineBox == renderer().outlineBoundsForRepaint(renderer().containerForRepaint()));