Title: [207076] releases/WebKitGTK/webkit-2.14
Revision
207076
Author
carlo...@webkit.org
Date
2016-10-11 03:22:44 -0700 (Tue, 11 Oct 2016)

Log Message

Merge r205970 - Cleanup RenderLayer::shouldBeNormalFlowOnly
https://bugs.webkit.org/show_bug.cgi?id=161981

Reviewed by Simon Fraser.

Source/WebCore:

This patch changes the logic of figuring about if a particular layer is normal flow only by simply checking
if the layer creates a stacking context. If it does, we assume that it can't be a normal flow layer anymore.
This patch slightly changes behaviour by making layers with isolation and reflection to be non normal flow layers anymore.

Covered by existing testcases.

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

LayoutTests:

Rebaselining.

* fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting-expected.txt:

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.14/LayoutTests/ChangeLog (207075 => 207076)


--- releases/WebKitGTK/webkit-2.14/LayoutTests/ChangeLog	2016-10-11 10:21:37 UTC (rev 207075)
+++ releases/WebKitGTK/webkit-2.14/LayoutTests/ChangeLog	2016-10-11 10:22:44 UTC (rev 207076)
@@ -1,3 +1,14 @@
+2016-09-15  Zalan Bujtas  <za...@apple.com>
+
+        Cleanup RenderLayer::shouldBeNormalFlowOnly
+        https://bugs.webkit.org/show_bug.cgi?id=161981
+
+        Reviewed by Simon Fraser.
+
+        Rebaselining.
+
+        * fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting-expected.txt:
+
 2016-09-12  Zalan Bujtas  <za...@apple.com>
 
         Input type object and the associated render can go out of sync.

Modified: releases/WebKitGTK/webkit-2.14/LayoutTests/fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting-expected.txt (207075 => 207076)


--- releases/WebKitGTK/webkit-2.14/LayoutTests/fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting-expected.txt	2016-10-11 10:21:37 UTC (rev 207075)
+++ releases/WebKitGTK/webkit-2.14/LayoutTests/fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting-expected.txt	2016-10-11 10:22:44 UTC (rev 207076)
@@ -5,6 +5,22 @@
     RenderBody {BODY} at (8,8) size 784x540
 layer at (8,8) size 70x60 clip at (18,18) size 50x40 scrollWidth 80
   RenderTable {DIV} at (0,0) size 70x60 [color=#008000] [border: (10px solid #000000)]
+layer at (8,68) size 70x60 clip at (18,78) size 50x40 scrollWidth 80
+  RenderTable {DIV} at (0,60) size 70x60 [color=#008000] [border: (10px solid #000000)]
+layer at (8,128) size 70x60 clip at (18,138) size 50x40 scrollWidth 80
+  RenderTable {DIV} at (0,120) size 70x60 [color=#008000] [border: (10px solid #000000)]
+layer at (8,188) size 70x60 clip at (18,198) size 50x40 scrollWidth 80
+  RenderTable {DIV} at (0,180) size 70x60 [color=#008000] [border: (10px solid #000000)]
+layer at (8,248) size 70x60 clip at (18,258) size 50x40 scrollWidth 80
+  RenderTable {DIV} at (0,240) size 70x60 [color=#008000] [border: (10px solid #000000)]
+layer at (8,308) size 70x60 clip at (18,318) size 50x40 scrollWidth 80
+  RenderTable {DIV} at (0,300) size 70x60 [color=#008000] [border: (10px solid #000000)]
+layer at (8,368) size 70x60 clip at (18,378) size 50x40 scrollWidth 80
+  RenderTable {DIV} at (0,360) size 70x60 [color=#008000] [border: (10px solid #000000)]
+layer at (8,428) size 70x60 clip at (18,438) size 50x40 scrollWidth 80
+  RenderTable {DIV} at (0,420) size 70x60 [color=#008000] [border: (10px solid #000000)]
+layer at (8,488) size 70x60 clip at (18,498) size 50x40 scrollWidth 80
+  RenderTable {DIV} at (0,480) size 70x60 [color=#008000] [border: (10px solid #000000)]
 layer at (18,18) size 50x40
   RenderTableSection {DIV} at (10,10) size 50x40
     RenderTableRow {DIV} at (0,0) size 50x40
@@ -12,8 +28,6 @@
         RenderInline {SPAN} at (0,0) size 70x10 [color=#0000FF]
           RenderText {#text} at (10,10) size 70x10
             text run at (10,10) width 70: "XXXXXXX"
-layer at (8,68) size 70x60 clip at (18,78) size 50x40 scrollWidth 80
-  RenderTable {DIV} at (0,60) size 70x60 [color=#008000] [border: (10px solid #000000)]
 layer at (18,78) size 50x40
   RenderTableSection {DIV} at (10,10) size 50x40
     RenderTableRow {DIV} at (0,0) size 50x40
@@ -22,8 +36,6 @@
     RenderInline {SPAN} at (0,0) size 70x10 [color=#0000FF]
       RenderText {#text} at (10,10) size 70x10
         text run at (10,10) width 70: "XXXXXXX"
-layer at (8,128) size 70x60 clip at (18,138) size 50x40 scrollWidth 80
-  RenderTable {DIV} at (0,120) size 70x60 [color=#008000] [border: (10px solid #000000)]
 layer at (18,138) size 50x40
   RenderTableSection {DIV} at (10,10) size 50x40
     RenderTableRow {DIV} at (0,0) size 50x40
@@ -32,8 +44,6 @@
     RenderInline {SPAN} at (0,0) size 70x10 [color=#0000FF]
       RenderText {#text} at (10,10) size 70x10
         text run at (10,10) width 70: "XXXXXXX"
-layer at (8,188) size 70x60 clip at (18,198) size 50x40 scrollWidth 80
-  RenderTable {DIV} at (0,180) size 70x60 [color=#008000] [border: (10px solid #000000)]
 layer at (18,198) size 50x40
   RenderTableSection {DIV} at (10,10) size 50x40
     RenderTableRow {DIV} at (0,0) size 50x40
@@ -41,8 +51,6 @@
         RenderInline {SPAN} at (0,0) size 70x10 [color=#0000FF]
           RenderText {#text} at (10,10) size 70x10
             text run at (10,10) width 70: "XXXXXXX"
-layer at (8,248) size 70x60 clip at (18,258) size 50x40 scrollWidth 80
-  RenderTable {DIV} at (0,240) size 70x60 [color=#008000] [border: (10px solid #000000)]
 layer at (18,258) size 50x40
   RenderTableSection {DIV} at (10,10) size 50x40
     RenderTableRow {DIV} at (0,0) size 50x40
@@ -51,8 +59,6 @@
   RenderInline {SPAN} at (0,0) size 70x10 [color=#0000FF]
     RenderText {#text} at (10,10) size 70x10
       text run at (10,10) width 70: "XXXXXXX"
-layer at (8,308) size 70x60 clip at (18,318) size 50x40 scrollWidth 80
-  RenderTable {DIV} at (0,300) size 70x60 [color=#008000] [border: (10px solid #000000)]
 layer at (18,318) size 50x40
   RenderTableSection {DIV} at (10,10) size 50x40
     RenderTableRow {DIV} at (0,0) size 50x40
@@ -62,8 +68,6 @@
   RenderInline {SPAN} at (0,0) size 70x10 [color=#0000FF]
     RenderText {#text} at (10,10) size 70x10
       text run at (10,10) width 70: "XXXXXXX"
-layer at (8,368) size 70x60 clip at (18,378) size 50x40 scrollWidth 80
-  RenderTable {DIV} at (0,360) size 70x60 [color=#008000] [border: (10px solid #000000)]
 layer at (18,378) size 50x40
   RenderTableSection {DIV} at (10,10) size 50x40
     RenderTableRow {DIV} at (0,0) size 50x40
@@ -72,8 +76,6 @@
     RenderInline {SPAN} at (0,0) size 70x10 [color=#0000FF]
       RenderText {#text} at (10,10) size 70x10
         text run at (10,10) width 70: "XXXXXXX"
-layer at (8,428) size 70x60 clip at (18,438) size 50x40 scrollWidth 80
-  RenderTable {DIV} at (0,420) size 70x60 [color=#008000] [border: (10px solid #000000)]
 layer at (18,438) size 50x40
   RenderTableSection {DIV} at (10,10) size 50x40
     RenderTableRow {DIV} at (0,0) size 50x40
@@ -82,8 +84,6 @@
     RenderInline {SPAN} at (0,0) size 70x10 [color=#0000FF]
       RenderText {#text} at (10,10) size 70x10
         text run at (10,10) width 70: "XXXXXXX"
-layer at (8,488) size 70x60 clip at (18,498) size 50x40 scrollWidth 80
-  RenderTable {DIV} at (0,480) size 70x60 [color=#008000] [border: (10px solid #000000)]
 layer at (18,498) size 50x40
   RenderTableSection {DIV} at (10,10) size 50x40
     RenderTableRow {DIV} at (0,0) size 50x40

Modified: releases/WebKitGTK/webkit-2.14/LayoutTests/platform/ios-simulator/media/audio-repaint-expected.txt (207075 => 207076)


--- releases/WebKitGTK/webkit-2.14/LayoutTests/platform/ios-simulator/media/audio-repaint-expected.txt	2016-10-11 10:21:37 UTC (rev 207075)
+++ releases/WebKitGTK/webkit-2.14/LayoutTests/platform/ios-simulator/media/audio-repaint-expected.txt	2016-10-11 10:22:44 UTC (rev 207076)
@@ -12,6 +12,14 @@
         RenderBR {BR} at (260,39) size 0x0
         RenderBR {BR} at (260,103) size 0x0
         RenderBR {BR} at (260,196) size 0x0
+layer at (8,44) size 260x39 scrollHeight 89
+  RenderFlexibleBox {DIV} at (0,0) size 260x39
+layer at (8,44) size 260x39
+  RenderBlock (positioned) {DIV} at (0,0) size 260x39
+layer at (8,44) size 260x39
+  RenderFlexibleBox {DIV} at (0,0) size 260x39 [bgcolor=#D4D4D4]
+layer at (12,44) size 42x39 blendMode: plus-darker
+  RenderButton {BUTTON} at (4,0) size 42x39 [bgcolor=#000000]
 layer at (8,83) size 260x39 isolatesBlending
   RenderMedia {AUDIO} at (0,39) size 260x39
 layer at (8,83) size 260x39 scrollHeight 89
@@ -22,14 +30,6 @@
   RenderFlexibleBox {DIV} at (0,0) size 260x39 [bgcolor=#D4D4D4]
 layer at (12,83) size 42x39 blendMode: plus-darker
   RenderButton {BUTTON} at (4,0) size 42x39 [bgcolor=#000000]
-layer at (8,44) size 260x39 scrollHeight 89
-  RenderFlexibleBox {DIV} at (0,0) size 260x39
-layer at (8,44) size 260x39
-  RenderBlock (positioned) {DIV} at (0,0) size 260x39
-layer at (8,44) size 260x39
-  RenderFlexibleBox {DIV} at (0,0) size 260x39 [bgcolor=#D4D4D4]
-layer at (12,44) size 42x39 blendMode: plus-darker
-  RenderButton {BUTTON} at (4,0) size 42x39 [bgcolor=#000000]
 layer at (8,174) size 260x39 isolatesBlending
   RenderMedia {AUDIO} at (0,130) size 260x39
 layer at (8,174) size 260x39 scrollHeight 89

Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog (207075 => 207076)


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog	2016-10-11 10:21:37 UTC (rev 207075)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog	2016-10-11 10:22:44 UTC (rev 207076)
@@ -1,3 +1,19 @@
+2016-09-15  Zalan Bujtas  <za...@apple.com>
+
+        Cleanup RenderLayer::shouldBeNormalFlowOnly
+        https://bugs.webkit.org/show_bug.cgi?id=161981
+
+        Reviewed by Simon Fraser.
+
+        This patch changes the logic of figuring about if a particular layer is normal flow only by simply checking
+        if the layer creates a stacking context. If it does, we assume that it can't be a normal flow layer anymore.
+        This patch slightly changes behaviour by making layers with isolation and reflection to be non normal flow layers anymore.    
+
+        Covered by existing testcases.
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::calculateClipRects):
+
 2016-09-14  Zalan Bujtas  <za...@apple.com>
 
         ShowRenderTree should take position offset into account when printing inflow positioned renderers.

Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/RenderLayer.cpp (207075 => 207076)


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/RenderLayer.cpp	2016-10-11 10:21:37 UTC (rev 207075)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/RenderLayer.cpp	2016-10-11 10:22:44 UTC (rev 207076)
@@ -6477,35 +6477,43 @@
     return createsGraphicalGroup || (renderer.style().willChange() && renderer.style().willChange()->canCreateGraphicalGroup());
 }
 
+static bool createsStackingContext(const RenderLayer& layer)
+{
+    auto& renderer = layer.renderer();
+    return renderer.hasTransformRelatedProperty()
+        || renderer.isPositioned()
+        || layer.needsCompositedScrolling()
+        || renderer.style().hasFlowFrom()
+        || renderer.hasReflection()
+        || renderer.style().hasIsolation()
+#if PLATFORM(IOS)
+        || layer.hasAcceleratedTouchScrolling()
+#endif
+        // FIXME: Check if willChange()->canCreateStackingContext() is more accurate here.
+        || mayCreateGraphicalGroup(renderer);
+}
+
 bool RenderLayer::shouldBeNormalFlowOnly() const
 {
-    return (renderer().hasOverflowClip()
-        || renderer().hasReflection()
-        || renderer().hasMask()
+    if (createsStackingContext(*this))
+        return false;
+
+    return renderer().hasOverflowClip()
         || renderer().isCanvas()
         || renderer().isVideo()
         || renderer().isEmbeddedObject()
         || renderer().isRenderIFrame()
         || (renderer().style().specifiesColumns() && !isRootLayer())
-        || renderer().isInFlowRenderFlowThread())
-        && !renderer().hasTransformRelatedProperty()
-        && !renderer().isPositioned()
-        && !needsCompositedScrolling()
-        && !renderer().style().hasFlowFrom()
-#if PLATFORM(IOS)
-        && !hasAcceleratedTouchScrolling()
-#endif
-        && !mayCreateGraphicalGroup(renderer());
+        || renderer().isInFlowRenderFlowThread();
 }
 
 bool RenderLayer::shouldBeSelfPaintingLayer() const
 {
-    return !isNormalFlowOnly()
-        || hasOverlayScrollbars()
+    if (!isNormalFlowOnly())
+        return true;
+
+    return hasOverlayScrollbars()
         || needsCompositedScrolling()
-        || isolatesBlending()
-        || renderer().hasReflection()
-        || renderer().hasMask()
         || renderer().isTableRow()
         || renderer().isCanvas()
         || renderer().isVideo()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to