Title: [179147] trunk
- Revision
- 179147
- Author
- commit-qu...@webkit.org
- Date
- 2015-01-26 14:59:40 -0800 (Mon, 26 Jan 2015)
Log Message
Fix Border-radius clipping issue on a composited descendants
Source/WebCore:
https://bugs.webkit.org/show_bug.cgi?id=138551
Patch by Byungseon Shin <sun.s...@lge.com> on 2015-01-26
Reviewed by Simon Fraser.
Fix assertion in RenderLayerBacking::paintIntoLayer
by not checking out of sync with the GraphicsLayer heirarchy
in GraphicsLayerPaintChildClippingMask phase.
Test: compositing/clipping/border-radius-overflow-hidden-stacking-context.html
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::paintIntoLayer):
LayoutTests:
https://bugs.webkit.org/show_bug.cgi?id=138551
Patch by Byungseon Shin <sun.s...@lge.com> on 2015-01-26
Reviewed by Simon Fraser.
Ref test that clips composited descendant by stacking context with border-radius and overflow hidden element.
* compositing/clipping/border-radius-overflow-hidden-stacking-context-expected.txt: Added.
* compositing/clipping/border-radius-overflow-hidden-stacking-context.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (179146 => 179147)
--- trunk/LayoutTests/ChangeLog 2015-01-26 22:50:15 UTC (rev 179146)
+++ trunk/LayoutTests/ChangeLog 2015-01-26 22:59:40 UTC (rev 179147)
@@ -1,3 +1,15 @@
+2015-01-26 Byungseon Shin <sun.s...@lge.com>
+
+ Fix Border-radius clipping issue on a composited descendants
+ https://bugs.webkit.org/show_bug.cgi?id=138551
+
+ Reviewed by Simon Fraser.
+
+ Ref test that clips composited descendant by stacking context with border-radius and overflow hidden element.
+
+ * compositing/clipping/border-radius-overflow-hidden-stacking-context-expected.txt: Added.
+ * compositing/clipping/border-radius-overflow-hidden-stacking-context.html: Added.
+
2015-01-26 Benjamin Poulain <benja...@webkit.org>
Fix CSS Selector's tag name matching when mixing HTML and XML
Added: trunk/LayoutTests/compositing/clipping/border-radius-overflow-hidden-stacking-context-expected.txt (0 => 179147)
--- trunk/LayoutTests/compositing/clipping/border-radius-overflow-hidden-stacking-context-expected.txt (rev 0)
+++ trunk/LayoutTests/compositing/clipping/border-radius-overflow-hidden-stacking-context-expected.txt 2015-01-26 22:59:40 UTC (rev 179147)
@@ -0,0 +1,30 @@
+Test CSS clip with composited layers. Left and right sides should look the same. This test should not ASSERT in debug builds.
+
+(GraphicsLayer
+ (anchor 0.00 0.00)
+ (bounds 800.00 600.00)
+ (children 1
+ (GraphicsLayer
+ (bounds 800.00 600.00)
+ (contentsOpaque 1)
+ (children 1
+ (GraphicsLayer
+ (position 20.00 20.00)
+ (bounds 100.00 100.00)
+ (children 1
+ (GraphicsLayer
+ (bounds 100.00 100.00)
+ (children 1
+ (GraphicsLayer
+ (bounds 200.00 200.00)
+ (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 1.00 1.00])
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+)
+
Added: trunk/LayoutTests/compositing/clipping/border-radius-overflow-hidden-stacking-context.html (0 => 179147)
--- trunk/LayoutTests/compositing/clipping/border-radius-overflow-hidden-stacking-context.html (rev 0)
+++ trunk/LayoutTests/compositing/clipping/border-radius-overflow-hidden-stacking-context.html 2015-01-26 22:59:40 UTC (rev 179147)
@@ -0,0 +1,59 @@
+<html>
+<head>
+ <style type="text/css" media="screen">
+ .box {
+ position: absolute;
+ width: 100px;
+ height: 100px;
+ top: 20px;
+ left: 20px;
+ background-color: gray;
+ border-radius: 30%;
+ overflow: hidden;
+ z-index: 0;
+ }
+
+ .inner {
+ width: 200px;
+ height: 200px;
+ background-color: rgba(0, 0, 0, 0.2);
+ }
+
+ .composited {
+ -webkit-transform: translateZ(1px);
+ }
+
+ p {
+ margin-top: 140px;
+ }
+ </style>
+ <script type="text/_javascript_" charset="utf-8">
+ if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+ }
+
+ function doTest() {
+ if (window.testRunner) {
+ document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
+ testRunner.notifyDone();
+ }
+ }
+ window.addEventListener('load', doTest, false);
+ </script>
+</head>
+<body>
+ <div class="box">
+ <div class="composited inner">
+ </div>
+ </div>
+
+ <div class="box" style="left: 220px;">
+ <div class="inner">
+ </div>
+ </div>
+
+ <p>Test CSS clip with composited layers. Left and right sides should look the same. This test should not ASSERT in debug builds.</p>
+ <pre id="layers">In DRT, layer tree goes here.</pre>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (179146 => 179147)
--- trunk/Source/WebCore/ChangeLog 2015-01-26 22:50:15 UTC (rev 179146)
+++ trunk/Source/WebCore/ChangeLog 2015-01-26 22:59:40 UTC (rev 179147)
@@ -1,3 +1,19 @@
+2015-01-26 Byungseon Shin <sun.s...@lge.com>
+
+ Fix Border-radius clipping issue on a composited descendants
+ https://bugs.webkit.org/show_bug.cgi?id=138551
+
+ Reviewed by Simon Fraser.
+
+ Fix assertion in RenderLayerBacking::paintIntoLayer
+ by not checking out of sync with the GraphicsLayer heirarchy
+ in GraphicsLayerPaintChildClippingMask phase.
+
+ Test: compositing/clipping/border-radius-overflow-hidden-stacking-context.html
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::paintIntoLayer):
+
2015-01-26 Chris Dumez <cdu...@apple.com>
Simplify RenderElement's shouldRepaintForImageAnimation()
Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (179146 => 179147)
--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2015-01-26 22:50:15 UTC (rev 179146)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2015-01-26 22:59:40 UTC (rev 179147)
@@ -2189,7 +2189,7 @@
const IntRect& paintDirtyRect, // In the coords of rootLayer.
PaintBehavior paintBehavior, GraphicsLayerPaintingPhase paintingPhase)
{
- if (paintsIntoWindow() || paintsIntoCompositedAncestor()) {
+ if ((paintsIntoWindow() || paintsIntoCompositedAncestor()) && paintingPhase != GraphicsLayerPaintChildClippingMask) {
#if !PLATFORM(IOS)
// FIXME: Looks like the CALayer tree is out of sync with the GraphicsLayer heirarchy
// when pages are restored from the PageCache.
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes