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

Log Message

Merge r205999 - ASSERTION FAILED: willBeComposited == needsToBeComposited(layer) in WebCore::RenderLayerCompositor::computeCompositingRequirements
https://bugs.webkit.org/show_bug.cgi?id=151097
<rdar://problem/27711678>

Reviewed by Simon Fraser.

Source/WebCore:

This patch ensures that when will-change property triggers stacking context, we make the associated layer a non-normal flow layer.
(This is similar to what any other stacking context-triggering CSS property does.)

Test: compositing/assert-on-will-change-transform-with-composited-descendant.html

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

LayoutTests:

* compositing/assert-on-will-change-transform-with-composited-descendant-expected.txt: Added.
* compositing/assert-on-will-change-transform-with-composited-descendant.html: Added.

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-2.14/LayoutTests/ChangeLog (207077 => 207078)


--- releases/WebKitGTK/webkit-2.14/LayoutTests/ChangeLog	2016-10-11 10:24:07 UTC (rev 207077)
+++ releases/WebKitGTK/webkit-2.14/LayoutTests/ChangeLog	2016-10-11 10:31:36 UTC (rev 207078)
@@ -1,5 +1,16 @@
 2016-09-15  Zalan Bujtas  <za...@apple.com>
 
+        ASSERTION FAILED: willBeComposited == needsToBeComposited(layer) in WebCore::RenderLayerCompositor::computeCompositingRequirements
+        https://bugs.webkit.org/show_bug.cgi?id=151097
+        <rdar://problem/27711678>
+
+        Reviewed by Simon Fraser.
+
+        * compositing/assert-on-will-change-transform-with-composited-descendant-expected.txt: Added.
+        * compositing/assert-on-will-change-transform-with-composited-descendant.html: Added.
+
+2016-09-15  Zalan Bujtas  <za...@apple.com>
+
         Cleanup RenderLayer::shouldBeNormalFlowOnly
         https://bugs.webkit.org/show_bug.cgi?id=161981
 

Added: releases/WebKitGTK/webkit-2.14/LayoutTests/compositing/assert-on-will-change-transform-with-composited-descendant-expected.txt (0 => 207078)


--- releases/WebKitGTK/webkit-2.14/LayoutTests/compositing/assert-on-will-change-transform-with-composited-descendant-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.14/LayoutTests/compositing/assert-on-will-change-transform-with-composited-descendant-expected.txt	2016-10-11 10:31:36 UTC (rev 207078)
@@ -0,0 +1,2 @@
+PASS if no assert in debug.
+

Added: releases/WebKitGTK/webkit-2.14/LayoutTests/compositing/assert-on-will-change-transform-with-composited-descendant.html (0 => 207078)


--- releases/WebKitGTK/webkit-2.14/LayoutTests/compositing/assert-on-will-change-transform-with-composited-descendant.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.14/LayoutTests/compositing/assert-on-will-change-transform-with-composited-descendant.html	2016-10-11 10:31:36 UTC (rev 207078)
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title></title>
+<script>
+if (window.testRunner)
+  testRunner.dumpAsText();
+</script>
+<style>
+.container {
+    overflow: hidden;
+    will-change: -webkit-transform;
+}
+
+.inner {
+    z-index: -1;
+    position: relative;
+    transform: translateZ(0);
+}
+</style>
+</head>
+<body>
+PASS if no assert in debug.
+<div class=container><div class=inner></div></div>
+</body>
+</html>

Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog (207077 => 207078)


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog	2016-10-11 10:24:07 UTC (rev 207077)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog	2016-10-11 10:31:36 UTC (rev 207078)
@@ -1,5 +1,21 @@
 2016-09-15  Zalan Bujtas  <za...@apple.com>
 
+        ASSERTION FAILED: willBeComposited == needsToBeComposited(layer) in WebCore::RenderLayerCompositor::computeCompositingRequirements
+        https://bugs.webkit.org/show_bug.cgi?id=151097
+        <rdar://problem/27711678>
+
+        Reviewed by Simon Fraser.
+
+        This patch ensures that when will-change property triggers stacking context, we make the associated layer a non-normal flow layer.
+        (This is similar to what any other stacking context-triggering CSS property does.)  
+
+        Test: compositing/assert-on-will-change-transform-with-composited-descendant.html
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::calculateClipRects):
+
+2016-09-15  Zalan Bujtas  <za...@apple.com>
+
         Cleanup RenderLayer::shouldBeNormalFlowOnly
         https://bugs.webkit.org/show_bug.cgi?id=161981
 

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


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/RenderLayer.cpp	2016-10-11 10:24:07 UTC (rev 207077)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/RenderLayer.cpp	2016-10-11 10:31:36 UTC (rev 207078)
@@ -6464,33 +6464,27 @@
     }
 }
 
-static bool mayCreateGraphicalGroup(const RenderElement& renderer)
+static bool createsStackingContext(const RenderLayer& layer)
 {
-    bool createsGraphicalGroup = renderer.hasClipPath()
+    auto& renderer = layer.renderer();
+    return renderer.hasTransformRelatedProperty()
+        || renderer.hasClipPath()
         || renderer.hasFilter()
+        || renderer.hasMask()
         || renderer.hasBackdropFilter()
 #if ENABLE(CSS_COMPOSITING)
         || renderer.hasBlendMode()
 #endif
         || renderer.isTransparent()
-        || renderer.hasMask();
-    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()
+        || layer.needsCompositedScrolling()
 #if PLATFORM(IOS)
         || layer.hasAcceleratedTouchScrolling()
 #endif
-        // FIXME: Check if willChange()->canCreateStackingContext() is more accurate here.
-        || mayCreateGraphicalGroup(renderer);
+        || (renderer.style().willChange() && renderer.style().willChange()->canCreateStackingContext());
 }
 
 bool RenderLayer::shouldBeNormalFlowOnly() const

Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/style/WillChangeData.cpp (207077 => 207078)


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/style/WillChangeData.cpp	2016-10-11 10:24:07 UTC (rev 207077)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/style/WillChangeData.cpp	2016-10-11 10:31:36 UTC (rev 207078)
@@ -99,30 +99,6 @@
     }
 }
 
-static bool propertyCreatesGraphicalGroup(CSSPropertyID property)
-{
-    switch (property) {
-    case CSSPropertyClipPath:
-    case CSSPropertyWebkitClipPath:
-    case CSSPropertyMask:
-    case CSSPropertyOpacity:
-#if ENABLE(CSS_COMPOSITING)
-    case CSSPropertyMixBlendMode:
-    case CSSPropertyIsolation:
-#endif
-    case CSSPropertyFilter:
-#if ENABLE(FILTERS_LEVEL_2)
-    case CSSPropertyWebkitBackdropFilter:
-#endif
-    case CSSPropertyWebkitMask:
-    case CSSPropertyWebkitMaskImage:
-    case CSSPropertyWebkitMaskBoxImage:
-        return true;
-    default:
-        return false;
-    }
-}
-
 static bool propertyTriggersCompositing(CSSPropertyID property)
 {
     switch (property) {
@@ -161,8 +137,6 @@
 
     m_canTriggerCompositingOnInline |= propertyTriggersCompositing(propertyID);
     m_canTriggerCompositing |= m_canTriggerCompositingOnInline | propertyTriggersCompositingOnBoxesOnly(propertyID);
-
-    m_canCreateGraphicalGroup |= propertyCreatesGraphicalGroup(propertyID);
 }
 
 WillChangeData::FeaturePropertyPair WillChangeData::featureAt(size_t index) const

Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/style/WillChangeData.h (207077 => 207078)


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/style/WillChangeData.h	2016-10-11 10:24:07 UTC (rev 207077)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/style/WillChangeData.h	2016-10-11 10:31:36 UTC (rev 207078)
@@ -57,7 +57,6 @@
     bool canCreateStackingContext() const { return m_canCreateStackingContext; }
     bool canTriggerCompositing() const { return m_canTriggerCompositing; }
     bool canTriggerCompositingOnInline() const { return m_canTriggerCompositingOnInline; }
-    bool canCreateGraphicalGroup() const { return m_canCreateGraphicalGroup; }
 
     enum Feature {
         ScrollPosition,
@@ -125,7 +124,6 @@
     bool m_canCreateStackingContext { false };
     bool m_canTriggerCompositing { false };
     bool m_canTriggerCompositingOnInline { false };
-    bool m_canCreateGraphicalGroup { false };
 };
 
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to