Title: [245438] releases/WebKitGTK/webkit-2.24
- Revision
- 245438
- Author
- [email protected]
- Date
- 2019-05-17 03:14:14 -0700 (Fri, 17 May 2019)
Log Message
Merge r243786 - REGRESSION (r238266): Exchange 2013 Outlook Web Access displays partially blank page when creating new e-mail
https://bugs.webkit.org/show_bug.cgi?id=196522
Source/WebCore:
rdar://problem/49472941
Reviewed by Zalan Bujtas.
In this content a layer is composited to clip descendants, and has negative z-order children,
so we compute that it "paints into ancestor", and has a foreground layer. This combination doesn't
make sense, and when the layer becomes scrollable, we end up with bad paint phases on layers, and
fail to paint the contents.
Fix by ensuring that a layer has its own backing store if it requires a foreground layer
by virtue of having negative z-order children.
Test: compositing/backing/foreground-layer-no-paints-into-ancestor.html
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
LayoutTests:
Reviewed by Zalan Bujtas.
* compositing/backing/foreground-layer-no-paints-into-ancestor-expected.html: Added.
* compositing/backing/foreground-layer-no-paints-into-ancestor.html: Added.
Modified Paths
Added Paths
Diff
Modified: releases/WebKitGTK/webkit-2.24/LayoutTests/ChangeLog (245437 => 245438)
--- releases/WebKitGTK/webkit-2.24/LayoutTests/ChangeLog 2019-05-17 10:14:08 UTC (rev 245437)
+++ releases/WebKitGTK/webkit-2.24/LayoutTests/ChangeLog 2019-05-17 10:14:14 UTC (rev 245438)
@@ -1,3 +1,13 @@
+2019-04-02 Simon Fraser <[email protected]>
+
+ REGRESSION (r238266): Exchange 2013 Outlook Web Access displays partially blank page when creating new e-mail
+ https://bugs.webkit.org/show_bug.cgi?id=196522
+
+ Reviewed by Zalan Bujtas.
+
+ * compositing/backing/foreground-layer-no-paints-into-ancestor-expected.html: Added.
+ * compositing/backing/foreground-layer-no-paints-into-ancestor.html: Added.
+
2019-03-28 Zalan Bujtas <[email protected]>
[SimpleLineLayout] Disable SLL when text-underline-position is not auto.
Added: releases/WebKitGTK/webkit-2.24/LayoutTests/compositing/backing/foreground-layer-no-paints-into-ancestor-expected.html (0 => 245438)
--- releases/WebKitGTK/webkit-2.24/LayoutTests/compositing/backing/foreground-layer-no-paints-into-ancestor-expected.html (rev 0)
+++ releases/WebKitGTK/webkit-2.24/LayoutTests/compositing/backing/foreground-layer-no-paints-into-ancestor-expected.html 2019-05-17 10:14:14 UTC (rev 245438)
@@ -0,0 +1,49 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ internal:AsyncOverflowScrollingEnabled=true ] -->
+<html>
+<head>
+ <style>
+ .scroller {
+ position: absolute;
+ z-index: 0;
+ margin: 20px;
+ width: 300px;
+ height: 300px;
+ border: 1px solid black;
+ overflow: hidden;
+ }
+ .scroller.scrollable {
+ overflow-y: scroll;
+ }
+ .contents {
+ height: 2000px;
+ }
+ .negative {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: -1;
+ padding: 20px;
+ background-color: gray;
+ }
+ .box {
+ width: 200px;
+ height: 200px;
+ }
+ .composited {
+ width: 20px;
+ height: 20px;
+ transform: translateZ(0);
+ background-color: silver;
+ }
+ </style>
+</head>
+<body>
+ <div id="target" class="scrollable scroller">
+ <div class="negative"></div>
+ <div class="contents">
+ <div class="composited box"></div>
+ <div class="box" style="background-color: green"></div>
+ </div>
+ </div>
+</body>
+</html>
Added: releases/WebKitGTK/webkit-2.24/LayoutTests/compositing/backing/foreground-layer-no-paints-into-ancestor.html (0 => 245438)
--- releases/WebKitGTK/webkit-2.24/LayoutTests/compositing/backing/foreground-layer-no-paints-into-ancestor.html (rev 0)
+++ releases/WebKitGTK/webkit-2.24/LayoutTests/compositing/backing/foreground-layer-no-paints-into-ancestor.html 2019-05-17 10:14:14 UTC (rev 245438)
@@ -0,0 +1,61 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ internal:AsyncOverflowScrollingEnabled=true ] -->
+<html>
+<head>
+ <style>
+ .scroller {
+ position: absolute;
+ z-index: 0;
+ margin: 20px;
+ width: 300px;
+ height: 300px;
+ border: 1px solid black;
+ overflow: hidden;
+ }
+ .scroller.scrollable {
+ overflow-y: scroll;
+ }
+ .contents {
+ height: 2000px;
+ }
+ .negative {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: -1;
+ padding: 20px;
+ background-color: gray;
+ }
+ .box {
+ width: 200px;
+ height: 200px;
+ }
+ .composited {
+ width: 20px;
+ height: 20px;
+ transform: translateZ(0);
+ background-color: silver;
+ }
+ </style>
+ <script>
+ if (window.testRunner)
+ testRunner.waitUntilDone();
+
+ window.addEventListener('load', () => {
+ setTimeout(() => {
+ document.getElementById('target').classList.add('scrollable');
+ if (window.testRunner)
+ testRunner.notifyDone();
+ }, 0);
+ }, false);
+ </script>
+</head>
+<body>
+ <div id="target" class="scroller">
+ <div class="negative"></div>
+ <div class="contents">
+ <div class="composited box"></div>
+ <div class="box" style="background-color: green"></div>
+ </div>
+ </div>
+</body>
+</html>
Modified: releases/WebKitGTK/webkit-2.24/Source/WebCore/ChangeLog (245437 => 245438)
--- releases/WebKitGTK/webkit-2.24/Source/WebCore/ChangeLog 2019-05-17 10:14:08 UTC (rev 245437)
+++ releases/WebKitGTK/webkit-2.24/Source/WebCore/ChangeLog 2019-05-17 10:14:14 UTC (rev 245438)
@@ -1,3 +1,24 @@
+2019-04-02 Simon Fraser <[email protected]>
+
+ REGRESSION (r238266): Exchange 2013 Outlook Web Access displays partially blank page when creating new e-mail
+ https://bugs.webkit.org/show_bug.cgi?id=196522
+ rdar://problem/49472941
+
+ Reviewed by Zalan Bujtas.
+
+ In this content a layer is composited to clip descendants, and has negative z-order children,
+ so we compute that it "paints into ancestor", and has a foreground layer. This combination doesn't
+ make sense, and when the layer becomes scrollable, we end up with bad paint phases on layers, and
+ fail to paint the contents.
+
+ Fix by ensuring that a layer has its own backing store if it requires a foreground layer
+ by virtue of having negative z-order children.
+
+ Test: compositing/backing/foreground-layer-no-paints-into-ancestor.html
+
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
+
2019-03-28 Zalan Bujtas <[email protected]>
[SimpleLineLayout] Disable SLL when text-underline-position is not auto.
Modified: releases/WebKitGTK/webkit-2.24/Source/WebCore/rendering/RenderLayerCompositor.cpp (245437 => 245438)
--- releases/WebKitGTK/webkit-2.24/Source/WebCore/rendering/RenderLayerCompositor.cpp 2019-05-17 10:14:08 UTC (rev 245437)
+++ releases/WebKitGTK/webkit-2.24/Source/WebCore/rendering/RenderLayerCompositor.cpp 2019-05-17 10:14:14 UTC (rev 245438)
@@ -2198,6 +2198,7 @@
|| requiresCompositingForPlugin(renderer, queryData)
|| requiresCompositingForEditableImage(renderer)
|| requiresCompositingForOverflowScrolling(layer, queryData)
+ || needsContentsCompositingLayer(layer)
|| renderer.isTransparent()
|| renderer.hasMask()
|| renderer.hasReflection()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes